2010-11-24 5 views
2

CUDA는 프로그래머에게 a & b | ~ c (a, b, cunsigned int)과 같은 것을 쓸 수있는 가능성을 제공합니다.GPU (Geforce 9800)는 비트 단위 정수 연산을 어떻게 구현합니까?

GPU는 내부적으로 어떤 기능을 수행합니까? 어떻게 든 정수에서 비트 연산을 "에뮬레이션"합니까? 아니면 기존 CPU와 비슷하게 효율적입니까?

+2

읽은 내용에 대한 참조를 제공하십시오. 그렇지 않으면 단지 소문 일 뿐이며 의견을 말하기 어렵습니다. "많은 스택 오버플로 사용자가 rtfm을 읽지는 않습니다." –

답변

5

CUDA Programming Guide v2.3 (5.1.1.1 절)에 따르면 비트 단위 연산은 최고 속도 (클럭 사이클 당 8 개 연산)로 실행됩니다. 정수 추가의

정수 산술

처리량은 클럭 사이클 당 8 작업입니다. 32 비트 정수 승산

처리량 클럭 사이클 당 2 개 동작이지만 mul24 클럭 사이클 당 8 개 동작의 스루풋 24 비트 정수 승산을 제공한다. 미래의 아키텍처에 그러나, mul24는 32 비트 정수의 곱셈보다 느린 것, 그래서 우리는에 의해 적절하게 호출 할 일반적인 32 비트 정수의 곱셈, 를 사용 mul24 다른를 사용하여 두 개의 커널, 하나 을 제공하는 것이 좋습니다 응용 프로그램입니다.

정수 나눗셈 및 모듈로 연산 특히 고가이며 가능 또는 비트 연산 가능한 대체 피해야한다 : (I/N)이 당량 (I>이고, n은 2의 거듭 제곱 인 경우 > log2 (n)) 및 (i % n) 은 (i & (n-1))와 동일하다. n이 리터럴이면 컴파일러는 변환을 수행합니다.

비교 비교, 최소, 최대의 처리량은 클록 당 8 연산 주기입니다.

비트 단위 연산 비트 단위 연산의 처리량은 클록 사이클 당 8 연산 입니다.

관련 문제