在CUDA中计算位奇偶校验
CUDA具有32位和64位类型的popcount内部函数:在CUDA中计算位奇偶校验,cuda,gpgpu,gpu,parity,Cuda,Gpgpu,Gpu,Parity,CUDA具有32位和64位类型的popcount内部函数:\uuuuPopC()和\uuuPopCll() CUDA是否也有内部函数来获取32位和64位类型的奇偶校验? (奇偶校验是指一个整数的1位是偶数还是奇数。) 例如,GCC具有用于64位整数的\uuuu内置parityl() 这是一个C函数,它做同样的事情: inline uint parity64(uint64 n){ n ^= n >> 1; n ^= n >> 2; n = (n & 0
\uuuuPopC()
和\uuuPopCll()
CUDA是否也有内部函数来获取32位和64位类型的奇偶校验?
(奇偶校验是指一个整数的1位是偶数还是奇数。)
例如,GCC具有用于64位整数的\uuuu内置parityl()
这是一个C函数,它做同样的事情:
inline uint parity64(uint64 n){
n ^= n >> 1;
n ^= n >> 2;
n = (n & 0x1111111111111111lu) * 0x1111111111111111lu;
return (n >> 60) & 1;
}
我不知道是否有对等
但是,您应该能够使用(32位无符号大小写)或(64位无符号大小写)内部函数创建一个相当简单的函数
例如,以下函数应指示64位无符号量中的1位数是奇数(true)还是偶数(false):
你能不能只取popcount并确定该数字是偶数还是奇数,即
\uuuPopCll(n)&1
?它没有将位奇偶校验列为一个固有值,因此我可能不得不接受你的建议
__device__ bool my_parity(unsigned long long d){
return (__popcll(d) & 1);}