GPUDirectとカーネルバイパス技術 ~高速化技術とクラウド 第12回~
GPUメモリに高速にデータを読み込ませる技術であるGPUDirectとカーネルバイパス技術について紹介します。
テクノロジーコラム
- 2026年08月06日公開
はじめに
こんにちは、NTTテクノクロス 山口です。
昨今AIを中心に様々な分野でGPUは活用されています。
GPUが強力な計算資源であることはもはや周知の事実ですが、GPUの計算能力が発揮するのは、GPUがリモート先やローカルストレージから処理したいデータを読み込んだ後です。
そこで今回はGPUをより効果的に扱う為に、データ読み込みの高速化を行うGPUDirectと処理の高速化を担うカーネルバイパス技術について紹介したいと思います。
図1 GPUDirectによる高速化の対象概要
■ 目次
| 節番号 | 節タイトル |
| 1 | GPUDirectとは |
| 2 | GPUDirectとカーネルバイパス技術 |
| 3 | GPUDirectとカーネルバイパス技術の併用例 |
GPUDirectとは
GPUDirectはNVIDIAが提供する、GPUメモリへのデータ転送を高速化する技術群です。
GPUメモリはVRAMともいわれ、GPUが高速にアクセスする専用のメモリ領域です。
基本的にはGPUの処理に使うデータはここに保存されます。
通常、GPUメモリにデータ転送を行うには、ホストメモリ(メインメモリ)にコピーの上、GPUメモリへ転送を行います。
この処理はCPUに余計な負荷がかかる他、メモリコピーが処理として重く、遅延の発生やボトルネックになりがちです。
GPUDirectでは、このホストメモリへのコピーを削減し、GPUメモリへのデータ転送を高速化します。
図2 ストレージからGPUへのデータ読み取りイメージ
GPUDirectには大きく以下の4つがあります。
| 節番号 | 節タイトル |
| GPUDirect RDMA |
ローカルマシン内のNICやストレージアダプタなどとGPU間でPCIe経由のデータ転送を行う。 これを組み合わせることで、リモートマシンのGPUとローカルマシンのGPU間で高速なデータ転送目的でも利用できる。 |
| GPUDirect Storage |
NVMeを採用したローカルストレージ(SSD)やNVMe over Fabrics (NVMe-oF)採用のリモートストレージとGPU間でデータ転送を行う。 nvidia-fsやcuFile APIを活用し、アプリから直接ファイル読み取りや書き込みが行える。 |
| GPUDirect for Video | SDIといったフレームベースのデバイスとGPU間で効率的にデータ転送を行う。 |
| GPUDirect Peer to Peer | NVLinkというGPU間を繋ぐ技術やPCIeを活用し、ローカルマシンのGPU間でのデータ転送を行う。 |
|
[補足] GPUDirect RDMAとネットワーク越しにメモリアクセスする為のRDMA GPUDirect RDMAと聞いて、InfiniBandやRoCEといった、あるコンピュータから別のコンピュータにCPUを介さずメモリアクセスできる技術を思い浮かべる方は多いのではないでしょうか。 公式ドキュメントを確認すると、GPUDirect RDMAは「GPUとサードパーティ製デバイス間の直接データ交換を可能とする」と記載されています。 ではこれらを組み合わせるメリットはなんでしょうか。 図3 RDMAの有無比較 特に複数のマシン/GPUを跨いで活用する分散学習などでは、たとえばローカルでの計算結果を全体に周知・送信するAll Reduceと呼ばれる手法がとられる(NCCLと呼ばれる通信ライブラリが一般的に使用されます)為、全体でメモリ連携できる重要性は高いといえます。 [参考] |
GPUDirectとカーネルバイパス技術
NICやストレージから直接GPUにアクセスしに行く、という事を聞くと、似た技術としてカーネルバイパス技術(DPDKやSPDK)を思い浮かべる方も多いのではないでしょうか。
[参考]
DPDKとは (https://www.ntt-tx.co.jp/column/dpdk_blog/20180920/)
SPDKとは (https://www.ntt-tx.co.jp/column/tec/240820/)
カーネルバイパス技術とは、カーネルを介さずにユーザ空間からハードウェアに直接アクセスし、高速・低遅延な処理を実現する仕組みを指します。
カーネルはパケットの処理やCPUやメモリ等のハードウェア処理を抽象化してくれる為、アプリを実装する際に楽にしてくれるメリットがある一方で、大量の処理を行う場合にはシステムコールやコンテキストスイッチが多発しオーバーヘッドが増加してしまいます。
カーネルバイパス技術はNICなどのハードウェアにユーザ空間からアクセスする技術なのに対し、GPUDirectはNIC等のハードウェアからGPUメモリへの直接アクセスを行う、という違いがあります。
図4 GPUDirectとカーネルバイパスの比較
つまりはスキップするレイヤー(ホストメモリかカーネルか)が異なります。
この事から、カーネルバイパス技術とGPUDirectは異なる技術かとわかるかと思いますが、併用して利用する事も可能です。
GPUDirectとカーネルバイパス技術の併用例
ここでは2つほど紹介します。
① GPUDirect + Rivermax
Rivermaxは、映像配信などのメディアストリーム処理に特化したソフトウェア開発キット(SDK)で、ConnectXシリーズと呼ばれるNICを用いることで、カーネルバイパスを実現します。
RTPのようなIPベースの映像・メディアストリームに対応しており、低遅延かつ高スループットな映像処理の実現を目指すことができます。![]()
図5 GPUDirectとRivermaxによるカーネルバイパスの組み合わせイメージ
RivermaxはGPUDirectと組み合わせて利用できます。
これによりホストメモリやカーネルを経由する場合と比較して、より高い性能が期待できます。
当社でもRivermaxとGPUDirectを用いた検証を行った実績があります。
② GPUDirect + DPDK
DPDKはメディアストリームに特化したものではなく、汎用的なパケット処理を処理できる開発キットです。
DPDKにはGPU連携用ライブラリとして、gpudevライブラリが用意されています。
gpudevはGPUメモリの確保やCPU-GPU間の連携などを扱うライブラリですが、公式ドキュメントを確認すると、特にNVIDIA GPU向けにはDPDK側ドライバであるCUDA GPU driverにgpudevの機能を実装していると読み取れます。
[参考]
https://doc.dpdk.org/guides/prog_guide/gpudev.html
https://doc.dpdk.org/guides/gpus/cuda.html
CUDA GPU driverの説明ページには「GPUDirectにより、ConnectXのような特定NICとGPUメモリ間でパケットの送受信が可能となる」旨の記載もされています。
このことからDPDKとGPUDirectを組み合わせて活用することができると見て取れます。
|
[補足] DOCA GPUNetIOについて BlueFieldといったDPUやConnectXといったSmartNICを扱うフレームワークとしてDOCAがあります。 DOCAフレームワーク内のライブラリの1つにDOCA GPUNetIO があり、GPUDirectが利用されている旨が紹介されています。 |
おわりに
今回はGPUを活用する際の高速化技術として、GPUDirectとカーネルバイパス技術について紹介しました。
「はじめに」にもご紹介した通り、もはやGPUは計算資源としてなくてはならない重要なコンポーネントとなっています。
GPUの性能を余すことなく利用する為にもこのような技術についても活用を検討できると良いでしょう。
今回もご覧いただきありがとうございました。
本記事、またはそれ以外のネットワーク関連に関しての問い合わせやご意見がございましたら、以下にご連絡ください。
本件に関するお問い合わせ

フューチャーネットワーク事業部
第一ビジネスユニット
山口 佳輝(YAMAGUCHI YOSHIKI)

