2017-10-06 4 views
0

CUDA는 팝업 개수 내장 유형은 32 비트 및 64 비트 유형 인 __popc()__popcll()입니다.CUDA의 비트 패리티 계산

CUDA에는 패리티의 32 비트 및 64 비트 유형을 가져 오는 내장 기능이 있습니까? 합니다 (패리티 정수 1 비트의 짝수 또는 홀수의 양을 가지고 있는지를 의미한다.) 예를 들어

은 GCC 64 비트 정수의 __builtin_parityl()있다.

inline uint parity64(uint64 n){ 
    n ^= n >> 1; 
    n ^= n >> 2; 
    n = (n & 0x1111111111111111lu) * 0x1111111111111111lu; 
    return (n >> 60) & 1; 
} 
+4

를 방금 popcount를받을 수 없어 그 숫자가 짝수 또는 홀수인지, 즉'__popcll (n) & 1'을 결정합니까? –

+0

[CUDA 설명서] (http://docs.nvidia.com/cuda/cuda-math-api/group__CUDA__MATH__INTRINSIC__INT.html)는 * 비트 패리티 *를 내장으로 나열하지 않으므로 제안과 함께해야 할 수도 있습니다 –

답변

1

내가 패리티 intrinsic for CUDA 잘 모르는 것 같아요 :

그리고 여기에 같은 일을하는 C 함수입니다.

그러나 __popc() (32 비트 서명되지 않은 케이스) 또는 __popcll() (64 비트 서명되지 않은 케이스) 내장 함수를 사용하여 매우 간단한 함수를 생성 할 수 있어야합니다.

예를 들어, 다음 함수는 64 비트의 부호없는 양의 1 비트의 수가 홀수 (TRUE) 또는 (거짓)인지를 표시한다 :

__device__ bool my_parity(unsigned long long d){ 
    return (__popcll(d) & 1);}