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

増田 尚美 n-masuda @ sp.nas.nec.co.jp
2003年 6月 6日 (金) 19:53:52 JST


長谷川様

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

参考になる情報をいただきありがとうございます。
(探しても探しても得られなかった情報が入手できたという感じです。)
理由付けもはっきりでき、大変助かりました。


> Omni/SCASHで生成したプログラムは、実行時に、ユーザが認識していないとこ
> ろで通信をして、データの同期、コヒーレンシを確保しています。このため、
> forkした後に、子プロセス側で通信を発生させた場合、同期が破綻し、正常に
> 動作しません。Omni/SCASHのコード生成を理解した上で、明示的に、通信を発
> 生させないようなプログラムを書くという手はありますが、一般的には、動か
> ないと理解しておいてもらった方がよろしいと思います。

了解しました。
サンプルプログラムを使用して、実際の動きの確認はできても
内部でどのように動いているのかわからず、釈然としない部分が
多かったのですが、これですっきりしました。


> ただ、通常、親プロセスはwaitで、子プロセスを待っていると思いますが、
> SCoreのmulti user modeでは、jobをgang schedulingしているため、waitして
> いるjobにも一定時間、CPUが割り当てられます。
> mainから、subjob1をscrunで実行した場合、それぞれに、50%づつCPUリソース
> が割り当てられることになるため、効率が悪くなる可能性があります。

アイドル状態であるのに、CPU使用率が高い事が気になっていました。
一定時間ということは、いづれは低くなるのでしょうか?



> 一般的には、増田さんの言われるような方法や、batシステムを使用する方法
> をとると思いますが、SCoreのmulti user modeを使われるのであれば、効率的
> にも、実行モジュールを1つにするか、jobを実行するだけのプログラムを書い
> て、そこから、scrunでjobを実行するようにされた方ががいいのではないで
> しょうか?

了解いたしました。
おそらく、今回のシステムでは、
Omni/SCASH(SCore版のOmni)を採用することになると思います。

この後も、つまずくことが山ほどあると思われます。
どうぞ、今後ともよろしくお願いいたします。

以上です。




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