It provides an easy way to write programs that compile and execute on data-parallel hardware, such as graphics cards (GPUs).
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.
[4] The basic concepts behind C++AMP, like using C++ classes to express parallel and heterogeneous programming features, have been inspirational to the SYCL standard.
The compiler will automatically generate a compute kernel, saving the boilerplate of management and having to use a separate language.