-
Notifications
You must be signed in to change notification settings - Fork 0
IMPI
Interoperable MPI
異なる MPI 実装間における通信仕様.コネクションの確立/切断方法と,データ型(MPI-2規格のexternal32型を利用する),集合通信アルゴリズムを定義している.
- [http://impi.nist.gov/ 本家] (NIST)
- [http://www.osl.iu.edu/research/impi/ ND IMPI server]
IMPI は全ホストが IP reachable であることを前提にしていて,初期化時に全対全のコネクションを張る(つまり,private address で運用されているクラスタ間をつなぐことが考えられていない)? このとき,ホスト情報(host:port)を交換するために,IMPI サーバが必要になる.クライアントはクラスタごとに一つ存在する.
起動プロセスは次のようになる.IMPI サーバは指定されたクライアント数の接続を待ち,ホスト情報を交換する.サーバは全クライアントからDONEコマンドを受け取ると,FINI待ちになる.MPIのプロセス終了時にFINIコマンドが送信されるので,全クライアントからFINIを受け取ると,サーバは終了する.(通常のMPIでinvokeに使われる) mpirun の代わりに impirun を使う. {{{ % impirun -server 2 # IMPI サーバを起動する.クライアント数は2 128.162.19.8:5678 # IMPI サーバのIPアドレスとポート番号が出力される % impirun -client 0 128.162.19.8:5678 -np 8 a.out # クライアント0のmpirun % impirun -client 1 128.162.19.8:5678 -np 4 b.out # クライアント1のmpirun }}}
IMPI コマンド
- AUTH: 認証キーのやりとり
- IMPI: IMPI ジョブへの参加
- COLL: 各情報のやりとり
- DONE: COLL の終端
- FINI: プロセス終了の通知
仕様自体が未完成(バージョン 0.0 で停止中).MPI-2 対応とか,今後進展はあるの?
- 仕様といいつつ,C のソースコードがずらずら書かれているんだけど...
- 実装としては GridMPI,[LAM/MPI],[http://www.hlrs.de/organization/pds/projects/pacx-mpi/ PACX-MPI] とか.ベンダ MPI では,HP の MPI が対応しているらしい?
- HP MPI は MPICH ベース.Linux 版では,バイトオーダの変換をやってくれないみたい(それって意味ないのでは...).結局,へテロ環境で MPI を動かすニーズはあまりないってこと?
MPI/Pro の Verari Systems なんかが IMPI-2 という拡張を行っているらしい?
- private IP addresses
- owner domains
- faults
- interacting dynamic groups
IMPI は仕様として,集合通信の方式を規定している.
- Alltoall: クラスタ構成に関係なく,isend/irecv する.
- Bcast: クラスタの代表ノード間で通信して,クラスタローカルで Bcast する.
この辺のアルゴリズムをネットワークトポロジなどを考慮して,いろいろ切替えるものにできないか?