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). Даний вид
               паралелізму зазвичай забезпечується компілятором,операційною системою  і
               внутрішньою архітектурою процесора.
   30   31   32   33   34   35   36   37   38   39   40