SEM アーキテクチャ

SEM(Supercomputing Engine for Mathematica){®{Advanced Cluster Systems, Dauger Research}は、MacOSの世界で長く使われてきたクラスタツールPooch®Dauger Researchの上に構成され、Mathematicaに新たな外部インタフェース用カーネルsemath(上記図の白い部分)を提供する。semathはMathematicaフロントエンドとMathKernel(上図赤い部分)の間に位置し,本来MathKernelに送られるべき式の内,SEMに関係する部分(SEMの関数ならびに変数)をインターラプトし,独自に処理する機能を提供する.

このようなカーネル間インターラプト機能はSET(Supercomputing Engine Technology){®{Advanced Cluster Systems, Dauger Research}のMathematicaへの応用によるもので,そのベースにはPoochによるクラスタ技術が存在する.Poochはその独立性の高い設計によって,同種・異種を問わず,分散システムにおけるクラスタ環境の構築を容易にしている.

SEMのインストールはMathematicaのinit.mファイルのみを変更する.主な変更は,Localカーネルを削除し,semathカーネルを新たに追加する.これにより,Mathematicaを起動した際,自動的に所用カーネル数分のsemathプロセスが起動し,ついで各semathプロセスがMathematicaに対し,MathKernelを起動するよう要求する.いったんすべてのMathKernelが起動された後は,SEM用に拡張されたMathematicaがそこにあるかのように見え,ユーザはSEM関数を含めたすべてのMathematica関数を実行することができる.

Mathematicaを終了すると,自動的にMathカーネルを終了し,同時にsemathプロセスも終了する.

Mathematicaの組み込み並列環境がマスタースレーブ方式(下図左)に限定されるのに対し,SEMによって拡張されたMathematiaでは任意のコミュニケーショントポロジーが可能となる(下図右).

SEM/Mathematica通信比較

このトポロジーの差がカーネル間の通信速度に反映される(下図参照).pingはいわゆるピンポン通信で隣あう2つのプロセスが同期式にデータを往復させるテスト.SEM版,Mathematica版で4プロセスから16プロセスまで比較.横軸は往復させるデータのサイズ(Byte),縦軸は通信のバンド幅(kB/sec)を表す.テスト環境はMathematica6,Gigaスイッチで行ったものがこの図.Mathematica7で測定した結果は未掲載だが,傾向的にはほぼ同じ,つまり,Mathematicaの方が10KB程度のデータサイズを超えると性能のが落ちるのに対し,SEMの方は向上しているのがわかる.(参考:実験レポート)

SEMインプリメンテーション

MathLinkをベースにmpiSend, mpiRecvをまず最初実現.ついでこれをベースに他のmpi関数をインプリメントし,最後にParallel関数を実現.

Broadcast, Allgatherはプロセス数が増えるにつれオーバヘッドが増す,その一方で,プロセス数のLogに比例したアルゴリズムはプロセス数が小さい時はオーバヘッドが大きくなる.したがって,プロセス数が16以下の場合は,逐次的に通信するように設定している.


(c)2010.5 Symbolic Systems, Inc.