繁体   English   中英

将C ++对象传递到CUDA内核

[英]passing C++ objects to CUDA kernel

我有一段代码,其中包含我无权修改的对象。 另一方面,我必须编写CUDA内核来进行一些计算。 目前,我正在将所需的信息转换为数组或结构并将其传递。 是否可以将这样的对象传递给CUDA内核,并且CUDA内核是否有任何方法可以访问类的私有成员。 有人也向我建议。

您可以在CUDA代码中使用c ++功能。 它还有一些其他要求。 例如内核函数不能成为类的成员。 对于您自己的数据结构,需要满足一些要求。

  • 您需要在设备代码中使用的成员应标注为__device__
  • 您需要实现__device__构造函数。
  • 如果您的结构封装了指针,则需要在设备内存中分配它。
  • 您可以使用模板,但不能将类与虚函数一起使用。

您可以在编程指南附录D. C / C ++语言支持中看到一些c ++数据结构的示例。

至于您的具体问题:

  1. 是的,您可以在内核中传递对象。 您需要为其实现__device__复制构造函数。
  2. 您可以在类方法中访问私有成员。 您应该实现__device__访问器方法以在类外部使用它。 但是您不能通过内核调用将私有成员的类传递给内核。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM