CUDA将带有动态数组的结构从主机传递到设备

时间:2019-03-26 08:07:50

标签: c++ cuda

我是CUDA的新手,我了解CUDA允许在设备上使用C标准,在主机上使用CPP。因此,如果要从主机向设备发送一些2D形状(点以及其他属性),则必须在C中使用Struct。

假设我的头文件中有一个结构定义如下

#include <float.h>

struct BoundingBox{
    double maxX = -DBL_MAX;
    double maxY = -DBL_MAX;
    double minX =  DBL_MAX;
    double minY =  DBL_MAX;
};

struct Shape {
    unsigned int id;
    unsigned int length;
    double *x;
    double *y;
    BoundingBox boundingBox;
};

我在这里使用指针,因为直到运行时我都不知道长度的确切长度。

我有两个问题:

  1. 此Struct作为数据有效载荷是正确的方法吗?如果不是,那我该怎么办? (我知道cudaMalloc和cudaMemcpy员工,我只是在仔细检查我从理论上解决此问题的想法)

  2. 我如何在主机上正确分配此结构并将其发送到设备(它很可能是实时数组)。

0 个答案:

没有答案