ПОД конспект (1184369), страница 15
Текст из файла (страница 15)
Псевдопараллелизм обеспечивает операционная система.Поскольку число процессов в MPI вычислениях обычно зафиксировано, центральными в идеологии MPIявляются механизмы синхронизации и обмена данными между процессами. Операции связи междупроцессами можно подразделить на:двухточечные, необходимые для того, чтобы послать сообщение от одного именованного процессак другому. Эти операции могут использоваться для обеспечения локальной и неструктурной связи.группа процессов может инициировать коллективные операции связи, обычно для того, чтобывыполнить внешние действия с глобальными переменными (операции типа суммирования илиоповещения).MPI поддерживает асинхронную связьЭффективность и надежность обеспечиваются:определением MPI операций не процедурно, а логически, т.е.
внутренние механизмы выполненияопераций скрыты от пользователя;использованием непрозрачных объектов в MPI (группы, коммуникаторы, типы и т.д.);хорошей реализацией функций передачи данных, адаптирующихся к структуре физическойсистемы.Обменные функции разработаны с учетом архитектуры системы, например, для систем сраспределенной памятью, систем с общей памятью, и некоторых других систем, что позволяетминимизировать время обмена данными.Переносимость обеспечивается:35во-первых, тем, что тот же самый исходный текст параллельной программы на MPI может бытьвыполнен на ряде машин (некоторая настройка необходима, чтобы взять преимущество изэлементов каждой системы). Программный код может одинаково эффективно выполняться, как напараллельных компьютерах с распределенной памятью, так и на параллельных компьютерах собщей памятью. Он может выполняться на сети рабочих станций, или на наборе процессоров наотдельной рабочей станции.Во-вторых, переносимость обеспечивается способностью параллельных программ выполняться нагетерогенных системах, то есть на системах, состоящих из процессоров с различной архитектурой.MPI обеспечивает вычислительную модель, которая скрывает много архитектурных различий вработе процессоров.
MPI автоматически делает любое необходимое преобразование данных ииспользует правильный протокол связи, посылается ли код сообщения между одинаковымипроцессорами или между процессорами с различной архитектурой. MPI может настраиваться как наработу на однородной системе, так и на работу на гетерогенной системе.В третьих, такими механизмами, как: определение одного вычислительного компьютера в видевиртуального компьютера (см.
секцию 2.1) и возможностью задания произвольного количестватаких виртуальных компьютеров в системе не зависимо от количества физических компьютеров(зависимость только от объема оперативной памяти в системе).В четвертых, переносимость обеспечивается заданием виртуальных топологий (см. секцию 2.1).Отображение виртуальных топологий на физическую систему осуществляется системой MPI.Виртуальные топологии обеспечивают оптимальное приближение архитектуры системы кструктурам задач при хорошей переносимости задач.В пятых, компиляторами для Fortran(a) и C.Уровень языка параллельного программирования определяется языковыми конструкциями, с помощьюкоторых создаются параллельные программы.
Как было сказано выше, операторы задания топологий,обменов данными и т.п., нужно задавать в программе явно и по этому языковый уровень параллельнойпрограммы оказывается ниже уровня последовательной программы. Наличие в системе таких средств как:виртуальные топологии, коллективные взаимодействия, создаваемые пользователем типы данных и др.,значительно повышают уровень параллельного программирования по сравнению с системами с передачейсообщений, у которых нет таких средств.58.
Средства описания и создания процессов в языке Фортран-GNS.По семантике языка Fortran GNS все процессы программы получают уникальные имена - системныеидентификаторы, по которым производится отождествление корреспондентов при обмене сообщениямимежду процессами и в терминах которых задается среда выполнения функций редукции. Эти именавырабатываются функцией порождения процессов - встроенной функцией языка NEWTASK. Структурасистемного идентификатора определяется реализацией, это имя не имеет внешнего представления.Для манипулирования именами процессов внутри программы в язык Fortran GNS вводится новый дляФортрана тип данных - тип TASKID. Значения этого типа представляют собой имена процессов, которыевырабатываются функцией порождения процессов.При статической модели параллелизма системные идентификаторы процессов вырабатываютсясистемой запуска программы и могут быть получены пользователем встроенными функциями.Добавляется константа .NOTASKID., которая представляет собой "нулевое" значение для объектовэтого типа.
Данные типа TASKID должны быть описаны в операторе TASKID, синтаксис которогоаналогичен синтаксису операторов объявления типа в Фортране 77. Данные этого типа могутиспользоваться в операторах EQUIVALENCE, но при этом могут быть эквивалентными только данным типаTASKID. Допускается использование TASKID в качестве описателя типа подпрограммы-функции.Использование переменных данного типа в операторах СOMMON оговаривается в инструкциях поиспользованию языка на конкретных установках, в них же приводятся размеры имени процесса для расчетовдлин общих блоков. В реализации на базе Фортран МВК [3] допускается использование данных типаTASKID в общих блоках, их длина - одно слово (как у данных типа INTEGER).Для данных типа TASKID определены следующие операции: операции .EQ.
, .NE. и присваивание(когда операнды операций, левая и правая части операторов присваивания имеют тип TASKID).Данные типа TASKID используются в операторах передачи/приема сообщений - SEND и RECEIVEдля задания абонентов - получателя или отправителя . Такие данные могут также передаваться в качествепараметров процедурам и функциям, а также могут быть переданы другим процессам с помощьюоператоров передачи сообщений.Значения типа TASKID не могут использоваться в списках ввода-вывода, так как не имеют внешнегопредставления.36Начальная инициализация переменных этого типа также, как и других переменных Фортрана, непредусматривается, поэтому использование данных до присваивания им значений некорректно.
Присвоениеначальных значений зтим данным в операторах DATA не предусмотрено.Спецификация данных типа TASKID в виде массива, структура которого совпадает с конфигурациейвычислительной системы, облегчает программирование задачи, например, может унифицировать операторыпередачи данных между соседними процессами. В языке есть возможность заданием идентификаторамассива данных типа TASKID указать массовую операцию для всех его элементов: в функциях порожденияпроцессов,редукции и операциях передачи сообщений.
Такая запись может ускорить выполнениепрограммы, так как такие массовые операции могут выполняться параллельно.Для задания массовых операций над частью массива - подмассива можно присвоить подмассиву имяоператором EQUIVALENCE, динамическое формирование структур подмассивов можно производитьоператорами языка Фортран МВК.
Например:TASKID T1(100),T2(100),TMDIMENSION TM(100,2)EQUIVALENCE (TM(1,1),T1(1)),(TM(1,2),T2(1))При статической модели параллелизма инициализация данных этого типа производится функциямипреобразования номеров виртуальных процессоров в имена задач.Задачи и процессыВ языке вводится дополнительный вид программных единиц - программные единицы-задачи.Программа может содержать (помимо традиционных для Фортрана программных единиц) одну или болеепрограммных единиц-задач.Главная программная единица (main program) определяет главный и единственный - начальной процесспрограммы. Эта единица может иметь заголовок:PROGRAM n, где n - имя программы.По Фортрану, заголовок программы может отсутствовать.Имя программы (MAIN при его отсутствии) идентифицирует главную программную единицупрограммы, ссылки на него невозможны.
(Конкретные реализации могут разрешать использование этогоимени в операторах передачи сообщений в качестве адресата.)При запуске начального процесса ему присваивается другое имя - системный идентификатор, покоторому на него могут ссылаться другие процессы программы при передаче сообщений или привыполнении функций редукции.
Это имя может быть получено любым процессом при помощи встроеннойфункцией MASTER без параметров. Результат функции имеет тип TASKID.Программная единица-задача являются описанием задачи. Вычислительные процессы создаются поописанию задачи динамически и во время создания им присваиваются уникальные имена - системныеидентификаторы. По одному описанию задачи может быть образовано произвольное число процессовданного класса.Первым оператором программной единицы-задачи является оператор заголовка, имеющий вид: TASKPROGRAM n, где n - имя программной единицы-задачи.В остальном, структура программной единицы-задачи не отличается от структуры главнойпрограммной единицы Фортрана 77.
В частности, последним оператором, как обычно, является операторEND.Задачи не могут иметь общей памяти с другими задачами, в частности, с главной, поэтому общиеблоки (COMMON-блоки) задач локальны в пределах каждой задачи и программных единицах, которые вней используются. Семантика COMMON-блоков в пределах одной задачи - традиционная.Создание процессов.Для создания процессов в динамической модели параллелизма используется стандартная функцияNEWTASK.