所以我想在设备上分配一个具有虚函数的对象,然后调用一个内核并执行一些虚函数。我尝试了两种方法来做到这一点,但都没有成功:在CUDA内核中使用虚函数
1)使用cudaMalloc和cudaMemcpy从主机分配和复制对象。这在包含主机内存指针的虚拟函数表上进行复制,这些指针在设备上执行时显然会使内核崩溃。
2)从第二个内核分配对象,将设备内存指针保存到对象并将该指针传递给原始内核。但是,由于内核不同,内核执行时功能不在设备内存中的相同位置,虚拟功能表不正确,并且在使用内核时崩溃内核。
我只能在内核中创建的对象中使用虚函数来调用函数吗?
我可以以某种方式引用原始内核,当我分配我的对象来获得虚函数表正确吗?
我甚至可以理解实际问题在这里吗?
有一个较新的问题,这个重复,[我已经回答](http://stackoverflow.com/questions/12701170/cuda-virtual-class/12704054#12704054)。由于OP自2011年4月以来没有访问过SO,所以投票结束这一次。 – harrism 2012-10-03 07:50:08