00. MPI введение (547774)
Текст из файла
Программирование 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.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.