Я пытаюсь отладить мой код cuda, и я смущен о том, как получить cudaMemset
для правильной работы. Ниже приведена прослушиваемая часть.cudaMemset не удалось установить все значения 0
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
. Однако, когда я распечатал его, только первые 256 значений массива h_histogram установлены равными 0, остальная часть установлена в кучу случайных чисел. Пожалуйста, помогите мне исправить это.
Отлично, что работает. У вас есть идея, почему разработчик сказал, что третий параметр должен быть size_t? Как в этой ссылке http://www.cs.rit.edu/~ark/cuda/doc/html/group__CUDART__MEMORY_ge07c97b96efd09abaeb3ca3b5f8da4ee.html –
@beginner: 'size_t' не« размер типа », а« тип размера »- a тип, предназначенный для хранения размера чего-либо. В этом случае это «что-то» - это количество байтов. –