我々のごみ集め器は並列オブジェクト指向言語 ABCL/f [44] のごみ集め器 として使われている. ABCL/f は並列オブジェクトと 関数およびメソッドのfuture呼び出し(非同期呼びだし)を通じた 動的スレッド生成によって拡張さ れたオブジェクト指向言語である. 並列オブジェクトは動的に確保され, 遠隔 参照を通じて複数のプロセッサ間で共有される.
我々は二つのプラットホームでABCL/f を実装した. 一つは分散メモリ, シングルタスク並列計算機AP1000+ [22] であり , もう一つは Sun のワークステーションクラスタである. AP1000+ の 各 CPU は SuperSparc (50MHz) で, 16MB メモリを備えている. 我々の AP1000+ は 256台のプロセッサからなる. ワークステーションクラスタは 40 台の Sun ワークステーションからなり, 我々の学部で日常的に学生によって 使用されている. クラスタ上の実装は, 100MbpsのEthernet上のTCP/IPによっ て通信する. 現在の我々の Sun クラスタ上の通信オーバヘッドは法外に高く, SunOS のローカルスケジューラが同期ごみ集めの効果を隠す大きなスケジュー リングのゆがみをもっているため, 本論文では AP1000+ 上での結果について のみ報告する.
我々は表3.4に示す3つのアプリケーションについて調査を行なった. Barnes-Hut は階層的木構造を持った並列 N body シミュレーションである. プロセッサ間 で共有される主たるデータは BH 木のノードである. これは多くの大域的なデー タを共有し, 頻繁に通信を行なう代表的な SPMD 式同期的プログラムである. RNA は与えられたシーケンスから RNA の二次構造を予測する並列木探索プロ グラムである. ユーザレベルにはほとんど共有オブジェクトはない. 大域ごみ 集めの唯一の対象はプロセッサが遠隔手続き呼び出しの結果の値を通信する 通信チャネルである. しかし, ゴミになったチャネルを回収するために, 時々全体ごみ集めをする必要がある . RNA は, 各プロセッサが多くのノード内並列性をもつ「非同期」な アプリケーションの代表である. GA は遺伝的アルゴリズムである. 各プロセッサに一つのワーカーがおり, それらは独立に局所的なgeneを複製し たり, ワーカーに所属する二つのgeneを交配する. ワーカーは時々自分たちのgene を交換する. GA は「ほとんど計算」アプリケーションの代表である.
表3.5に通信と同期の挙動および各プロセッサの並列性を記述する. Barnes-Hut の各タイムステップは, BH 木を作り, 木全体を一度探索し, そして, 各分子 の力を計算するために木の一部を何回も探索する. この力計算フェーズが計算 時間を支配し, アプリケーションの全体の挙動を決定づける. プロセッサがロー カルにそのコピーを持っていない木のノードをアクセスするとき, 通信が発生 する. 各プロセッサは順番に各分子を処理する. それゆえに遠隔アクセスはア クセス中のプロセッサを止めてしまう. この同期動作はこのアプリケーション を通信レイテンシに対し非常に敏感にさせる. RNAでは, プロセッサが新しい スレッドを遠隔プロセッサで fork したとき, または改善された枝刈り情報を他 のプロセッサにブロードキャストするときのみ通信が発生する. 各プロセッサ は十分な量のノード内並列性を持っている. GA では, gene を交換する時のみ 通信が起こる. よって各プロセッサは, 局所的な計算のみフェーズと短い通 信が多いフェーズの間を行ったり来たりする. フェーズの変化は同期的で あり, 各プロセッサはノード内並列性を持たない. 全体的としての通信の割合は低い.