【问题标题】:Defining templated constant variables in cuda在 cuda 中定义模板化常量变量
【发布时间】:2013-08-07 10:29:22
【问题描述】:

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

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

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

template<typename T> __constant__ mystruct<T> const_data;

在main之后我想复制一些

  mystruct<float> data; 

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

【问题讨论】:

  • 您忘记初始化常量data 结构。您还忘记了struct 及其终止分号。
  • 这是我的代码中唯一的错误吗?也就是说,如果我初始化数据结构,它会起作用吗?请解释一下我是 cuda 的新手。

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


【解决方案1】:

在 CUDA 中,__constant__ 变量具有隐含的静态存储。从您的问题中不清楚您希望在什么时候实例化常量内存变量,但鉴于常量内存变量是静态的并且需要在标准编译模型的同一翻译单元中声明和使用,您的选择是非常有限。

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

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

__constant__ mystruct<float> const_data;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 2016-03-05
    • 2019-10-07
    • 1970-01-01
    • 2015-11-09
    相关资源
    最近更新 更多