Разделы презентаций


lec13ПП.pptx

Содержание

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

Слайды и текст этой презентации

Слайд 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. И.Г. Захарова, кафедра ПО

Пример - топология некоторого графаФункция для создания коммуникатора с топологией типа граф: int MPI_Graph_create(MPI_Comm oldcomm, int nnodes,

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

ПримерЛекция 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. И.Г. Захарова, кафедра ПО

Для создания топологии с графом данного вида необходимо добавить в программу код: ...int index[] = { 4,1,1,1,1

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

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

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

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

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

Слайд 7Производные типы данных
Возможные варианты:
Разрозненные данные могут быть
переданы с использованием нескольких

сообщений (накопление латентности операций передачи данных из-за роста их числа).
предварительно

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

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

Производные типы данныхВозможные варианты:Разрозненные данные могут бытьпереданы с использованием нескольких сообщений  (накопление латентности операций передачи данных

Слайд 8Общий случай
Описание производного типа включает:
Описание набора значений предусмотренного в MPI

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


карта типа:
TypeMap = {(type0,disp0), (type1,disp1), …}
сигнатура типа:
TypeSignature = {type0, type1, …}

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

Общий случайОписание производного типа включает:Описание набора значений предусмотренного в MPI типа, Описание расположения значений (могут не располагаться

Слайд 9Интерпретация
Производный тип MPI - скрытый объект, который специфицирует:
последовательность базовых

типов,
последовательность смещений.
Последовательность таких пар определяется как отображение (карта) типа.
Использование производного

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

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

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

Слайд 10Пример
Пусть в сообщение должны входить значения переменных:
double a; // адрес

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

48
Тогда производный тип для описания данных должен иметь карту типа вида:
{(MPI_DOUBLE,0),(MPI_DOUBLE,16),(MPI_INT,24)}

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

ПримерПусть в сообщение должны входить значения переменных:double a; // адрес 24 double b; // адрес 40 int

Слайд 11Вспомогательные функции
Протяженность и размер типа (сколько байтов нужно отводить для

элемента и сколько занимает):
int MPI_Type_extent( MPI_Datatype type, MPI_Aint *extent );
int

MPI_Type_size( MPI_Datatype type, MPI_Aint *size );
(П: размер=20, протяженность=28)
Получение адреса переменной
int MPI_Address( void *location, MPI_Aint *address );

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

Вспомогательные функцииПротяженность и размер типа (сколько байтов нужно отводить для элемента и сколько занимает):int MPI_Type_extent( MPI_Datatype type,

Слайд 12Конструирование производных типов
Непрерывный способ позволяет определить непрерывный набор элементов существующего

типа как новый производный тип
Векторный способ обеспечивает создание нового производного

типа как набора элементов существующего типа, между элементами которого существуют регулярные промежутки по памяти. Размер промежутков задается в числе элементов исходного типа

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

Конструирование производных типовНепрерывный способ  позволяет определить непрерывный набор элементов существующего типа как новый производный типВекторный способ

Слайд 13Конструирование производных типов
Индексный способ отличается от векторного способа тем, что

промежутки между элементами исходного типа могут иметь нерегулярный характер
Структурный способ

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

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

Конструирование производных типовИндексный способ  отличается от векторного способа тем, что промежутки между элементами исходного типа могут

Слайд 14Порядок работы
Производный тип строится из
базовых типов MPI и
ранее

определенных производных типов с помощью специальных функций-конструкторов :
MPI_Type_contiguous,
MPI_Type_vector,

MPI_Type_hvector,
MPI_Type_indexed, MPI_Type_hindexed,
MPI_Type_struct.

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

Порядок работыПроизводный тип строится из базовых типов MPI и ранее определенных производных типов  с помощью специальных

Слайд 15Порядок работы
Новый производный тип регистрируется вызовом функции
MPI_Type_commit
Только после регистрации

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

конструировании других типов.
Предопределенные типы MPI считаются зарегистрированными.
Когда производный тип становится ненужным, он уничтожается функцией
MPI_Type_free

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

Порядок работыНовый производный тип регистрируется вызовом функции MPI_Type_commitТолько после регистрации новый производный тип можно использовать в коммуникационных

Слайд 16Функция для векторного способа
Функция-конструктор типа MPI_Type_vector создает тип, элемент которого представляет

собой несколько равноудаленных друг от друга блоков из одинакового числа

смежных элементов базового типа.
int MPI_Type_vector(int count, int blocklength, int stride, MPI_Datatype oldtype, MPI_Datatype *newtype)

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

Функция для векторного способаФункция-конструктор типа MPI_Type_vector создает тип, элемент которого представляет собой несколько равноудаленных друг от друга блоков

Слайд 17Параметры функции
count - число блоков;
blocklength - число элементов базового типа

в каждом блоке;
stride - шаг между началами соседних блоков, измеренный

числом элементов базового типа;
oldtype - базовый тип данных;
newtype - новый производный тип данных.

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

Параметры функцииcount - число блоков;blocklength - число элементов базового типа в каждом блоке;stride - шаг между началами

Слайд 18
Пример
Лекция 13. И.Г. Захарова, кафедра ПО
шаг между началами соседних блоков

в байтах

ПримерЛекция 13. И.Г. Захарова, кафедра ПОшаг между началами соседних блоков в байтах

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика