我们可以在C++AMP中使用类吗?我们可以直接在GPU中宣布变量吗
Can we use classes in C++ AMP? And can we announce variables in GPU directly?
我现在正在做一个项目,用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上可用。"
相关文章:
- 为什么我们再次从结构对象创建结构变量?
- 如果我们通过引用传递变量,则递归中使用的堆栈空间量是否为零?
- 我们可以将集合的值存储在变量中吗?就像我们可以将数组的值存储在变量中一样
- 既然我们有内联变量,extern const 还有用吗?
- (为什么)我们可以在初始化中将非静态类成员分配给静态变量吗?
- 我们如何强制变量共享?
- 为什么我们不能在C++中初始化类的成员变量
- 我们不能在 c++ 中只有对象的变量吗?
- 我们可以在不使用head指针的情况下通过使用head的简单变量而不是head的指针来实现链表吗
- 我们如何修改常量变量的值
- 如果我们没有在 C++ 中传递大小变量,则通过函数查找数组的大小
- 我们如何在范围消失时通过引用返回变量
- 请解释条件变量在 c++ 线程中的使用,以及为什么我们需要同时使用"unique_lock"和&qu
- 我们是否可以保证任何原子写入都会立即将原子变量的新值存储在主存储器中?
- 我们是否需要对多线程 x32 系统使用 lock 来读取或写入 uint32_t 变量
- 为什么当我们把变量"u"的数据类型从长整型更改为整型时,模幂会出错?
- 为什么在执行条件变量通知之前我们需要一个空的 std::lock_guard?
- 计算机如何分配两个变量,我们如何计算两个变量之间的距离?
- 如果我们在 C++ 中声明一个起始'&'的 char 变量会发生什么?
- 我们是否应该在项目中包含的所有文件中声明外部变量