ВУЗ:
Рубрика:
57
приема сообщений MPI_SEND и MPI_RECV. В основной части про-
граммы расположен условный оператор, который разделяет опера-
торы, выполняемые «0»-процессом, от выполняемых другими про-
цессами. Процессы получают различные задания: все, кроме
«0»-процесса, производят посылку целого значения своего номера
Rank в адресное пространство «0»-процесса, в то время как
«0»-процесс в цикле получает значения, отправленные другими
процессами, выводит эти значения на экран и затем докладывает об
окончании работы.
Запуск программы на 10 процессорах приведет к выводу сле-
дующей последовательности строк:
Process 1 of 10 is ready to work.
Process 2 of 10 is ready to work.
Process 3 of 10 is ready to work.
Process 4 of 10 is ready to work.
Process 5 of 10 is ready to work.
Process 6 of 10 is ready to work.
Process 7 of 10 is ready to work.
Process 8 of 10 is ready to work.
Process 9 of 10 is ready to work.
Process 0 have finished receiving now.
Этот пример отличается от предыдущего и тем, что в нем про-
цессы заканчивают свою работу не в одно время, а следующим об-
разом: первым свою работу закончит процесс с номером «1» – он
дождется приема «0»-процессом своего сообщения, и на этом его
работа закончится. Потом закончит работу «2»-процесс, затем
«3»-процесс и т.д. Самым последним завершит работу, конечно,
«0»-процесс. Если необходимо изменить порядок и заставить все
процессы ждать, пока «0»-процесс не справится со своей работой,
то следует поставить вызов функции синхронизации
Call MPI_BARRIER(MPI_COMM_WORLD, Ierr)
непосредственно перед завершением работы функций MPI – это
приведет к тому, что ни один процесс не продолжит (а в данном
случае не завершит) выполнение программы до тех пор, пока все
другие процессы не вызовут эту функцию.
Страницы
- « первая
- ‹ предыдущая
- …
- 55
- 56
- 57
- 58
- 59
- …
- следующая ›
- последняя »
