GPGPU. СПК

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

GPGPU (англ. General-purpose graphics processing units — «GPU загального призначення») - техніка використання графічного процесору на відеокарті для проведення не графічних розрахунків. На даний час OpenCL є найросповсюдженішою мовою програмування GPU.

Особливості програмування

Відмінності розробки програм під CPU та GPU.
Тип відмінності CPU GPU
Створення потоку(нитки) Займує дуже багато часу Займає мало часу
Робота у потоці(нитки) Може виконуватись усе що завгодно Краще виконувати легкі математичні обислення
Кількість потоків(ниток) Мало Дуже багато(чим більше тим краще)

Алгоритм роботи програми:

  • Скопіювати дані з ПЗУ в пам'ять GPU.
  • Запустити нитки обробки даних.
  • Дочекатися завершення обробки даних.
  • Скопіювати дані з пам'ять GPU в ПЗУ.

Нитки обробки даних являють собою або окрему функцію(CUDA або OpenCL) або тіло цикла(C++ AMP).В середині нитки можна отримати індекс нитки, індекс може бути декількох вимірів, це індекс використо

Реалізація

  • OpenCL - відкритий стандарт по розробці програм котрі можуть виконуватися на графічних процесорах та центральних процесорах Мова програмування C.
  • DirectCompute - прикладний програмний інтерфейс котрий дозволяє робити обчислення на відеоадаптері, даний інтерфейс є частиною DirectX, підтримується починаючи з 10 версії DirectX.
  • C++ AMP - бібліотека розроблена компанією Microsoft для обчислень за допомогою графічних процесорів, для роботи необхідний DirectX 11. Мова програмування C++
  • CUDA - архітектура для програмно апаратних обчислень за допомогою графічних процесорів від компанії NVIDIA. Мова програмування C.
  • AMD FireStream - архітектура для програмно апаратних обчислень за допомогою графічних процесорів від компанії AMD.