Page 47 - 6601
P. 47
У разі, коли поле CLN отриманого фрейма рівне 0, виконати
наступні дії.
Якщо є необхідність (моделюється за допомогою датчика
випадкових чисел) послати повідомлення, то заповнити
поле SRC своїм номером, поле DST — випадково
вибраним номером процесу так, щоб DST≠SRC, поле
DATA—тестовими даними, і встановити CLN рівним 1.
У разі, коли поле CLN отриманого фрейма рівне 1,
виконати наступні дії. Якщо поле DST співпало з номером
процесу, то скопіювати собі дані з поля DATA. Якщо
значення SRC співпало з номером процесу, то очистити
поля SRC і DST і встановити CLN рівним 0.
4. Відправити фрейм далі по кільцю. Перейти до кроку 2.
6.2 Постановка завдання
Реалізувати засобами системи MPI моделювання обміну
даними по кільцевому протоколу між N процесами (станціями),
причому вважати, що є двонаправлене кільце, в якому передаються
два фрейми: один передається за годинниковою стрілкою, а інший
— проти неї.
Для комунікацій використовувати функції неблокуючої
передачі і прийому повідомлень MPI_Irecv()/MPI_Isend()
відповідно, а для очікування повідомлень — функцію
MPI_Waitany().
На екран повинні виводитися повідомлення про всі дії
процесу — про отримання фрейма (з вказівкою напряму, вмісту
керуючих полів фрейма), про відправку і прийом повідомлень і
підтверджень про прийом.
Завершення програми повинне відбуватися після того, як
фрейми зроблять деяке фіксоване число обходів кільця.
Варіанти завдань.
K - кількість обходів, N - кількість даних у фреймі.
Варіант 1. a sin(i ) cos 2 ) (i ;
i
K 100 , N 50
Варіант 2. a sin( ) i ;
i
K 80 , N 80
45