Skip to main content
QUICK REVIEW

[論文レビュー] Automatic Horizontal Fusion for GPU Kernels

Ao Li, Bojian Zheng|arXiv (Cornell University)|Jul 2, 2020
Advanced Neural Network Applications参考文献 28被引用数 5
ひとこと要約

本論文は、複数のカーネルのスレッドを1つの統合カーネルに共通配置することで、命令の遅延を隠蔽し、スレッドレベルの並列性を向上させる、CUDAコンパイラ最適化である自動水平統合(horizontal fusion)を紹介する。提案されたソースツーソースコンパイラHFuseは、スレッドIDを自動的に分割し、分岐条件を挿入して実行をルーティングする。これにより、ネイティブカーネルに対して最大60.8%の高速化を達成し、特にメモリ集約的および計算集約的な混合リソース要件を持つカーネルで顕著な効果を示す。

ABSTRACT

We present automatic horizontal fusion, a novel optimization technique that complements the standard kernel fusion techniques for GPU programs. Unlike the standard fusion, whose goal is to eliminate intermediate data round trips, our horizontal fusion technique aims to increase the thread-level parallelism to hide instruction latencies. We also present HFuse, a new source to source CUDA compiler that implements automatic horizontal fusion. Our experimental results show that horizontal fusion can speed up the running time by 2.5%-60.8%. Our results reveal that the horizontal fusion is especially beneficial for fusing kernels with instructions that require different kinds of GPU resources (e.g., a memory-intensive kernel and a compute-intensive kernel).

研究の動機と目的

  • 命令レベルの遅延に起因するGPUカーネルのパフォーマンスボトルネックを解消すること、特に従来の垂直統合が効果を示さない状況を想定する。
  • メモリのラウンドトリップを削減することに焦点を当てた垂直カーネル統合の限界を克服し、スレッドレベルの並列性を向上させること。
  • リソース要件が異なるカーネル(例:メモリ集約的および計算集約的)の自動統合を可能にし、GPUハードウェアをより効果的に活用すること。
  • 水平統合のためのスレッド空間の分割と同期バリアを自動的に処理するソースツーソースコンパイラ(HFuse)の開発。
  • 異なるカーネルのスレッドを共通配置することで、ワープスケジューラーのインタリーブ機能を活用し、スレッドレベルの並列性を活用して全体のカーネルスループットを向上させること。

提案手法

  • 統合カーネルのスレッドブロックをスレッドIDに基づいて2つの区間に分割し、それぞれの区間を元のカーネルの1つに割り当てる。
  • 各スレッドがそのスレッドIDに応じて対応するカーネルの命令列にルーティングされるように、統合カーネルに条件分岐を挿入する。
  • インラインPTXアセンブリとインストルメンテッド分岐条件を用いて、関係のないスレッドを停止させないカーネル固有の同期バリアを実装する。
  • パフォーマンス最適化のためのスレッド空間分割戦略を探索・同定するために、自動プロファイリング技術を適用する。
  • 水平統合技術をソースツーソースCUDAコンパイラ(HFuse)に統合し、関数的に同等で最適化されたカーネルを生成する。
  • 統合時のレジスタおよび共有メモリ使用量を分析することで、スレッドレベルとブロックレベルの並列性のバランスを取る。

実験結果

リサーチクエスチョン

  • RQ1水平統合は、スレッドレベルの並列性を向上させ、命令遅延を隠蔽することで、垂直統合を超えるパフォーマンス向上を達成できるか?
  • RQ2水平に統合されたカーネルにおいて、1つの元のカーネルからの同期バリアを、関係のないスレッドを停止させることなく安全に処理する方法は何か?
  • RQ3パフォーマンスを最大化するための最適なスレッド空間分割戦略は何か?
  • RQ4メモリリソースと計算リソースを混合して使用するカーネル(例:メモリ vs. 計算)に対して、水平統合は測定可能な高速化を提供するか?
  • RQ5自動水平統合は、ディープラーニングや暗号通貨マイニングなどの実世界ワークロードにおいて、ネイティブカーネルおよび垂直統合カーネルを上回る性能を発揮できるか?

主な発見

  • HFuseは、1080TiおよびV100 GPU上でネイティブカーネルに対して最大60.8%の高速化を達成した。1080Tiでは16組中7組、V100では16組中6組が、ネイティブおよび垂直統合カーネルの両方を上回った。
  • 水平統合は、特にメモリ集約的および計算集約的カーネルの統合において顕著に効果的であり、GPU実行ユニットの使用率が向上した。
  • パフォーマンス向上の主な要因は、ワープスケジューラーが異なるカーネルからの命令をインタリーブ可能にすることに起因する。これにより、命令レベルの遅延が効果的に隠蔽された。
  • プロファイリングによる自動スレッド分割は、パフォーマンスを顕著に向上させた。不適切な分割は、レジスタおよび共有メモリの圧迫を引き起こし、パフォーマンスを低下させる可能性があるため。
  • 垂直統合が恩恵をもたらさない状況(例:メモリトラフィックがボトルネックでない場合)においても、水平統合が垂直統合を上回った。これは、水平統合が垂直統合と補完的であることを示している。
  • 本研究では、スレッドレベルとブロックレベルの並列性のトレードオフが明らかになった。水平統合はスレッドレベルの並列性を向上させるが、レジスタおよび共有メモリ使用量も増加するため、注意深い最適化が不可欠である。

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

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

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

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