lab 1 (mpich2).ppt
- Количество слайдов: 35
Параллельное программирование MPI – massage passing interface кафедра ЮНЕСКО по НИТ 1
Содержание 1. 2. 3. 4. 5. 6. 7. Учебный кластер ОС Red Hat Linux 9. 0 MPI (Message Passing Interface) – Интерфейс Передачи Сообщений Установка MPIch для Windows Компиляция и запуск Обрамляющие функции MPI Пример параллельной программы кафедра ЮНЕСКО по НИТ 2
Кластер ЮНЕСКО Состоит из 9 однородных ПК • PIII – 966 MHz • RAM – 64/128 Mb • HDD – 20 Gb • Сетевая среда – 100 Mb/s • ОС – Linux Red Hat 9. 0 • Компилятор – GNU g 77 • Коммуникационная библиотека - MPI кафедра ЮНЕСКО по НИТ 3
Кластер ЮНЕСКО кафедра ЮНЕСКО по НИТ 4
Окно Linux Red Hat 9. 0 Red Hat Linux release 9. 0 (Strike) Kernel 2. 4. 42 -6 on an i 586 Login: stud Password: stud 1234 Last login: Fri Sep 3 10: 46: 00 from unesco 1. kemsu. ru [stud@unesco 9 stud]$ mc -c кафедра ЮНЕСКО по НИТ 5
Окно Linux Red Hat 9. 0 Red Hat Linux release 9. 0 (Strike) Kernel 2. 4. 42 -6 on an i 586 Login: stud Password: Last login: Fri Sep 3 10: 46: 00 from unesco 1. kemsu. ru [stud@unesco 3 stud]$ telnet unesco 9 или [stud@unesco 3 stud]$ telnet 10. 0. 0. 109 Red Hat Linux release 9. 0 (Strike) Kernel 2. 4. 42 -6 on an i 586 Login: кафедра ЮНЕСКО по НИТ 6
Окно Linux Red Hat 9. 0 – запуск компилятора Си++ [stud@unesco 9 stud]$ g++ –o test. exe test. cpp [stud@unesco 9 stud]$. /test. exe [stud@unesco 9 stud]$ g++ test. cpp first. cpp [stud@unesco 9 stud]$ g++ *. cpp кафедра ЮНЕСКО по НИТ 7
История создания MPI n MPI: A Message-Passing Interface Standard (1. 1, June 12, 1995) n MPI-2: Extensions to the Message-Passing Interface (July 18, 1997) n n Marc Snir and William Gropp et al. : MPI: The Complete Reference. (2 -volume set). The MIT Press, 1998. (excellent catching up of the standard MPI-1. 2 and MPI-2 in a readable form) William Gropp, Ewing Lusk and Rajeev Thakur: Using MPI: Portable Parallel Programming With the Message-Passing Interface. MIT Press, Nov. 1999. And Using MPI-2: Advanced Features of the Message-Passing Interface. MIT Press, Aug. 1999. (or both in one volume, 725 pages, ISBN 026257134 X) кафедра ЮНЕСКО по НИТ 8
MPI – интерфейс передачи сообщений n n n MPI – стандарт на программный инструментарий для обеспечения связи между ветвями параллельного приложения MPI – это библиотека функций, обеспечивающая взаимодействие параллельных процессов с помощью механизма передачи сообщений Специфика MPI – осуществляет связь между процессорами, передавая необходимые данные между ветвями параллельного алгоритма кафедра ЮНЕСКО по НИТ 9
MPI n n n для MPI принято писать программу, содержащую код всех ветвей сразу каждый экземпляр определяет свой порядковый номер в запущенном коллективе и в зависимости от этого номера и размера коллектива выполняет ту или иную ветвь алгоритма данная модель параллелизма называется SPMD (simple program/multiple data) кафедра ЮНЕСКО по НИТ 10
Парадигма параллельного программирования Парадигма последовательного программирования data память program • процессор • Парадигма параллельного программирования data subprogram распределенная память параллельные процессора communication network кафедра ЮНЕСКО по НИТ 11
Состав пакета n n n функции инициализации и закрытия MPI процессов функции, реализующие коммуникационные операции типа “точка-точка” функции, реализующие коллективные операции функции для работы с группами процессов и коммуникаторами функции для работы со структурами данных функции формирования топологии процессов кафедра ЮНЕСКО по НИТ 12
Характеристики функций n n n Локальная функция Нелокальная функция Глобальная функция Блокирующая функция Неблокирующая функция кафедра ЮНЕСКО по НИТ 13
Запуск и компиляция ОС Red Hat Linux [stud@unesco 9 stud]$ mpi. CC test. cpp [stud@unesco 9 stud]$ mpirun –np 1 a. out [stud@unesco 9 stud]$ mpi. CC test. cpp -mpilog [stud@unesco 9 stud]$ mpi. CC second. f -mpitrace кафедра ЮНЕСКО по НИТ 14
MPIch для Windows n n Инсталляционный пакет mpich. nt. 1. 2. 5. exe Версия MPICH 2 mpich 2 -1. 1. 1 p 1 -win-ia 32. msi кафедра ЮНЕСКО по НИТ 15
Установка MPIch для Windows кафедра ЮНЕСКО по НИТ 16
Проверка установки MPIch n для запуска на исполнение параллельных программ необходимо проверить запущен ли сервис smpd кафедра ЮНЕСКО по НИТ 17
Создание MPI проекта в MS Visual Studio 2008 кафедра ЮНЕСКО по НИТ 18
Подключение библиотеки MPI кафедра ЮНЕСКО по НИТ 19
Библиотечные файлы MPI В проекте должны быть прописаны пути до библиотеки MPI и подключаемых (include) файлов n путь к библиотечным файлам С: Program FilesMPICH 2lib n путь к подключаемым файлам С: Program FilesMPICH 2include кафедра ЮНЕСКО по НИТ 20
MPI программа кафедра ЮНЕСКО по НИТ 21
Компиляция MPI кафедра ЮНЕСКО по НИТ 22
Копирование MPI программ кафедра ЮНЕСКО по НИТ 23
Копирование MPI библиотеки кафедра ЮНЕСКО по НИТ 24
Запуск MPI программ mpirun. exe -np 2 -localonly project_MPI. exe кафедра ЮНЕСКО по НИТ 25
Параметры MPI программы size – количество процессоров rank – номер процессора comm – коммуникатор кафедра ЮНЕСКО по НИТ 26
Соответствие типов тип MPI тип языка Си MPI_CHAR singed char MPI_SHORT singed short int MPI_INT singed int MPI_LONG singed long int MPI_UNSIGNED_CHAR unsinged char MPI_UNSIGNED_SHORT unsinged short int MPI_UNSIGNED unsinged int MPI_UNSIGNED_LONG unsinged long int MPI_FLOAT float MPI_DOUBLE double MPI_LONG_DOUBLE long double MPI_BYTE MPI_PACKED кафедра ЮНЕСКО по НИТ 27
Обрамляющие функции: Функция инициализации MPI программ MPI_Init Integer ierror call MPI_Init (ierror) Функция завершения MPI программ MPI_Finalize Integer ierror call MPI_Finalize (ierror) кафедра ЮНЕСКО по НИТ 28
Обрамляющие функции: Функция определения числа процессоров в области связи MPI_Comm_size Integer comm, size, ierror call MPI_Comm_size (comm, size, ierror) Функция определения номера процессора MPI_Comm_rank Integer comm, rank, ierror call MPI_Comm_rank (comm, rank , ierror) кафедра ЮНЕСКО по НИТ 29
Обрамляющие функции: Пример программы #include
Функции для передачи и приема данных: Функция передачи сообщений MPI_Send int MPI_Send (void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) Функция приема сообщений MPI_Recv int MPI_Recv (void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status) кафедра ЮНЕСКО по НИТ 31
Функция передачи сообщений MPI_Send int MPI_Send( void *sbuf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm ) n Входные параметры: sbuf адрес начала расположения пересылаемых данных count число пересылаемых элементов datatype тип посылаемых элементов dest номер процесса-получателя в группе, связанной с коммуникатором comm tag идентификатор сообщения comm коммуникатор области связи кафедра ЮНЕСКО по НИТ 32
Функция приема сообщений MPI_Recv int MPI_Recv( void *rbuf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status ) n Входные параметры: count число пересылаемых элементов datatyp тип посылаемых элементов e source номер процесса-отправителя tag идентификатор сообщения comm коммуникатор n Выходные параметры: области связи rbuf адрес начала расположения принимаемого сообщения status атрибуты принятого сообщений кафедра ЮНЕСКО по НИТ 33
Обрамляющие функции: Функция отсчета времени MPI_Wtime double MPI_Wtime (void) кафедра ЮНЕСКО по НИТ 34
Задание Отладить программу, выдающую сообщение о номере процессора кафедра ЮНЕСКО по НИТ 35