Запуск простейшей MPI-программы

Семинар 1.

Тема: Технология MPI: общая характеристика, запуск простейшей программы

 

План:

· Вводная часть

· Порядок работы на кластере HybriLIT

· Характеристика технологии MPI

· Создание и запуск простейшей программы

· Задания

 

Введение

Гетерогенная вычислительная платформа HybriLIT является частью Многофункционального информационно-вычислительного комплекса (МИВК) Лаборатории информационных технологий Объединенного института ядерных исследований (Дубна) [1]. Платформа HybriLIT состоит из суперкомпьютера «ГОВОРУН» и учебно-тестового полигона HybriLIT, имеющих единую про-граммно-информационную среду. Практические занятия по курсу «Архитектура вычислительных систем» проходят на учебно-тестовом полигоне HybriLIT (далее – кластер HybriLIT), но единая программная среда позволяет студентам получить опыт работы на суперкомпьютерах, таких как суперкомпьютер «ГОВОРУН».

Работа на кластере осуществляется в удаленном режиме по SSH -протоколу. Для пользователей Windows удобно пользоваться, например, приложением PuTTY.

Кластер HybriLIT находится под управлением операционной системы Scientific Linux 7.4.

Для создания и редактирования файлов на кластере HybriLIT доступны несколько редакторов, включая nano и vim.

Описание наиболее популярных Linux -команд и команд редактора дано в Приложении Учебного пособия по MPI.

 

Порядок работы

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

При соединении с кластером HybriLIT через приложение PuTTY необходимо указать имя хоста – hydra.jinr.ru, а также номер протокола SSH – 22.

В случае появления всплывающего окна – кликнуть «да».

При появлении окна удаленного доступа – набрать логин и пароль. При правильном вводе пользователь попадает в свою папку. Ее содержимое можно проверить с помощью Linux -команды ls. Другие популярные Linux -команды даны в Приложении Учебного пособия по MPI.

Логика работы следующая. Вызывается редактор, например nano (при вызове редактора через пробел указать желаемое имя файла, с расширением «.с»).

В редакторе набирается программа, сохраняется, осуществляется выход из редактора в командный режим. Мышка в режиме редактирования не срабатывает. Для движения курсора по экрану используем стрелочки на клавиатуре.

В командном режиме вызывается команда компиляции.

Если компилятор диагностировал ошибки – снова заходим в редактор, исправляем, сохраняем, компилируем.

Если в программе нет ошибок – создается исполняемый файл, При этом никаких записей на экран не выводится. Имя исполняемого модуля по умолчанию – a.out.

В появлении файла a.out. можно убедиться, просмотрев содержимое папки помощью Linux -команды ls (файл подсвечен зеленым цветом).

Запуск осуществляется интерактивно либо в пакетном режиме.

Перед работой с компилятором необходимо (один раз за сеанс) загрузить соответствующий модуль.

Список всех доступных модулей вызывается командой

module avail

Рекомендуется пользоваться Интел-модулем, его загрузка осуществляется командой

module avail intel/v2018.1.163-9

Попробуем отработать схему работы на удаленном кластере, запустив для начала простейшую (непараллельную) С-программу, которая печатает слово «HELLO».

Вызываем редактор:

Набираем текст кода:

 

Сохраняем с выходом из редактора – нажимаем Ctrl-X (см. подсказки внизу)

Теперь в папке есть файл с программой с именем test1a.c.

Команды загрузки модуля и Интел-компиляции:

Запуск (команда./a.out):

 

Имеем на экране слово «HELLO», т.е. запуск прошел успешно.

 

Технология Message Passing Interface (MPI, интерфейс передачи сообщений) – представляет собой один из наиболее широко распространенных инструментариев для создания параллельных приложений. Стандарт MPI работает с языками программирования C, C++, Fortran, Java путем добавления соответствующей библиотеки.

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

Работа с технологией MPI начинается с необходимости подключить соответствующую библиотеку в коде программы. Для языка C (С++) это библиотека mpi.h. Данная библиотека подключается при помощи команды:

#include <mpi.h>

Чтобы инициализировать доступ к библиотеке MPI, нужно воспользоваться функцией MPI_Init. В результате выполнения функции создается группа процессов, количество которых было указано при запуске задачи, а также область связи, описываемая коммуникатором с предопределенным именем MPI_COMM_WORLD. Функции MPI_Init передаются аргументы функции main, полученные из командной строки.

Функция MPI_Finalize закрывает все MPI-процессы и уничтожает все области связи. Использование функций MPI после MPI_Finalize и до MPI_Init – невозможно.

 

Таким образом, общая схема MPI-программы имеет вид:

#include <mpi.h>

...

int main(int argc, char* argv[ ]){

...

MPI_Init(&argc,&argv);

...

...

MPI_Finalize();

}

 

Запуск простейшей MPI-программы

Попробуем теперь организовать запуск простейшей параллельной программы, где каждые из параллельных процессов печатает слово «HELLO», т.е. мы увидим на экране столько слов «HELLO», сколько процессов выполняют нашу задачу. Количество процессов указывается при запуске.

Снова вызываем редактор. Можно редактировать тот же самый файл, добавив три строки. Как уже сказано – нужно подключить библиотеку mpi, добавить функции MPI_Init и MPI_Finalize, проследить, чтобы параметры main соответствовали параметрам MPI_Init.

 

 

Команда Интел-компиляции для MPI-программ

mpiicc testmpi.c

Указываем имя файла с нужной программой, расширение должно быть «.с»

При успешной компиляции образуется исполняемый модуль с предопределенным именем a.out.

Интерактивный запуск осуществляется командой

mpirun./a.out

Если при запуске не указано количество параллельных процессов – используется значение по умолчанию. На нашем кластере – значение по умолчанию – 6.

Видим, что на экране каждый из шести запущенных по умолчанию параллельных процессов напечатал свое слово «HELLO».

 

Количество процессов указывается с помощью ключа –n. Например, чтобы запустить нашу программу для 10 процессов, используем команду

mpirun -n 10./a.out

 

 

Видим, что на экране каждый из 10 запущенных параллельных процессов напечатал свое слово «HELLO».

Для завершения сеанса нужно набрать команду «exit»

Задания:

 

1. Прочитать в учебном пособии по MPI Главу 1 и раздел 2.2 Главы 2, ознакомиться c материалами, представленными на сайте HybriLIT.

2. Отработать уверенный самостоятельный вход-выход на кластер HybriLIT, работу с редактором, компиляцию и запуск программы.

3. Внести изменения в MPI-программе, чтобы вместо слова HELLO на экран выводилось слово GOODBYE (или любая другая запись по выбору). Сделать компиляцию модифицированной программы и запуск для 3 и 7 параллельных процессов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: