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

Can we use classes in C++ AMP? And can we announce variables in GPU directly?

本文关键字:我们 布变量 变量 GPU C++AMP      更新时间:2023-10-16

我现在正在做一个项目,用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带来了沉重的负担。

希望你能帮我;-)

我不是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上可用。"

相关文章: