Page 202 - 6571
P. 202
Визначення кількості процесів у виконуваній паралельній
програмі здійснюється за допомогою функції:
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 і M
I_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, як відзначалося раніше,
створюється за замовчуванням і представляє усі процеси викону-
ваної паралельної програми;
- ранг, що отримується за допомогою функції M
I_Comm_rank, є рангом процесу, що виконав виклик цієї функції,
тобто змінна ProcRank набуде різних значень для різних проце-
сів.
Для передачі повідомлення процес-відправник повинен ви-
конати функцію:
int MPI_Send(void *buf, int count, MPI_Datatype type,
int dest, int tag, MPI_Comm comm)
201