大佬教程收集整理的这篇文章主要介绍了CUDA设备代码支持的真正的C语言结构是什么?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
例如,此代码的作用是:
// class deFinition voluntary simplified class Foo { private: int x_; public: __device__ Foo() { x_ = 42; } __device__ void bar() { return x_; } }; //kernel using the prevIoUs class __global__ void testKernel(uint32_t* ddata) { Foo f; ddata[threadIdx.x] = f.bar(); }
我也可以使用广泛的库,如推力::随机生成类.
我唯一的猜测是,我可以这样做,因为__device__标记函数的自动内联,但这并不解释成员变量的处理.
实际上,根据我的经验,您可以在所有设备上使用所有C功能,只要在编译时可以解决该功能. 2.0之前的设备不支持函数调用(所有函数都是内联的),没有程序跳转到变量地址(只能在常量地址跳转).
这意味着,您可以使用以下C构造:
>可见性(公共/受保护/私有)
>非虚拟继承
>整个模板编程和元编程(直到你在Nvcc错误中存在;有3.2个版本中有不少)
>构造函数(除非在__ shared __ memory中声明对象)
>命名空间
您不能使用以下内容:
>新&删除操作符(我相信设备> = 2.0可以做到这一点)
>虚拟方法(需要在变量地址跳转)
>函数递归(需要函数调用)
>例外
实际上,“CUDA编程指南”第D.6章中的所有示例都可以针对设备< 2.0编译
以上是大佬教程为你收集整理的CUDA设备代码支持的真正的C语言结构是什么?全部内容,希望文章能够帮你解决CUDA设备代码支持的真正的C语言结构是什么?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。