Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCL:GPU上的32位和64位popcnt指令?_Opencl_Gpgpu - Fatal编程技术网

OpenCL:GPU上的32位和64位popcnt指令?

OpenCL:GPU上的32位和64位popcnt指令?,opencl,gpgpu,Opencl,Gpgpu,我想为GPU(最好是OpenCL)编写一个程序,大部分计算包括计算位数组中1的数量(压缩为long或int) 因此,在现代CPU上,我显然只会使用本机popcnt指令。我在互联网上的几个地方读到,现代GPU,这种指令也存在于硬件中,这对我来说是一个巨大的加速。(至少对于32位,不确定是否为64位) 然而,我找不到如何给我们这个指示。因此: 1) 我应该如何找出哪个GPU有此指令?(我仍然需要购买我的GPU,所以它将是一款现代高端GPU…可能是Radeon HD7000系列或nVidia开普勒)

我想为GPU(最好是OpenCL)编写一个程序,大部分计算包括计算位数组中1的数量(压缩为long或int)

因此,在现代CPU上,我显然只会使用本机popcnt指令。我在互联网上的几个地方读到,现代GPU,这种指令也存在于硬件中,这对我来说是一个巨大的加速。(至少对于32位,不确定是否为64位)

然而,我找不到如何给我们这个指示。因此:

1) 我应该如何找出哪个GPU有此指令?(我仍然需要购买我的GPU,所以它将是一款现代高端GPU…可能是Radeon HD7000系列或nVidia开普勒)


2) 如何从OpenCL(或类似的GPU语言)调用此指令?

这是作为扩展cl\U amd\U popcnt提供的。我有一个Radeon 6870卡和opteron 6128 cpu,两者都支持扩展

对您来说更好的消息是,从OpenCL1.2开始,它不再是一个扩展。请参阅参考卡和规范中的说明popcount。AMD 7xxx系列硬件与OCL 1.2兼容,我想新的Nvidia产品也是如此

“T是char、charn、uchar、ucharn、short、shortn、ushort类型, ushortn、int、intn、uint、uintn、long、longn、ulong或ulong, 其中n是2、3、4、8或16“

T popcount(tx)返回x中填充的(非零)位的数量