如何在 cuda
中实现模板化常量变量。我有一个结构
template<typename T> mystruct{ T d1; T d2[10];}
我想在上面的struct
中有一个常量变量,并使用类似下面的代码(此时代码可能不正确)
template<typename T> __constant__ mystruct<T> const_data;
在此之后,我想在 main 中复制一些
mystruct<float> data;
进入 const_data
并最终在设备代码中访问它。如果有人指出如何实现这一点,那就太好了。提前致谢。
最佳答案
在 CUDA 中,__constant__
变量隐含静态存储。从您的问题中不清楚您希望在什么时候实例化常量内存变量,但鉴于常量内存变量是静态的并且需要在标准编译模型的同一翻译单元中声明和使用,您的选择是非常有限。
没有什么可以阻止您定义模板化类型,然后在常量内存中静态定义该类型的特定实例,例如:
template<typename T> struct mystruct{ T d1; T d2[10]; };
__constant__ mystruct<float> const_data;
但是,据我所知,这就是您所能做的。
关于c++ - 在cuda中定义模板化常量变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18079795/