Это мой код, инициализирующий матрицу d_ref и копирующий ее на устройство.Я не уверен, правильно ли я использую cudaMallocPitch и cudaMemcpy2D, но я пытался использовать cudaMemcpy2D и нижнюю страницу 20 Руководство по программированию CUDA
Все, что я получаю ввывод 0.
Что не так с моим кодом?и это лучший способ сделать эту работу?
Заранее спасибо.
__host__
float *d_ref;
float **h_ref = new float* [width];
for (int i=0;i<width;i++)
h_ref[i]= new float [height];
for (int i=0;i<width;i++){
for (int j=0;j<height;j++){
h_ref[i][j]=ref_list[j][i]; //transpose
}
}
size_t ref_pitch;
cudaMallocPitch(&d_ref, &ref_pitch, width * sizeof(float), height);
cudaMemcpy2D(d_ref, ref_pitch, h_ref, width*sizeof(float),width*sizeof(float), height*sizeof(float), cudaMemcpyHostToDevice);
lowerBound<<<grid, block>>>(d_ref, ...
__global__ void lowerBound (float* d_ref, ....
float* ref = (float*)((char*)d_ref + blockIdx.x * ref_pitch);
cuPrintf(" %f \n",ref[threadIdx.x]);