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
   42   43   44   45   46   47   48   49   50   51   52