MPI

科学技術用の並列計算機規格MPIについてのメモ。

  • 環境設定

MPIを使うためにはMPIの規格に沿ったライブラリが必要。
C,C++,Fortran用のMPICHLAMが有名。
Lamの方が早い事が多いらしいので、とりあえずLamを使っている。
どちらもLinuxで使うのはMPI覚え書き等を参考にすれば難しくない。
mpichはwindowsでも使えるはずだけども、設定に失敗して断念。VC6以上ならば、設定方法は見つかる。

Java用のMPIJavaやLAMのアップグレード版であるOpen-mpiなどもあるけれど、
どちらも(日本語の)情報が少なく面倒で試していない。英語では、そこそこ情報ありそう。
mpiJavaは実行速度が遅いらしい。OpenMpiは共有メモリ環境を意識してるらしい。

  • 文法

MPIの文法はかなり整理されていて、分かりやすい。
プログラマの友の説明で1対1通信はほぼ分かる。
リファレンスが必要なら本家古いけど日本語にある。
文法は分かりやすいけども、動作確認が困難でデバッグは大変。
取り消された送信を受信しようとして、デッドロックに陥ったり
バッファサイズを超える送信を行って、隣のアドレスを壊してしまったり、してしまう。

  • 反省

卒論締切り前なのに作業を止めてしまっていたバグの原因のメモ。
MPI::Cancelの後には必ずMPI::Waitを呼ばないといけない。
送信中の場合はCancelを呼んでも止まらずに、解放されるかも定まらない為に再現性のないバグになる。