[論文レビュー] Deterministic Sample Sort For GPUs
本稿では、入力データの分布に依存する性能のばらつきを排除し、最新のランダム化サンプルソートと同等の性能を達成する、GPU用の決定的サンプルソートである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上でのランダム化サンプルソートの性能不安定性(入力データの分布に依存する)を解消すること。
- あらゆるデータタイプにおいて一貫した性能を維持する、ランダム化サンプルソートの決定的代替手法を開発すること。
- ランダム化サンプルソートやThrust Mergeといった、既存の最良のGPUソート手法と同等のソート性能を達成すること。
- 同じGPUメモリ制約下でより大きなデータセットのソートを可能にするために、メモリ効率を向上させること。
- 不規則なメモリアクセスパターンを示す一般用途のGPUコンピューティングワークロードに適した、スケーラブルで予測可能なソートソリューションを提供すること。
提案手法
- 入力データからピボット要素を決定的サンプリングにより選択し、バケツの境界を定義する。
- 決定的ピボット選択に基づき、固定サイズのバケツに入力データを分割することで、バケツサイズの予測可能性を確保する。
- 各GPUスレッドブロック内で比較ベースのソートアルゴリズム(例:ビトニックソートやオッズ・イーブンソート)を適用し、個々のバケツ内の要素をソートする。
- CUDAのSIMT実行モデルを活用し、スレッドブロックをストリーミングマルチプロセッサ(SM)にマッピングすることで、バケツソートを効率的に並列化する。
- グローバルメモリアクセスをコalescingし、共有メモリ使用量を最小限に抑えることで、メモリアクセスパターンを最適化し、遅延を低減する。
- サンプリングコストとバケツソートコストのバランスを取るために、サンプルサイズパラメータ $ s $ をチューニングし、実験で $ s = 64 $ が最適であると判明した。
実験結果
リサーチクエスチョン
- RQ1決定的サンプルソートアルゴリズムは、GPU上での最良のランダム化サンプルソートと同等の性能を達成できるか?
- RQ2決定的バケツ化は、GPUソートにおける入力データ分布に起因する性能のばらつきを解消できるか?
- RQ3決定的アプローチは、より高いメモリ効率を実現し、同じGPUハードウェア上でのより大きなデータセットのソートを可能にするか?
- RQ4さまざまなデータサイズにおいて、決定的手法のソートレートはランダム化手法や比較ベースの手法と比べてどの程度か?
- RQ5GPUベースのサンプルソートにおいて、合計実行時間を最小化する最適なサンプルサイズ $ s $ は何か?
主な発見
- GPUバケツソートは、一様分布のデータに対して、Leischnerら(2010)のランダム化サンプルソートと同一の性能を達成した。これは、ランダム化ソートにとって最良のシナリオである。
- ランダム化サンプルソートとは異なり、GPUバケツソートは $ n = 64M $ から $ n = 512M $ までの全データサイズにおいて、一定のソートレートを維持しており、性能の安定性が確認された。
- 実行時間はデータサイズの増加に伴いほぼ線形に増加しており、スケーラビリティと予測可能な性能が裏付けられた。
- GPUバケツソートは、Thrust Mergeおよびランダム化サンプルソートの両方と比較して、より高いメモリ効率を示し、GTX 285(2GB)では最大 $ 256M $ 個のデータ項目、Tesla C1060では最大 $ 512M $ 個のデータ項目のソートが可能になった。
- 100回の実行で1ms未満のばらつきが観測されたため、高い決定性と極めて低い実行時間のばらつきが確認された。
- 2GBメモリ搭載のGTX 285では、わずかに遅いメモリ構成を使用しているにもかかわらず、より良いメモリ帯域幅の活用により、ランダム化手法を数パcent上回る性能を発揮した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。