Начало и завершение среды выполнения MPI (execution environment)

Первая вызываемая функция 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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: