使用std :: array来使用CUDA推送端口C ++代码的简单方法?

时间:2018-03-29 23:51:00

标签: c++ cuda

我使用以下格式的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在设备上运行?

1 个答案:

答案 0 :(得分:0)

谢谢大家!可悲的是,这些答案都不符合我的需要。 我把事情掌握在自己的手中,创建了一个模仿std :: array(大多数)的类,可以在设备/内核函数中运行,并且主要是一个查找/替换来编辑。 (好吧,我需要更换其他STL功能,但这是另一个问题。) https://github.com/MikeBSilverman/CUDAHostDeviceArray

希望它可以帮助别人。