Проектування комунікацій

Оскільки підзадачі не можуть бути абсолютно незалежними, наступним етапом розробки паралельного алгоритму є проектування обмінів даними між ними, яке полягає в визначенні структури каналів зв’язку і повідомлень, якими повинні обмінюватися підзадачі.

Канали зв’язку можуть програмуватися явно і неявно. Якщо на першому етапі виконувалась декомпозиція даних, тоді проектувати комунікації дуже важко. При функціональній декомпозиції проектування комунікацій простіше – вони відповідають потокам даних між підзадачами.

Комунікації класифікуються за такими ознаками: розміщення, структурованості, за відношенням до зміни в часі, за відношенням до засобів синхронізації.

За розміщенням комунікації поділяються на:

- локальні (кожна підзадача зв’язана з невеликою кількістю інших підзадач);

- глобальні (кожна підзадача зв’язана з великою кількістю інших підзадач).

За ознакою структурованості комунікації поділяються на:

- структуровані (кожна підзадача і підзадачі, що зв’язані з нею утворюють регулярну структуру);

- неструктуровані (підзадачі зв’язані довільним графом).

За відношенням до зміни в часі комунікації поділяються на:

- статичні (схема комунікації з часом не змінюється);

- динамічні (схема комунікації змінюється в процесі виконання програми).

За відношенням до засобів синхронізації комунікації є:

- синхронні (відправник і отримувач даних координують обмін між собою).

- асинхронні (обмін даними не координується).

Рекомендації з проектування комунікацій:

- кількість комунікацій у підзадачах повинна бути приблизно однаковою (в іншому випадку буде погана масштабованість);

- ефективніше використовувати локальні комунікації;

- комунікації повинні бути паралельними.

Крім того, при проектуванні комунікацій необхідно уникати тупикових ситуацій, які можуть бути зв’язані з неправильною послідовністю обміну даними між процесами (Наприклад, перший процес очікує дані від другого, другий від третього, а останньому потрібні результати роботи першого).

Обмін повідомленнями може бути реалізований по різному: за допомогою потоків, міжпроцесорних комунікацій, тощо. Найрозповсюдженіший спосіб програмування комунікацій – використання бібліотек, що реалізують обмін повідомленнями, наприклад, бібліотеки PVM i MPI дозволяють створити паралельні програми для різних платформ. CORBA (Common Object Reguest Broker Architecture) визначає протокол взаємодії між процесами, незалежний від мови програмування і операційної системи. Для опису інтерфейсу використовується декларативна мова IDL (Interface Definition Language).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: