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 つのバックエンドをサポートしています:

  1. gdrdrv: GPU メモリをマッピングするための専用カーネルモジュール。
  2. 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 遅延測定のためのテストスイートを同梱。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト