Когда я запускаю программу «Open MPI», она обычно назначает ранги в случайном порядке, я хочу знать, есть ли способ всегда назначать ранги по порядку?Открытые ряды MPI не в порядке
Таким образом, вместо этого
Hello, World. I am 2 of 3
Hello, World. I am 0 of 3
Hello, World. I am 1 of 3
я могу получить эту
Hello, World. I am 0 of 3
Hello, World. I am 1 of 3
Hello, World. I am 2 of 3
EDIT
здесь код
PROGRAM hello
INCLUDE 'mpif.h'
INTEGER*4 :: numprocs, rank, ierr
CALL MPI_INIT(ierr)
CALL MPI_COMM_SIZE(MPI_COMM_WORLD, numprocs, ierr)
CALL MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)
write(*,*) 'Hello World. I am', rank, 'of', numprocs
CALL MPI_FINALIZE(ierr)
END PROGRAM hello
Я тестировал на процессоре i5 (4 потока), когда я запускаю
mpirun -np 4 myprog
это работает, как я хочу, чтобы он, ряды отпечатанные в порядке 0-3, в противном случае (например, с 3, как показано выше), просто привычка делать это (тестировал как 100 раз)
Отображение рангов на хосты/ядра является детерминированным в каждой реализации MPI. Точный прогресс каждого звания (в значительной степени) независим в ходе работы. Характер «не в порядке» отпечатков иллюстрирует, что каждый из процессов дошел до записи, и что запись передавалась через stdout обратно в команду mpirun для вывода на терминал в другом порядке. Это основной характер программ MPI. В лучшем случае существует «слабая» координация между рядами. Синхронизация по всем ранкам является одной из фундаментальных проблем параллельного программирования. –
@StanGraves Спасибо большое –