СКИПОДы конспект лекций (1127769), страница 15
Текст из файла (страница 15)
В настоящее время MPI становится стандартом de facto и вытесняетранние версии библиотечных расширений последовательных языковдля параллельногопрограммирования, например, таких как p4, PVM,Express и PARMACS. MPI - сложная система. Полностьюона включает 129 функций, многие из которых имеют разнообразные параметры или варианты. Однакоключевая концепция MPI сосредоточена примерно в наборе из 20-25 функций, которые обеспечиваютболее чем адекватную поддержку для широкого спектра приложений.Основное назначение инструментальных средств MPI - дать пользователю средства для организациилокальной, глобальной и асинхронной связи между процессами и обеспечить разработку модульныхпрограмм, как из последовательных, так и из параллельных компонентов.В модели программирования MPI вычисление включает один или большее количество процессов (потоковкоманд), связь между которыми осуществляется сообщениями, инициируемыми вызовом библиотечныхподпрограмм.
В большинстве MPI реализациях набор процессов зафиксирован и создан на этапеинициализации программы по одному процессу на процессор. Однако эти процессы могут выполнятьразличные программы. Следовательно, модель программирования MPI относится к классу multiple programmultiple data (MPMD) в отличие от SPMD модели (simple program multiple data), в которой все процессорывыполняет одну программу. Во многих реализациях MPI параллельных процессов может быть и больше,чем реальных процессоров в вычислительной системе, тогда в функции MPI входит и распределениепроцессов. Псевдопараллелизм обеспечивает операционная система.Поскольку число процессов в 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) определяет главный и единственный - начальной процесспрограммы.