Первая вызываемая функция MPI выполняет инициализацию среды выполнения MPI-программы.:
int MPI_Init (int *agrc, char ***argv);
Параметрами функции являются количество аргументов в командной строке и текст самой командной строки.
Последней вызываемой функцией MPI обязательно должна являться функция:
int MPI_Finalize (void);
Структура параллельной программы, разработанная с использованием MPI, имеет следующий вид:
Код 3.4.3.1.
#include "mpi.h"
int main (int argc, char *argv[])
{
<программный код без использования MPI функций>
MPI_Init (&agrc, &argv);
<программный код с использованием MPI функций>
MPI_Finalize ();
<программный код без использования MPI функций>
return 0;
}
где
1. Файл mpi.h содержит определения именованных констант, прототипов функций и типов данных библиотеки MPI,
2. Функции MPI_Init и MPI_Finalize являются обязательными и должны быть выполнены (и только один раз) каждым процессом параллельной программы,
3. Перед вызовом MPI_Init может быть использована функция MPI_Initialized для определения того, был ли ранее выполнен вызов MPI_Init.
|
|
Определение количества процессов в выполняемой параллельной программе осуществляется при помощи функции: int MPI_Comm_size (MPI_Comm comm, int *size).
Для определения ранга процесса используется функция:
int MPI_Comm_rank (MPI_Comm comm, int *rank).
Программа осуществляет инициализацию, вывод общего числа процессов и идентификатор-ранг текущего процесса, завершает работу окружения MPI.
Код 3.4.3.2.
#include "mpi.h"#include <stdio.h> int main(int argc, char *argv[]){ int numtasks, rank, rc; rc = MPI_Init(&argc,&argv); if (rc!= MPI_SUCCESS) { printf ("Error starting MPI program. Terminating.\n"); MPI_Abort(MPI_COMM_WORLD, rc); } MPI_Comm_size(MPI_COMM_WORLD,&numtasks); MPI_Comm_rank(MPI_COMM_WORLD,&rank); printf ("Number of tasks= %d My rank= %d\n", numtasks,rank); MPI_Finalize(); }Коммуникатор MPI_COMM_WORLD, как отмечалось ранее, создается по умолчанию и представляет все процессы выполняемой параллельной программы,
Ранг, получаемый при помощи функции MPI_Comm_rank, является рангом процесса, выполнившего вызов этой функции.
Функция MPI _ Abort ( comm , errorcode ) – останавливает все MPI процессы, связанные с заданным коммуникатором comm.
3.4.4. Базовые операции пересылки MPI