C ++ AMP - C++ AMP

C ++ AMP
Оригинальный автор (ы)Microsoft
ТипБиблиотека
ЛицензияНеубедительный
Интернет сайтдокументы.microsoft.com/ en-us/ cpp/ параллельно/ amp/ cpp-amp-cpp-ускоренный массивный-параллелизм Отредактируйте это в Викиданных

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.

Смотрите также

Рекомендации

  1. ^ C ++ AMP Одностраничная сводка Неработающей ссылке
  2. ^ Шевлин Парк: реализация C ++ AMP с помощью Clang / LLVM и OpenCL
  3. ^ «Вывод C ++ AMP за пределы Windows через CLANG и LLVM». Получено 9 января, 2014.
  4. ^ https://github.com/RadeonOpenCompute/hcc/wiki

дальнейшее чтение

  • Кейт Грегори, Эйд Миллер. C ++ Amp: ускоренный массовый параллелизм с Microsoft Visual C ++ - Microsoft, 2012 - 326 страниц - ISBN  9780735664739

внешняя ссылка