Шаг | Текущие позиции для процессов с rank | Примечание | ||
0 | 1 | остальные | ||
1 | 3 | 3 | 3 | . |
2 | 4 | 4 | 4 | . |
3 | 5 | 5 | 5 | . |
4 | 9 | 7 | 9 | Процесс с rank равным 1 не может закончить свой шаг по "тривиальной параллельной" причине - управление не может вернуться из функции MPI_Recv так как процесс с rank равным 0 еще не вызвал функцию MPI_Send в строке 11 и не вызовет ее на этом шаге. |
5 | 10 | 7 | 13 | Остальные процессы не могут завершить шаг по "тривиальной параллельной" причине - для завершения работы MPI_Finalize ее должны вызвать все процессы. |
6 | 11 | 7 | 13 | Процесс с rank равным 1 процесс должен закончить выполнение MPI_Recv. |
7 | 13 | 9 | 13 | . |
8 | 13 | 13 | 13 | . |
Таблица 1. Текущие позиции для различных процессов при пошаговом выполнении MPI программы.
В данном примере за восемь шагов параллельной программы процесс с rank равным 0 сделал 7 последовательных шагов, процесс с rank равным 1 сделал 6 последовательных шагов, остальные процессы сделали 5 последовательных шагов, и пользователю не потребовалось никаких дополнительных действий для этого.
Основные отличия предложенной схемы выполнения команды "шаг" от существующих схем: