在cuda中定义模板化常量变量

时间:2013-08-06 12:10:26

标签: c++ visual-studio-2010 templates cuda

如何在cuda中实现模板化常量变量。我有struct

template<typename T> mystruct{ T d1; T d2[10];}

我希望上面的struct有一个常量变量,并使用类似下面的代码(此时代码可能不正确)

template<typename T> __constant__ mystruct<T> const_data;
在此之后,我希望复制一些

  mystruct<float> data; 

进入const_data并最终在设备代码中访问它。如果有人指出如何实现这一目标,那就太好了。提前致谢。

1 个答案:

答案 0 :(得分:4)

在CUDA中,__constant__变量隐含了静态存储。从你的问题中你不清楚你想要实例化常量内存变量,但鉴于常量内存变量是静态的并且需要在标准编译模型中的同一个转换单元中声明和使用,你的选择是相当有限。

没有什么可以阻止您定义模板化类型,然后在常量内存中静态定义该类型的特定实例,例如:

template<typename T> struct mystruct{ T d1; T d2[10]; };

__constant__ mystruct<float> const_data;

但是,据我所知,这就是你所能做的一切。