比如 : struct MyStruct{
int *point;
…
}
可以直接调用,关键看内存开在哪里
host端
data* h_input;
h_input=(data*)malloc(sizeof(data));
h_input->value=(int*)malloc(sizeof(int)N);
h_input->num=(int)malloc(sizeof(int)*N);
data tmp; 用于过渡 中转站
cudaMalloc((void**)&tmp->value,sizeof(int)N);
cudaMalloc((void*)&tmp->num,sizeof(int)*N);
device端
data* d_input;
cudaMalloc((void**)&d_input,sizeof(data));
将host端数据复制端device端
cudaMemcpy(tmp->value,h_input->value,sizeof(int)*N,cudaMemcpyHostToDevice);
cudaMemcpy(tmp->num,h_input->num,sizeof(int)*N,cudaMemcpyHostToDevice);
cudaMemcpy(d_input, &tmp , sizeof(data),cudaMemcpyHostToDevice);