Can I Run C++ AMP on My Device?
First, let me re-introduce myself… I’m Don McCrady, the development lead for C++ AMP, and formerly the development lead for the concurrency runtime and PPL, so I already have a few blog posts here from my former life.
In this little post I will describe a small utility you can download and run which will answer the question that I posed in the title of this article: “Can I Run C++ AMP on My Device?” The utility is called VerifyAmpDevices, which when run on your computer will list all AMP-capable GPU devices that are available to you, or politely tell you that you don’t have any. We’re providing this utility so you can check whether your system is capable without having to first install the pre-requisite C++ AMP runtime. VerifyAmpDevices does not use C++ AMP, and instead makes direct calls into the DirectX runtime.
Here’s what it shows on my Lenovo W520 laptop:
Found 1 accelerator device(s) that are compatible with C++ AMP:
1: NVIDIA Quadro 2000M , has_display=true, is_emulated=false
Here, the program found one GPU that is AMP-compatible (that is, DirectX 11), and also tells you that it’s connected to the display, and that it’s not emulated (is_emulated=false, more on that below). Note that it did not list the other GPU that this laptop has, the integrated graphics chip, because it is not AMP-compatible.
Here’s what it showed when my colleague Bharath ran it on his Windows 8 system:
Found 4 accelerator device(s) that are compatible with C++ AMP:
1: NVIDIA GeForce GTX 480, has_display=true, is_emulated=false
2: ATI Radeon HD 5800 Series, has_display=false, is_emulated=false
3: ATI Radeon HD 5900 Series, has_display=false, is_emulated=false
4: Microsoft Basic Render Driver, has_display=false, is_emulated=true
That’s quite a lot of horsepower! VerifyAmpDevices lists 4 GPUs (in no particular order). His first GPU is an NVIDIA GTX480, which is attached to the display (has_display=true). He also has two AMD (ATI) GPUs, neither of which are attached to the display.
Last is something called the Microsoft Basic Render Driver, also known as WARP, which Daniel Moth describes in this blog post. It is also not attached to the display, and additionally shows as an emulated device (is_emulated=true). It’s an emulated device in that, although it is hardware-accelerated using SSE instructions, it still emulates a DirectX discrete device.
One final note: If you’ve installed Visual Studio and/or the DirectX11 SDK, you actually have one other AMP-capable device on your system, the Reference Rasterizer. This doesn’t show in the output of this utility program, but it’s there, and you can use it to run C++ AMP code, but don’t expect it to be fast. It’s also an emulated device, only runs on a single thread, and is completely interpreted.
If you have any questions about what VerifyAmpDevices.exe is telling you, feel free to ask here. My inner lawyer also compels me to inform you that we are providing this utility as-is without warrantee.
Thanks.
Comments
Anonymous
May 28, 2012
Is this utility still available now? I cannot download it.Anonymous
May 29, 2012
Cannot download VerifyAmpDevices utility, is it still available now? Thanks.Anonymous
May 30, 2012
The download works for me. The utility is hosted on different server and perhaps it was temporary unavailable. Can you please try again? Thanks!Anonymous
May 30, 2012
I suspect an overprotective browser/setting not allowing you to download an EXE.Anonymous
May 30, 2012
Thanks. I got it. It is the internet proxy policy block downloading it.Anonymous
July 29, 2014
Userful utility, Thanks.