Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Розпарарелення процесу створення дискретних дин...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
388.58 Кб
Скачать

2.2 Програмні засоби розпаралелення на графічних багатоядерних процесорах

Графічний процесор в сучасних комп’ютерах використовується в якості прискорювача тривимірної графіки, але в деяких випадках його можна використовувати для обчислювальних задач [12]. Сьогодні на ринку основними компаніями, які займаються виробництвом GPU для обчислювальних пристроїв, є NVIDIA та AMD.

Серед програмних засобів, які дозволяють проводити розпаралелення обчислень на графічних процесорах найбільшою популярністю користуються технології CUDA та OpenCL.

Технологія CUDA – це програмно-апаратна обчислювальна архітектура NVIDIA, заснована на розширенні мови Сі, яка дає можливість організації доступу до набору інструкцій графічного прискорювача і управління його пам'яттю при організації паралельних обчислень. CUDA допомагає реалізовувати алгоритми, що виконуються на графічних процесорах відеоприскорювачів GeForce восьмого покоління і старше (серії GeForce 8, GeForce 9, GeForce 200), а також Quadro і Tesla.

Перелічимо основні характеристики CUDA [13]:

  • уніфіковане програмно-апаратне рішення для паралельних обчислень на відеочіпах NVIDIA;

  • великий набір підтримуваних рішень, від мобільних до мультичіпових;

  • стандартна мова програмування С;

  • стандартні бібліотеки чисельного аналізу FFT (швидке перетворення Фур'є) і BLAS (лінійна алгебра);

  • оптимізований обмін даними між CPU і GPU;

  • взаємодія з графічними API OpenGL і DirectX;

  • підтримка 32- і 64-бітових операційних систем: Windows XP, Windows Vista, Linux і MacOS X;

  • можливість розробки на низькому рівні.

Переваги CUDA перед традиційним підходом до GPGPU обчислень:

  • інтерфейс програмування додатків CUDA заснований на стандартній мові програмування С з розширеннями, що спрощує процес вивчення і впровадження архітектури CUDA;

  • CUDA забезпечує доступ до розділюваного між потоками пам'яті розміром в 16 Кб на мультипроцесор, яка може бути використана для організації кеша з широкою смугою пропускання, в порівнянні з текстурними вибірками;

  • більш ефективна передача даних між системною і відеопам'яттю;

  • відсутність необхідності в графічних API з надмірністю і накладними витратами;

  • лінійна адресація пам'яті, і gather і scatter, можливість запису за довільними адресами;

  • апаратна підтримка цілочисельних і бітових операцій.

Основні обмеження CUDA:

  • відсутність підтримки рекурсії для виконуваних функцій;

  • мінімальна ширина блоку в 32 потоки;

  • закрита архітектура CUDA, що належить NVIDIA.

OpenCL (Open Computing Language) – відкритий стандарт для універсального паралельного програмування різних типів процесорів. Стандарт надає програмістам доступ до всієї потужності гетерогенних обчислювальних платформ. OpenCL підтримує широке коло програмного забезпечення: від вбудованих і клієнтських додатків до високопродуктивних рішень через низькорівневневий, придатний для використання у високопродуктивних рішеннях, програмний інтерфейс.

В результаті створення ефективного, що враховує апаратні особливості платформи програмного інтерфейсу, OpenCL здатний сформувати базовий рівень паралельного обчислювального коду незалежних від апаратної платформи програмних інструментів, проміжного програмного забезпечення та інших видів додатків [14].

OpenCL також використовують в інтерактивних графічних додатках, які включають як універсальні алгоритми паралельних обчислень, так і алгоритми побудови складних графічних сцен.

Стандарт OpenCL:

  • підтримує різні моделі паралелізму;

  • використовує підмножину стандарту С99 з розширеннями підтримки паралелізму;

  • підтримує стандарт арифметики чисел з плаваючою точкою IEEE 754;

  • визначає профілі конфігурацій для переносних та вбудованих пристроїв [4].

Оскільки технологія CUDA підтримується тільки графічними процесорами компанії NVIDIA, а OpenCL можна використовувати на GPU компаній NVIDIA та AMD, тому для універсалізації програмної реалізації побудови моделей було обрано технологію OpenCL.