以下に示すように、Pythonのboost.mpiでmpi.gatherを使用しようとしています。
import mpi
print(mpi.rank)
mpi.gather(value=True, root=0)
次のコマンドでプログラムを実行すると、
mpiexec -n 3 python mpi_test.py
出力は
2
1
0
(数字の順番は変わる可能性があります。)
ただし、value
mpi.gather の引数をブール型以外に設定すると、スタックします。なぜこれが起こっているのか分かりますか?
私はmpich2(バージョン3.0.4)、ブースト1.61.0、およびpython 3.5.1を使用しています。前もって感謝します。
更新: 機能しないコードは次のとおりです。
import mpi
print(mpi.rank)
mpi.gather(value='!', root=0)
上記のプログラムをmpirun -n 3 python mpi_test.py
で実行したところ、次の結果が得られました (また、番号の順序は異なる場合があります)。
2
1
プログラムも 0 を出力するはずですが、スタックしてしまいました。使用するプロセスをいくつか試しましたが、ルートランクが印刷されずに常にスタックします。
をまたはvalue
に設定した場合のみ、プログラムが終了するようです。False
True