Han*_*del 1 sorting cuda cudafy.net
我有大量的数据需要排序,数百万个数组,每个数组有数万个值.我想知道以下内容:
最好是在GPU上实现并行排序算法,并在所有阵列上运行它
要么
实现单线程算法,如quicksort,并为GPU的每个线程分配一个不同的数组.
显然速度是最重要的因素.对于单线程排序算法,内存是一个限制因素.我已经尝试过实现一个递归的快速排序,但它似乎不适用于大量的数据,所以我假设存在内存问题.
要排序的数据类型很长,所以我不相信基数排序是可能的,因为它的数字的二进制表示将太长.
任何指针将不胜感激.
排序是一项受到很多关注的操作.如果您对高性能感兴趣,则不建议编写自己的排序.我认为是这样的推力,back40computing,moderngpu,或CUB在GPU上进行排序.
以上大多数将使用完整的GPU对数组进行排序,一次处理一个数组.有一些技术可以进行矢量化排序,可以"同时"处理多个数组,而CUB也可以选择进行"每线程"排序(比方说,"每个线程块").
一般来说,我会对CPU排序代码说同样的话.不要自己写.
编辑:我想还有一个评论.我会倾向于你提到的第一种方法(即不对每个线程进行排序.)有两个相关的原因:
归档时间: |
|
查看次数: |
2592 次 |
最近记录: |