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
   197   198   199   200   201   202   203   204   205   206   207