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

Defining templated constant variables in cuda

本文关键字:常量 变量 cuda 定义      更新时间:2023-10-16

如何在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;
但是,据

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