来自在线文档:
cudaError_t cudaMemset (void * devPtr, int value, size_t count )
使用value值填充指向devPtr的内存区域中前count个字节。
参数: devPtr - 指向设备内存的指针 value - 要为指定内存的每个字节设置的值 count - 要设置的字节数
该描述似乎不正确,因为:
int *dJunk;
cudaMalloc((void**)&dJunk, 32*(sizeof(int));
cudaMemset(dJunk, 0x12, 32);
将所有32个整数设置为0x12,而不是0x12121212。(Int vs Byte)
描述涉及设置字节。计数和值以字节为单位描述。注意计数的类型为size_t,值的类型为int。即将一个字节大小设置为一个int值。
cudaMemset()在程序指南中未被提及。 我必须假设我看到的行为是正确的,而文档是错误的。
是否存在更好的文档来源?(在哪里?)
是否支持其他类型?即float *dJunk;
有效吗?其他的?
value
被视为字节值。该函数的行为与标准的C memset完全相同,唯一的区别是字节值传递在32位字的LSB中。顺便说一句,如果这正是你真正想要的,驱动程序API中有一个真正的32位memset函数。 - talonmiesfloat
而不是int
,则此方法无效。在这种情况下,Junk
始终是一个零数组。如何使其适用于浮点值? - dizcza