本当は怖いHPC

HPC屋の趣味&実益ブログ

mpi

MPI Communicatorのattributesを利用して、MPI_Finalize()時にコールバック関数を起動する

mpi

MPIのややマニアックな機能の1つに、attriburtesがあります。これは、コミュニケータに、整数をキーとした辞書のようなデータ構造で値(属性)を登録できるというものです。関係する関数としては、 MPI_Comm_create_keyval、 MPI_Comm_set_attrなどがありま…

MPIでRank順に出力する

小ネタ。 MPIのプログラムから printf などを使ってデバッグ出力をする場合、全プロセスから一斉に同じ出力をしたときの順序は保証されていません。 例えば、下のようなプログラムを考えます。 #include <stdio.h> #include <mpi.h> int main(int argc, char **argv) { int r</mpi.h></stdio.h>…

ChainerMNをMPIで実行中に、例外でプロセスが死んでも実行が止まらない問題

通常、MPIプログラムは、実行中のどれかのrankがエラー等で以上終了した場合(あるいはMPI_Finalizeを呼び出さずに終了した場合)は全プロセスが強制終了されることが期待されます。 が、ChainerMNを含む mpi4py を用いたプログラムを実行している場合、Pyth…

Time to remove the openib btl ?

mpi

Open MPI devel メーリングリストで、「openibコンポーネントを削除する時が来たのでは?」という議論が始まっています。 Open MPIでInfinibandを使う場合、ながらく openibib という BTL コンポーネントが使われてきました。 BTL というのは、Byte Transfer…

C++11とMPIを使ったプロジェクトをTravis CIでテストする

githubで開発しているプロジェクトのCIを実施したいが、C++11をサポートするコンパイラが必要だ。さらに、MPIを使ったプロジェクトではmipcxxとmpirunが必要だ。Github上のプロジェクトのCIを行ってくれるサービスはCircle CIなどもあるが、C++には対応して…

【広告】