2012-02-04 34 views
6

私はGPU(好ましくはOpenCL)用のプログラムを書いていますが、計算の大部分はビット配列(1または2)で1の数を数えることから成ります。OpenCL:GPU上の32ビットおよび64ビットpopcnt命令?

最新のCPUでは、明らかにネイティブの__popcnt命令を使用します。インターネット上のいくつかの場所で最新のGPUが読み込まれていますが、この命令もハードウェアに存在しています。 (少なくとも32ビットでは、約64がわかりません)

しかし、私はこの命令をどのように私たちに教えていません。だから:

1)どのように私はこの命令を持っているGPUを見つける必要がありますか? (私はまだGPUを購入する必要があるので、現代のハイエンドのものになるでしょう...おそらくRadeon HD7000シリーズまたはnVidia Kepler)

2)OpenCLからこの命令を呼び出す方法?

答えて

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 であり、 popcount(T x)は、xのポピュレートされた(非ゼロ)ビットの数を返します。

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

関連する問題