Описание слайда:
На відміну від OpenMP, де компілятор сам забезпечував розподіл ітерацій циклу між потоками, у MPI контроль за цим покладається на користувача. Розповсюдженою є така схема: початковим значенням змінної циклу є номер потоку, зміна йде не на 1, а на кількість потоків у програмі. Таким чином, у випадку чотирьох потоків потоку з порядковим номером 0 відповідатимуть значення 0, 4, 8, …; 1: 1, 5, 9, …; 2: 2, 6, 10, …; 3: 3, 7, 11, … Як бачимо, така схема забезпечує відсутність повторень індексу циклу між потоками.
На відміну від OpenMP, де компілятор сам забезпечував розподіл ітерацій циклу між потоками, у MPI контроль за цим покладається на користувача. Розповсюдженою є така схема: початковим значенням змінної циклу є номер потоку, зміна йде не на 1, а на кількість потоків у програмі. Таким чином, у випадку чотирьох потоків потоку з порядковим номером 0 відповідатимуть значення 0, 4, 8, …; 1: 1, 5, 9, …; 2: 2, 6, 10, …; 3: 3, 7, 11, … Як бачимо, така схема забезпечує відсутність повторень індексу циклу між потоками.
Так само, як і в OpenMP, у MPI визначено операцію редукції. За це відповідає функція MPI_Reduce. В якості параметрів передаються змінна, значення якої збиратимуться з потоків; змінна, куди запишеться результат, кількість і тип даних; операція збору даних (MPI_SUM – сума, MPI_PROD – добуток тощо); номер потоку, куди запишеться результат, та комунікатор.