Параллельное программирование с использованием технологии MPI Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Лекция 4 Томский политехнический университет.

Презентация:



Advertisements
Похожие презентации
Лекция 6 Множественное распараллеливание на Linux кластере с помощью библиотеки MPI 1. Компиляция и запуск программы на кластере. 2. SIMD модель параллельного.
Advertisements

Параллельное программирование с использованием технологии MPI Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Лекция 8 Томский политехнический университет.
Введение в параллельные вычисления. Технология программирования MPI (день второй) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Параллельное программирование с использованием технологии MPI Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Лекция 7 Томский политехнический университет.
Параллельные аппаратные архитектуры и модели программирования Традиционная архитектура фон Неймана Расширение традиционной архитектуры Сопроцессоры Многоядерные.
MPI за 90 минут Метод погружения Сергей Петрович Нечаев, Сибирский Суперкомпьютерный центр.
Основы параллельного программирования с использованием MPI Лекция 5 Немнюгин Сергей Андреевич Санкт-Петербургский государственный университет физический.
Кафедра ЮНЕСКО по НИТ1 Передача упакованных данных Параллельное программирование.
Кафедра ЮНЕСКО по НИТ1 Коммуникационные операции «точка-точка» параллельное программирование.
Кафедра ЮНЕСКО по НИТ1 Параллельное программирование MPI – massage passing interface.
Реализация параллельного алгоритма с использованием MPI.
Введение в параллельные вычисления. Технология программирования MPI (день четвертый) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Кафедра ЮНЕСКО по НИТ1 Коллективные коммуникационные операции параллельное программирование.
Интерфейс передачи сообщений: MPI. Базовые архитектуры Массивно-параллельные системы (MPP) Симметричные мультипроцессорные системы (SMP) Системы с неоднородным.
Практические основы параллельного программирования. Посыпкин Михаил Анатольевич
КОЛЛЕКТИВНЫЕ ВЗАИМОДЕЙСТВИЯ ПРОЦЕССОВ Барьерная синхронизация всех процессов группы. Широковещательная передача (broadcast) от одного процесса всем остальным.
Основы параллельного программирования с использованием MPI Лекция 3 Немнюгин Сергей Андреевич Санкт-Петербургский государственный университет физический.
Введение в параллельные вычисления. Технология программирования MPI (день третий) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Нижегородский государственный университет им. Н.И.Лобачевского Факультет Вычислительной математики и кибернетики Раздел 4_1. Параллельное программирование.
Гергель В.П. Общий курс Теория и практика параллельных вычислений Лекция 4 Методы разработки параллельных программ при использования интерфейса передачи.
Транксрипт:

Параллельное программирование с использованием технологии MPI Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Лекция 4 Томский политехнический университет 1 Параллельное программирование с использованием технологии MPI Аксёнов С.В.

Определения и основные положения Процесс есть программная единица, у которой имеется собственное адресное пространство и одна или несколько нитей. Процессор фрагмент аппаратных средств, способный к выполнению программы. В модели передачи сообщений процессы, выполняющиеся параллельно, имеют раздельные адресные пространства. Связь происходит, когда часть адресного пространства одного процесса скопирована в адресное пространство другого процесса. Процессы в MPI принадлежат группам. Если группа содержит n процессов, то процессы нумеруются внутри группы номерами, которые являются целыми числами от 0 до n-l. Параллельное программирование с использованием технологии MPI Аксёнов С.В. 2

Возможности MPI-1.2 и MPI-2.0 Параллельное программирование с использованием технологии MPI Аксёнов С.В. 3 MPI-2.0 Динамическое создание процессов Параллельный ввод-вывод MPI-1.2 Коммуникация точка-точка Коллективная коммуникация Коммуникаторы Топологии процессов Пользовательские типы данных Интерфейс профилирования

Функции MPI-1.2 В состав библиотеки входит 129 функций. Для написания подавляющего числа программ принципиально достаточно следующих шести функций MPI_Init Инициализация MPI MPI_Comm_size Определение числа процессов MPI_Comm_rank Определение процессом собственного номера MPI_Send Посылка сообщения MPI_Recv Получение сообщения MPI_Finalize Завершение программы MPI Параллельное программирование с использованием технологии MPI Аксёнов С.В. 4

Функция MPI_Init() Назначение: Инициализация MPI. Параллельное программирование с использованием технологии MPI Аксёнов С.В. 5 Функция должна быть вызвана каждым процессом MPI до использования им любой другой функции MPI. В каждом выполнении программы может выполняться только один вызов MPI_Init() int MPI_Init(int *argc, char **argv) Вход argc, argv: аргументы функции main() Результат: MPI_SUCСESS или код ошибки

Функция MPI_Finalize() Назначение: Завершение программы MPI. Параллельное программирование с использованием технологии MPI Аксёнов С.В. 6 Предусловие: Все незаконченные коммуникации должны быть завершены. Функция должна быть вызвана каждым процессом MPI до завершения работы процесса. После вызова MPI_Finalize() не может быть вызовов других функций MPI. int MPI_Finalize()

Функция MPI_Comm_size() Назначение: Определение числа процессов в коммуникаторе. Параллельное программирование с использованием технологии MPI Аксёнов С.В. 7 MPI_COMM_WORLD – предопределённый стандартный коммуникатор. Его группа процессов включает все процессы параллельного приложения int MPI_Comm_size(MPI_Comm comm, int *size) Входcomm: Коммуникатор Выходsize: Число процессов в коммуникаторе

Функция MPI_Comm_rank() Назначение: Определение процессом своего номера. Параллельное программирование с использованием технологии MPI Аксёнов С.В. 8 Единственный способ различения процессов. Номер процесса – уникальный идентификатор внутри группы процессов коммуникатора. int MPI_Comm_rank(MPI_Comm comm, int *rank) Входcomm: Коммуникатор Выходsize: Номер процесса, запустившего функцию

Функция MPI_Send() Назначение: Посылка сообщения. Параллельное программирование с использованием технологии MPI Аксёнов С.В. 9 Блокирующая операция, не возвращает управление до тех пор, пока данные и атрибуты сообщения не будут сохранены в соответствующий приемный буфер или во временный системный буфер. int MPI_Send(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm) Входbuf: Начальный адрес буфера посылки сообщения Входcount:Число передаваемых элементов в сообщении Входdtype:Тип передаваемых элементов Входdest:Номер процесса-получателя Входtag:Идентификатор сообщения Входcomm:Коммуникатор

Типы данных MPI Параллельное программирование с использованием технологии MPI Аксёнов С.В. 10 MPIC MPI_CHARsigned char MPI_SHORTsigned short int MPI_INTsigned int MPI_LONGunsigned long int MPI_UNSIGNED_CHARunsigned char MPI_UNSIGNED_SHORTunsigned short int MPI_UNSIGNEDunsigned int MPI_UNSIGNED_LONGunsigned long int MPI_FLOATfloat MPI_DOUBLEdouble MPI_LONG_DOUBLElong double MPI_BYTE1 байт MPI_PACKEDУпакованные данные

Функция MPI_Recv() Назначение: Посылка сообщения. Параллельное программирование с использованием технологии MPI Аксёнов С.В. 11 Блокирующая операция, завершает свою работу после того, как сообщение становится доступным в буфере получателе. Сообщение должно быть меньше чем размер буфера. int MPI_Recv(void *buf, int count, MPI_Datatype dtype, int source, int tag, MPI_Comm comm, MPI_Status *status) Выходbuf: Начальный адрес буфера процесса-получателя Входcount:Число элементов в принимаемом сообщении Входdtype:Тип элементов сообщения Входsource:Номер процесса-отправителя Входtag:Идентификатор сообщения Входcomm:Коммуникатор Выход status: Статусная информация

Пример void main(int argc, char *argv[] ) { char message[20]; int myrank; MPI_Status status; MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &myrank ); if (myrank == 0) { strcpy(messageТекст сообщения"); MPI_Send(message,strlen(message),MPI_CHAR,1,99, MPI_COMM_WORLD); } else { MPI_Recv(message, 20, MPI_CHAR, 0, 99, MPI_COMM_WORLD, &status); printf("received :%s:\n", message); } MPI_Finalize(); } Параллельное программирование с использованием технологии MPI Аксёнов С.В. 12