opencl Bitonic排序,64位密钥

时间:2015-03-20 18:55:12

标签: sorting hash opencl

我使用了nvidia sdk Bitonic Sort,它对我很有用。 但它是32位(uint)我真的需要ulong键。 我一般只有2 ^ 14个键,功率为2。 我搜遍了所有,但找不到任何为ulong设计的内核。

我尝试使用ulong键修改nvidia sdk Bitonic Sort,但它不起作用。内核不会崩溃,但在调用clEnqueueNDRangeKernel后我收到错误:CL_INVALID_COMMAND_QUEUE

有人可以告诉我如何修改Bitonic Sort或其他类似RadixSort,或任何可以排序ulong键的东西吗?


我正在运行NVIDIA Quadro 4000 OpenCL 1.1 CUDA 6.5.20 FULL_PROFILE 我使用了原始的nvidia sdk BitonicSort.cl

我刚用“ulong”表示键和值输入和输出而不是“uint”

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我终于做了一个适合我需要的解决办法 我使用了30位密钥和18位HIGH值进行排序 我只改变了比较器(2行):

' #define MASK 0xFFFFC000 //以满足您的需求

由此得出:if((* keyA> * keyB)== dir)
对此:if(((* keyA> * keyB)||((* keyA == * keyB)&&((* valA& MASK)>(* valB& MASK))))= = dir)

工作正常 但是,它仍然是一个解决方案,问题仍然存在,我们需要64位密钥+ 32位(或64位)值?