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

use*_*986 5 c++ templates cuda visual-studio-2010

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

template<typename T> mystruct{ T d1; T d2[10];}
Run Code Online (Sandbox Code Playgroud)

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

template<typename T> __constant__ mystruct<T> const_data;
Run Code Online (Sandbox Code Playgroud)

在主要之后,我想复制一些

  mystruct<float> data; 
Run Code Online (Sandbox Code Playgroud)

到const_data 最终设备代码中访问它。如果有人指出如何实现这一目标,将是一种好感。提前致谢。

tal*_*ies 5

在CUDA中,__constant__变量隐含静态存储。从您的问题尚不清楚,您想在什么时候实例化常量存储变量,但是鉴于常量存储变量是静态的,需要在标准编译模型的同一转换单元中声明和使用,因此您的选择是相当有限。

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

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

__constant__ mystruct<float> const_data;
Run Code Online (Sandbox Code Playgroud)

但是,据我所知,这就是您所能做的。