NVIDIA/gdrcopy
A fast GPU memory copy library based on NVIDIA GPUDirect RDMA technology
解決する課題
GDRCopy は、CPU と GPU 間のデータ転送に伴うオーバーヘッドを削減するために設計された低遅延 GPU メモリコピーライブラリです。標準的なコピー操作(cudaMemcpy など)で発生する 6〜7 マイクロ秒のオーバーヘッドを、CPU が直接コピープロセスを駆動することで解消します。
仕組み
このライブラリは NVIDIA GPUDirect RDMA 技術を活用し、GPU メモリのユーザー空間マッピングを作成します。これにより、CPU は GPU メモリを通常のホストメモリであるかのように操作できます。
以下の 2 つのバックエンドをサポートしています:
- gdrdrv: GPU メモリをマッピングするための専用カーネルモジュール。
- DMA-BUF mmap: カーネルモジュールがインストールされていない環境向けのバックエンド。CUDA ドライバーを利用して GPU メモリを Linux dma-buf としてエクスポートし、
mmap()を介してマッピングします。
パフォーマンスの特性として、ライトコンバイニング(write-combining)によりホストからデバイス(H-D)への転送は高速ですが、GPU BAR がプリフェッチできないため、デバイスからホスト(D-H)への転送は低速になります。
対象ユーザー
NVIDIA Data Center または RTX GPU を使用し、パフォーマンスが重要なアプリケーションにおいて CPU と GPU 間で極めて低遅延なデータ転送を必要とする開発者。
ハイライト
- 低オーバーヘッド: CPU 駆動のコピーにより、標準的な CUDA メモリコピーと比較して遅延を大幅に削減。
- 柔軟なマッピング: GPU メモリのユーザー空間マッピングを作成するためのインフラストラクチャを提供。
- 複数のバックエンド: カスタムカーネルモジュールと DMA-BUF mmap フォールバックの両方をサポート。
- ベンチマークツール: 健全性チェック、帯域幅計算、往復 ping-pong 遅延測定のためのテストスイートを同梱。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト