情報畑でつかまえてロゴ
本サイトは NTTテクノクロスが旬の IT をキーワードに
IT 部門が今知っておきたい最新テクノロジーに関する情報をお届けするサイトです

GPUDirectとカーネルバイパス技術 ~高速化技術とクラウド 第12回~

GPUメモリに高速にデータを読み込ませる技術であるGPUDirectとカーネルバイパス技術について紹介します。

はじめに

こんにちは、NTTテクノクロス 山口です。

昨今AIを中心に様々な分野でGPUは活用されています。
GPUが強力な計算資源であることはもはや周知の事実ですが、GPUの計算能力が発揮するのは、GPUがリモート先やローカルストレージから処理したいデータを読み込んだ後です。

そこで今回はGPUをより効果的に扱う為に、データ読み込みの高速化を行うGPUDirectと処理の高速化を担うカーネルバイパス技術について紹介したいと思います。

図1 GPUDirectによる高速化の対象概要

■ 目次

節番号 節タイトル
1 GPUDirectとは
2 GPUDirectとカーネルバイパス技術
3 GPUDirectとカーネルバイパス技術の併用例

GPUDirectとは

GPUDirectNVIDIAが提供する、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と聞いて、InfiniBandRoCEといった、あるコンピュータから別のコンピュータにCPUを介さずメモリアクセスできる技術を思い浮かべる方は多いのではないでしょうか。
[参考]RDMAとは (https://www.ntt-tx.co.jp/column/240717/)

公式ドキュメントを確認すると、GPUDirect RDMAは「GPUとサードパーティ製デバイス間の直接データ交換を可能とする」と記載されています。
このことから、マシン内で閉じている仕組みであり、必ずしもネットワーク関連技術であるInfiniBandRoCEといったRDMAを必要とするものではないように読み取れます。
しかし実際の運用ではこれらは組み合わせて使われることが多いかと思います。

ではこれらを組み合わせるメリットはなんでしょうか。
以下の図を確認頂くとわかりやすいかと思いますが、InfiniBandなどのRDMAを使う事でマシンを跨いだメモリ連携処理(書き込みや読み込み)が高速にできるようになります。

3 RDMAの有無比較

特に複数のマシン/GPUを跨いで活用する分散学習などでは、たとえばローカルでの計算結果を全体に周知・送信するAll Reduceと呼ばれる手法がとられる(NCCLと呼ばれる通信ライブラリが一般的に使用されます)為、全体でメモリ連携できる重要性は高いといえます。
なおRDMAを使うメリットは、この後説明するカーネルバイパスとしての効果(カーネルの処理を極力挟まない)もあります。

[参考]
https://docs.nvidia.com/cuda/gpudirect-rdma/
https://developer.nvidia.com/gpudirect

GPUDirectとカーネルバイパス技術

NICやストレージから直接GPUにアクセスしに行く、という事を聞くと、似た技術としてカーネルバイパス技術(DPDKSPDK)を思い浮かべる方も多いのではないでしょうか。
[参考]
 DPDKとは (https://www.ntt-tx.co.jp/column/dpdk_blog/20180920/)
 SPDKとは (https://www.ntt-tx.co.jp/column/tec/240820/)

カーネルバイパス技術とは、カーネルを介さずにユーザ空間からハードウェアに直接アクセスし、高速・低遅延な処理を実現する仕組みを指します。
カーネルはパケットの処理やCPUやメモリ等のハードウェア処理を抽象化してくれる為、アプリを実装する際に楽にしてくれるメリットがある一方で、大量の処理を行う場合にはシステムコールやコンテキストスイッチが多発しオーバーヘッドが増加してしまいます。

カーネルバイパス技術はNICなどのハードウェアにユーザ空間からアクセスする技術なのに対し、GPUDirectNIC等のハードウェアからGPUメモリへの直接アクセスを行う、という違いがあります。

4 GPUDirectとカーネルバイパスの比較

つまりはスキップするレイヤー(ホストメモリかカーネルか)が異なります。
この事から、カーネルバイパス技術とGPUDirectは異なる技術かとわかるかと思いますが、併用して利用する事も可能です。

GPUDirectとカーネルバイパス技術の併用例

ここでは2つほど紹介します。

① GPUDirect + Rivermax

Rivermaxは、映像配信などのメディアストリーム処理に特化したソフトウェア開発キット(SDK)で、ConnectXシリーズと呼ばれるNICを用いることで、カーネルバイパスを実現します。
RTPのようなIPベースの映像・メディアストリームに対応しており、低遅延かつ高スループットな映像処理の実現を目指すことができます。

5 GPUDirectRivermaxによるカーネルバイパスの組み合わせイメージ

RivermaxGPUDirectと組み合わせて利用できます。
これによりホストメモリやカーネルを経由する場合と比較して、より高い性能が期待できます。

当社でもRivermaxGPUDirectを用いた検証を行った実績があります。

② GPUDirect + DPDK

DPDKはメディアストリームに特化したものではなく、汎用的なパケット処理を処理できる開発キットです。

DPDKにはGPU連携用ライブラリとして、gpudevライブラリが用意されています。
gpudevGPUメモリの確保やCPU-GPU間の連携などを扱うライブラリですが、公式ドキュメントを確認すると、特にNVIDIA GPU向けにはDPDK側ドライバであるCUDA GPU drivergpudevの機能を実装していると読み取れます。

[参考]
https://doc.dpdk.org/guides/prog_guide/gpudev.html
https://doc.dpdk.org/guides/gpus/cuda.html

CUDA GPU driverの説明ページには「GPUDirectにより、ConnectXのような特定NICGPUメモリ間でパケットの送受信が可能となる」旨の記載もされています。
このことからDPDKGPUDirectを組み合わせて活用することができると見て取れます。

[補足] DOCA GPUNetIOについて

BlueFieldといったDPUConnectXといったSmartNICを扱うフレームワークとしてDOCAがあります。
[参考] DPUについて (https://www.ntt-tx.co.jp/column/nw/240301/)

DOCAフレームワーク内のライブラリの1つにDOCA GPUNetIO があり、GPUDirectが利用されている旨が紹介されています。
https://developer.nvidia.com/ja-jp/blog/realizing-the-power-of-real-time-network-processing-with-nvidia-doca-gpunetio/

おわりに

今回はGPUを活用する際の高速化技術として、GPUDirectとカーネルバイパス技術について紹介しました。

「はじめに」にもご紹介した通り、もはやGPUは計算資源としてなくてはならない重要なコンポーネントとなっています。
GPUの性能を余すことなく利用する為にもこのような技術についても活用を検討できると良いでしょう。

今回もご覧いただきありがとうございました。
本記事、またはそれ以外のネットワーク関連に関しての問い合わせやご意見がございましたら、以下にご連絡ください。

本件に関するお問い合わせ

NTTテクノクロス
フューチャーネットワーク事業部

山口 佳輝

お問い合わせ

連載シリーズ
テクノロジーコラム
著者プロフィール

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