[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 メーリングリストの案内