【发布时间】:2015-01-13 04:34:38
【问题描述】:
为什么我的cudaMemcpy 不起作用?我将它包装在checkCUDAErrors 中,这是我正在学习的课程提供的调试功能。我的程序没有错误,除了一个:
CUDA error at: student_func.cu:202
invalid argument cudaMemcpy(&d_filter,&h_filter, sizeof(float) * filterWidth *
filterWidth, cudaMemcpyHostToDevice);
但是,NVCC 没有报告任何错误。我哪里错了?
unsigned char *d_red, *d_green, *d_blue;
const float* const *d_filter;
void allocateMemoryAndCopyToGPU(const size_t numRowsImage, const size_t numColsImage,
const float* const h_filter, const size_t filterWidth)
{
checkCudaErrors(cudaMalloc(&d_red, sizeof(unsigned char) * numRowsImage * numColsImage));
checkCudaErrors(cudaMalloc(&d_green, sizeof(unsigned char) * numRowsImage * numColsImage));
checkCudaErrors(cudaMalloc(&d_blue, sizeof(unsigned char) * numRowsImage * numColsImage));
d_filter = &h_filter;
checkCudaErrors(cudaMalloc(&d_filter, sizeof(float) * filterWidth * filterWidth));
checkCudaErrors(cudaMemcpy(&d_filter,&h_filter, sizeof(float) * filterWidth * filterWidth, cudaMemcpyHostToDevice)); //line with error
}
【问题讨论】: