Next: Up: Previous:

並列度の抽出および同期

並列度は上記の関数をfutureを用いて再帰呼出しすることによって抽出する. 並列度の爆発を抑制するために, パラメータmax-p-depthで与えられた 段数までをfutureを用いて再帰呼出しする. その際にその仕事を依頼するプロ セッサは, 単に(random-pe)によって ランダムなプロセッサを割り当てている. future呼び出しの結果は,
(let* ((x (future (search-node ...))))
によって束縛され(30行目),
(push x rs)
(37行目)によってリストに貯められ, 後に同期がとられている.

depthmax-p-depth以上の場合は, 一旦futureによって,

(future (search-node ...
                     ...
                     ...
                     ...        )
        :on (if ... ... *pe*))
と, ローカルに再帰呼び出しをした後(30〜34行目), 直ちにtouchをし て返事を待っている. これは単に,
(search-node ...)
と呼び出すのと同値であるが, 他プロセッサにforkする場合とコードを共有す るためにこのように記述する.



Mitsubishi Research Institute,Inc.
Thu Feb 27 10:00:46 JST 1997