CUDA:由于参数在无效范围内,未签名整数缓冲区上的CumSetd32失败

CUDA:由于参数在无效范围内,未签名整数缓冲区上的CumSetd32失败,cuda,memset,Cuda,Memset,我想重置(设置为0)unsigned int类型的缓冲区。我不知道为什么,但对我来说,只有cuMemsetD8版本可以工作。这是我的密码: CUdeviceptr pBuffer; cuMemAlloc(&pBuffer, sizeof(unsigned int) * 1000); cuMemsetD32(pBuffer, 0, sizeof(unsigned int) * 1000); // fails with invalid argument (range) error 的第三个

我想重置(设置为0)unsigned int类型的缓冲区。我不知道为什么,但对我来说,只有cuMemsetD8版本可以工作。这是我的密码:

CUdeviceptr pBuffer;
cuMemAlloc(&pBuffer, sizeof(unsigned int) * 1000);
cuMemsetD32(pBuffer, 0, sizeof(unsigned int) * 1000); // fails with invalid argument (range) error
的第三个参数是元素数,而不是字节数。所以 应该是:

CUdeviceptr pBuffer;
cuMemAlloc(&pBuffer, sizeof(unsigned int) * 1000);
cuMemsetD32(pBuffer, 0, 1000);
的第三个参数是元素数,而不是字节数。所以 应该是:

CUdeviceptr pBuffer;
cuMemAlloc(&pBuffer, sizeof(unsigned int) * 1000);
cuMemsetD32(pBuffer, 0, 1000);

重要的是,如果您使用D8版本而不是D32版本(使用示例3作为输入),则会将无符号int元素设置为0x03030303。重要的是,如果您使用D8版本而不是D32版本(使用示例3作为输入),则会将无符号int元素设置为0x03030303