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