SMPIはMPI通信ライブラリ用のSMP向けの拡張です。集団通信関数における各ノード の通信に、あらかじめ取得したSMPクラスタのノード構成に基づいたスケジュー リングを施すことで、通信効率の向上させることができます。 中〜大規模構成のSMPクラスタで巨大なデータの集団通信が必要な場合に特に有効であると考えられます。
現在、C言語で利用可能なSMPIの実装をぼちぼち進めています。
SMPIの通信性能について、既存のMPI実装(MPICH)との比較を行っています。
| MPI 関数名 | SMPI 関数名 | 実装状況 |
|---|---|---|
| MPI_Alltoall | SMPI_Alltoall | done! (only 2CPU SMP) |
| MPI_Bcast | SMPI_Bcast | done! |
| MPI_Allgather | SMPI_Allgather | not yet |
| MPI_Gather | SMPI_Gather | not yet |
| MPI_Reduce | SMPI_Reduce | not yet |
| MPI_Scatter | SMPI_Scatter | not yet |
これらの関数に加えて、SMPクラスタのノード構成を把握するのに必要な関数を 用意しています。
実装が全然進んでいませんが、LGPLライセンス下でとりあえず公開してみます。 コンパイルには MPICH と glib-1.2 が必要です。
インストール方法などは使い方 をご覧下さい。
また、お使いの用途・環境によっては性能向上が見られない可能性もあることをご了承ください。