Page 35 - 4868
P. 35
33 Ошибка! Стиль не определен.
В даній технологій для організації паралельних обчислень в ролі
програмних засобів в основному використовують програмно-апаратну
архітектуру CUDA, фреймворк OpenCL та інтерфейс програмування
програмних додатків DirectCompute.
1. CUDA (Compute Unified Device Architecture) – програмно-апаратна
архітектура, що дозволяє проводити обчислення з використанням графічних
процесорів NVIDIA, які підтримують технологію GPGPU. CUDA базується
на концепції, в якій GPU (носить назву device) виступає в ролі масивно-
паралельного сопроцесора до CPU (носить назву host). Програми написані за
допомогою CUDA виконуються якна CPU та і на GPU. При цьому звичайний
послідовний код виконується на CPU, а для виконання масивно-паралельних
обчислень використовуєтьсяGPU. Відповідний код виконується на GPU як
нібір одночасно виконуваних потоків.
2. OpenCL (Open Computing Language) – фреймворк для написання
комп’ютерних програм, що пов’язані із паралельними обчисленнями на
різноманітних графічних та центральних процесорах. В фреймворк OpenCL
входять мова програмування, яка базується на стандарті С99, та інтерфейс
програмування програмних додатків (API). OpenCL забезпечує паралелізм на
рівні інструкцій і на рівні даних. OpenCL розробляється та підтримується
некомерційним консорціумом Khronos Group.
3. DirectCompute – інтерфейс програмування програмних додатків (API),
який входить в склад DirectX – набору API від Microsoft, що призначений для
роботи на IBM PC-сумісних комп’ютерах під управлінням операційних
систем сімейства Windows. DirectCompute призначений для виконання
обчислень загального призначення на графічних процесорах.
5.3. Принципи паралельного програмування
Процес проектування паралельних програм обов’язково включає в себе
такі три основні складові як: декомпозиція, зв’язок та синхронізація.
Декомпозиція– це процес розбиття прикладної задачі на частини. Іноді
декомпозиція природним чином випливає із природи самоїзадачі, іноді вона
визначається розробником.
Розбиття задачі на підзадачі можна проводити на основі логіки дій
(наприклад, сортування, пошук, введення / виведення, обчислення), на основі
логіки ресурсів (наприклад, робота з файлом, принтером, базою даних), на
основі логіки даних (наприклад, обробка масиву по рядках, стовпчиках або
блоках). Чим менший розмір підзадач отриманий на етапі розбиття, і чим
більша їх кількість, тим більш гнучким виходить паралельний алгоритм, і
тим легше забезпечити рівномірне завантаження процесорів. При
необхідності завжди можна провести зворотну операцію –об’єднання.
Паралелізм можна організувати і на рівні команд (рис. 1.13). Даний вид
паралелізму зазвичай забезпечується компілятором,операційною системою і
внутрішньою архітектурою процесора.