Page 159 - 4868
P. 159
157 Ошибка! Стиль не определен.
файл mpi.h містить визначення іменованих констант, прототипів
функцій і типів даних бібліотеки MPI ;
функції MPI_Init і MPI_Finalize є обов’язковими і мають бути
виконані (і тільки один раз) кожним процесом паралельної програми;
перед викликом MPI_Init може бути використана функція
MPI_Initialized для перевірки того, чи був раніше виконаний виклик
MPI_Init, а після виклику MPI_Finalize – функціяMPI_Finalized
аналогічного призначення.
Розглянуті приклади функцій дають представлення синтаксису
іменування функцій в MPI. Імені функції передує префікс MPI, далі слідує
один або декілька слів назви, перше слово в імені функції розпочинається із
заголовного символу, слова розділяються знаком підкреслення. Назви
функцій MPI, як правило, пояснюють призначення виконуваних функцією
дій.
Визначення кількості процесів у виконуваній паралельній програмі
здійснюється за допомогою функції:
int MPI_Comm_size(MPI_Comm comm, int *size)
де
comm – комунікатор, розмір якого визначається;
size –кількість процесів в комунікаторові.
Для визначення рангу процесу використовується функція:
int MPI_Comm_rank(MPI_Comm comm, int *rank)
де
comm – комунікатор, в якому визначається ранг процесу;
rank – ранг процесу в комунікаторові.
Як правило, виклик функцій MPI_Comm_size і
MPI_Comm_rankвиконується відразу після MPI_Init для отримання
загальної кількості процесів і рангу поточного процесу:
#include "mpi.h"
int main(int argc, char *argv[]){
int ProcNum, ProcRank;
<програмний код без використання функцій MPI>
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &ProcNum);
MPI_Comm_rank(MPI_COMM_WORLD, &ProcRank);
<програмний код з використанням функцій MPI>
MPI_Finalize();
<програмний код без використання функцій MPI>
return 0;
}
Слід зазначити, що:
комунікатор MPI_COMM_WORLD, як відзначалося раніше, створюється
за замовчуванням і представляє усі процеси виконуваної паралельної