GPGPU. СПК
Матеріал з Вікі ЦДУ
Версія від 19:14, 10 листопада 2014; Артем Данов (обговорення • внесок)
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.