C++ AMP는 "C++ Accelerated Massive Parallelism"의 약어로, 마이크로소프트(Microsoft)가 개발한 네이티브 프로그래밍 모델이다. C++ 프로그래밍 언어와 그 런타임 라이브러리에 걸쳐 있는 요소들로 구성되어 있으며, 그래픽 카드(GPU) 등 데이터 병렬 하드웨어에서 실행되는 프로그램을 비교적 쉽게 작성할 수 있게 해주는 것을 목적으로 한다.
C++ AMP는 DirectX 11을 기반으로 구현된 라이브러리이자, 마이크로소프트가 제시한 개방형(open) 사양으로, C++ 코드에서 직접 데이터 병렬 처리를 구현할 수 있도록 설계되었다. 개발자의 GPU 프로그래밍 경험 수준이 낮을 경우 시스템이 최선의 처리를 담당하고, 경험이 많을수록 세밀하게 제어할 수 있는 구조를 지향한다. 마이크로소프트의 구현에서는 GPU에서 실행할 수 없는 코드가 하나 이상의 CPU로 대체 실행되며, 이때 SSE 명령어를 사용한다. 마이크로소프트 구현은 Visual Studio 2012에 포함되었으며 디버거와 프로파일러 지원을 갖추고 있다.
주요 기능으로는 restrict(amp) 지정자가 있다. 이는 함수(람다 포함)에 적용되어 해당 함수가 C++ AMP 가속기(accelerator)에서 실행 가능함을 선언하는 역할을 한다. 컴파일러는 이를 통해 컴퓨트 커널을 자동 생성하여 별도의 언어를 사용하거나 관리 코드를 작성하는 번거로움을 줄인다. restrict 키워드는 컴파일러가 대부분의 GPU가 지원하는 언어 기능만 사용하는지 정적으로 검사하도록 한다. 그 외의 C++ AMP 주요 요소는 <amp.h> 헤더 파일과 concurrency 네임스페이스를 통해 제공되며, 핵심 클래스로는 데이터 컨테이너인 array, 데이터 래퍼인 array_view, N차원 지점을 나타내는 index, N차원 크기를 나타내는 extent, 연산 자원(예: GPU)을 나타내는 accelerator와 그 뷰인 accelerator_view, 그리고 병렬 루프를 작성하는 전역 함수 parallel_for_each 등이 있다.
최초의 C++ AMP 릴리스는 최소 Windows 7 또는 Windows Server 2008 R2 이상을 요구했다. C++ AMP가 개방형 사양이므로 마이크로소프트 외의 구현체도 등장할 수 있었는데, 그 예로 인텔(Intel)의 Clang-LLVM 및 OpenCL 기반 실험적 구현인 "셰블린 파크(Shevlin Park)"가 있다. 또한 2013년 11월 HSA 재단은 OpenCL, SPIR, HSAIL로 출력하는 C++ AMP 컴파일러를 발표하기도 했다.
Visual Studio 2022(버전 17.0)부터 C++ AMP는 더 이상 사용되지 않음(deprecated)으로 선언되었으며, Visual Studio 2022 이후에는 지원이 종료될 예정이다. 또한 C++ AMP의 기본 개념, 즉 C++ 클래스를 사용해 병렬 및 이기종 프로그래밍 기능을 표현하는 방식은 이후 등장한 SYCL 표준에 영감을 준 것으로 알려져 있다.