[SCore-users-jp] fork(),execl()を使用したプログラムの並列化

増田 尚美 n-masuda @ sp.nas.nec.co.jp
2003年 5月 28日 (水) 16:31:31 JST


This is a multi-part message in MIME format.

------=_NextPart_000_002F_01C32536.985588F0
Content-Type: text/plain;
	charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit

メーリングリストの皆様

増田です。
お世話になります。

現在、システム設計フェーズで
SCoreに関する調査を行なっています。
知識不足で、言葉足らずな説明になっているようでしたら
大変申し訳ありませんが、よろしくお願いいたします。

【作業内容】
 SCore環境における各種システム関数の動作検証
  各種システム関数を使用して作成されているCプログラムを
  MPI,OpenMPを用いて並列化させ、SCore環境においても
  正常に動作するかを検証しています。

【環境】
  SCore       : 5.4.0
  RedHat Linux : 7.3

  サーバ兼計算ホスト
  計算ホスト1台
        ・・・共にシングルCPU

【コンパイル方法】
  MPI    : mpicc -o main main.c
  OpenMP : omcc -omniconfig=scash -o main main.c

【実行環境】
  マルチユーザモード

そこで、教えていただきたいことがあります。

【質問】
 ネット等から、以下に示す(1)(2)の並列化についての情報を
 収集したのですが、全く見当たりませんでした。
 一般的ではないのでしょうか?

  (1)子プロセスを生成するプログラム(fork(),execl()使用)
  (2)スレッドを生成するプログラム(POSIXスレッド使用)

【検証内容】
 【質問】の(1)(2)とも動作検証を実施しました。

  (1)子プロセスを生成するプログラム(fork(),execl()使用)
   <MPI使用時>
    複数の子プロセスを生成しようとした場合、
    50%以上の確率でいくつかの子プロセスが起動しません。
    但し、正常に起動され期待した通りの並列化処理が実施できる場合もありま
す。

   <OpemMP使用時>
    動作しません。例えば、メインルーチンから子プロセスを1本
fork(),execl()
       するプログラムを実行すると、以下のメッセージが表示されて終了します。
    # scrun -nodes=2,scored=comp0.pccluster.org ./main
    SCore-D 5.4.0 connected (jid=25).
    <0:0> SCORE: 2 nodes (2x1) ready.
    <0:0> SCORE: 2 nodes (2x1) ready.
    <0>scash_pa_init:can not create page table file: Operation not
permitted[1]
    <1>scash_pa_init:can not create page table file: Operation not
permitted[1]

  (2)スレッドを生成するプログラム(POSIXスレッド使用)
   <MPI使用時>
    正常動作しているようにみえます。
    但し、defunct(ゾンビ)プロセスができています。
    例えば、メインルーチンから1本のスレッドを生成(pthread_create())す
る
    プログラムを実行した時のプロセス状態が以下のようになります。

        ・マスタ側
      # ps -ef |grep main
       UID        PID  PPID  C STIME TTY          TIME CMD
       msv       3761  3620  0 14:45 ?        00:00:00 ./main
       msv       3767  3761  0 14:45 ?        00:00:00 [main.1 <defunct>]
       msv       3768  3761  0 14:45 ?        00:00:00 ./main
       msv       3769  3768  0 14:45 ?        00:00:00 ./main

        ・スレーブ側
      # ps -ef |grep main
       UID        PID  PPID  C STIME TTY          TIME CMD
       #501      1184  1161 49 14:49 ?        00:03:07 ./main
       #501      1185  1184  0 14:49 ?        00:00:00 [main.1 <defunct>]
       #501      1186  1184  0 14:49 ?        00:00:00 ./main
       #501      1187  1186 50 14:49 ?        00:03:11 ./main

   <OpenMP使用時>
    まだ実施していないのですが、
    この場合は、OpenMPが提供しているライブラリ関数に書き換える必要が
    あるのでしょうか?

【知りたい事】
 以下の2点です。
 ・【質問】の(1)(2)は、MPI,OpenMPで並列化にした場合に動作が保証されているのか
?
 ・保証されている場合、【検証内容】に記したような事象が発生するのはなぜか?
      (MPI,OpenMPの書式の組み込みに問題があるのでしょうか?)

以上です。
よろしくお願いいたします。

------=_NextPart_000_002F_01C32536.985588F0
Content-Type: text/html;
	charset="iso-2022-jp"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-2022-jp">
<META content=3D"MSHTML 6.00.2800.1141" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3D"=1B$B#M#S=1B(B =1B$B%4%7%C%/=1B(B"=20
size=3D2>=1B$B%a!<%j%s%0%j%9%H$N3'MM=1B(B<BR><BR>=1B$BA}ED$G$9!#=1B(B<BR>=
=1B$B$*@$OC$K$J$j$^$9!#=1B(B<BR><BR>=1B$B8=3D:_!"%7%9%F%`@_7W%U%'!<%:$G=1B=
(B</FONT></DIV>
<DIV><FONT face=3D"=1B$B#M#S=1B(B =1B$B%4%7%C%/=1B(B"=20
size=3D2>SCore=1B$B$K4X$9$kD4::$r9T$J$C$F$$$^$9!#=1B(B<BR>=1B$BCN<1ITB-$G=
!"8 @ MUB-$i$:$J @ bL@$K$J$C$F$$$k$h$&$G$7$?$i=1B(B<BR>=1B$BBgJQ?=3D$7Lu$"$j$=
^$;$s$,!"$h$m$7$/$*4j$$$$$?$7$^$9!#=1B(B<BR><BR>=1B$B!Z:n6HFbMF![=1B(B<BR=
>=1B$B!!=1B(BSCore=1B$B4D6-$K$*$1$k3F<o%7%9%F%`4X?t$NF0:n8!>Z=1B(B<BR>=1B=
$B!!!!3F<o%7%9%F%`4X?t$r;HMQ$7$F:n @ .$5$l$F$$$k=1B(BC=1B$B%W%m%0%i%`$r=1B(=
B<BR>=1B$B!!!!=1B(BMPI,OpenMP=1B$B$rMQ$$$FJBNs2=3D$5$;!"=1B(BSCore=1B$B4D=
6-$K$*$$$F$b=1B(B<BR>=1B$B!!!!@5>o$KF0:n$9$k$+$r8!>Z$7$F$$$^$9!#=1B(B<BR>=
<BR>=1B$B!Z4D6-![=1B(B<BR>=1B$B!!!!=1B(BSCore    &nbs=
p;=20
=1B$B!!!'!!=1B(B5.4.0<BR>=1B$B!!!!=1B(BRedHat Linux =
=1B$B!'!!=1B(B7.3</FONT></DIV>
<DIV><FONT face=3D"=1B$B#M#S=1B(B =1B$B%4%7%C%/=1B(B" =
size=3D2></FONT> </DIV>
<DIV><FONT face=3D"=1B$B#M#S=1B(B =1B$B%4%7%C%/=1B(B" =
size=3D2>=1B$B!!!!%5!<%P7s7W;;%[%9%H=1B(B</FONT></DIV>
<DIV><FONT face=3D"=1B$B#M#S=1B(B =1B$B%4%7%C%/=1B(B" =
size=3D2>=1B$B!!!!7W;;%[%9%H=1B(B1=1B$BBf=1B(B</FONT></DIV>
<DIV><FONT face=3D"=1B$B#M#S=1B(B =1B$B%4%7%C%/=1B(B" =
size=3D2>=1B$B!!!!!!!!!!!!=1B(B  =
=1B$B!&!&!&6&$K%7%s%0%k=1B(BCPU</FONT></DIV>
<DIV><FONT face=3D"=1B$B#M#S=1B(B =1B$B%4%7%C%/=1B(B" =
size=3D2></FONT><FONT size=3D+0><BR><FONT face=3D"=1B$B#M#S=1B(B =
=1B$B%4%7%C%/=1B(B"=20
size=3D2>=1B$B!Z%3%s%Q%$%kJ}K!![=1B(B<BR>=1B$B!!!!=1B(BMPI  &nb=
sp; =1B$B!'!!=1B(Bmpicc -o main main.c<BR>=1B$B!!!!=1B(BOpenMP=20
=1B$B!'!!=1B(Bomcc -omniconfig=3Dscash -o main=20
main.c<BR><BR>=1B$B!Z<B9T4D6-![=1B(B<BR>=1B$B!!!!%^%k%A%f!<%6%b!<%I=1B(B<=
BR><BR>=1B$B$=3D$3$G!"65$($F$$$?$@$-$?$$$3$H$,$"$j$^$9!#=1B(B<BR><BR>=1B$=
B!Z<ALd![=1B(B<BR>=1B$B!!%M%C%HEy$+$i!"0J2<$K<($9-!-"$NJBNs2=3D$K$D$$$F$N=
>pJs$r=1B(B<BR>=1B$B!!<}=3D8$7$?$N$G$9$,!"A4$/8+Ev$?$j$^$;$s$G$7$?!#=1B(B=
<BR>=1B$B!!0lHLE*$G$O$J$$$N$G$7$g$&$+!)=1B(B<BR><BR>=1B$B!!!!-!;R%W%m%;%9=
$r @ 8@.$9$k%W%m%0%i%`!J=1B(Bfork(),execl()=1B$B;HMQ!K=1B(B<BR>=1B$B!!!!-"%=
9%l%C%I$r @ 8@.$9$k%W%m%0%i%`!J=1B(BPOSIX=1B$B%9%l%C%I;HMQ!K=1B(B<BR><BR>=1B=
$B!Z8!>ZFbMF![=1B(B<BR>=1B$B!!!Z<ALd![$N-!-"$H$bF0:n8!>Z$r<B;\$7$^$7$?!#=1B=
(B<BR><BR>=1B$B!!!!-!;R%W%m%;%9$r @ 8@.$9$k%W%m%0%i%`!J=1B(Bfork(),execl()=1B=
$B;HMQ!K=1B(B<BR>=1B$B!!!!!!!c=1B(BMPI=1B$B;HMQ;~!d=1B(B<BR>=1B$B!!!!!!!!=
J#?t$N;R%W%m%;%9$r @ 8@.$7$h$&$H$7$?>l9g!"=1B(B<BR>=1B$B!!!!!!!!=1B(B50%=1B=
$B0J>e$N3NN($G$$$/$D$+$N;R%W%m%;%9$,5/F0$7$^$;$s!#=1B(B<BR>=1B$B!!!!!!!!C=
"$7!"@5>o$K5/F0$5$l4|BT$7$?DL$j$NJBNs2=3D=3DhM}$,<B;\$G$-$k>l9g$b$"$j$^$9=
!#=1B(B<BR><BR>=1B$B!!!!!!!c=1B(BOpemMP=1B$B;HMQ;~!d=1B(B<BR>=1B$B!!!!!!!=
!F0:n$7$^$;$s!#Nc$($P!"%a%$%s%k!<%A%s$+$i;R%W%m%;%9$r=1B(B1=1B$BK\=1B(Bfo=
rk(),execl()<BR>       =1B$B$9$k%W%m%0=
%i%`$r<B9T$9$k$H!"0J2<$N%a%C%;!<%8$,I=3D<($5$l$F=3D*N;$7$^$9!#=1B(B<BR>=1B=
$B!!!!!!!!=1B(B#=20
scrun -nodes=3D2,scored=3Dcomp0.pccluster.org =
./main<BR>=1B$B!!!!!!!!=1B(BSCore-D 5.4.0 connected=20
(jid=3D25).<BR>=1B$B!!!!!!!!=1B(B<0:0> SCORE: 2 nodes (2x1) =
ready.<BR>=1B$B!!!!!!!!=1B(B<0:0>=20
SCORE: 2 nodes (2x1) =
ready.<BR>=1B$B!!!!!!!!=1B(B<0>scash_pa_init:can not create page=20
table file: Operation not =
permitted[1]<BR>=1B$B!!!!!!!!=1B(B<1>scash_pa_init:can not=20
create page table file: Operation not=20
permitted[1]<BR><BR>=1B$B!!!!-"%9%l%C%I$r @ 8@.$9$k%W%m%0%i%`!J=1B(BPOSIX=1B=
$B%9%l%C%I;HMQ!K=1B(B<BR>=1B$B!!!!!!!c=1B(BMPI=1B$B;HMQ;~!d=1B(B<BR>=1B$B=
!!!!!!!!@5>oF0:n$7$F$$$k$h$&$K$_$($^$9!#=1B(B<BR>=1B$B!!!!!!!!C"$7!"=1B(B=
defunct=1B$B!J%>%s%S!K%W%m%;%9$,$G$-$F$$$^$9!#=1B(B<BR>=1B$B!!!!!!!!Nc$($=
P!"%a%$%s%k!<%A%s$+$i=1B(B1=1B$BK\$N%9%l%C%I$r @ 8@.!J=1B(Bpthread_create()=
=1B$B!K$9$k=1B(B<BR>=1B$B!!!!!!!!%W%m%0%i%`$r<B9T$7$?;~$N%W%m%;%9>uBV$,0J=
2<$N$h$&$K$J$j$^$9!#=1B(B<BR><BR>      &nbs=
p;=20
=1B$B!&%^%9%?B&=1B(B<BR>=1B$B!!!!=1B(B  =1B$B!!!!=1B(B# ps -ef =
|grep main<BR>   =20
=1B$B!!!!!!=1B(BUID        PID  =
PPID  C STIME=20
TTY          TIME =
CMD<BR>=1B$B!!=1B(B=20
=1B$B!!=1B(B   =
=1B$B!!=1B(Bmsv       3761  =
3620  0=20
14:45 ?        00:00:00=20
./main<BR>   =1B$B!!=1B(B =
=1B$B!!!!=1B(Bmsv       3767 =20
3761  0 14:45 ?        00:00:00 =
[main.1=20
<defunct>]<BR>   =1B$B!!!!=1B(B =
=1B$B!!=1B(Bmsv      =20
3768  3761  0 14:45 =
?       =20
00:00:00 ./main<BR>   =1B$B!!!!=1B(B =
=1B$B!!=1B(Bmsv      =20
3769  3768  0 14:45 =
?       =20
00:00:00 ./main<BR><BR>       =20
=1B$B!&%9%l!<%VB&=1B(B<BR>=1B$B!!!!=1B(B  =1B$B!!!!=1B(B# ps -ef =
|grep main<BR>  =20
 =1B$B!!!!!!=1B(BUID        =
PID  PPID  C=20
STIME TTY          TIME=20
CMD<BR>   =1B$B!!=1B(B =
=1B$B!!!!=1B(B#501      1184  1161 49=20
14:49 ?        00:03:07=20
./main<BR>   =1B$B!!=1B(B =
=1B$B!!!!=1B(B#501      1185 =20
1184  0 14:49 ?        00:00:00 =
[main.1=20
<defunct>]<BR>   =1B$B!!!!=1B(B =
=1B$B!!=1B(B#501     =20
1186  1184  0 14:49 =
?       =20
00:00:00 ./main<BR>   =1B$B!!!!=1B(B =
=1B$B!!=1B(B#501     =20
1187  1186 50 14:49 ?        =
00:03:11=20
./main<BR><BR>=1B$B!!!!!!!c=1B(BOpenMP=1B$B;HMQ;~!d=1B(B<BR>=1B$B!!!!!!!!=
$^$@<B;\$7$F$$$J$$$N$G$9$,!"=1B(B<BR>=1B$B!!!!!!!!$3$N>l9g$O!"=1B(BOpenMP=
=1B$B$,Ds6!$7$F$$$k%i%$%V%i%j4X?t$K=3Dq$-49$($kI,MW$,=1B(B<BR>=1B$B!!!!!!=
!!$"$k$N$G$7$g$&$+!)=1B(B<BR><BR>=1B$B!ZCN$j$?$$;v![=1B(B<BR>=1B$B!!0J2<$=
N=1B(B2=1B$BE@$G$9!#=1B(B<BR>=1B$B!!!&!Z<ALd![$N-!-"$O!"=1B(BMPI,OpenMP=1B=
$B$GJBNs2=3D$K$7$?>l9g$KF0:n$,J]>Z$5$l$F$$$k$N$+!)=1B(B<BR>=1B$B!!!&J]>Z$=
5$l$F$$$k>l9g!"!Z8!>ZFbMF![$K5-$7$?$h$&$J;v>]$,H/@8$9$k$N$O$J$<$+!)=1B(B<=
BR>     =20
=1B$B!J=1B(BMPI,OpenMP=1B$B$N=3Dq<0$NAH$_9~$_$KLdBj$,$"$k$N$G$7$g$&$+!)!K=
=1B(B<BR><BR>=1B$B0J>e$G$9!#=1B(B<BR>=1B$B$h$m$7$/$*4j$$$$$?$7$^$9!#=1B(B=
</DIV></FONT></FONT></BODY></HTML>

------=_NextPart_000_002F_01C32536.985588F0--




SCore-users-jp メーリングリストの案内