【发布时间】:2017-05-03 13:30:20
【问题描述】:
我正在阅读this article,它解释了统一内存,也通过了the code,但我唯一找不到的是,如果为了能够使用统一内存,我应该始终通过 new 否则我会遇到运行时错误。
我是否缺少 CUDA 的一些配置?我正在使用安装了 CUDA 8.0 的 GTX 760。
class Object : Managed
{
Object(){//do something}
void foo() {//do something else}
};
__global__ void aKernel(Object& obj)
{
//do something in parallel with the object
}
int main()
{
Object o;
aKernel<<<b,t>>>(o);
cudaDeviceSynchronize();
o.foo(); // ERROR
Object* p = new Object;
aKernel<<<b,t>>>(*p);
cudaDeviceSynchronize();
p.foo(); // GOOD
}
【问题讨论】:
-
回答需要看到一些真实的代码。您的
Objectinheriting 是否与文章中的Managed相同?
标签: cuda