关于CUDA上GPU端的排序算法,一般用哪种方法实现比较好呢?

关于CUDA上GPU端的排序算法,一般用哪种方法实现比较好呢?现在有一个程序,每次迭代调用核函数时,都有一步要对数据从小到大进行排序,请问用什么方法实现比较好?

楼主您好!

对于GPU上的排序,我真没有研究。不过说起来,总得要考虑GPU上的SIMT特性,以及访存和指令上的各种特点吧。

希望其他的会员和版主能够给出GPU上的各种排序算法或者理论,最好能比较他们的优劣,以及时间和空间上的复杂度等信息,以飨论坛和楼主。

这个回复就当作抛砖引玉了。

好的,谢谢这位版主,同时也希望得到其他朋友的进一步帮助

另外,咱们论坛是不是没有搜索主题的功能?

您好,论坛目前确无搜索功能,推荐您使用google搜索暂时代替。

祝您新年愉快~

新年愉快!

CUDA的库函数里面已经有现成的排序函数了,楼主可以查看thrust库。
thrust库里的排序用的是基数排序法~

双调排序网络(Bitonic sort network)算是比较常用的并行排序算法了吧,具体算法谷歌一下,cuda自带的sample里也有相关。
还有上面同学说的通过thrust库的基数排序(Radix Sort ),cuda的sample里也有的。

谢谢啦。还想问一下,thrust库里的函数,在设备端运行,是多线程的__global__并行执行?还是__device__的那种单线程的?

是global的,你可以查看一下thrust库的手册