我使用了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
感谢您的帮助
答案 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位)值?