Skip to main content
QUICK REVIEW

[論文レビュー] A Novel Implementation of QuickHull Algorithm on the GPU

Jiayin Zhang, Gang Mei|arXiv (Cornell University)|Jan 20, 2015
Computational Geometry and Mesh Generation参考文献 20被引用数 5
ひとこと要約

本稿では、2次元QuickHullアルゴリズムの新規GPUアクセラレート実装を提示する。Thrustライブラリのプリミティブを用いて、分割統治法の並列化を効率的に行う。入力配列を直接処理し、セグメント化スキャン、並列ソート、リダクションを活用することで、CPUベースのQhullと比較して最大10.98倍の高速化を達成。2000万点の凸包を約0.2秒で計算可能である。

ABSTRACT

We present a novel GPU-accelerated implementation of the QuickHull algorihtm for calculating convex hulls of planar point sets. We also describe a practical solution to demonstrate how to efficiently implement a typical Divide-and-Conquer algorithm on the GPU. We highly utilize the parallel primitives provided by the library Thrust such as the parallel segmented scan for better efficiency and simplicity. To evaluate the performance of our implementation, we carry out four groups of experimental tests using two groups of point sets in two modes on the GPU K20c. Experimental results indicate that: our implementation can achieve the speedups of up to 10.98x over the state-of-art CPU-based convex hull implementation Qhull [16]. In addition, our implementation can find the convex hull of 20M points in about 0.2 seconds.

研究の動機と目的

  • 2次元凸包計算のための効率的なGPU実装を構築すること。
  • 高水準プリミティブを用いたGPU上で分割統治アルゴリズムを並列化する実用的アプローチを示すこと。
  • 最適化されたメモリアクセスとアルゴリズム構造により、既存のCPUおよびGPU実装を上回るパフォーマンスを実現すること。
  • 事前処理の計算効率およびメモリ使用量への影響を評価すること。

提案手法

  • データの複製を避けるために、入力座標配列を直接処理し、部分集合を表すセグメントとしてデータを保持する。
  • 点を上部と下部の部分集合に分割した後、各部分集合をx座標でソートし、単調なチェーンを形成する。
  • 並列セグメントスキャン、並列ソート、リダクション、パーティショニングといったThrustライブラリのプリミティブを用いて、効率的な計算を実現する。
  • 現在の凸包エッジからの最も遠い点を特定することでセグメントを更新し、データの並べ替えを回避して新しいセグメントを生成する。
  • 各セグメントの最初の点を保持することで極端な点を保存し、完全なセグメントの削除を回避する。
  • 事前処理ステップにより、内点を早期に除外することで、メモリ使用量の削減と以降のステップの高速化を実現する。

実験結果

リサーチクエスチョン

  • RQ1QuickHullの分割統治構造を、セグメントベースのデータ構造を用いてGPU並列実行に効果的にマッピングする方法は何か?
  • RQ2低レベルのCUDAやCUDPPと比較して、Thrustのような高レベルGPUライブラリを用いることで得られるパフォーマンス向上は何か?
  • RQ3事前処理は、GPUベースの凸包計算の実行時間およびメモリフットプリントにどのように影響するか?
  • RQ4GPU並列化されたQuickHullパイプラインにおける計算ボトルネックは何か?

主な発見

  • 提案されたGPU実装は、最先端のCPUベースのQhullライブラリと比較して最大10.98倍の高速化を達成した。
  • K20c GPU上で2000万点の凸包を約0.2秒で計算可能である。
  • 事前処理により入力点の50%以上を早期に除外することで、パフォーマンスが顕著に向上し、メモリ割り当てと計算が削減された。
  • 2番目のステップ(再帰的凸包計算)が最も計算コストが高く、主なパフォーマンスボトルネックであることが示された。
  • Thrustライブラリの使用により、簡潔で読みやすいコードが実現され、実用的デプロイメントにおいてCUDPPを用いた実装を上回るパフォーマンスを発揮した。
  • 事前処理後、処理対象となる点の数が元の点の50%未満にまで削減され、メモリ使用量が著しく低減された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。