0
私はmpi4pyパッケージを初めて使用しています。このコマンドを使用してコードを実行しています。 mpirun -np 4 python test.py私の仕事は「Hello World」を4回印刷するが、プログラムでは与えられた順番に従って「一度だけ行う」ことです。次のコマンドが前のコマンドの完了を待つように、コードにどのように指定するべきですか?mpirun pythonシリアルパラレルミックス?
from mpi4py import MPI
import sys
size = MPI.COMM_WORLD.Get_size()
rank = MPI.COMM_WORLD.Get_rank()
name = MPI.Get_processor_name()
if rank==1:
print 'do it only once',rank
sys.stdout.write(
"Hello, World! I am process %d of %d on %s.\n"
% (rank, size, name))
#MPI.Finalize()
if rank==2:
print 'do it only once',rank
私の答えは
Hello, World! I am process 2 of 4 on sas32.
do it only once 2
Hello, World! I am process 3 of 4 on sas32.
Hello, World! I am process 0 of 4 on sas32.
do it only once 1
Hello, World! I am process 1 of 4 on sas32.
を印刷しているが、私は私の答えは、この
do it only once 1
Hello, World! I am process 2 of 4 on sas32.
Hello, World! I am process 3 of 4 on sas32.
Hello, World! I am process 0 of 4 on sas32.
Hello, World! I am process 1 of 4 on sas32.
do it only once 2
1つのランクからのみ印刷してください。ランクを取得するコードを既に持っているので、 'if'ステートメントを追加するのは簡単なことです。 –
MPI.Finalize()コマンドを別の間隔で使用して、次のコマンドが前のコマンドを完了するのを待つようにしたかったのです。しかし、MPI.Finalize()を複数回使用しているときに、このエラーが発生しています。 MPI_Finalizeが呼び出された後、MPI_Finalize()関数が呼び出されました。 – user3704712