我使用以下格式的std :: array存在C ++ 11代码:
#include <array>
const unsigned int arraySize = 1024;
#define ARRAY_DEF std::array<int, arraySize>
int main()
{
ARRAY_DEF x;
x.fill(1);
return 0;
}
在整个代码中,我使用ARRAY_DEF以便于阅读,并使其更易于维护。没问题。
现在我想将代码移植到GPU上的CUDA中运行。问题,因为std :: array无法在设备上运行。
我认为我需要利用thrust::device_vector
,但我看不到在#define中声明静态大小向量的简单方法。 (我只看到在构造函数中的变量名之后执行此操作,这违背了使用#define的要点。)
是否有另一种方法可以在#define中声明具有静态大小的矢量?
或者是否可以在CUDA库中使用另一个类来模仿std :: array在设备上运行?
答案 0 :(得分:0)
谢谢大家!可悲的是,这些答案都不符合我的需要。 我把事情掌握在自己的手中,创建了一个模仿std :: array(大多数)的类,可以在设备/内核函数中运行,并且主要是一个查找/替换来编辑。 (好吧,我需要更换其他STL功能,但这是另一个问题。) https://github.com/MikeBSilverman/CUDAHostDeviceArray
希望它可以帮助别人。