我们可以在C ++ AMP中使用类吗?我们可以直接在GPU中公布变量吗?

时间:2013-08-14 13:33:10

标签: c++ class memory parallel-processing gpu

我现在正致力于一个用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造成了沉重负担。

希望你能帮助我; - )

1 个答案:

答案 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上可用。”