我是CUDA编程的新手。请你帮我知道如何使用cuda将主机结构复制到设备?结构包含速度,压力,温度。
答案 0 :(得分:1)
如果结构中没有指针(即没有动态分配的数据),那么复制相对简单:
#define DSIZE 100
typedef struct {
float velocity;
float temperature;
float pressure;
} mystruct;
int main ()
{
mystruct *h_data, *d_data;
h_data = (mystruct *) malloc(DSIZE * sizeof(mystruct));
// populate h_data
cudaMalloc((void **)&d_data, DSIZE * sizeof(mystruct));
cudaMemcpy(d_data, h_data, DSIZE * sizeof(mystruct), cudaMemcpyHostToDevice);
...
}
如果结构包含动态分配的数据:
typedef struct {
float *velocity;
float *temperature;
float *pressure;
} mystruct;
然后该过程涉及extra steps。