在CUDA内核中使用虚拟函数
Using virtual functions in CUDA kernels
所以我想在设备上分配一个具有虚拟函数的对象,然后调用内核并执行其中一些虚拟函数。我试过两种方法,但都不起作用:
1)使用cudaMalloc和cudaMemcpy从主机分配和复制对象。这将复制包含主机内存指针的虚拟函数表,这些指针在设备上执行时显然会导致内核崩溃。
2)从第二个内核分配对象,保存指向该对象的设备内存指针,并将该指针传递给原始内核。然而,由于内核不同,在内核执行时,函数不在设备内存中的相同位置,并且虚拟函数表是不正确的,并且在使用时导致内核崩溃。
我可以只使用虚拟函数与在内核中创建的对象调用函数吗?
当我分配对象以获得虚拟函数表时,我可以以某种方式引用原始内核吗?
我知道真正的问题是什么吗?
我知道真正的问题是什么吗?
部分原因。
在cuda中不完全支持c++。只有从4.0开始,您才能使用虚拟功能。
-
确保你有4.0驱动程序/api
相关文章:
- C++无法定义虚拟函数 OUTER 类和头文件
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践
- 类型擦除的std::function与虚拟函数调用的开销
- 重写虚拟函数和继承
- 用纯虚拟函数兜圈子
- 为什么使用存储在虚拟方法表中的地址调用虚拟函数的函数会返回垃圾?
- 禁止子函数调用父级的抽象(或虚拟)函数
- 无法在子类中使用虚拟函数C++
- 无法在派生对象上运行虚拟函数
- 我可以调用从 main() 覆盖的虚拟函数吗?
- 在 C++ 中将函数获取和设置为虚拟函数
- 使用在堆栈上创建的对象调用虚拟函数
- 为什么在这种情况下不调用我的虚拟函数实现?
- 在C++中使虚拟函数私有化
- 模板继承类中的虚拟函数
- 为什么构造函数的虚拟函数调用有时有效,但其他调用却无效
- doxygenc++虚拟函数和实现
- 如何从派生类函数中调用虚拟函数