Средства разработки приложений



              

Синхронная модель команды "шаг" - часть 2


Шаг Текущие позиции для процессов с 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 последовательных шагов, и пользователю не потребовалось никаких дополнительных действий для этого.

Основные отличия предложенной схемы выполнения команды "шаг" от существующих схем:

  1. Первые три шага в параллельном отладчике с синхронной схемой команды "шаг" будут идентичны приведённым выше. Однако пользователь не дождётся завершения шага 4 в таком отладчике, поскольку процесс с rank равным 1 не сможет завершить свою часть команды. Пользователю придётся прервать выполнение команды. В результате он получит набор процессов, остановленных в разных точках программы. Он не будет знать, какой из процессов остановился самостоятельно, выполнив свой элементарный шаг, а какой был прерван пользователем.
  2. Если в отладчике реализована асинхронная модель параллельной команды "шаг", то пользователь, после того, как выдал команду и получил управление в отладчике (сразу же после выдачи команды), не может быть уверен, что все процессы завершили выполнение своих частей общей параллельной команды "шаг".


    Содержание  Назад  Вперед