cudaMemset未能将所有值都设置为0

时间:2013-12-08 14:34:58

标签: cuda

我正在尝试调试我的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,其余值设置为一堆随机数。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:2)

cudaMemset的thrid参数是以字节为单位的大小,可以使用destlated值设置。您只输入元素的数量。 您必须将其更改为此,就像之前使用cudaMallocHost一样。

checkCudaErrors(cudaMemset(h_histogram, 0, numBins*sizeof(unsigned int));