Page 41 - 6571
P. 41
Windows. DirectCompute призначений для виконання обчислень
загального призначення на графічних процесорах.
5.3 Принципи паралельного програмування
Процес проектування паралельних програм обов’язково
включає в себе такі три основні складові як: декомпозиція, зв’язок
та синхронізація.
Декомпозиція – це процес розбиття прикладної задачі на час-
тини. Іноді декомпозиція природним чином випливає із природи
самої задачі, іноді вона визначається розробником.
Розбиття задачі на підзадачі можна проводити на основі логі-
ки дій (наприклад, сортування, пошук, введення / виведення, об-
числення), на основі логіки ресурсів (наприклад, робота з файлом,
принтером, базою даних), на основі логіки даних (наприклад, об-
робка масиву по рядках, стовпчиках або блоках). Чим менший
розмір підзадач отриманий на етапі розбиття, і чим більша їх кі-
лькість, тим більш гнучким виходить паралельний алгоритм, і
тим легше забезпечити рівномірне завантаження процесорів. При
необхідності завжди можна провести зворотну операцію –
об’єднання.
Паралелізм можна організувати і на рівні команд (рис. 5.5).
Даний вид паралелізму зазвичай забезпечується компілятором,
операційною системою і внутрішньою архітектурою процесора.
Рисунок 5.5 – Синхронізація на рівні команд
Наступний рівень паралелізму, що проявляється в ітератив-
них програмах – це цикл. Не усі цикли піддаються паралельному
виконанню. Рішення про це приймає, як правило, програміст, на-
приклад, за допомогою директив компіляції (ця технологія реалі-
зована в OpenMP).
Подальше використання паралелізму проводиться на рівні пі-
дпрограм (функцій). Рішення підзадач може бути оформлене у
40