ВУЗ:
Составители:
Рубрика:
- 12 -
MPI_Comm_size
- определение числа процессов
MPI_Comm_rank
- определение процессом собственного номера
MPI_Send
- посылка сообщения
MPI_Recv
- получение сообщения
MPI_Finalize
- завершение программы MPI
среди которых основными являются функции
MPI_Send/MPI_Recv обмена
сообщениями типа ‘точка-точка’.
Например, функция широковещательной передачи
MPI_Bcast посылает со-
общение
buffer от процесса source всем процессам группы comm (включая се-
бя). Она вызывается всеми процессами группы с одинаковыми аргументами
count, datatype, source, comm; в момент возврата управления содержимое buffer
гарантированно скопировано в
buffer всех процессов.
Коллективные функции MPI_Bcast и MPI_Reduce можно выразить через
парные операции
MPI_Send и MPI_Recv. Например, операция MPI_Bcast для
рассылки целого числа N всем процессам (в т.ч. самому себе) эквивалентна
следующему циклу (однако
MPI_Bcast выполняется быстрее):
for (i=0; i<i_procs; i++) // всем процессам от 0 до i_procs
MPI_Send(&N, 1, MPI_INT, i, 0, MPI_COMM_WORLD);
Области передачи сообщений коллективных функций не пересекаются с
таковыми для функций ‘точка-точка’ (например, с помощью
MPI_Recv при-
нять сообщение от
MPI_Bcast невозможно).
При программировании на С список header-файлов обязательно должен
быть дополнен строкой
#include "mpi.h"
Общая структура простейшей параллельной С-программы приблизительно
такова (типовой пример MPI-программы в стиле SIMD); процесс с нулевым
номером обычно считают главным (MASTER), другие процессы – подчинен-
ными (SLAVE):
#include "mpi.h"
// иные необходимые header’ы для C-программы
int
main(int argc, char **argv)
{
int me, size;
MPI_Init (&argc, &argv); // инициализировать MPI
MPI_Comm_rank (MPI_COMM_WORLD, &me); // номер данной ветви
MPI_Comm_size (MPI_COMM_WORLD, &size); // общее число ветвей
// …совместных код для всех ветвей (включая MASTER-процесс)
MPI_Comm_size - определение числа процессов MPI_Comm_rank - определение процессом собственного номера MPI_Send - посылка сообщения MPI_Recv - получение сообщения MPI_Finalize - завершение программы MPI среди которых основными являются функции MPI_Send/MPI_Recv обмена сообщениями типа ‘точка-точка’. Например, функция широковещательной передачи MPI_Bcast посылает со- общение buffer от процесса source всем процессам группы comm (включая се- бя). Она вызывается всеми процессами группы с одинаковыми аргументами count, datatype, source, comm; в момент возврата управления содержимое buffer гарантированно скопировано в buffer всех процессов. Коллективные функции MPI_Bcast и MPI_Reduce можно выразить через парные операции MPI_Send и MPI_Recv. Например, операция MPI_Bcast для рассылки целого числа N всем процессам (в т.ч. самому себе) эквивалентна следующему циклу (однако MPI_Bcast выполняется быстрее): for (i=0; i
Страницы
- « первая
- ‹ предыдущая
- …
- 10
- 11
- 12
- 13
- 14
- …
- следующая ›
- последняя »