12

を使って並列プログラムを書いていOpen MPIます。Snow Leopard 10.6.4 を実行しており、自作パッケージ マネージャーを使用してインストールOpen MPIしました。

を使用してプログラムを実行するとmpirun -np 8 ./test、すべてのプロセスがランク 0 であると報告し、プロセスの総数が 1 であると認識し、process rank: 0, total processes: 1get の 8 行がコンソールに吐き出されます。

私の大学のコンピューターラボの一部のUbuntuマシンでは、まったく同じコードがコンパイルされ、期待どおりに実行されるため、コードの問題ではないことはわかっています。homebrew のバグトラッカーをチェックしましたが、Open MPI パッケージに関する問題は報告されていません。私は途方に暮れています。

4

4 に答える 4

7

呼び出している mpirun を確認します。実行中の mpirun は、バイナリの 8 つの独立したインスタンスを起動しています。したがって、各インスタンスは、ユニバース サイズが 1 でランクが 0 の MPI アプリケーションです。

また、OS X ボックスのクラスターで最終的なコードを実行する予定がない限り、これらのコードをテストおよび開発するために、virtualbox などの VM に Linux バージョンをインストールすることを強くお勧めします。

于 2011-03-03T23:01:16.673 に答える
6

以前のMPI実装を完全にアンインストールします。

私の場合、最初にMPICH2をインストールしてからアンインストールし、OpenMPIに変更しました。その後、同じケースが発生し、すべてのプロセスのランクは0でした。この問題を修正するために私がしたことは、システムからMPICH2を完全にアンインストールすることです(私はUbuntu / Debian Linuxを使用しています)。

# apt-get remove mpich2
# apt-get autoremove
于 2013-02-25T05:15:52.257 に答える
4

今日、私はあなたと同じ問題に遭遇しました。そしてついに私は解決策を得ました。

https://wiki.mpich.org/mpich/index.php/Frequently_Asked_Questions#Q:_All_my_processes_get_rank_0を参照してください

簡単に言えば、回答によると、MPI には、プロセスにランクやその他の情報を伝える適切な PMI が必要です。したがって、対応する mpirun/mpiexec を使用して MPI プログラムを実行する必要があります。

あなたの問題は、mpi プログラム コンパイラと mpirun ツールの不一致に関連していると思います。したがって、すべてをアンインストールして、MPICH/openMPI をインストールしてください (いずれか 1 つだけをインストールしてください)。

于 2014-04-21T16:03:41.493 に答える
2

Linux上のCのopenMPIでも同じ問題がありました。代わりに MPIch2 を使用すると、問題は修正されました (ただし、最後に MPI_Finalize() を実行することを忘れないでください。そうしないと、おかしくなりました。)

于 2012-06-29T16:32:30.047 に答える