Лекция: Константы. Типы. Сообщения, атрибуты сообщения. Структура MPI_Status.

Константы MPI

· MPI_SUCCESS — константа, в которую записывается результат работы функции, если равно 0, то функция удачно завершила работу, иначе функция возвращает ошибку.

· MPI_COMM_WORLD — идентификатор коммуникатора всеобъемлющей группы, которая стартует при запуске MPI-программы

· MPI_ANY_SOURCE — идентификатор любого процесса отправителя

· MPI_ANY_TAG — идентификатор сообщения с любым идентификатором, с любым тегом

· MPI_Datatype — системный тип для обозначения типа переменных в терминологии MPI

· MPI_Comm — системный тип для описания коммуникаторов

· MPI_BSEND_OVERHEAD — константа для буфера, используемого функцией MPI_Bsend (#define MPI_BSEND_OVERHEAD 512)

· MPI_Op — системный тип для описания глобальных операций

Обозначение глобальной операции Описание глобальной операции
MPI_MAX Нахождение максимального значения
MPI_MIN Минимальное значение
MPI_SUM Сумма
MPI_PROD Произведение
MPI_LAND Логическое И (конъюнкция)
MPI_BAND Побитовая конъюнкция
MPI_LOR Логическое ИЛИ (дизъюнкция)
MPI_BOR Побитовая дизъюнкция
MPI_LXOR Лог. XOR
MPI_BXOR Побит. XOR
Тип С/С++ Тип MPI_Datatype
char MPI_CHAR
int MPI_INT
float MPI_FLOAT
double MPI_DOUBLE
long double MPI_LONG_DOUBLE

 

 

Cтруктура MPI_Status. Сообщение MPI

Сообщение — набор данных определенного типа.

Сообщение имеет атрибуты, важные из этих атрибутов: идентификатор сообщения или тег

сообщения: msgtag

Тег сообщения у перенимающего или переедающего сообщения должен совпадать

В структуре MPI_Status прописаны атрибуты принятого сообщения. Она имеет вид:

typedef struct { int count;//количество байт в принятом сообщении

int MPI_SOURCE;//идентификатор процесса отправителя

int MPI_TAG;//идентификатор сообщения

int MPI_ERROR;//код ошибки } MPI_Status;

Пусть в программе описана структура MPI_Status, которую назовем status. Для обращения к

полям структуры будем:

1) для определения идентификатора процесса отправителя status.MPI_SOURCE

2) для определения тэга сообщения status.MPI_TAG

3) для определения кода ошибки status.MPI_ERROR

4) поле count является private, поэтому для определения числа элементов в принятом сообщении пользуются функцией: int MPI_Bit_count(MPI_Status *status, MPI_Datatype type, int *count)

MPI_Status *status — адрес структуры типа MPI_Status

MPI_Datatype type — тип элементов в принятом сообщении в терминологии MPI

int *count — адрес переменной целого типа, куда будет записано количество элементов в принятом сообщении.

3. Основные функции MPI: MPI_Init(), MPI_Finalize(), MPI_Wtime().

Функция инициализации параллельной секции

int MPI_Init(int *argc, char **argv);

При запуске функции инициализируется параллельная секция. Всем процессам параллельного приложения передаются параметры main(), в которых указывается общее число процессов в приложении. Функция возвращает код ошибки или 0 в случае успешного завершения.

Функция деинициализации параллельной секции

еще рефераты
Еще работы по информатике