目前我想设置一个全局变量,并且动态分配内存,设为__device__ double *sz;然后在主函数中直接分配内存行不通,然后搜索网页得到一种方法是int *tmp;
cudaMalloc((void **)&tmp, sizeof(int) * num);
cudaMemcpy(tmp,某个数组,num*sizeof(int),cudaMemcpyHostToDevice);
cudaMemcpyToSymbol(sz, &tmp, sizeof(int *),size_t(0), cudaMemcpyHostToDevice);
这样检测过,可以得到sz数组,请问这样对不对,有没有绕弯路?
此外,如果我的某个数组那里是vector类型的,比如vector<double> sz1;
cudaMemcpy函数里是不是应该写成&sz1[0],
用vector类型时,会不会有什么问题,按理说,vector的内存空间应该是连续的吧,应该不会有影响吧。
|