-1

我现在正在做一个项目,用 C++ AMP 加速密集型计算程序,但是程序员使用了classes,这对程序员很友好,但对 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负担很重。

希望你能帮助我;-)

4

1 回答 1

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

于 2013-08-16T18:03:58.030 回答