2.2 Базовые функции MPI Любая MPI-программа должна начинаться с вызова функции
инициализации MPI – функции MPI_Init. В результате выполнения этой
функции создается группа процессов, в которую помещаются все
процессы приложения, и создается область связи, описываемая
предопределенным коммуникатором MPI_COMM_WORLD. Эта область
связи объединяет все процессы-приложения. Процессы в группе
упорядочены и пронумерованы от 0 до size-1, где size равно числу
процессов в группе.
Синтаксис функции инициализации MPI_Init на языке C выглядит
следующим образом:
int MPI_Init(int *argc, char ***argv), где
• argc — указатель на количество параметров командной строки,
•argv — параметры командной строки, применяемые для
инициализации среды выполнения MPI программы.
Параметрами
функции
являются
количество
аргументов
в
командной строке и адрес указателя на массив символов текста самой
командной строки.
Последней вызываемой функцией MPI обязательно должна являться
функция: int MPI_Finalize(void). Функция закрывает все MPI-процессы и
ликвидирует все области связи [2].
Как результат, можно отметить, что структура параллельной
программы, разработанная с использованием MPI, должна иметь
следующий вид:
#include "mpi.h" int main(int argc, char *argv[]) { <программный код без использования функций MPI> MPI_Init(&argc, &argv); <программный код с использованием функций MPI> MPI_Finalize(); <программный код без использования функций MPI> return 0; } Следует отметить:
• файл mpi.h содержит определения именованных констант,
прототипов функций и типов данных библиотеки MPI;
12
• функции MPI_Init и MPI_Finalize являются обязательными и
должны быть выполнены (и только один раз) каждым процессом
параллельной программы;
• перед вызовом MPI_Init может быть использована функция