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