Скачать презентацию Параллельное программирование MPI massage passing interface кафедра Скачать презентацию Параллельное программирование MPI massage passing interface кафедра

lab 1 (mpich2).ppt

  • Количество слайдов: 35

Параллельное программирование MPI – massage passing interface кафедра ЮНЕСКО по НИТ 1 Параллельное программирование MPI – massage passing interface кафедра ЮНЕСКО по НИТ 1

Содержание 1. 2. 3. 4. 5. 6. 7. Учебный кластер ОС Red Hat Linux Содержание 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 Кластер ЮНЕСКО Состоит из 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 Кластер ЮНЕСКО кафедра ЮНЕСКО по НИТ 4

Окно Linux Red Hat 9. 0 Red Hat Linux release 9. 0 (Strike) Kernel Окно 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 Окно 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++ Окно 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) История создания 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 – интерфейс передачи сообщений n n n MPI – стандарт на программный инструментарий для обеспечения связи между ветвями параллельного приложения MPI – это библиотека функций, обеспечивающая взаимодействие параллельных процессов с помощью механизма передачи сообщений Специфика MPI – осуществляет связь между процессорами, передавая необходимые данные между ветвями параллельного алгоритма кафедра ЮНЕСКО по НИТ 9

MPI n n n для MPI принято писать программу, содержащую код всех ветвей сразу MPI n n n для MPI принято писать программу, содержащую код всех ветвей сразу каждый экземпляр определяет свой порядковый номер в запущенном коллективе и в зависимости от этого номера и размера коллектива выполняет ту или иную ветвь алгоритма данная модель параллелизма называется SPMD (simple program/multiple data) кафедра ЮНЕСКО по НИТ 10

Парадигма параллельного программирования Парадигма последовательного программирования data память program • процессор • Парадигма параллельного Парадигма параллельного программирования Парадигма последовательного программирования data память program • процессор • Парадигма параллельного программирования data subprogram распределенная память параллельные процессора communication network кафедра ЮНЕСКО по НИТ 11

Состав пакета n n n функции инициализации и закрытия MPI процессов функции, реализующие коммуникационные Состав пакета n n n функции инициализации и закрытия MPI процессов функции, реализующие коммуникационные операции типа “точка-точка” функции, реализующие коллективные операции функции для работы с группами процессов и коммуникаторами функции для работы со структурами данных функции формирования топологии процессов кафедра ЮНЕСКО по НИТ 12

Характеристики функций n n n Локальная функция Нелокальная функция Глобальная функция Блокирующая функция Неблокирующая Характеристики функций n n n Локальная функция Нелокальная функция Глобальная функция Блокирующая функция Неблокирующая функция кафедра ЮНЕСКО по НИТ 13

Запуск и компиляция ОС Red Hat Linux [stud@unesco 9 stud]$ mpi. CC test. cpp Запуск и компиляция ОС 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 для 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 для Windows кафедра ЮНЕСКО по НИТ 16

Проверка установки MPIch n для запуска на исполнение параллельных программ необходимо проверить запущен ли Проверка установки MPIch n для запуска на исполнение параллельных программ необходимо проверить запущен ли сервис smpd кафедра ЮНЕСКО по НИТ 17

Создание MPI проекта в MS Visual Studio 2008 кафедра ЮНЕСКО по НИТ 18 Создание MPI проекта в MS Visual Studio 2008 кафедра ЮНЕСКО по НИТ 18

Подключение библиотеки MPI кафедра ЮНЕСКО по НИТ 19 Подключение библиотеки MPI кафедра ЮНЕСКО по НИТ 19

Библиотечные файлы MPI В проекте должны быть прописаны пути до библиотеки MPI и подключаемых Библиотечные файлы MPI В проекте должны быть прописаны пути до библиотеки MPI и подключаемых (include) файлов n путь к библиотечным файлам С: Program FilesMPICH 2lib n путь к подключаемым файлам С: Program FilesMPICH 2include кафедра ЮНЕСКО по НИТ 20

MPI программа кафедра ЮНЕСКО по НИТ 21 MPI программа кафедра ЮНЕСКО по НИТ 21

Компиляция MPI кафедра ЮНЕСКО по НИТ 22 Компиляция MPI кафедра ЮНЕСКО по НИТ 22

Копирование MPI программ кафедра ЮНЕСКО по НИТ 23 Копирование MPI программ кафедра ЮНЕСКО по НИТ 23

Копирование MPI библиотеки кафедра ЮНЕСКО по НИТ 24 Копирование MPI библиотеки кафедра ЮНЕСКО по НИТ 24

Запуск MPI программ mpirun. exe -np 2 -localonly project_MPI. exe кафедра ЮНЕСКО по НИТ Запуск MPI программ mpirun. exe -np 2 -localonly project_MPI. exe кафедра ЮНЕСКО по НИТ 25

Параметры MPI программы size – количество процессоров rank – номер процессора comm – коммуникатор Параметры MPI программы size – количество процессоров rank – номер процессора comm – коммуникатор кафедра ЮНЕСКО по НИТ 26

Соответствие типов тип MPI тип языка Си MPI_CHAR singed char MPI_SHORT singed short int Соответствие типов тип 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_Init Integer ierror call MPI_Init (ierror) Функция завершения MPI программ MPI_Finalize Integer ierror call MPI_Finalize (ierror) кафедра ЮНЕСКО по НИТ 28

Обрамляющие функции: Функция определения числа процессоров в области связи MPI_Comm_size Integer comm, size, ierror Обрамляющие функции: Функция определения числа процессоров в области связи 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 <stdio. h> #include <mpi. h> int main( int argc, Обрамляющие функции: Пример программы #include #include int main( int argc, char *argv[ ] ){ int rank, size; MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_size( MPI_COMM_WORLD, &size ); printf( "Process %d of %d is alive! n", rank, size ); MPI_Finalize(); return(0); } кафедра ЮНЕСКО по НИТ 30

Функции для передачи и приема данных: Функция передачи сообщений MPI_Send int MPI_Send (void* buf, Функции для передачи и приема данных: Функция передачи сообщений 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, Функция передачи сообщений 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, Функция приема сообщений 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 Обрамляющие функции: Функция отсчета времени MPI_Wtime double MPI_Wtime (void) кафедра ЮНЕСКО по НИТ 34

Задание Отладить программу, выдающую сообщение о номере процессора кафедра ЮНЕСКО по НИТ 35 Задание Отладить программу, выдающую сообщение о номере процессора кафедра ЮНЕСКО по НИТ 35