我正在尝试调试我的cuda代码,我对如何使cudaMemset
正常工作感到困惑。下面是有问题的部分。
unsigned int * h_histogram;
checkCudaErrors(cudaMallocHost((void **)&h_histogram,sizeof(unsigned int)*numBins));
checkCudaErrors(cudaMemset(h_histogram, 0, numBins));
std::cout << "Num Bins = " << numBins << std::endl;
for (size_t i = 0; i < numBins; ++i)
{
printf("%u %u %u\n", i, h_histogram[i]);}
在此代码中,numBins = 1024
。但是,当我打印出来时,只有数组h_histogram的前256个值设置为0,其余值设置为一堆随机数。请帮我解决这个问题。
答案 0 :(得分:2)
cudaMemset
的thrid参数是以字节为单位的大小,可以使用destlated值设置。您只输入元素的数量。
您必须将其更改为此,就像之前使用cudaMallocHost
一样。
checkCudaErrors(cudaMemset(h_histogram, 0, numBins*sizeof(unsigned int));