Кроме списка процессов и контекста обмена с коммуникатором может быть связана дополнительная информация. Важнейшей разновидностью такой информации является топология обменов. В MPI топология позволяет сопоставить процессам, принадлежащим некоторой группе, других, отличных от обычной, схем адресации. Топологии обменов сообщениями в MPI являются виртуальными. Это значит, что они не связаны с физической топологией коммуникационной сети параллельной вычислительной системы.
Топологией в данном случае называют структуру соединений линий и узлов сети без учета характеристик самих узлов. Узлами здесь являются процессы, соединениями — каналы обмена сообщениями, а сетью мы считаем все процессы, входящие в состав параллельной программы. Часто в прикладных программах процессы естественно упорядочить в соответствии с логикой задачи. Такая ситуация возникает, например, если выполняются расчеты, в которых используются решетки (сетки). Это может быть при программировании сеточных методов решения дифференциальных уравнений, а также в других случаях.
В MPI существуют два типа топологии:
Над топологиями можно выполнять различные операции. Декартовы решетки можно расщеплять на гиперплоскости, удаляя некоторые измерения. Данные можно сдвигать вдоль выбранного измерения декартовой решетки.
Сдвигом называют пересылку данных между процессами вдоль определенного измерения. Вдоль избранного измерения могут быть организованы коллективные обмены.
Для того, чтобы связать структуру декартовой решетки с коммуникатором
MPl_COMM_WORLD, необходимо задать следующие параметры:
{10, 15}, например, соответствуют
плоской прямоугольной решетке, протяженность которой вдоль оси x составляет 10
узлов-процессов, а вдоль оси у — 15 узлов);MPI дает возможность системе оптимизировать отображение виртуальной топологии процессов на физическую с помощью изменения порядка нумерации процессов в группе.
Подпрограмма MPI_Cart_create (описания интерфейсов соответствующих
подпрограмм имеются в Методическом пособии) создает новый коммуникатор, наделяя
декартовой топологией исходный коммуникатор. MPI_Cart_create является
коллективной операцией (эту подпрограмму должны вызывать все процессы из
коммуникатора, наделяемого декартовой топологией).
После создания виртуальной топологии можно использовать соответствующую схему
адресации процессов, но для этого требуется пересчет ранга процесса в его декартовы
координаты и наоборот. Определить декартовы координаты процесса по его рангу в
группе можно с помощью подпрограммы MPI_Cart_coords.
(рис 10.1) Декартова топология
Обратным действием по отношению к MPI_Cart_coords обладает подпрограмма
MPI_Cart_rank. С ее помощью можно определить ранг процесса по его декартовым
координатам в соответствующем коммуникаторе.
Между процессами, организованными в декартову решетку, могут выполняться обмены
особого вида. Это сдвиги, о которых мы уже упоминали. Имеются два типа сдвигов
данных по группе из N процессов:
J позиций вдоль ребра решетки. Данные от процесса K
пересылаются процессу с номером (J + K) mod N;J позиций вдоль ребра решетки, когда данные в процессе K
пересылаются процессу с номером J + K, если ранг адресата находится в пределах
между 0 и N.В заданиях лабораторной работы 5 предлагается дописать и модифицировать предлагаемый фрагмент программы на языке C, написанный с использованием процедур MPI.
В программе на языке C коммуникатор grid_comm наделяется топологией двумерной
решетки с периодическими граничными условиями, причем системе разрешено изменить
порядок нумерации процессов. В исходном тексте пропущены вызовы процедур, с
помощью которых каждый процесс может определить свой ранг и декартовы координаты.
Добавьте эти вызовы, откомпилируйте и запустите программу.
#include "mpi.h"
#include <stdio.h>
int main(int argc,char *argv[])
{
MPI_Comm grid_comm;
int dims[2];
int periodic[2];
int reorder = 1, q = 5, ndims = 2, maxdims = 2;
int coordinates[2];
int my_grid_rank;
int coords [2];
MPI_Comm row_comm;
dims[0] = dims[1] = q;
periodic[0] = periodic[1] = 1;
coords[0] = 0; coords[1] = 1;
MPI_Init(argc, argv);
MPI_Cart_create(MPI_COMM_WORLD, ndims, dims, periodic, reorder,
"grid_comm");"
printf("Process rank %i has coordinates %i %i\n", my_grid_rank,
coordinates[0], coordinates[1]);
MPI_Finalize();
return 0;
}
Измените программу из Задания 1, наделив коммуникатор топологией некоторого графа. Детали обсудите с преподавателем.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.