I was reading through some of the MSDN documentation files for VS2013 and came across the amp library or API. After reading this and trying some of the samples I think this could be a versatile library to use, However it is limited to the Windows platform with DirectX 11 capable hardware. If you have VS2013 all you need to do is include <amp.h> and in your source use the namespace directive using namespace concurrency. There is no need to link libraries, it acts very similar to the STL. The one thing to be careful with this library is with one of its objects the ( extent ) object. If you are using the concurrency namespace directive in your source do not use the using namespace std directive for it will cause ambiguity.
After having a look at this, I feel it could be a very beneficial library to use since it utilizes some remarkable behaviors. You can create any dimensional array from a single array and access its members using an extent object. This amp library is designed to work directly on data-parallel hardware namely GPUs. This works great with multithreading and parallelism. You can also control how data is sent back and forth between the GPU and CPU using the amp's language extensions.
These are the system requirements for use:
•Windows 7, Windows 8, Windows Server 2008 R2, or Windows Server 2012
•DirectX 11 Feature Level 11.0 or later hardware*
•For debugging on the software emulator, Windows 8 or Windows Server 2012 is required. For debugging on the hardware,
you must install the drivers for your graphics card. For more information, see Debugging GPU Code.
Another great feature is that it works with graphics (texture files) and also works well with matrix calculations. In order to
retrieve data to or from a texture either from memory or file, all you need to do is include <amp_graphics.h> and use: using namespace concurrency::graphics. For more information about these features follow the link below.
Here is the direct link to the MSDN site: https://msdn.microsoft.com/en-us/library/hh265137.aspx
*According to this API, library or feature set, a DirectX 11 with feature level 11.0 or later hardware is a required device in order to use this, but it does not say anything about being limited to only use it with DirectX. This amp takes advantage of the GPU hardware capabilities which could be used in any type of computer application, however your target audience could be limited since there are many systems out there that still only have DirectX 9.c or DirectX 10 cards, but over time DirectX11 and soon to be 12 cards will be mainstream.
Feel free to have a look at this, for I gained much insight about this new feature to the C++ language set that takes advantages of newer hardware.