Н., Пескова Е. Е., Шаманаев П. А. Основы параллельного программирования с использованием технологий mpi и openmp учебное пособие саранск издательство свмо 2013 2



Pdf көрінісі
бет9/53
Дата07.06.2023
өлшемі6.58 Mb.
#474796
1   ...   5   6   7   8   9   10   11   12   ...   53
ParProg MPI OpenMP

2.3 Типы данных 
 
MPI допускает возможность запуска процессов параллельной 
программы на компьютерах различных платформ, обеспечивая при этом 
автоматическое преобразование данных при пересылках. В таблице 
приведено соответствие предопределенных в MPI типов стандартным 
типам языка С. 
Таблица 2.1. Соответствие типов данных в С и MPI 
тип MPI 
тип языка C 
MPI_CHAR 
signed char 
MPI_SHORT 
signed short int 
MPI_INT 
signed int 
MPI_LONG 
signed long int 
MPI_UNSIGNED_CHAR 
unsigned char 
MPI_UNSIGNED_SHORT 
unsigned short int 
MPI_UNSIGNED 
unsigned int 
MPI_UNSIGNED_LONG 
unsigned long int 
MPI_FLOAT 
Float 
MPI_DOUBLE 
Double 
MPI_LONG_DOUBLE 
long double 
MPI_BYTE 
MPI_PACKED 
В таблице 2.1 перечислен обязательный минимум поддерживаемых 
стандартных типов, однако, если в базовой системе представлены и 
другие типы, то их поддержку будет осуществлять и MPI, например, если 
в системе есть поддержка комплексных переменных двойной точности 
DOUBLE 
COMPLEX, 
то 
будет 
присутствовать 
тип 
MPI_DOUBLE_COMPLEX. 
Типы 
MPI_BYTE 
и 
MPI_PACKED 
используются для передачи двоичной информации без какого-либо 
преобразования. Кроме того, программисту предоставляются средства 
создания собственных типов на базе стандартных [10]. 


14 
2.4 Процедуры передачи/приема сообщений между отдельными 
процессами 
 
Все процедуры передачи сообщений в MPI можно разделить на две 
группы. В одну группу входят процедуры, которые предназначены для 
взаимодействия только двух процессоров программы. Такие операции 
называются операциями типа точка-точка. Процедуры другой группы 
предполагают, что в операцию должны быть вовлечены все процессы 
некоторого коммуникатора. Такие операции называются коллективными. 
Рассмотрим первый тип операций. В таких взаимодействиях 
участвуют два процесса, один из которых является отправителем 
сообщения, а второй – получателем. Процесс-отправитель вызывает одну 
из процедур передачи данных и явно указывает номер получателя в 
некотором коммуникаторе, а процесс-получатель вызывает одну из 
процедур приема с указанием того же коммуникатора, причем в 
некоторых случаях он может не знать точный номер процесса-
отправителя в данном коммуникаторе. 
Все процедуры данной группы делятся на два класса: процедуры с 
блокировкой (с синхронизацией) и процедуры без блокировки 
(асинхронные). Процедуры с блокировкой приостанавливают работу 
процесса до выполнения некоторого условия, а возврат из асинхронных 
процедур происходит немедленно после инициализации соответствующей 
коммуникационной операции. Использование синхронных процедур 
может привести к тупиковым ситуациям. Использование асинхронных 
операций к тупиковым ситуациям не приводит, однако требует более 
аккуратного использования массивов данных.


Достарыңызбен бөлісу:
1   ...   5   6   7   8   9   10   11   12   ...   53




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет