Page 33 - 6601
P. 33
// програмний код без використання MPI функцій
return 0;
}
Для реалізації процедур попарного обміну повідомленнями
використовуються функції MPI_Send (для передавання) і MPI_Recv
(для приймання), які мають наступний формат:
int MPI_Send(void *buf, int count, MPI_Datatype type, int dest,int tag,
MPI_Comm comm),
де
- buf – адреса буфера пам’яті, де розміщується
повідомлення;
- count – кількість елементів у повідомленні,
- type – тип елементів у повідомленні,
- dest – номер процесу отримувача,
- tag – тег повідомлення, використовується для ідентифікації
повідомлення. Це число від 0 до 255.
- comm - група процесів, в рамках якої відбувається
передавання.
int MPI_Recv(void *buf, int count, MPI_Datatype type, int source, int
tag, MPI_Comm comm, MPI_Status *status)
де
- buf – адреса буфера пам’яті, куди прийматиметься
повідомлення;
- count – кількість елементів у повідомленні,
- type – тип елементів у повідомленні,
- dest – номер процесу, від якого отримується повідомлення,
- tag – тег повідомлення, використовується для ідентифікації
повідомлення. Значення тегу повинно співпадати при
відправці і прийманні.
- comm - група процесів, в рамках якої відбувається
передавання.
При заданні номера процесу і тегу при прийманні можна
використовувати константи відповідно MPI_ANY_SOURCE та
MPI_ANY_TAG, що означають прийняти повідомлення з від
довільного процесу та з будь-яким тегом.
Приклад використання функцій:
MPI_Send(&ProcRank,1,MPI_INT,0,0,MPI_COMM_WORLD);
31