С++ AMP
Эта статья нуждается в дополнительных цитатах для проверки . ( февраль 2012 г. ) |
Оригинальный автор(ы) | Майкрософт |
---|---|
Тип | Библиотека |
Лицензия | Неубедительный |
Веб-сайт | документы ![]() |
C++ Accelerated Massive Parallelism ( C++ AMP ) — это собственная модель программирования, содержащая элементы, охватывающие C++ язык программирования и его библиотеку времени выполнения . Он обеспечивает простой способ написания программ, которые компилируются и выполняются на оборудовании с параллельными данными, таком как графические карты ( GPU ).
Начиная с Visual Studio 2022 (версия 17.0), C++ AMP объявляется устаревшим, что указывает на прекращение его поддержки после Visual Studio 2022.
C++ AMP — это библиотека , реализованная на DirectX 11 и открытая спецификация Microsoft , для реализации параллелизма данных непосредственно в C++. Он предназначен для того, чтобы упростить программирование графических процессоров для разработчика, поддерживая широкий спектр знаний: от отсутствия (в этом случае система делает все возможное) до более точно управляемых, но при этом портативных. В реализации Microsoft код, который не может быть запущен на графических процессорах, вместо этого будет возвращаться на один или несколько процессоров и использовать инструкции SSE. [ нужна ссылка ] Реализация Microsoft включена в Visual Studio 2012, включая поддержку отладчика и профилировщика.
Для первоначальной версии C++ AMP от Microsoft требуется как минимум Windows 7 или Windows Server 2008 R2. [ 1 ] Поскольку C++ AMP является открытой спецификацией, ожидается, что со временем появятся реализации за пределами Microsoft; Одним из первых примеров этого является Shevlin Park, экспериментальная реализация Intel C++ AMP на Clang/LLVM и OpenCL. [ 2 ]
12 ноября 2013 года Фонд HSA анонсировал компилятор C++ AMP, который выводит данные в OpenCL , Standard Portable Intermediate Representation (SPIR) и HSA Intermediate Language (HSAIL), поддерживая текущую спецификацию C++ AMP. [ 3 ] Исходный код доступен по адресу https://github.com/RadeonOpenCompute/hcc . Поддержка C++ AMP считается устаревшей, и текущая серия ROCm 1.9 будет последней, поддерживающей ее. [ 4 ]
Базовые концепции C++AMP, такие как использование классов C++ для выражения функций параллельного и гетерогенного программирования, послужили вдохновением для стандарта SYCL .
Функции
[ редактировать ]Microsoft добавила restrict(amp)
функция, которую можно применить к любой функции (включая лямбда-выражения), чтобы объявить, что функция может быть выполнена в ускорителе C++ AMP. Компилятор автоматически сгенерирует вычислительное ядро , сохраняя шаблон управления и используя отдельный язык. Ключевое слово ограничения указывает компилятору статически проверять, что функция использует только те возможности языка, которые поддерживаются большинством графических процессоров, например: void myFunc() restrict(amp) {…}
Microsoft или другой разработчик открытой спецификации C++ AMP может добавить другие спецификаторы ограничений для других целей, в том числе для целей, не связанных с C++ AMP.
Помимо новой функции языка, остальная часть C++ AMP доступна через <amp.h>
заголовочный файл в пространстве имен параллелизма. Ключевые классы C++ AMP: array
(контейнер для данных об ускорителе), array_view
(обертка для данных), index
(N-мерная точка), extent
(N-мерный размер), accelerator
(вычислительный ресурс, такой как графический процессор, на котором можно выделить память и выполнить) и accelerator_view
(вид на акселератор).
Существует также глобальная функция, parallel_for_each
, который вы используете для написания параллельного цикла C++ AMP.
См. также
[ редактировать ]- OpenCL
- ДРУГОЙ
- ГПГПУ
- OpenACC
- SYCL от Khronos Group расширяет некоторые концепции C++ AMP.
- Вулкан
- РафтЛиб
Ссылки
[ редактировать ]- ^ Одностраничное резюме C++ AMP Неработающая ссылка
- ^ Шевлин Парк: реализация C++ AMP с Clang/LLVM и OpenCL
- ^ «Выход C++AMP за рамки Windows с помощью CLANG и LLVM» . Проверено 9 января 2014 г.
- ^ «Главная страница · RadeonOpenCompute/HCC Wiki» . Гитхаб .
Дальнейшее чтение
[ редактировать ]- Кейт Грегори, Эйд Миллер. C++ Amp: ускоренный массовый параллелизм с помощью Microsoft Visual C++ — Microsoft, 2012 — 326 страниц — ISBN 9780735664739
Внешние ссылки
[ редактировать ]- C++ AMP: язык и модель программирования — версия 1.0: август 2012 г.
- Параллельное программирование в машинном коде - Блог команды C++ AMP
- http://hsafoundation.com/bringing-camp-beyond-windows-via-clang-llvm/ Поддержка C++ AMP в компиляторе CLANG и LLVM
- https://github.com/RadeonOpenCompute/hcc Поддержка C++ AMP в компиляторе CLANG и LLVM