Я новичок в пакете 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
Вы должны печатать только с одного ранга. Это тривиальное упражнение по добавлению оператора 'if', поскольку у вас уже есть код для получения ранга. –
Я хотел использовать команду MPI.Finalize() на разных интервалах, чтобы следующая команда должна была дождаться завершения предыдущей команды. Но когда я использую более одного раза MPI.Finalize(), я получаю эту ошибку. Функция MPI_Finalize() вызывается после вызова MPI_FINALIZE. – user3704712