00. MPI введение (Презентации по MPI)
Описание файла
Файл "00. MPI введение" внутри архива находится в папке "Презентации по MPI". PDF-файл из архива "Презентации по MPI", который расположен в категории "". Всё это находится в предмете "параллельные системы и параллельные вычисления" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "параллельные системы и параллельные вычисления" в общих файлах.
Просмотр PDF-файла онлайн
Текст из PDF
Программирование MPIMPI – Message Passing Interface●●●●Стандарт, определяющий взаимодействиепараллельных процессов независимо отцелевой программно-аппаратной платформыAPI параллельного программирования длякластерных вычислительных системЯзыки программирования:–C–Fortranhttp://www.mpi-forum.org - спецификацияMPI-1.1MPI – взаимодействие процессов●●●Между парой процессов (point-to-point)Внутри группы процессов (multicast,broadcast)По заданнойтопологииMPI – пример программыmpirun <список узлов> <имя программы>mpdmpdmain () {rank <= 0,size <= N}main () {rank <= 1,size <= N}node-1node-2mpdmain () {rank <= N - 1,size <= N}node-Nqsub <количество процессов> <имя программы>mpiexec <количество процессов> <имя программы>pbs_mompbs_mommain () {rank <= 0,size <= N}main () {rank <= 1,size <= N}node-1node-2pbs_mommain () {rank <= N - 1,size <= N}node-NMPI – основные понятия●●Коммуникатор – идентификатор множествапроцессов–MPI_COMM_WORLD–MPI_COMM_SELF–MPI_COMM_NULLВозможность создания собственныхкоммуникаторов–MPI_Comm_dup–MPI_Comm_create–MPI_Comm_splitMPI – основные понятия●Виды функций–Локальные (local) – функции, не выполняющиеобмен данными с другими узлами–Нелокальные (non-local) – функции, длязавершения которых может потребоватьсявзаимодействие с другим узлом–Коллективные (collective) – функции, длязавершения которых обязателен их вызов вовсех процессах группы–Блокирующие (blocking)–Неблокирующие (non-blocking)MPI – нотация функций●●●IN – вызов функции не меняет содержимогопеременнойOUT – вызов функции может изменитьсодержимое переменнойINOUT – вызов функции использует и,возможно, изменяет содержимоепеременнойMPI – предопределенные типыданных●MPI_CHAR●MPI_SHORT●MPI_INT●MPI_LONG●MPI_UNSIGNED_CHAR●MPI_UNSIGNED_SHORT●MPI_UNSIGNED●MPI_UNSIGNED_LONG●MPI_FLOAT●MPI_DOUBLE●MPI_LONG_DOUBLE●MPI_BYTE●MPI_PACKEDMPI – прием и передача данных●●●●Стандартный режим (standart, MPI_Send) – блокирующий режим, прикотором после возврата из функции данные гарантировано сохраненыили получены принимающим процессомБуферизованный режим (buffered, MPI_Bsend) – локальный режим, прикотором данные перед отправкой копируются во внутренний буферСинхронный режим (synchronous, MPI_Ssend) – блокирующий режим,при котором после возвращения из функции данные гарантированноприняты получателемРежим готовности (ready, MPI_Rsend) – режим, при котором функциязавершится успешно только в том случае, если на момент вызоваMPI_Rsend принимающий процесс уже вызвал функцию MPI_ReceiveMPI – прием и передача данных●●●●●int MPI_Send (void* buf, int count, MPI_Datatype datatype, int dest,int tag, MPI_Comm comm)int MPI_Bsend(void* buf, int count, MPI_Datatype datatype, int dest,int tag, MPI_Comm comm)int MPI_Ssend(void* buf, int count, MPI_Datatype datatype, int dest,int tag, MPI_Comm comm)int MPI_Rsend(void* buf, int count, MPI_Datatype datatype, int dest,int tag, MPI_Comm comm)int MPI_Recv (void* buf, int count, MPI_Datatype datatype, int source,int tag, MPI_Comm comm, MPI_Status *status)MPI - deadlockMPI_Send( → B)MPI_Send( → A)MPI_Recv( ← B)MPI_Recv( ← A)ABMPI - deadlockMPI_Ssend( → B)MPI_Ssend( → A)MPI_Recv( ← B)MPI_Recv( ← A)ABMPI - deadlockMPI_Bsend( → B)MPI_Bsend( → A)MPI_Recv( ← B)MPI_Recv( ← A)AB.