Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОСЫ 2015 / ГОСЫ 2015 / Паралнльное программирование .doc
Скачиваний:
25
Добавлен:
15.02.2016
Размер:
175.62 Кб
Скачать

Семантика двухточечных обменов

Очередность. Если отправитель последовательно посылает два сообщения в один адрес, то на процессе получателе они должны быть приняты в том же порядке, в котором были отправлены, т.е. при таком порядке передачи, сообщения не обгоняют друг друга.

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

Если процесс многопоточный, тогда семантика потокового исполнения может быть неопределенной относительно порядка для двух операций посылки, выполняемых двумя различными ветвями процессов. Операции логически являются конкурентами, даже если одна физически предшествует другой. Если две операции приема, принимают два посланных сообщения от разных источников (такие сообщения являются конкурентами при приеме), то прием может выполняться в различном порядке.

Ограничение по ресурсам. Любое выполнение операций обмена предполагает наличие ресурсов, которые могут быть ограниченными. В том случае, если при выполнении передачи ресурсов недостаточно, возникает ошибка. В операциях приема передачи сообщений размер приемного буфера не может быть меньше количества принимаемых данных, иначе возникнет ошибка переполнения. Если приемный буфер больше количества полученных данных, то его размер не изменяется и ошибки не возникает.

Схематично процесс передачи сообщений выглядит следующим образом:

1. Формируется пакет сообщения, который включает передаваемые данные (информационную часть) и служебную информацию: source, destination, tag и communicator. Размер информационной части вычисляется в байтах и равен произведению значения MPI_Datatype (число байт типа передаваемых данных) на count (количество передаваемых элементов). Адрес начала буфера передачи задается первым параметром в функции MPI_Send. Информационная часть сообщения будет сформирована данными от указанного адреса, протяженностью, равной вычисленной длине в байтах.

2. От процесса отправителя сообщение уходит на коммуникационный уровень к процессу получателю.

3. Данные от пришедшего сообщения помещаются в приемный буфер, адрес начала которого задается первым параметром в функции MPI_Recv. Размер принимаемого сообщения вычисляется аналогично.

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

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

Топология – это логическая организация процессов в группе (внутри коммуникатора). Такая логическая организация процессов имеет еще одно название - “виртуальная топология”.

Следует различать виртуальную и физическую топологию процессов. Виртуальная топология применяется к физическим процессам для организации логической структуры процессов параллельной программы с целью увеличения производительности обменных операций на вычислительной системе. Тип и описание виртуальной топологии зависит от конкретного параллельного приложения (параллельной программы) и является машинно-независимой. Стандартом MPI поддерживается 2 типа виртуальной топологии: декартова и топология графа, каждая из которых имеет конструктор.

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

2.Топология графа. Топология графа является универсальной, но более сложной в описании, чем декартова топология, поскольку требует полного описания связей каждой вершины. Поскольку большинство параллельных алгоритмов используют сеточные методы, более широко применяется двумерная или трехмерная декартова топология. Декартова топология, определяется числом размерностей (координат) и количеством процессов по каждой координате. Например, соотношение между номером процесса в группе и координатами в решетке (2х2 для четырех процессов будет следующим:

coord (0,0): процесс 0 сoord (0,1): процесс 1

сoord (1,0): процесс 2 сoord (1,1): процесс 3

Координаты в декартовой системе нумеруются от 0.

Функции-конструкторы MPI_Graph_create и MPI_Cart_create используются для создания универсальной (графовой) и декартовой топологий соответственно. Функции являются коллективными, поэтому должны быть вызваны всеми процессами в группе. Конструкторы топологий, используя в качестве входных параметров базовый коммуникатор группы и массивы, описывающие структуру топологий, создают новый контекст коммуникатора с учетом виртуальной топологии процессов, присваивая созданный контекст новому дескриптору коммуникатора.

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

Периодичность по Х Периодичность по Y

Если при создании декартовой структуры полная размерность декартовой решетки меньше, чем размер группы процессов, то значение дескриптора коммуникатора декартовой топологии в не вошедших процессах равно MPI_COMM_NULL. Если размерность декартовой решетки больше количества процессов, вызов функции-конструктора MPI_Cart_create будет неверным и декартова топология не может быть создана.

При создании графовой виртуальной топологии, структуру графа в конструкторе MPI_Graph_create определяют три параметра: nnodes, index и edges, где nnodes – целая величина, определяющая число вершин графа от 0 до nnodes-1. i-ый элемент массива index хранит суммарное число соседей первых i вершин графа. Номера вершин-соседей 0, 1, ..., nnodes-1 хранятся в последовательности значений массива edges. Общее число элементов в index равно количеству вершин (процессов), а общее число элементов в edges равно числу ребер графа.

Если количество вершин графа nnodes меньше количества процессов в группе, то значение дескриптора коммуникатора в не вошедших процессах равно MPI_COMM_NULL. Вызов конструктора будет неверным, если он определяет граф большего размера, чем размер группы исходного коммуникатора.

Например: для создания виртуальной топологии графа из физической топологии типа звезда для 5 процессов значения параметров должны быть следующими:

nnodes= 5 index[5] = {4, 5, 6, 7, 8} edges[8] = {1, 2, 3, 4, 0, 0, 0, 0}

В массиве index – 4 – это число выходящих связей для процесса 0 (связи с процессами 1,2,3,4), для процесса 1 число выходящих связей равно 1 (связь с процессом 0), в массиве index 4+1=5, для процесса 2 число соседей равно 1 (связь с процессом 0), где 5+1=6 и т.д.

В массиве edges первые 4 значения описывают номера процессов, с которыми связан процесс 0 – это 1, 2, 3, 4. Процесс с номером 1 имеет одну связь с процессом 0, процесс с номером 2 имеет одну связь с процессом 0 и т.д.

Соседние файлы в папке ГОСЫ 2015