【发布时间】:2015-03-20 18:55:12
【问题描述】:
我使用了 nvidia sdk Bitonic Sort,它对我来说非常有用。 但它是 32 位 (uint) 我真的需要 ulong 键。 我通常一次只有 2^14 个键和 2 个键。 我到处搜索,但找不到任何为 ulong 设计的内核。
我尝试修改 nvidia sdk Bitonic Sort 以使用 ulong 键,但它不起作用。内核不会崩溃,但在调用 clEnqueueNDRangeKernel 后出现错误:CL_INVALID_COMMAND_QUEUE
谁能告诉我如何修改双音排序或其他类似 RadixSort,或任何可以对 ulong 键进行排序的东西?
我正在运行 NVIDIA Quadro 4000 OpenCL 1.1 CUDA 6.5.20 FULL_PROFILE 我用的是原来的nvidia sdk BitonicSort.cl
我只是将“ulong”用于键和值的输入和输出,而不是“uint”
感谢您的帮助
【问题讨论】:
-
你能把你修改的内核贴出来吗?还有你在哪些设备上运行内核?
-
不幸的是,这些快速排序算法也相当复杂,很难适应不同的数据类型。我曾经使用过Intel bitonic sort,我发现它不适用于大于 10 亿的值,即使它使用了 uint。
-
@ Baiz 我试图通过在键上打包 30 位和在值上再打包 18 位来欺骗它,并修改我的比较器以使用该额外信息,但似乎排序不稳定。为什么在世界上应该将如此强大的算法限制为 32 位。真丢人。