- •Питання до модульного контролю з предмету паралельні обчислювальні процеси
- •Що таке паралелізм?
- •Ціль технології паралелізму?
- •Два основних підходи до реалізації паралелізму.
- •Переваги паралелізму.
- •Найпростіша модель паралельного програмування (pram).
- •Основні алгоритми паралельної роботи (записзчитування).
- •Класифікація схем паралелізму.
- •Проста модель розподіленого програмування.
- •Декомпозиція, зв'язок та синхронізація.
- •Базові рівні програмного паралелізму.
- •Стандарти мрі.
- •Стандарти кластерного програмування.
- •Стандарти corba.
- •Три рівні паралелізму в комп’ютерній програмі.
- •Проблема зв’язку та синхронізації в паралельному програмуванні.
- •Posix-специфікація: п’ять базових механізмів.
Базові рівні програмного паралелізму.
В наших лекціях ми досліджуємо можливість паралелізму в межах додатку (на відміну паралелізму на рівні операційної системи або апаратних засобів). Не дивлячись на те що паралелізм на рівні операційної системи або апаратних засобі підтримує паралелізм додатку, ми все ж будемо орієнтуватися на сам додаток. Отже, паралелізм можливо забезпечити на рівні:
інструкції;
підпрограми (функції, процедури);
об’єктів;
додатків.
Паралелізм на рівні інструкцій
П
аралелізм
на рівні інструкцій виникає, якщо
декілька частин однієї інструкції
можуть виконуватися одночасно. На рис.
4. показано приклад декомпозиції
однієї інструкції з метою досягнення
паралелізму окремих операцій. Ми бачимо
що компонент (А + В) можемо обчислювати
одночасно з компонентом (C + D). Даний вид
паралелізму як правило підтримується
компіляторами і не підпадає під керування
програміста на мовах високого рівня.
Паралелізм на рівні підпрограм
ДЗС-структуру програми можемо подати у вигляді ряду функцій, тобто сума робіт, з яких складається розв’язок, поділяється на деяку кількість функцій. Якщо дані функції розподілити за потоками, то кожну функцію в даному випадку можемо виконати на окремому процесорі, і, якщо у вашому розпорядженні буде достатньо процесорів, то всі функції зможуть виконуватися одночасно.
Паралелізм на рівні об’єктів
ДЗС-структуру програмного рішення можемо розподілити між об’єктами. Кожен об’єкт можна призначити окремому потоку або процесу. Використовуючи стандарт CORBA (Common Object Request Broker Architecture – технологія створення розподілених об’єктних додатків), всі об’єкти можна призначити різним комп’ютерам однієї мережі або різним комп’ютерам різних мереж. Об’єкти, реалізовані в різних потоки або процесах, можуть виконувати свої методи паралельно.
Паралелізм на рівні додатків
Декілька додатків можуть спільно розв’язувати певну проблему. Не дивлячись на те що певний додаток спочатку призначався для виконання окремої задачі, принципи багаторазового використання коду дозволяють додаткам співпрацювати. В таких випадках два окремих випадки ефективно працюють спільно подібно єдиному розподіленому додатку. Наприклад буфер обміну (Clipboard) не передбачався для роботи ні з яким конкретним додатком, але його успішно використовують багато додатків робочого столу. Про деякі варіанти застосування буфера обміну його творці в процесі розробки і не мріяли.
Другий та третій рівні – це основні рівні паралелізму, тому методам їх реалізації і приділяється основна увага в курсі лекцій. Рівня операційної системи та апаратних засобів ми торкнемося тільки втому випадку, коли це буде необхідно в контексті проектування додатку. Отримавши відповідну ДЗС-структуру для проекту, який передбачає паралельні та розподілені програмування, можемо переходити до наступного етапу – розглянемо можливості його реалізації.
Стандарти мрі.
Інтерфейс МРІ – стандартна специфікація на передачу повідомлень – був розроблений з метою досягнення високої продуктивності на комп’ютерах з масовим паралелізмом та кластерах робочих станцій (робоча станція – це мережевий комп’ютер, що використовує ресурси сервера). В лекціях використовується MPICH- реалізація стандарту МРІ. MPICH – це вільно поширювана реалізація інтерфейсу МРІ, який переноситься. MPICH надає С++- програмісту колекцію АРІ- функцій та бібліотек, які підтримують паралельне програмування. Інтерфейс МРІ особливо корисний для програмування моделей SPMD (Single-Program, Multiple-Data – одна програма, декілька потоків даних) і MPMD (Multiple- Program, Multiple-Data – багато програм, багато потоків даних). В лекціях використовується MPICH- реалізацію бібліотеки МРІ для 32-вузлового Linux- орієнтованого кластера і 8- вузлового кластера, який керується операційними системами Linux і Solaris. І хоча в С++ немає вбудованих примітивів паралельного програмування, С++- програміст може скористатися засобами забезпечення паралелізму, які надаються бібліотекою MPICH. В цьому і полягає одна з переваг мови С++, яке міститься в його фантастичній гнучкості.
