I found the C++ AMP FFT Library only works with NVIDIA GPU on Windows 8.1(x86 and x64 versions).
With AMD GPUs(tested HD8750M, HD7970, R7 250X, R9 285) or Intel integrated GPUs(tested HD4600/HD4600M), an exception is thrown from fft constructor.
The problem does not exist on Windows 7(x86 and x64 versions), where NVIDIA/AMD/Intel GPUs all work fine.
Please help me identify the cause of the problem. Thanks.
Sample program to demonstrate the problem:
#include <iostream>
#include <amp_fft.h>
#pragma comment(lib, "amp_fft.lib")
using namespace concurrency;
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
try
{
accelerator acc;
wcout << L"Default Accelerator: " << acc.description << endl;
accelerator_view acc_view = acc.default_view;
fft<float, 2> fft_(concurrency::extent<2>(480, 640), acc_view);
// when acc is an NVIDIA GPU, ok
cout << "Constructed an AMP-FFT object successfully." << endl;
}
catch(std::exception&)
{
// when acc is an AMD or INTEL GPU, exception occurs
cout << "Failed to construct an AMP-FFT object." << endl;
}
return 0;
}