Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
32
Добавлен:
19.04.2015
Размер:
488.69 Кб
Скачать

1

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

Под топологией вычислительной системы понимают структуру узлов сети и линий связи между этими узлами.

Топология может быть представлена в виде графа, в котором

вершины есть процессоры (процессы) системы,

дуги соответствуют имеющимся линиям (каналам) связи.

Лекция 13. И.Г. Захарова, кафедра ПО

2

Парные операции передачи данных могут быть выполнены между любыми процессами коммуникатора.

В коллективной операции принимают участие все процессы коммуникатора.

Следовательно,

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

Можно организовать логическое представление любой необходимой виртуальной топологии независимо от физической сети - с помощью дополнительной адресации процессов.

Лекция 13. И.Г. Захарова, кафедра ПО

3

Пример - топология некоторого графа

Функция для создания коммуникатора с топологией типа граф:

int MPI_Graph_create(MPI_Comm oldcomm, int nnodes, int *index, int *edges, int reorder, MPI_Comm* graphcomm)

oldcomm-исходныйкоммуникатор, nnodes-количество вершин графа,

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

reorder-параметр допустимости изменения нумерации процессов,

graphcomm–создаваемый коммуникатор с топологией типа граф.

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

Лекция 13. И.Г. Захарова, кафедра ПО

4

Пример

Лекция 13. И.Г. Захарова, кафедра ПО

5

Для создания топологии с графом данного вида необходимо добавить в программу код:

...

int index[] = { 4,1,1,1,1 };

int edges[] = { 1,2,3,4,0,0,0,0 };

MPI_CommStarComm; MPI_Graph_create(MPI_COMM_WORLD, 5, index,

edges, 1,&StarComm);

...

Лекция 13. И.Г. Захарова, кафедра ПО

6

Производные типы данных

Для передачи сообщений м.б. недостаточно базовых типов.

При использовании функций передачи

данных предполагали, что сообщения - некоторый непрерывный

вектор элементов базового типа MPI.

B общем случае данные могут располагаться в памяти не рядом и состоять из разнотипных значений.

Лекция 13. И.Г. Захарова, кафедра ПО

7

Производные типы данных

Возможные варианты:

Разрозненные данные могут быть

переданы с использованием нескольких

сообщений (накопление латентности операций

передачи данных из-за роста их числа).

предварительно упакованы в формат

непрерывного вектора (лишние операции копирования данных).

Лекция 13. И.Г. Захарова, кафедра ПО

8

Общий случай

Описание производного типа включает:

Описание набора значений предусмотренного в MPI типа,

Описание расположения значений (могут не располагаться непрерывно по памяти).

Основа

карта типа:

TypeMap = {(type0,disp0), (type1,disp1), …}

сигнатура типа:

TypeSignature = {type0, type1, …}

Лекция 13. И.Г. Захарова, кафедра ПО

9

Интерпретация

Производный тип MPI - скрытый объект, который специфицирует:

последовательность базовых типов,

последовательность смещений.

Последовательность таких пар определяется как отображение (карта) типа.

Использование производного типа в функциях обмена сообщениями – трафарет для интерпретации данных, наложенный на область памяти, которая содержит передаваемое или принятое сообщение.

Лекция 13. И.Г. Захарова, кафедра ПО

10

Пример

Пусть в сообщение должны входить значения переменных:

double a; // адрес 24 double b; // адрес 40 int n; // адрес 48

Тогда производный тип для описания данных должен иметь карту типа вида:

{(MPI_DOUBLE,0),(MPI_DOUBLE,16),

(MPI_INT,24)}

Лекция 13. И.Г. Захарова, кафедра ПО

Соседние файлы в папке Параллельное программирование (лекции)