Page 41 - 6601
P. 41
процеси процеси
а) до виконання б)після виконання
Рис.5.1 Демонстрація роботи функції MPI_Scatter.
При виклику цієї функції процес з номером root проведе
передачу даних всім іншим процесам в комунікаторі. Кожному
процесу буде відправлено scount елементів. Процес з номером 0
отримає блок даних із sbuf з елементів із індексами від 0 до scount-1,
процесу з номером 1 буде відправлений блок з елементів із
індексами від scount до 2* scount-1 і т.д. Тим самим, загальний
розмір повідомлення, що відправляється, повинен бути рівний
scount * p елементів, де p є кількість процесів в комунікаторі comm.
Слід зазначити, оскільки функція MPI_Scatter визначає
колективну операцію, виклик цієї функції при виконанні розсилки
даних повинен бути забезпечений в кожному процесі комунікатора.
Відзначимо також, що функція MPI_Scatter передає всім процесам
повідомлення однакового розміру.
Операція узагальненої передачі даних від всіх процесорів
одному процесу (збір даних) є зворотною до процедури розподілу
даних (див. рис. 6.2). Для виконання цієї операції в MPI призначена
функція:
int MPI_Gather(void *sbuf, int scount, MPI_Datatype stype, void
*rbuf, int rcount, MPI_Datatype rtype, int root, MPI_Comm
comm),
де:
- sbuf, scount, stype - параметри передаваного
повідомлення;
- rbuf, rcount, rtype - параметри повідомлення, що
приймається;
39