Mpi договоренности icon

Mpi договоренности




Скачати 120.68 Kb.
НазваMpi договоренности
Дата14.07.2012
Розмір120.68 Kb.
ТипДокументи
1. /BOOK/CHAPTER1.DOC
2. /BOOK/CHAPTER2.DOC
3. /BOOK/CHAPTER3.DOC
4. /BOOK/CHAPTER4.DOC
5. /BOOK/CHAPTER5.DOC
6. /BOOK/CHAPTER6.DOC
7. /BOOK/SODERG.DOC
Предисловие к mpi
Mpi договоренности
Сканирующая связь
Коллективная связь
Группы Контексты, и Коммуникаторы
Топологии процессов
Содержаhие


Глава 2


MPI договоренности


Эта глава объясняет символьные договоренности используемые в течении MPI документации.


2.1 Нотация документации


Разумное обяснение.

В этом разделе документации иллюстрируются объяснения для некоторых решений. Для того, чтобы некоторые читатели могли пропустить эти разделы, а заинтересованные в разработке интерфейса могли прочитать их. (Конец разумного обяснения.)


Совет пользователям.

В этом разделе документации материал, который преднозначен для советов пользователям. Для того ,чтобы некоторые читатели могли пропускать эти разделы, а читатели заинтересованные в программировании на MPI могли прочитать их. (Конец совета пользователям.)


Совет разработчикам.

В этом разделе документации материал, который преднозначен для комментариев разработчикам. Для того, чтобы некоторые читатели могли пропустить эти разделы, а читатели заинтересованные в MPI реализациях могли прочитать их. (Конец совета разработчикам.)


2.2 Спецификация процедур


Использование MPI процедур определены языковой независимой структурой. Аргументы процедур выделены как IN или INOUT. Они означают :


- вызов использует но не корректирует аргумент (IN),

- вызов может скорректировать аргумент (OUT),

- вызов использует и корректирует аргумент INOUT.


MPI пытается избежать возможного использовании INOUT аргументов, поскольку такое использование приводит к появлению ошибок, особенно для скалярных аргументов.


2.3 Семантические yсловия


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

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

Блокировочный вызов - если возврат из процедуры указывает на то, что потребителю позволяется вновь использовать ресурсы определенные при вызове.

Локальный вызов - Если завершение процедуры зависит только от локального выполняющегося процесса. Такое функционирование не требует связь с другим процессом потребителя.

Hелокальный вызов - если функционирования может потребовать выполнение некоторой MPI процедуры в другом процессе. Такое функционирование может потребовать связи с другим процессом потребителя.

Коллективный вызов - если задействованы все процессы в группе процесса.


2.4 Типы данных


2.4.1 Hевидимые объекты


MPI управляет системной памятью, которая используется для буферизации сообщений и для хранения внутренних представительств различных MPI объектов как например, группы, коммуникаторы, типы даных, и т.п.. Эта память косвено доступна потребителю, и объектам сохраненным как невидимые: их размер и форма невидима потребителю. Hевидимые объекты доступны через указатели, которые существуют в пространстве потребителя. Дополнительно к их использованию в MPI вызовах для объектного доступа, указатели могут участвовать в назначениях и сравнениях. В Fortran, все указатели являются целого типа.

Hевидимые объекты распределяются и освобождаются вызовами. Они указываются в разделах описания объектов.

MPI вызовы не изменяют величину указателей, за исключением вызовов, что распределяют и освобождают объекты, и MPI вызовов типа COMMIT, описаных в Разделе 3.12.4. Null handler аргумент - ошибка в MPI вызовах, если исключение явно не устанавливается в тексте, что определяет функцию. Такое исключение используется, чтобы поставить объекты в ожидании и тестировать вызовы (см.разделы 3.7.3 и 3.7.5). В противном случае,null handle может использоваться только в функции allocate, которая распределяет новый объект и возвращает на него указатель.

Hевидимый объект и указатель значимы только в процессе в котором этот объект создавался,и не может передаваться в другой процесс. MPI обеспечивает определенные встроенные невидимые объекты и встроенные, статические указатели на эти объекты. Такие объекты не могут быть уничтожены.


Совет пользователям.

Потребитель может случайно создать повисшую ссылку, присваивая указаталю величину другого указаталя, и затем освобождая объект связанный с этими указателями. И наоборот, если переменная указаталя освобождена прежде, чем связанный объект освободится, то объект становится недоступным (это может произойти, например, если указатель - локальная переменная в пределах подпрограммы, и подпрограмма выходит прежде, чем связанный объект освободится). Это - ответственность пользователя. (Конец совета пользователям.)


2.4.2 Аргументы массива


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


2.4.3 Тип state.


MPI процедуры используют в различных местах аргументы с типом state. Например, MPI_ERRHANDLER_SET имеет аргумент типа state со значениями :

MPI_ERRORS, ARE_FATAL, MPI_ERRORS_RETURN, и т.п..


2.4.4 Константы


MPI процедуры иногда назначают специальные значения в аргументы basic типов; например, tag - целый аргумент который может принимать специальную величину MPI_ANY_TAG.

MPI также обеспечивает встроенные поименованные постоянные указатели, такие как MPI_COMM_WORLD (является указатуль на объект, который позволяет сделать все процессы доступными и позволяет сообщаться с любым из них. Все поименованные константы, за исключением MPI_BOTTOM в Fortran, могут использоваться в выражениях инициализации или назначений. Эти константы неизменяют величины в течение выполнения. Непрозрачные объекты доступные постоянным указатулям определяются и не изменяют величину между MPI инициализацией (MPI_INIT() вызов) и MPI завершением (MPI_FINALIZE() вызов).


2.4.5 Chois (Выбор)


MPI функции иногда используют аргументы с chois (или union) типом данных.Механизм объявления таких аргументов различен для С и Fortran. Для Fortran, документ использует !type? для того, чтобы представлять chois переменную, для C, мы используем (void *).


2.4.6 Адреса


Некоторые MPI процедуры используют адреса аргументов, которые представляют абсолютный адрес для вызова программы.Такие аргументы как datatype - целого размера содержат правильный адрес в среде выполнения.


2.5 Языковая связь


Этот раздел определяет правила для MPI языков, связывающих Fortran 77 и ANSI C.

Предпологается, что любые реализации Fortran 90 и C++ используют Fortran 77 и ANSI C связи, соответственно. Поскольку слово PARAMETER - ключевое на языке Fortran, мы используем слово "аргумент", чтобы обозначить аргументы в подпрограмме. В С они называются "параметры", тем не менее, мы ожидаем, что C программисты поймут слово "аргумент" (которое не имеет специфического значения в C), чем позволят нам избежать необязательной неразберихи для Fortran программистов.


2.5.1 Синтаксис для Fortran


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


double precision a

integer b

...

call MPI_send(a,...)

call MPI_send(b,...)


Рисунок 2.1: пример вызова программы с несовпадающими формальными и фактическими аргументами для избежения возможных именых коллизий. Все MPI Fortran подпрограммы имеют код возврата на последнем аргументе. Некоторый MPI С операции, не имеют аргумента кода возврата. Величина кода возврата для успешного завершения - MPI_SUCCESS. Все другие коды ошибочные. Смотри Главу 7.

Указатели представляются в Fortran как целые. Двоичного значения переменные имеют тип LOGICAL. Аргументы Массива индексируются аналогично. Если явно не установленно MPI F77 то связь не соответствует стандарту ANSI Fortran 77. Есть места где этот стандарт несоответствует стандарту ANSI Fortran 77. В частности:

MPI идентификаторы ограничиваются тридцатью а не шестью, значемыми им волами.

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

MPI подпрограмма с choise аргументом может вызываться с другими типами аргументов.Пример - показан на рис.2.1. нарушает Fortran стандарт, хотя такое нарушение часто встречаемо. Для избежания этого каждый тип данных должен иметь свою версию MPI_SEND.

Вызывание MPI констант (параметры) производится подключением файла под названием mpif.h (include). В системах которые не поддерживают подключение файлов, реализация определение величины поименованных констант должна производиться самостоятельно.

Поставщики могут обеспечить занесение mpif.h файлов в Fortran системы, которые поддерживают определенные типы. Есть возможность использование типа MPI_ADRESS который является INTEGER размера. В системах где определение типа не поддерживается, чтобы использовать правильно INTEGER тип, для представления адреса (нужно INTEGER*4 в 32 битовой машине,INTEGER*8 в 64 битовой машине).


Все вызывающии константы MPI могут быть использованы в Fortran где бы нибыли они объявлены с атрибутом PARAMETER.


2.5.2 Синтаксис для С


Мы используем ANSI C формат объявлений. Все MPI имена имеют MPI префикс, определенние констант пишется заглавными буквах, а определенние типов и функций имеют на конце одну основную букву. Программы не должны объявлять переменные или функции с именами начинаемыми с префикса MPI. Это применяется для избежания возможной коллизии имен.

Определение поименнованных констант, функциональных прототипов и определение типов должно выполняться при include файла mpi.h.

Почти все C функции возвращают код ошибки. Успешный код возврата будет MPI_SUCCESS, но также существуют коды возвращаемой ошибки. Некоторый C функции не возвращают никаких значенийы, так что они могут быть осуществлены как макро. Аргументы массива индексируются от нуля. Логические флаги могут иметь значение 0 ``ложь'' или значение <>0 ``истино.'' Аргументы выбора(choice) - это указатели типа void*. Аргументы адреса -это MPI определения типа MPI_Aint. Чтобы это определение было int размера нужно держать любой правильный адрес в целевой архитектуре. Все вызовы MPI констант могут использоваться в выражениях инициализации или присваивания подобно C константам.


2.6 Процессы


MPI программа состоит из автономных процессов, выполняемых свой собственный код в MIMD стиле. Коды выполняемые каждым процессом не идентичны.

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

MPI не определяет модель выполнения для каждого процесса. Процесс может быть последовательным, или может быть мульти-прошитым, с возможностью выполнения параллельно. Это было сделано, чтобы сделать в MPI "сейф нитей". Взаимодействие MPI с нитью состоит в том что параллельные нити будут все допущены для выполнения MPI вызовов; блокирующие MPI вызовы блокируют только введенные нити, допуская планирование других нитей.

MPI не предоставляет механизмы определения начального распределения процессов для MPI вычислений и их связи с физическими процессорами. Ожидается, что поставщики предоставят вариант работы этих механизмов во временя загрузки или во временя выполнения. Такие механизмы позволят производить определение начального количества необходимых процессов, и распределение процессов в процессорах. Также, текущая версия не предусматривает динамического создания или удаления процессов в течение программного выполнения ( общее число процессов фиксируется). Процессы распознаются согласно их относительному рангу в группе (что является последовательным целым в области 0..groupsize-1).


2.7 Обработка ошибок


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

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

Почти все MPI вызовы возвращают код, который указывает успешное завершение функционирования. Там, где возможно, MPI вызовы возвращают код ошибки если ошибка происходила в течение вызова. При определенных обстоятельствах, когда MPI функция может завершить различные четкие операции, и следовательно может сгенерировать различные независимые ошибки, MPI функция может возвратить многочисленные коды ошибки. По умолчанию,при обнаружении ошибки в течение выполнения MPI библиотек, происходит прерывание параллельного вычисления.Тем не менее, MPI обеспечивает механизмы для пользователей, чтобы изменить это умолчание для оперирования над негрубыми ошибками. Пользователь может также определить, что никакая ошибка нефатальна, и коды ошибки это указатели, возвращаемые MPI вызовами. Также, пользователь может использовать собственный обработчик ошибок,который вызывается всякий раз, когда MPI вызов возвращается ненормально.Средства обрабатки ошибок MPI описаны в разделе 7.2. Однако MPI не может обнаружить некоторые ошибки; другие ошибки могут быть слишком сложными чтобы обнаружиться в нормальном режиме выполнения; наконец, некоторые ошибки могут быть "катастрофическими" и могут пресечь передачу управления от MPI к вызывающему оператору.

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


2.8 Вопросы реализации.


Есть много областей где реализация MPI может взаимодействовать с операционной средой и системой. Пока MPI не содержит команды,которые выполняют любые услуги (например I/O или обработки сигнала).Hо это в дальнейшем предлагается разработать.


MPI не определяют также взаимодействие процессов с симафорами, в UNIX среде, или с другими событиями, которые не иметь отношение к MPI связи - это симафоры не значимые с точки зрения MPI.


2.9 Примеры


Примеры в этом разделе только для целей иллюстрации.Они не определяют стандарт. Кроме того, примеры тщательно не были проверены.

Схожі:

Mpi договоренности icon1. Паралельні та розподілені обчислення
Розподілені операції технології mpi. Mpi-функції передачі повідомлень між процесами типу «друг другу». Колективні комунікації технології...
Mpi договоренности iconДокументи
1. /MPI.DOC
Mpi договоренности iconДокументи
1. /MPI.DOC
Mpi договоренности iconMpi как средство параллельной подДержки програмной реализации сетевого объекта
Определяющим недостатком 1-го метода является – неоптимальное распараллеливание прикладных задач. На продуктивность 2-го метода влияет...
Mpi договоренности iconMpi как средство параллельной подДержки програмной реализации сетевого объекта
Определяющим недостатком 1-го метода является – неоптимальное распараллеливание прикладных задач. На продуктивность 2-го метода влияет...
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©zavantag.com 2000-2013
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи