2

プロセスがリング順序で互いにメッセージを送受信する単純な MPICH プログラムがあります。
2 つの同一の仮想マシンをセットアップし、ネットワークが正常に機能していることを確認しました。単純な MPICH プログラムを両方のマシンでテストしましたが、問題なく動作します。上記のプログラムのように、異なるマシン上のプロセス間で通信しようとすると、問題が発生します。次のエラーが表示されます。

MPI_Send の致命的なエラー: プロセスが失敗しました。エラー スタック:
MPI_Send(171)................: MPI_Send(buf=0xbfed8c08, count=1, MPI_INT, dest=1,
tag =1, MPI_COMM_WORLD) に失敗しました
MPID_nem_tcp_connpoll(1826): ランク 1 の通信エラー: 接続が拒否されました

  • SSH はパスワードレスで、両側で正常に動作します。
  • /etc/hosts正しく構成されています。
  • 両方のマシンでファイアウォールが無効になっています。
  • NFS クライアント/サーバーを構成し、それらの間でディレクトリを共有しました。(これによる
  • HydraでMPICHとOpenMPIの両方を試しました
4

1 に答える 1

2

ここで私がしたこと、そしてそれはうまくいきます!

ソースコード(tarball)を使用して以下のパッケージをインストール

hydra 
openmpi

作成されたホスト ファイル (両方のノード)

# cat /home/spatel/mpi/hydra/hosts
node1
node2 

.bashrc に変数を設定 (両方のノード)

echo HYDRA_HOST_FILE=/home/spatel/mpi/hydra/hosts >> ~/.bashrc

HelloWorld MPI プログラムを使用して、単一ノードで実行します。

node1# /home/spatel/mpi/hydra/bin/mpiexec -np 1 /home/spatel/mpi/mpi_hello_world
Hello world from processor node1.example.com, rank 0 out of 1 processors

-machinefileオプションを使用して複数のノードで実行する-npプロセッサの数

node1# /home/spatel/mpi/hydra/bin/mpiexec -np 4 -machinefile /home/spatel/mpi/hydra/hosts /home/spatel/mpi/mpi_hello_world
Hello world from processor node1.example.com, rank 0 out of 1 processors
Hello world from processor node2.example.com, rank 0 out of 1 processors
Hello world from processor node1.example.com, rank 0 out of 1 processors
Hello world from processor node2.example.com, rank 0 out of 1 processors
于 2013-01-29T16:02:20.973 に答える