要約
CUDAグラフ – NVIDIA GPU用に導入された最近のハードウェア機能 – は、DAGとして一連のGPUタスク(カーネル)をキャプチャおよび起動することにより、CPU発射オーバーヘッドを削減することを目的としています。
ただし、CUDAグラフの展開は、グラフの静的構造により、今日いくつかの課題に直面しています。
また、データコピーのためにパフォーマンスオーバーヘッドも発生します。
実際、直感に反する結果を示します。多くの場合、CUDAグラフを展開することはパフォーマンスを傷つけます。
Pygraphは、Pytorch2内のCUDAグラフの力を自動的に活用する新しいアプローチを紹介します。
Pygraphは、3つの重要な観察結果によって駆動され、3つの新しい最適化を具体化します。これにより、CUDAグラフの幅広い展開が可能になり、GPUカーネルパラメーターのコピーオーバーヘッドが削減され、コストベネフィット分析に基づいてCUDAグラフを選択的に展開します。
Pygraphは、Pytorch2のコンパイルツールチェーンとシームレスに統合され、コードを手動で変更せずにCUDAグラフを効率的に使用できるようにします。
さまざまな機械学習ベンチマークにわたってPygraphを評価し、Pytorch2よりも大幅なパフォーマンスの改善を示しています。
要約(オリジナル)
CUDA Graphs — a recent hardware feature introduced for NVIDIA GPUs — aim to reduce CPU launch overhead by capturing and launching a series of GPU tasks (kernels) as a DAG. However, deploying CUDA Graphs faces several challenges today due to the static structure of a graph. It also incurs performance overhead due to data copy. In fact, we show a counter-intuitive result — deploying CUDA Graphs hurts performance in many cases. We introduce PyGraph, a novel approach to automatically harness the power of CUDA Graphs within PyTorch2. Driven by three key observations, PyGraph embodies three novel optimizations: it enables wider deployment of CUDA Graphs, reduces GPU kernel parameter copy overheads, and selectively deploys CUDA Graphs based on a cost-benefit analysis. PyGraph seamlessly integrates with PyTorch2’s compilation toolchain, enabling efficient use of CUDA Graphs without manual modifications to the code. We evaluate PyGraph across various machine learning benchmarks, demonstrating substantial performance improvements over PyTorch2.
arxiv情報
著者 | Abhishek Ghosh,Ajay Nayak,Ashish Panwar,Arkaprava Basu |
発行日 | 2025-03-25 15:47:54+00:00 |
arxivサイト | arxiv_id(pdf) |
提供元, 利用サービス
arxiv.jp, Google