在 cuda 中定义模板化常量变量
Defining templated constant variables in 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
并最终在设备代码中访问它。如果有人指出如何实现这一目标,那就太好了。提前谢谢。
在 CUDA 中,__constant__
变量都有隐含的静态存储。从您的问题中不清楚您希望在什么时候实例化常量内存变量,但鉴于常量内存变量是静态的,需要在标准编译模型中的同一翻译单元中声明和使用,您的选择非常有限。
没有什么可以阻止您定义模板化类型,然后在常量内存中静态定义该类型的特定实例,例如:
template<typename T> struct mystruct{ T d1; T d2[10]; };
__constant__ mystruct<float> const_data;
但是,据我所知,这就是你能做的。
相关文章:
- 通过多个头文件使用常量变量
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 非常量变量只读位置的赋值
- 使用大量已知常量变量的正确方法
- 无法在具有常量变量大小的类中创建堆栈分配数组
- 这些语句是否等效(静态变量、常量变量和泛型)
- 包含常量变量并包含在多个文件中的标头的链接错误
- 我们如何修改常量变量的值
- 如何在模板类中设置静态常量变量
- 为什么常量变量是模板特殊化所必需的,而不是常量
- 如何在函数中传递常量变量?
- 定义常量变量的最佳方法
- C++ 声明常量变量,但推迟其初始化?
- 如何初始化具有常量变量的结构数组
- 使用常量变量作为维度将矩阵声明为类成员时出现编译器错误
- 使用指针 c++ 更改常量变量
- c++ 类中的静态常量变量和常量变量在存储方面是否有区别
- 为什么 lambda 对象中的局部变量是常量变量?
- 使用常量变量作为数组的大小
- 为许多类可能需要的所有常量变量制作独立的头文件是否是一种很好的做法?