在CUDA中计算位奇偶校验

在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

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 & 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);}