Skip to content
oraccha edited this page Jan 14, 2013 · 1 revision

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 する.

この辺のアルゴリズムをネットワークトポロジなどを考慮して,いろいろ切替えるものにできないか?

Clone this wiki locally