C++ AMP (original) (raw)
C++ AMP (C++ Accelerated Massive Parallelism) とは、マイクロソフトが中心になって開発していた、演算アクセラレータを活用した並列プログラミングのためのC++言語拡張およびライブラリである。バックエンドとしてDirectCompute (DirectX) やOpenCLなどを使用した実装が存在している。C++ AMPによって、DirectComputeやOpenCLよりも高レベルの並列プログラミングAPIが提供される。
Property | Value |
---|---|
dbo:abstract | C++ Accelerated Massive Parallelism (C++ AMP) is a native programming model that contains elements that span the C++ programming language and its runtime library. It provides an easy way to write programs that compile and execute on data-parallel hardware, such as graphics cards (GPUs). Beginning with Visual Studio 2022 (version 17.0), C++ AMP is declared as deprecated, indicating its end of support beyond Visual Studio 2022. C++ AMP is a library implemented on DirectX 11 and an open specification from Microsoft for implementing data parallelism directly in C++. It is intended to make programming GPUs easy for the developer by supporting a range of expertise from none (in which case the system does its best) to being more finely controllable, but still portable. In Microsoft's implementation, code that cannot be run on GPUs will fall back onto one or more CPUs instead and use SSE instructions. The Microsoft implementation is included in Visual Studio 2012, including debugger and profiler support. The initial C++ AMP release from Microsoft requires at least Windows 7 or Windows Server 2008 R2. As C++ AMP is an open specification it is expected that in time implementations outside Microsoft will appear; one early example of this is Shevlin Park, Intel's experimental implementation of C++ AMP on Clang/LLVM and OpenCL. On November 12, 2013 the HSA Foundation announced a C++ AMP compiler that outputs to OpenCL, Standard Portable Intermediate Representation (SPIR), and HSA Intermediate Language (HSAIL) supporting the current C++ AMP specification. The source is available at https://github.com/RadeonOpenCompute/hcc. C++ AMP support is considered obsolete and the current ROCm 1.9 series will be the last to support it. The basic concepts behind C++AMP, like using C++ classes to express parallel and heterogeneous programming features, have been inspirational to the SYCL standard. (en) C++ AMP (C++ Accelerated Massive Parallelism) とは、マイクロソフトが中心になって開発していた、演算アクセラレータを活用した並列プログラミングのためのC++言語拡張およびライブラリである。バックエンドとしてDirectCompute (DirectX) やOpenCLなどを使用した実装が存在している。C++ AMPによって、DirectComputeやOpenCLよりも高レベルの並列プログラミングAPIが提供される。 (ja) C++ Accelerated Massive Parallelism (сокращенно C++ AMP) — библиотека, использующая DirectX 11, и открытая спецификация, созданные Microsoft для реализации параллельных программ для гибридных систем на языке C++. Система C++AMP позволяет переносить вычисления на GPU (видеоускорители) без внесения большого количества изменений в программы. Код, который не может запуститься на GPU, например, из-за своей сложности, будет автоматически запущен на центральном процессоре с применением SIMD (SSE) инструкций. Реализация системы от Microsoft (единственная на настоящий момент) включена в Visual Studio 2012 и включает в себя отладчик и профилировщик. Поддержку других платформ и оборудования могли бы реализовать компания Microsoft или другие в будущем. Для изначального релиза C++ AMP от Microsoft требуется ОС Windows 7 или Windows Server 2008 R2. В язык добавлена синтаксическая конструкция «restrict(amp)», которая может быть указана для любой функции (в том числе для лямбда-функции), обозначающая что она может быть исполнена на акселераторе C++ AMP. Ключевое слово restrict в данном случае означает, что компилятор должен оценить, подходит ли данная функция для GPU (использует ли она лишь те возможности языка C++, которые могут быть исполнены на большинстве GPU). Пример использования: void myFunc restrict(amp) { // Код функции } Microsoft или другие будущие производители систем, совместимых с C++ AMP могли бы добавить другие спецификаторы restrict, в дополнение к «amp». Остальная часть C++ AMP доступна через заголовочный файл <amp.h></amp.h> и пространство имен «concurrency». Основные классы C++ AMP: array (контейнер данных для акселератора), array_view (обертка для данных), index (координаты точки в N-мерном декартовом пространстве с целочисленными координатами), extent (N-мерная целочисленная размерность), accelerator (вычислительный блок, например, GPU, на котором будет выделяться память и запускаться вычисление), accelerator_view (вид акселератора). Также определена глобальная функция parallel_for_each, которая позволяет определить параллельный цикл для C++ AMP. Пример C++ функции, использующей C++ AMP для суммирования двух двумерных массивов: void AddArrays(int n, int m, int * pA, int * pB, int * pSum) { concurrency::array_view<int,2> a(n, m, pA), b(n, m, pB), sum(n, m, pSum); concurrency::parallel_for_each(sum.extent, [=](concurrency::index<2> i) restrict(amp) { sum[i] = a[i] + b[i]; });} (ru) C++ Accelerated Massive Parallelism (скорочено C++ AMP) - бібліотека реалізована на основі DirectX 11 з відкритою специфікацією від компанії Microsoftдля реалізації паралельних програм для гетерогенних систем на мові програмування C++. Для роботи програм написаних з використанням цієї бібліотеки необхідна операційної системи Windows 7 або Windows Server 2008 R2 або вищі, з встановленим DirectX 11, якщо у системі немає графічного адаптера на якому може бути запущений код то він буде запущений за допомогою центрального процесору і використовувати SSE інструкції. На даний час розробку програм можна робити лише за допомогою середовища Microsoft Visual Studio 2012, (uk) C++ AMP是微软公司基于DirectX 11技术实现的一个并行计算库。它建立在C++的语言规范上,使得程序员可以相对容易地在数据并行硬件(如显卡)上编写并执行并行计算程序。 (zh) |
dbo:author | dbr:Microsoft |
dbo:genre | dbr:Library_(computing) |
dbo:wikiPageExternalLink | http://hsafoundation.com/bringing-camp-beyond-windows-via-clang-llvm/ https://github.com/RadeonOpenCompute/hcc https://github.com/RadeonOpenCompute/hcc. http://blogs.msdn.com/b/nativeconcurrency/ http://download.microsoft.com/download/4/0/E/40EA02D8-23A7-4BD2-AD3A-0BFFFB640F28/CppAMPLanguageAndProgrammingModel.pdf |
dbo:wikiPageID | 34662203 (xsd:integer) |
dbo:wikiPageLength | 6248 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1088778181 (xsd:integer) |
dbo:wikiPageWikiLink | dbr:HSA_Intermediate_Language dbr:Library_(computing) dbr:GPU dbr:SYCL dbr:GPGPU dbr:Graphics_card dbr:Standard_Portable_Intermediate_Representation dbr:Compute_kernel dbr:C++ dbr:CUDA dbr:Vulkan_(API) dbr:HSA_Foundation dbc:C++_libraries dbc:GPGPU_libraries dbc:Parallel_computing dbr:Khronos_Group dbr:DirectX dbr:Microsoft dbr:OpenACC dbr:OpenCL dbr:RaftLib dbr:Runtime_library dbr:Programming_language dbr:Open_specification |
dbp:author | dbr:Microsoft |
dbp:genre | Library (en) |
dbp:license | Inconclusive (en) |
dbp:wikiPageUsesTemplate | dbt:Citation_needed dbt:ISBN dbt:Infobox_software dbt:Refimprove dbt:Reflist dbt:Parallel_computing |
dcterms:subject | dbc:C++_libraries dbc:GPGPU_libraries dbc:Parallel_computing |
gold:hypernym | dbr:Model |
rdf:type | owl:Thing dbo:Person dbo:Software schema:CreativeWork dbo:Work wikidata:Q386724 wikidata:Q7397 yago:WikicatC++Libraries yago:Area102735688 yago:Artifact100021939 yago:Library103660909 yago:Object100002684 yago:PhysicalEntity100001930 yago:WikicatGPGPULibraries yago:YagoGeoEntity yago:YagoPermanentlyLocatedEntity yago:Room104105893 yago:Structure104341686 yago:Whole100003553 |
rdfs:comment | C++ AMP (C++ Accelerated Massive Parallelism) とは、マイクロソフトが中心になって開発していた、演算アクセラレータを活用した並列プログラミングのためのC++言語拡張およびライブラリである。バックエンドとしてDirectCompute (DirectX) やOpenCLなどを使用した実装が存在している。C++ AMPによって、DirectComputeやOpenCLよりも高レベルの並列プログラミングAPIが提供される。 (ja) C++ Accelerated Massive Parallelism (скорочено C++ AMP) - бібліотека реалізована на основі DirectX 11 з відкритою специфікацією від компанії Microsoftдля реалізації паралельних програм для гетерогенних систем на мові програмування C++. Для роботи програм написаних з використанням цієї бібліотеки необхідна операційної системи Windows 7 або Windows Server 2008 R2 або вищі, з встановленим DirectX 11, якщо у системі немає графічного адаптера на якому може бути запущений код то він буде запущений за допомогою центрального процесору і використовувати SSE інструкції. На даний час розробку програм можна робити лише за допомогою середовища Microsoft Visual Studio 2012, (uk) C++ AMP是微软公司基于DirectX 11技术实现的一个并行计算库。它建立在C++的语言规范上,使得程序员可以相对容易地在数据并行硬件(如显卡)上编写并执行并行计算程序。 (zh) C++ Accelerated Massive Parallelism (C++ AMP) is a native programming model that contains elements that span the C++ programming language and its runtime library. It provides an easy way to write programs that compile and execute on data-parallel hardware, such as graphics cards (GPUs). Beginning with Visual Studio 2022 (version 17.0), C++ AMP is declared as deprecated, indicating its end of support beyond Visual Studio 2022. The basic concepts behind C++AMP, like using C++ classes to express parallel and heterogeneous programming features, have been inspirational to the SYCL standard. (en) C++ Accelerated Massive Parallelism (сокращенно C++ AMP) — библиотека, использующая DirectX 11, и открытая спецификация, созданные Microsoft для реализации параллельных программ для гибридных систем на языке C++. Система C++AMP позволяет переносить вычисления на GPU (видеоускорители) без внесения большого количества изменений в программы. Код, который не может запуститься на GPU, например, из-за своей сложности, будет автоматически запущен на центральном процессоре с применением SIMD (SSE) инструкций. Реализация системы от Microsoft (единственная на настоящий момент) включена в Visual Studio 2012 и включает в себя отладчик и профилировщик. Поддержку других платформ и оборудования могли бы реализовать компания Microsoft или другие в будущем. (ru) |
rdfs:label | C++ AMP (en) C++ AMP (ja) C++ AMP (ru) C++ AMP (zh) C++ AMP (uk) |
owl:sameAs | freebase:C++ AMP yago-res:C++ AMP wikidata:C++ AMP dbpedia-fi:C++ AMP dbpedia-ja:C++ AMP dbpedia-ro:C++ AMP dbpedia-ru:C++ AMP dbpedia-uk:C++ AMP dbpedia-zh:C++ AMP https://global.dbpedia.org/id/4tbrn |
prov:wasDerivedFrom | wikipedia-en:C++_AMP?oldid=1088778181&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:C++_AMP |
is dbo:wikiPageDisambiguates of | dbr:Amp |
is dbo:wikiPageRedirects of | dbr:C++AMP |
is dbo:wikiPageWikiLink of | dbr:List_of_concurrent_and_parallel_programming_languages dbr:C++AMP dbr:Basic_Linear_Algebra_Subprograms dbr:Visual_Studio dbr:SYCL dbr:General-purpose_computing_on_graphics_processing_units dbr:MulticoreWare dbr:Apache_Storm dbr:CUDA dbr:Amp dbr:DirectCompute dbr:AMD_Accelerated_Processing_Unit dbr:Herb_Sutter dbr:Heterogeneous_System_Architecture dbr:OpenACC dbr:OpenCL dbr:Multidimensional_DSP_with_GPU_Acceleration dbr:Outline_of_C++ |
is foaf:primaryTopic of | wikipedia-en:C++_AMP |