0

トルクと openmpi 1.3.2 がインストールされているクラスターで MPI ジョブを実行しようとしていますが、常に次のエラーが発生します。

「実行可能ファイルが見つからなかったため、mpirun は指定されたアプリケーションを起動できませんでした: 実行可能ファイル: -p ノード: compute-101-10.local プロセス ランク 0 を開始しようとしています。」

次のスクリプトを使用して qsub を実行しています。

#PBS -N mphello
#PBS -l walltime=0:00:30
#PBS -l nodes=compute-101-10+compute-101-15
cd $PBS_O_WORKDIR
mpirun -npersocket 1 -H compute-101-10,compute-101-15 /home/username/mpi_teste/mphello

なぜこれが起こるのか分かりますか?私が望むのは、各ノード (compute-101-10 と compute-101-15) で 1 つのプロセスを実行することです。ここで何が間違っていますか?すでに mpirun コマンドのいくつかの組み合わせを試しましたが、プログラムが 1 つのノードでのみ実行されるか、上記のエラーが発生します...

前もって感謝します!

4

2 に答える 2

1

この-npersocketオプションはOpenMPI1.2には存在しませんでした。

OpenMPIが報告した診断

mpirunは、実行可能ファイルが見つからなかったため、指定されたアプリケーションを起動できませんでした。実行可能ファイル:-pは、OpenMPI1.2のmpirunがこのオプションで呼び出された場合に正確に言うことです。

実行mpirun --versionすると、計算ノードでデフォルトのOpenMPIのバージョンが決まります。

于 2012-05-14T14:04:38.960 に答える
0

問題は、-npersocket フラグが Open MPI 1.3.2 でのみサポートされており、コードを実行しているクラスターには、そのフラグをサポートしていない Open MPI 1.2 しかないことです。

考えられる回避策は、フラグ -loadbalance を使用し、フラグ -H node1,node2,node3,... を使用してコードを実行するノードを次のように指定することです。

mpirun -loadbalance -H node1,node2,...,nodep -np number_of_processes program_name

そうすれば、各ノードは number_of_processes/p 個のプロセスを実行します。ここで、p はプロセスが実行されるノードの数です。

于 2012-05-15T17:03:11.847 に答える