[论文解读] Deterministic Sample Sort For GPUs
本文提出GPU桶排序(GPU Bucket Sort),这是一种针对GPU的确定性样本排序算法,在性能上与最先进的随机化样本排序相当,同时消除了输入数据分布导致的性能波动。通过确定性地选择采样点以将数据划分为固定大小的桶,该方法确保了所有数据分布下的运行时间一致,并提升了在有限GPU内存下处理更大数据集的能力。
We present and evaluate GPU Bucket Sort, a parallel deterministic sample sort algorithm for many-core GPUs. Our method is considerably faster than Thrust Merge (Satish et.al., Proc. IPDPS 2009), the best comparison-based sorting algorithm for GPUs, and it is as fast as the new randomized sample sort for GPUs by Leischner et.al. (to appear in Proc. IPDPS 2010). Our deterministic sample sort has the advantage that bucket sizes are guaranteed and therefore its running time does not have the input data dependent fluctuations that can occur for randomized sample sort.
研究动机与目标
- 解决GPU上随机化样本排序因输入数据分布不同而导致的性能不稳定问题。
- 开发一种随机化样本排序的确定性替代方案,确保在所有数据类型下保持一致的性能表现。
- 实现与目前已知最佳GPU排序方法(如随机化样本排序和Thrust Merge)相当的排序性能。
- 提升内存效率,使在相同GPU内存限制下能够处理更大的数据集。
- 提供一种可扩展、可预测的排序解决方案,适用于具有不规则内存访问模式的通用GPU计算工作负载。
提出的方法
- 使用确定性采样从输入数据中选择枢轴元素,以定义桶的边界。
- 基于确定性枢轴选择将输入数据划分为固定大小的桶,确保桶大小可预测。
- 在每个GPU线程块内应用基于比较的排序算法(例如位onic排序或奇偶排序),对单个桶中的元素进行排序。
- 利用CUDA的SIMT执行模型,将线程块映射到流式多处理器(SMs),以高效并行化桶排序。
- 通过合并全局内存访问和最小化共享内存使用来优化内存访问模式,降低延迟。
- 调整采样大小参数 $ s $ 以平衡采样开销与桶排序开销,实验中发现 $ s = 64 $ 为最优值。
实验结果
研究问题
- RQ1确定性样本排序算法是否能在GPU上实现与最佳随机化样本排序相当的性能?
- RQ2确定性桶划分是否能消除GPU排序中因输入数据分布导致的性能波动?
- RQ3确定性方法是否能实现更高的内存效率,从而在相同GPU硬件上处理更大的数据集?
- RQ4在不同数据规模下,确定性方法的排序速率与随机化方法及基于比较的排序方法相比如何?
- RQ5使GPU样本排序总运行时间最小化的最优采样大小 $ s $ 是多少?
主要发现
- 在均匀分布数据上,GPU桶排序的性能与Leischner等人(2010年)提出的随机化样本排序完全一致,这是随机化排序的最佳情况。
- 与随机化样本排序不同,GPU桶排序在从 $ n = 64M $ 到 $ n = 512M $ 的所有测试数据规模下均保持恒定的排序速率,表明其性能稳定。
- 随着数据规模增加,该方法的运行时间几乎呈线性增长,证实了其可扩展性和可预测的性能表现。
- GPU桶排序在内存效率方面优于Thrust Merge和随机化样本排序,可在GTX 285(2GB)上处理高达 $ 256M $ 个数据项,在Tesla C1060上处理高达 $ 512M $ 个数据项。
- 在100次运行中,该实现的运行时间波动小于1毫秒,证实了其高度的确定性与极低的运行时间波动。
- 在GTX 285(2GB内存)上,尽管使用了稍慢的内存配置,GPU桶排序仍因更优的内存带宽利用率而比随机化方法快几个百分点。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。