我是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;
};
我在这里使用指针,因为直到运行时我都不知道长度的确切长度。
我有两个问题:
此Struct作为数据有效载荷是正确的方法吗?如果不是,那我该怎么办? (我知道cudaMalloc和cudaMemcpy员工,我只是在仔细检查我从理论上解决此问题的想法)
我如何在主机上正确分配此结构并将其发送到设备(它很可能是实时数组)。