C ++ AMP - C++ AMP
Эта статья нужны дополнительные цитаты для проверка.Февраль 2012 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Оригинальный автор (ы) | Microsoft |
---|---|
Тип | Библиотека |
Лицензия | Неубедительный |
Интернет сайт | документы |
C ++ ускоренный массовый параллелизм (C ++ AMP) - это модель нативного программирования, которая содержит элементы, охватывающие C ++ язык программирования и это библиотека времени исполнения. Он обеспечивает простой способ написания программ, которые компилируются и выполняются на оборудовании с параллельными данными, например видеокарты (GPU ).
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, Стандартное портативное промежуточное представление (SPIR) и HSA Промежуточный язык (HSAIL), поддерживающий текущую спецификацию C ++ AMP.[3] Источник доступен по адресу https://github.com/RadeonOpenCompute/hcc. Поддержка C ++ AMP считается устаревшей, и текущая серия ROCm 1.9 будет последней, которая ее поддерживает.[4]
Функции
Microsoft добавила ограничить (усилитель)
функция, которая может быть применена к любой функции (включая лямбды), чтобы объявить, что функция может быть выполнена на ускорителе C ++ AMP. Компилятор автоматически сгенерирует вычислить ядро, сохраняя шаблон управления и используя отдельный язык. Ключевое слово restrict указывает компилятору статически проверить, что функция использует только те языковые функции, которые поддерживаются большинством графических процессоров, например, void myFunc () restrict (amp) {…}
Microsoft или другой разработчик открытой спецификации C ++ AMP может добавить другие спецификаторы ограничений для других целей, в том числе для целей, не связанных с C ++ AMP.
Помимо новой языковой функции, остальная часть C ++ AMP доступна через <amp.h>
заголовочный файл в пространстве имен параллелизма. Ключевые классы C ++ AMP: множество
(контейнер для данных об ускорителе), array_view
(обертка для данных), индекс
(N-мерная точка), степень
(N-мерный размер), ускоритель
(вычислительный ресурс, такой как графический процессор, на котором выделяется память и выполняется), и Accelerator_view
(вид на ускоритель) .Также есть глобальная функция, parallel_for_each
, который вы используете для написания параллельного цикла C ++ AMP.
Смотрите также
Рекомендации
- ^ C ++ AMP Одностраничная сводка Неработающей ссылке
- ^ Шевлин Парк: реализация C ++ AMP с помощью Clang / LLVM и OpenCL
- ^ «Вывод C ++ AMP за пределы Windows через CLANG и LLVM». Получено 9 января, 2014.
- ^ https://github.com/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