来自online文件:
cudaError_t cudaMemset (void * devPtr, int value, size_t count )用常量字节值填充由devPtr指向的内存区域的第一个计数字节。 参数: devPtr - 指向设备内存的指针 值 - 为指定内存的每个字节设置的值 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;
是否有效?其他?
1 个回复
nodit 2019-02-11
赞同来自:
文档是正确的,您对
产生 即。所有128个字节都设置为0,然后将前32个字节设置为cudaMemset
所做的解释是错误的。该函数确实设置了字节值。您的示例将前32个字节设置为0x12
,而不是将所有32个整数设置为0x12
,即:0x12
。完全如文档所述。