[SCore-users-jp] fork(),execl()を使用したプログラムの並列化
長谷川 篤史
a-hasega @ ats.nis.nec.co.jp
2003年 5月 28日 (水) 23:26:45 JST
長谷川@NEC情報システムズです。
Omni OpenMPの開発に参加させていただいたものです。
> <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]
fork, execlで、./main を実行されたのでしょうか?
MPI,OpenMP共に評価した事がないので保証できませんが、fork, execl自体は
動作すると思います。ただ、execlで、SCoreのプログラム(OpenMPやMPIで書か
れたプログラム)を実行した場合、動かないはずです。
上記のエラーは、また、別の問題で出ていますが、これを修正したとしても、
Omni OpenMPの実装上、そういう実行はできません。
> <OpenMP使用時>
> まだ実施していないのですが、
> この場合は、OpenMPが提供しているライブラリ関数に書き換える必要が
> あるのでしょうか?
"#pragma omp parallel" で、並列化して使用する事を前提としています。
pthreadと併用する事は考慮していませんので、OpenMPのruntime libraryで問
題が出ると思われます。
何をされたいのか判らないのですが、scrun実行時に、必要なノードを確保し
て実行するというのでは、ダメなのでしょうか?
--
長谷川 篤史 E-Mail:a-hasega @ ats.nis.nec.co.jp
株式会社NEC情報システムズ 基盤ソフトウェア事業部 サイエンス基盤部
外線:03-3798-9991(Fax.03-3798-9198) / 内線:8-115-2410(Fax.8-115-2419)
SCore-users-jp メーリングリストの案内