Руководство по MPI
Описание файла
Документ из архива "Руководство по MPI", который расположен в категории "". Всё это находится в предмете "параллельные системы и параллельные вычисления" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "параллельные системы и параллельные вычисления" в общих файлах.
Онлайн просмотр документа "Руководство по MPI"
Текст из документа "Руководство по MPI"
2
АННОТАЦИЯ
Документ содержит сведения, необходимые для программистов, работающих на СК “МВС-1000М” и пользующихся услугами компонентов программного обеспечения. Он состоит из пяти разделов.
В разделе 1 представлены сведения о назначении, функциях и условиях применения среды параллельного программирования, а также всего ОПО СК “МВС-1000М” в целом.
В разделе 2 приведены основные характеристики и общие принципы функционирования среды параллельного программирования MPI.
В разделе 3 содержится описание процедур MPI.
В разделе 4 приведены сведения о подготовке прикладных программ к выполнению на вычислительных блоках СК “МВС-1000М”.
В разделе 5 представлена информация о средствах отладки и профилирования программных модулей.
СОДЕРЖАНИЕ
1. Назначение и условия применения среды параллельного программирования СК “МВС-1000М” 4
1.1. Назначение и состав среды параллельного программирования 4
1.2. Условия эксплуатации 5
1.3. Терминология и обозначения 5
2. Характеристики среды параллельного программирования 6
2.1. Особенности программного интерфейса MPI 6
2.2. Общие принципы функционирования 6
2.3. Директории пользователя 7
3. Обращение к MPI 7
3.1. Основные сведения 7
3.2. Общие процедуры MPI 7
3.3. Процедуры приема/передачи сообщений 8
3.4. Процедуры коллективного взаимодействия процессов 17
3.5. Процедура синхронизации процессов 19
3.6. Процедуры для работы с группами процессов 19
3.7. Предопределенные константы и типы данных 20
3.8. Латентность и пропускная способность 22
4. Входные и выходные данные 23
4.1. Этапы создания программ. 23
4.2. Компиляция модулей. 24
4.3. Запуск программ, использующих MPI. 24
5. Средства отладки и профилирования 25
5.1. Обработчики ошибок 25
5.2. Профилировочные библиотеки…………………………………………….25
5.3. Аргументы командной строки для mpirun 28
5.4. Аргументы MPI для программ пользователя 28
Приложение А. Примеры программ с использованием функций MPI 30
Перечень ссылочных документов 59
1 Назначение и условия применения среды параллельного программирования СК “МВС-1000М”
1.1 Назначение и состав среды параллельного программирования
Компоненты общего программного обеспечения (ОПО) СК “МВС-1000М” поддерживают все этапы разработки параллельных программ пользователей, а также обеспечивают непосредственно выполнение процессов содержательной обработки на решающем поле вычислительных модулей. Они функционируют на вычислительных модулях (ВМ) и управляющей рабочей станции (УРС).
В качестве среды для параллельного программирования используется программный интерфейс MPI, который фактически является стандартом для разработчиков параллельных программ.
Среда параллельного программирования реализована на базе интерфейса передачи сообщений MPI (Message Passing Interface) и включает в себя пакет MPICH for GM.
Информацию об особенностях работы с программным пакетом MPICH можно найти в руководстве пользователя по MPICH [2].
MPI - это программный инструментарий для обеспечения связи между ветвями параллельного приложения. Он предоставляет программисту единый механизм взаимодействия ветвей внутри параллельного приложения независимо от машинной архитектуры (однопроцессорные / многопроцессорные с общей / раздельной памятью), взаимного расположения ветвей (на одном процессоре / на разных) и программного интерфейса пользователя операционной системы.
Программа, использующая MPI, легче отлаживается (сужается простор для совершения стереотипных ошибок параллельного программирования) и быстрее переносится на другие платформы (в идеале, простой перекомпиляцией).
Стандарты MPI 1.2 и MPI 2.0 доступны на сайте http://www.mpi-forum.org в формате HTML. Более подробную информацию о работе с MPI можно найти в книгах, посвященных MPI [4, 5].
Синтаксис MPI облегчает создание приложений в модели SPMD (single program multiple data) - одна программа работает в разных процессорах со своими данными. Одна и та же функция сможет вызываться на узле-источнике и узлах-приемниках, а тип выполняемой операции (передача или прием) в этом случае определяется с помощью параметра. Такой синтаксис вызовов делает SPMD-программы существенно компактнее, хотя и труднее для понимания.
Основное отличие стандарта MPI от его предшественников - понятие коммуникатора. Все операции синхронизации и передачи сообщений локализуются внутри коммуникатора. С коммуникатором связывается группа процессов. В частности, все коллективные операции вызываются одновременно на всех процессах, входящих в эту группу. Поскольку взаимодействие между процессами инкапсулируется внутри коммуникатора, на базе MPI можно создавать библиотеки параллельных программ.
1.2 Условия эксплуатации
Для работы компонентов программного обеспечения СК “МВС-1000М” необходимы:
-
управляющая рабочая станция Alpha 21264 на основе материнской платы UP2000;
-
двухпроцессорные вычислительные модули на базе процессора Alpha21264;
-
коммуникационная среда Myrinet, состоящая из сетевых плат, устанавливаемых в ВМ, и коммутаторов;
-
коммуникационная среда FastEthernet, состоящая из сетевых плат, устанавливаемых в ВМ и УРС, и коммутаторов.
В состав ОПО СК “МВС-1000М” входят:
-
операционные системы ВМ и управляющей рабочей станции;
-
инструментальные программные средства;
-
программные средства высокопроизводительной коммуникационной среды Myrinet;
-
программные средства коммуникационной среды FastEthernet;
-
операционная среда параллельного программирования;
-
подсистема удаленного доступа.
На управляющей рабочей станции СК “МВС-1000М” и ВМ установлена операционная система Linux версии 6.2.
В состав инструментальных программных средств входят:
-
компиляторы GNU, поставляемые в составе ОС Linux: C, C++ и Fortran77 (команды gcc, c++ и f77 соответственно);
-
компиляторы фирмы Compaq для ОС Linux на платформе Alpha: С, С++, Fortran (команды ccc ,схх и fort соответственно);
-
редактор связей;
-
отладчики (gdb, dbx, xxgdb).
Коммуникационная среда Myrinet поддерживается в современных реализациях интерфейса параллельного программирования MPI. В качестве программных средств коммуникационной среды Myrinet используется коммуникационная система GM. В ее состав входят:
-
драйвер;
-
служебные программы;
-
тестовые программы;
-
библиотека функций и заголовочный файл GM API;
-
демонстрационные программы.
-
Терминология и обозначения
При работе с интерфейсом MPI используются следующие термины и обозначения:
а) процесс – это исполнение программы на одном процессоре, на котором установлен MPI, безотносительно к тому, содержит ли эта программа внутри параллельные ветви или операции ввода/вывода или просто последовательный программный код;
б) группа – представляет собой совокупность процессов, каждый из которых имеет внутри группы уникальное имя, используемое для взаимодействия с другими процессами группы посредством коммуникатора группы;
в) коммуникатор группы – реализует обмены данными между процессами и их синхронизацию. Собственно, коммуникатор выступает для прикладной группы как коммуникационная среда для взаимодействия. Коммуникаторы бывают внутригрупповыми (intra) и межгрупповыми(inter). Коммуникатор определяет контекст передачи сообщений. Сообщения, использующие разные коммуникаторы, не оказывают влияния друг на друга и не взаимодействуют. Каждая группа процессов использует отдельный коммуникатор. Процессы внутри группы имеют номера от 0 до n-1, где n – количество процессов в группе [9].
2 Характеристики среды параллельного программирования
2.1 Особенности программного интерфейса MPI
MPI расшифровывается как Message Passing Interface - Интерфейс передачи сообщений, т.е. конкретному стандарту присвоено название всего представляемого им класса программного инструментария. В пакет, реализующий программный интерфейс на СК “МВС-1000М”, входят два обязательных компонента:
-
библиотека программирования для языков Си, Си++ и Фортран;
-
загрузчик исполняемых файлов.
Характеристиками программного интерфейса MPI являются:
-
обеспечение связи между ветвями параллельной программы;
-
программирование по методу SPMD (Single Program – Multiple Data) с передачей сообщений;
-
реализация в виде библиотеки для языков программирования C и Фортран и загрузчика приложений;
-
поддержка гетерогенных вычислений;
-
мобильность интерфейса и, как следствие, мобильность создаваемых программ.
2.2 Общие принципы функционирования
Среда параллельного программирования, используемая на СК “МВС-1000М”, имеет следующие особенности:
-
параллельная программа содержит код для всех ветвей сразу;
-
загрузчиком запускается указываемое количество экземпляров программы;
-
каждый экземпляр программы определяет свой порядковый номер, и, в зависимости от этого номера и общего размера вычислительного поля, выполняет ту или иную ветвь алгоритма;
-
каждая ветвь имеет собственное пространство данных, полностью изолированное от других ветвей;
-
ветви обмениваются данными только с помощью передачи сообщений операционной среды параллельного программирования;
-
запуск MPI-приложения осуществляется с УРС;
-
запускаемый файл MPI-приложения должен быть доступен на каждом ВМ по тому же абсолютному пути, что и на управляющей рабочей станции.
2.3 Директории пользователя
Домашние директории пользователей находятся в директории /home. Она монтируется с файлового сервера СК «МВС-1000М».
Директория /store является локальной для каждого вычислительного модуля. В нее замонтирован раздел размером не менее 15 GB. Прикладные программы могут использовать эту директорию для хранения локальных данных. После завершения работы с этими данными их необходимо удалить из директории /store.
3 Обращение к MPI
3.1 Основные сведения
В настоящем разделе рассмотрены основные функциональные возможности MPI, а также представлены сведения, необходимые для их использования.
Процедуры MPI подразделяются на следующие группы:
-
общие процедуры;
-
процедуры приема / передачи сообщений;
-
процедуры коллективного взаимодействия процессов;
-
процедура синхронизации процессов;
-
процедуры для работы с группами процессов.
При описании процедур MPI будем пользоваться словом OUT для обозначения "выходных" параметров, т.е. таких параметров, через которые процедура возвращает результаты.
В случае успешного выполнения всех нижеописанных процедур возвращается код успешного выполнения – MPI_SUCCESS, в противном случае возвращается код ошибки.
3.2 Общие процедуры MPI
Общие процедуры MPI обеспечивают инициализацию и завершение работы процессов, а также сервисные функции.
Процедура MPI_Init
Формат процедуры:
int MPI_Init (int* argc, char** argv)
Данная процедура обеспечивает инициализацию параллельной части приложения. Реальная инициализация для каждого приложения выполняется не более одного раза, а если MPI уже был инициализирован, то никакие действия не выполняются, а происходит немедленный возврат из подпрограммы. Все оставшиеся MPI-процедуры могут быть вызваны только после вызова MPI_Init.
Процедура MPI_Finalize
Формат процедуры:
int MPI_Finalize(void)
Данная процедура обеспечивает завершение параллельной части приложения. Все последующие обращения к любым MPI-процедурам, в том числе к MPI_Init, запрещены. К моменту вызова MPI_Finalize некоторым процессом все действия, требующие его участия в обмене сообщениями, должны быть завершены.