Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР №5_MPI_Введение в MPI.doc
Скачиваний:
6
Добавлен:
14.11.2019
Размер:
251.9 Кб
Скачать

Операции передачи данных

Основу MPI составляют операции передачи сообщений. Среди предусмотренных в составе MPI функций различаются парные (point-to-point) операции между двумя процессами и коллективные (collective) коммуникационные действия для одновременного взаимодействия нескольких процессов.

Для выполнения парных операций могут использоваться разные режимы передачи, среди которых синхронный, блокирующий и др.

Понятие коммуникаторов

Процессы параллельной программы объединяются в группы. Другим важным понятием MPI, описывающим набор процессов, является понятие коммуникатора. Под коммуникатором в MPI понимается специально создаваемый служебный объект, который объединяет в своем составе группу процессов.

Парные операции передачи данных выполняются только для процессов, принадлежащих одному и тому же коммуникатору. Коллективные операции применяются одновременно для всех процессов одного коммуникатора. Как результат, указание используемого коммуникатора является обязательным для операций передачи данных в MPI.

В ходе вычислений могут создаваться новые и удаляться существующие группы процессов и коммуникаторы. Один и тот же процесс может принадлежать разным группам и коммуникаторам.

Все имеющиеся в параллельной программе процессы (рис. 4.2) входят в состав конструируемого по умолчанию коммуникатора с идентификатором MPI_COMM_WORLD.

Рис 4.2 Предопределенный коммуникатор MPI_COMM_WORLD для семи процессов

Типы данных

При выполнении операций передачи сообщений для указания передаваемых или получаемых данных в функциях MPI необходимо указывать тип пересылаемых данных. MPI содержит большой набор базовых типов данных, во многом совпадающих с типами данных в алгоритмических языках C и Fortran. Кроме того, в MPI имеются возможности создания новых производных типов данных для более точного и краткого описания содержимого пересылаемых сообщений.

Основные типы данных в MPI, соответствующие типам данных в С, приведены в таблице 4.1.

Таблица 4.1 Базовые (предопределенные) типы данных MPI для алгоритмического языка С

Тип данных MPI

Тип данных С

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

Следует знать, что тип данных, определённых для приёма, должен совпадать с типом отправляемых данных. Большим преимуществом этого является то, что MPI может поддерживать неоднородные (гетерогенные) параллельные архитектуры, то есть параллельные машины, построенные из различных процессоров, поэтому в случае необходимости может применяться преобразование типов.

Комплексные типы данных могут быть созданы во время выполнения программы. Такие типы данных называются производными типами данных и образуются из основных типов данных. Они могут использоваться для передачи больших векторов, структур С и т. д. Типы данных MPI MPI_BYTE и MPI_PACKED не соответствуют ни одному из типов данных ни в С ни в Fortran. MPI_BYTE используется для представления восьми двоичных чисел, а MPI_PACKED предназначен для упаковки данных.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]