【发布时间】:2011-08-09 00:56:52
【问题描述】:
所以我想在设备上分配一个带有虚函数的对象,然后调用内核并执行其中的一些虚函数。我尝试了两种方法来做到这一点,但都不管用:
1) 使用 cudaMalloc 和 cudaMemcpy 从主机分配和复制对象。这会复制包含主机内存指针的虚函数表,这些指针在设备上执行时显然会使内核崩溃。
2) 从第二个内核分配对象,保存指向该对象的设备内存指针并将该指针传递给原始内核。但是,由于内核不同,内核执行时函数在设备内存中的位置不一样,虚函数表不正确,使用时内核崩溃。
我可以只对在内核中创建的对象使用虚函数吗?
当我分配对象以获得正确的虚函数表时,我能否以某种方式引用原始内核?
我是否明白这里的实际问题是什么?
【问题讨论】:
-
有一个更新的问题重复了,which I have answered。由于 OP 自 2011 年 4 月以来没有访问过 SO,因此投票关闭了这个。
标签: c++ cuda gpu virtual-functions