c++ - 在cuda中定义模板化常量变量

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

如何在 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/

相关文章:

c# - 在 C# 中的 VS2010 加载项中,如何获取光标当前所在方法的名称和签名?

java - 使用 SVN 将一些模板文本包含到源文件中的好解决方案?

c++ - N4140 §8.2[dcl.ambig.res]/2 中的注释

asp.net - AjaxControlToolkit.ToolkitScriptManager 在 16.1.1.0 版本中不可用

c++ - 如何在类中使用结构

visual-studio-2010 - 如何使用共享点对象模型获取项目审批工作流的状态?

c++ - 为什么派生类不能代替基类作为模板参数?

c++ - 这个 C++ 模板类代码是如何工作的?

c++ - 结构体中的指针问题

c++ - 为什么 std::is_same 不起作用?