cudaMemset未能将所有值设置为0

cudaMemset未能将所有值设置为0,cuda,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

我正在试着调试我的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]);}
unsigned int*h_直方图;
检查CUDAERRORS(cudaMallocHost((void**)和h_直方图,sizeof(unsigned int)*numBins));
检查CUDAERRORS(cudaMemset(h_直方图,0,numBins));

std::coutcudaMemset的第三个参数是以字节为单位的大小,应该用指定的值设置。您只输入元素的计数。 您必须将其更改为此,就像您之前对
cudamalochost
所做的那样

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

太好了,行得通。你知道为什么开发者说第三个参数应该是size\u t吗?就像在这个链接中@初学者:
size\u t
不是“类型的大小”,而是“大小类型”——一种设计用来容纳某物大小的类型。在本例中,“something”是字节数。