2012-02-04 2 views
6

GPU (선호 OpenCL) 용 프로그램을 작성하고 싶습니다. 계산의 상당 부분은 비트 배열 (길이 또는 int로 묶여 있음)에서 1의 수를 세는 것으로 구성됩니다.OpenCL : GPU에서 32 비트 및 64 비트 popcnt 명령?

그래서 현대 CPU에서는 네이티브 __popcnt 명령을 사용합니다. 인터넷상의 여러 장소에서 현대 GPU를 읽었습니다.이 명령어는 하드웨어에도 포함되어 있습니다.이 명령어는 저에게 큰 스피드 업이 될 것입니다. (최소한 32 비트는 64 비트가 확실하지 않습니다.)

그러나이 명령어는 우리에게 아무런 의미가 없습니다. 따라서 :

1) 어떤 지침을 가지고있는 GPU를 어떻게 찾을 수 있습니까? (그래도 내 GPU를 구입해야하므로 현대적인 고급 제품이 될 것입니다. 아마 Radeon HD7000 시리즈 또는 nVidia Kepler)

2) OpenCL 또는 이와 유사한 GPU 언어에서이 명령어를 호출하는 방법 2) ?

답변

5

확장자 cl_amd_popcnt로 사용할 수 있습니다. 나는 Radeon 6870 카드와 opteron 6128 cpu를 가지고 있는데, 둘 다 확장 기능을 지원합니다.

더 좋은 소식은 OpenCL 1.2부터는 더 이상 확장이 아닙니다. 참조 카드 및 사양의 popcount 명령을 참조하십시오. AMD 7xxx 시리즈 하드웨어는 OCL 1.2와 호환되며, 새로운 Nvidia도 마찬가지입니다.

"T는 char 형 charn, UCHAR, ucharn 짧고 shortn, USHORT, ushortn, INT INTN, UINT, uintn 길고 longn, ULONG 또는 ulongn, n은 3 2 이며 4, 8 또는 16 "입니다.

T popcount (T x)는 x에 채워진 (0이 아닌) 비트 수를 반환합니다.

http://www.khronos.org/registry/cl/sdk/1.2/docs/OpenCL-1.2-refcard.pdf

http://www.khronos.org/registry/cl/specs/opencl-1.2.pdf

관련 문제