MPI_Scan

Данная операция аналогична функции MPI_Allreduce в том отношении, что после ее выполнения каждый процесс получает результирующий массив. Главное отличие данной функции состоит в том, что содержимое результирующего массива в процессе i является результатом выполнения коллективной операции над массивами из процессов с номерами от 0 до i включительно.

Формат вызова: MPI_Scan (&sendbuf, &recvbuf, count, datatype, op, comm)

5. Перечислите и опишите функции управление процессами.

MPI_Comm_group - Получить обработчик глобальной группы, связанной с коммуникатором MPI_COMM_WORLD,

MPI_Group_incl - Создать новую группу как подмножество глобальной группы,

MPI_Comm_create - Создать новый коммуникатор для вновь созданной группы

MPI_Comm_rank - Получить новый ранг процесса во вновь созданном коммуникаторе

MPI_Group_free и MPI_Comm_free - освободить (уничтожить) группу и коммуникатор

6. Перечислите и опишите функции для организации логических топологий процессов.

В MPI поддерживается два основных типа топологий - декартовые (решеточные)

топологии и топологии в виде графа. MPI-топологии являются виртуальными - связь между физической структурой параллельной машины и топологией MPI-процессов может и отсутствовать. Виртуальные топологии строятся на основе групп и коммуникаторов, и "программируется" разработчиком параллельного приложения. Смысл использования виртуальных топологий заключается в том, что они в некоторых случаях удобны для задач со специфической коммуникационной структурой. Например,декартова топология удобна для задач, в которых обрабатывающие элементы в процессе вычислений обмениваются данными только со своими 4-мя непосредственными соседями. В конкретных реализациях, возможна оптимизация отображения MPI-процессов на физическую структуру заданной параллельной машины

.

MPI_Comm cartcomm;

MPI_Cart_create (MPI_COMM_WORLD, 2, dims, periods, reorder, &cartcomm);

MPI_Comm_rank (cartcomm, &rank);

MPI_Cart_coords (cartcomm, rank, 2, coords);

MPI_Cart_shift (cartcomm, 0, 1, &nbrs[UP], &nbrs[DOWN]);

MPI_Cart_shift (cartcomm, 1, 1, &nbrs[LEFT], &nbrs[RIGHT]);

MPI_Waitall (8, reqs, stats);


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: