如何在GPU CUDA上非常快速地对少量(约100~200)的(~16位)数字进行排序?

时间:2014-02-03 20:51:24

标签: sorting cuda gpgpu gpu-programming radix-sort

嗨是我项目的一部分。关键是我必须对一组数字进行排序(例如100~200 16位数字,数字和位在手前固定)。我想使用GPU的共享内存在一个块内对此进行排序,作为要求的一部分,数据无法在中间离线。

我在GPU上读过一些基数排序,比特排序算法。但它看起来像是为大量数字而设计的。我想非常快地对这100~200个数字进行排序

我感谢任何想法/帮助

1 个答案:

答案 0 :(得分:4)

CUB具有在单个块中执行排序操作的例程,包括examples。如果您愿意,CUB还可以在设备级别运行例程,以利用所有计算资源来处理更大的问题。

对于100多个要排序的数字,您不太可能编写自己运行得更快的代码。

如果您有一个非常小的组(比如<32)数字要在块级别进行排序,您可能只想编写自己的代码。在这种情况下,warp vote and shuffle说明可能会有用。