C++ AMP
C++ Accelerated Massive Parallelism (скорочено C++ AMP) - бібліотека реалізована на основі DirectX 11 з відкритою специфікацією від компанії Microsoft для реалізації паралельних програм для гетерогенних систем на мові програмування C++. Для роботи програм написаних з використанням цієї бібліотеки необхідна операційної системи Windows 7 або Windows Server 2008 R2 або вищі, з встановленим DirectX 11, якщо у системі немає графічного адаптера на якому може бути запущений код то він буде запущений за допомогою центрального процесору і використовувати SSE інструкції. На даний час розробку програм можна робити лише за допомогою середовища Microsoft Visual Studio 2012,
Розробка[ред. | ред. код]
Для того щоб почати розробляти програми використовуючи дану бібліотеку першочергово слід підключити хідер файл: <amp.h>
. Даний файл містить опис усіх необхідних функцій та типів. Окрім хідер файлу ще треба використовувати простір імен concurrency
.
Класи C++ AMP:
- accelerator: обчислювальний блок на котрому буде виділятися пам'ять і будуть робитися обрахунки.
- accelerator_view: тип accelerator.
- extent: N-вимірна цілочисельна розмірність даних.
- index: індекс для роботи у N-вимірному просторі.
- array: контейнер даних для акселератора.
- array_view: обґортка над даними, дозволяє створювати багатомірні обгортки на даними, масивами або векторами
Ключове слово restrict[ред. | ред. код]
Дане ключове слово, або умова, вказує тип пристрою на якому планується запуск коду, дана умова може бути додана до функцій та лямбда-функцій. На даний час існує лише два вида умов:
- restrict(amp): дана умова вказує що функція може бути виконана на акселераторі C++ AMP. Використання умови «restrict(amp)» означає, що компілятор має оцінити можливість виконання даної функції на GPU(перевірити чи не використовуються заборонені інструкції).
- restrict(cpu): дана умова вказує що функція може використовувати усі особливості С++, якщо біля функції не стоїть жодної умови то за замовчуванням використовується умова restrict(cpu).
Приклад використання умови restrict(amp):
void myFunc() restrict(amp)
{
// Код функції
}
Див. також[ред. | ред. код]
Посилання[ред. | ред. код]
- C++ AMP : Language and Programming Model [Архівовано 20 травня 2013 у Wayback Machine.] — Version 1.0 : August 2012 (англ.)
- Parallel Programming in Native Code — C++ AMP Team Blog MSDN [Архівовано 26 жовтня 2012 у Wayback Machine.] (англ.)
- Get started with C++ AMP Video [Архівовано 17 грудня 2012 у Wayback Machine.] (англ.)
- Умова restrict (C++ AMP) [Архівовано 14 вересня 2012 у Wayback Machine.] (англ.)
Це незавершена стаття про програмування. Ви можете допомогти проєкту, виправивши або дописавши її. |