Many notebooks on the market feature switchable graphics, that is, a notebook with an Intel CPU with built-in HD Graphics technology, as well as an additional AMD HD Radeon GPU or nVidia GeForce GPU. During normal usage, just the Intel HD Graphics is enabled, as it consumes less power, and the high-performance AMD or nVidia GPU is enabled only when 3D intensive applications are started.
When developing a GPGPU application, in this example using C++ AMP with Microsoft Visual C++ 2012, you must check that the high-performance GPU is running your GPGPU kernels, or the resulting performance will be so poor, that you will wonder what the hype about GPGPU is all about. To ensure that the high-performance AMD GPU is running your code, right click on the desktop and click on Setup switchable graphics
The AMD Catalyst Control Center pops up, click on the Browse button to search for the application you have developed:
TimeMedianGPU is the release build of a demo app built with C++ AMP to test the performance of GPGPU processing
Now the selected application appear in the list of Other Applications, click on the button on the right until it becomes red and with the High performance caption.
That’s it, now TimeMedianGPU.exe in the given Release directory will run on the AMD GPU, and you will see a huge speed boost compared to emulation on the CPU.
What about debug builds? With C++ AMP, debug code runs on an emulated accelerator called the reference accelerator; it is very slow, even slower that running serial code on the CPU, but it is accurate and complete. So there is no need to force the GPU to be used with debug builds, as the reference accelerator will be used.