Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Виртуальные топологии в MPI - файл lab0_5.doc


Виртуальные топологии в MPI
скачать (158.4 kb.)

Доступные файлы (3):

lab0_5.doc73kb.28.09.2011 18:12скачать
lab0_5_1.c
lab0_5.pdf147kb.28.09.2011 16:18скачать

содержание
Загрузка...

lab0_5.doc

Реклама MarketGid:
Загрузка...
Санкт-Петербургский государственный университет

кафедра вычислительной физики


С.А.Немнюгин


Лабораторная работа 0.5

Виртуальные топологии в MPI

Методические материалы к курсу «Средства программирования для многопроцессорных

вычислительных систем»
Intel Multicore Curriculum Initiative
Санкт-Петербург

2007


2
Виртуальные топологии

Кроме списка процессов и контекста обмена с коммуникатором может быть связана

дополнительная информация. Важнейшей разновидностью такой информации является

топология обменов. В MPI топология позволяет сопоставить процессам, принадлежащим

некоторой группе, других, отличных от обычной, схем адресации. Топологии обменов

сообщениями в MPI являются виртуальными. Это значит, что они не связаны с

физической топологией коммуникационной сети параллельной вычислительной системы.

Топологией в данном случае называют структуру соединений линий и узлов сети без

учета характеристик самих узлов. Узлами здесь являются процессы, соединениями

каналы обмена сообщениями, а сетью мы считаем все процессы, входящие в состав

параллельной программы. Часто в прикладных программах процессы естественно

упорядочить в соответствии с логикой задачи. Такая ситуация возникает, например, если

выполняются расчеты, в которых используются решетки (сетки). Это может быть при

программировании сеточных методов решения дифференциальных уравнений, а также в

других случаях.

В MPI существуют два типа топологии:






декартова топология — прямоугольная решетка произвольной размерности

(рис. 1);

топология графа.

Над топологиями можно выполнять различные операции. Декартовы решетки можно

расщеплять на гиперплоскости, удаляя некоторые измерения. Данные можно сдвигать

вдоль выбранного измерения декартовой решетки.

Сдвигом называют пересылку данных между процессами вдоль определенного измерения.

Вдоль избранного измерения могут быть организованы коллективные обмены.

Для

того,

чтобы

связать

структуру

декартовой

решетки

с

коммуникатором

MPI_COMM_WORLD, необходимо задать следующие параметры:

размерность решетки (значение 2 соответствует плоской, двумерной решетке);

размер решетки вдоль каждого измерения (размеры {10, 15}, например, соответствуют

плоской прямоугольной решетке, протяженность которой вдоль оси x составляет 10

узлов-процессов, а вдоль оси y 15 узлов);

периодичность вдоль каждого измерения (решетка может быть периодической, если

процессы, находящиеся на противоположных концах ряда, взаимодействуют между

собой).

MPI дает возможность системе оптимизировать отображение виртуальной топологии

процессов на физическую с помощью изменения порядка нумерации процессов в группе.

Подпрограмма

MPI_Cart_create

(описания

интерфейсов

соответствующих

подпрограмм имеются в Методическом пособии) создает новый коммуникатор, наделяя

декартовой

топологией

исходный

коммуникатор.

MPI_Cart_create

является

коллективной операцией (эту подпрограмму должны вызывать все процессы из

коммуникатора, наделяемого декартовой топологией).

После создания виртуальной топологии можно использовать соответствующую схему

адресации процессов, но для этого требуется пересчет ранга процесса в его декартовы

координаты и наоборот. Определить декартовы координаты процесса по его рангу в

группе можно с помощью подпрограммы MPI_Cart_coords.


3


Рис. 1. Декартова топология
Обратным действием по отношению к MPI_Cart_coords обладает подпрограмма

MPI_Cart_rank. С ее помощью можно определить ранг процесса по его декартовым

координатам в соответствующем коммуникаторе.

Между процессами, организованными в декартову решетку, могут выполняться обмены

особого вида. Это сдвиги, о которых мы уже упоминали. Имеются два типа сдвигов

данных по группе из^ N процессов:

циклический сдвиг на J позиций вдоль ребра решетки. Данные от процесса K

пересылаются процессу с номером (J + K) mod N;

линейный сдвиг на J позиций вдоль ребра решетки, когда данные в процессе K

пересылаются процессу с номером J + K, если ранг адресата находится в пределах

между 0 и N.





4
Лабораторная работа

В заданиях лабораторной работы 0.5 предлагается дописать и модифицировать

предлагаемый фрагмент программы на языке C, написанный с использованием процедур

MPI.

Необходимый для выполнения данной лабораторной работы справочный материал можно

найти на стр. 51 – 55 методического пособия «Средства программирования для

многопроцессорных вычислительных систем».
Задание 1
В программе на языке 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;

}


5

Задание 2

Добавьте в программу из Задания 1 операции циклического и/или линейного сдвига вдоль

определенного измерения.


6

Задание 3

Измените программу из Задания 1, наделив коммуникатор топологией некоторого графа.

Детали обсудите с преподавателем.


Скачать файл (158.4 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации