所以我想在设备上分配一个带有虚函数的对象,然后调用内核并执行其中一些虚函数。我已经尝试了两种方法来做到这一点,但都没有工作:
1)使用cudaMalloc和cudaMemcpy从主机分配和复制对象。这将复制包含主机内存指针的虚函数表,这些指针在设备上执行时会显着崩溃内核。
2)从第二个内核分配对象,将设备内存指针保存到对象并将该指针传递给原始内核。但是,由于内核不同,在内核执行时函数不在设备内存中的相同位置,并且虚函数表不正确并在使用时崩溃内核。
我是否只能在内核中创建的对象中使用虚函数来调用函数?
当我分配对象以获取虚拟功能表时,我可以以某种方式引用原始内核吗?
我是否明白这里的实际问题是什么?
答案 0 :(得分:1)
我是否明白这里的实际问题是什么?
部分内容。
当你在cuda中试验C ++时,并不完全支持。仅从4.0开始,您可以使用虚拟功能。
确保您拥有4.0驱动程序/ api。
发布错误日志。