我现在正致力于一个用C ++ AMP加速密集型计算程序的项目,但是程序员已经使用了类,这对程序员来说很友好,但似乎对AMP非常不友好。 AMP中是否支持类?
另外,我想知道我是否可以直接在 GPU内存中宣布变量,因为模拟的内存大约为2.4GB,如果从全局内存转移到GPU内存,则会花费很多时间。
有课堂公告
class SCM_MIMO_Fading
{
public:
SCM_MIMO_Fading(int u = 2, int s = 2, int numFreq = 50);
~SCM_MIMO_Fading(void);
void Refresh();
public:
int NumTx;
int NumRx;
int NumOfFreqs;
double * MatData;
SCM_FreqFading * MatElements;
};
GPU的主要计算是矩阵和快速傅里叶变换的一些乘法,请注意数据是复数,这对GPU造成了沉重负担。
希望你能帮助我; - )
答案 0 :(得分:0)
我不是C ++专家,但根据http://blogs.msdn.com/b/nativeconcurrency/archive/2011/12/19/restrict-amp-restrictions-part-0-of-n-introduction.aspx
中的信息第一个问题“AMP中是否支持类?”的答案是
不,你不能,只支持一些基本类型。出于性能原因。
对于你的第二个问题,我也认为它不会起作用。基于AMP API的设计,它显然不是为此设计的,但你可以在这里阅读http://www.anandtech.com/show/7118/windows-81-and-vs2013-bring-gpu-computing-updates-to-direct3d-and-c-amp-
“C ++ AMP程序还将在APU / SoC上获得共享内存功能,其中编译器和运行时将能够消除CPU和GPU之间的额外数据副本。此功能也仅在Windows 8上可用。”