double arrow
Начало и завершение среды выполнения 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






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