CUDA有32位和64位类型的 popcount 内在函数:__popc()
和__popcll()
。
CUDA是否也有内在函数来获得32位和64位类型的奇偶校验? (奇偶校验是指整数是偶数还是奇数的1位。)
例如,GCC对64位整数有__builtin_parityl()
。
这里有一个C函数可以做同样的事情:
inline uint parity64(uint64 n){
n ^= n >> 1;
n ^= n >> 2;
n = (n & 0x1111111111111111lu) * 0x1111111111111111lu;
return (n >> 60) & 1;
}
答案 0 :(得分:1)
我不知道奇偶校验intrinsic for CUDA。
但是,您应该能够使用__popc()
(32位无符号大小写)或__popcll()
(64位无符号大小写)内在函数创建一个相当简单的函数。
例如,以下函数应指示64位无符号数量中的1位数是奇数(真)还是偶数(假):
__device__ bool my_parity(unsigned long long d){
return (__popcll(d) & 1);}