next up previous contents
Next: ランダム割り付け Up: 4.8 ゴール分散の指定方法 Previous: 4.8 ゴール分散の指定方法

サイクリック割り付け

ノード数 4 の構成でゴール spawnのプロセスを 8 個サイクリックに 割り付けたプログラム例を次に示す. 生成するプロセスの 個数は引数で指定し, ノード数も組込み述語で調べているため, 汎用的に使える例である.

:- module foo.
        distribute(N):- true |                  %(1)
                current_node(_,PEs),            %(2)
                fork(N,PEs,0).                  %(3)
        fork(0,PEs,PE):- true | true.           %(4)
        otherwise.
        fork(N,PEs,PE):- PeNo:=PE mod PEs|      %(5)
                spawn@node(PeNo),               %(6)
                NextPE:=PE+1,                   %(7)
                N1:=N-1,                        %(8)
                fork(N1,PEs,NextPE).            %(9)

``foo:distribute(8)'' を実行すると, spawnプロセスはノード の 0, 1, 2, 3, 0, 1, 2, 3 に割り付けられる.



next up previous contents
Next: ランダム割り付け Up: 4.8 ゴール分散の指定方法 Previous: 4.8 ゴール分散の指定方法



KLIC