NVIDIA nvbandwidth とは何か:GPU 帯域テストツールの使い方

NVIDIA/nvbandwidth の公式リポジトリと Releases ページをもとに、この GPU 帯域テストツールの位置づけ、依存関係、よく使うコマンド、マルチノード対応、最新 v0.9 の更新点を整理します。

複数の NVIDIA GPU 間の接続性能を調べているときや、PCIeNVLink、ホストメモリと VRAM の間で実際にどれくらいの帯域が出ているか確認したいとき、NVIDIA/nvbandwidth は知っておく価値のある小さなツールです。

これは汎用的なベンチマークソフトではなく、大規模モデルのフレームワークに隠れているコマンドでもありません。NVIDIA がオープンソースで公開している、GPU 関連のメモリコピーにおける帯域とレイテンシを測定するための専用ツールです。理論帯域を見るだけではなく、nvbandwidth は次のような実務的な問いに向いています。このマシンにある GPU と相互接続の組み合わせで、実際にどれだけの帯域が出るのか。

1. nvbandwidth は何をするツールか

公式 README によると、nvbandwidthNVIDIA GPU の帯域を測定するためのコマンドラインツールです。

主に、さまざまな memcpy パターンにおける転送性能を測ります。たとえば次のようなものです。

  • GPU -> GPU
  • CPU -> GPU
  • GPU -> CPU
  • マルチノード環境での GPU 間転送

この種のテストは、特に次のような場面で役立ちます。

  • マルチ GPU の学習や推論で相互接続のボトルネックを調べる
  • NVLinkPCIeC2C などのリンクが実際にどう動いているかを確認する
  • サーバー構成、トポロジ、ドライバ、CUDA バージョンごとの差を比較する
  • クラスタ導入前の基礎的なハードウェア検証を行う

要するに、nvbandwidth が見ているのはモデルのスループットではなく、より下層の「データを運ぶ力」です。

2. 単なる 1 つのスコアを出すツールではない

帯域テストというと最後に 1 つの数字だけが出るイメージを持つ人もいますが、nvbandwidth の出力はもっと細かいです。

各テストごとに行列形式で結果を出します。たとえば device_to_device_memcpy_write_ce のようなテストでは、GPU の行列として各デバイス対の帯域が表示されます。これにより、「このマシンはだいたい速いかどうか」だけでなく、次のようなことも見えてきます。

  • どの GPU ペアが特に高速か
  • どの経路が明らかに PCIe に制限されているか
  • 一部の GPU ペアで異常に低い帯域が出ていないか
  • マルチ GPU のトポロジが想定どおりか

8 GPU サーバー、デュアルソケット構成、あるいはマルチノード環境を見ているなら、この行列形式の出力は単純な平均値より役に立つことが多いです。

3. CESM の 2 種類のコピーをどう理解するか

公式ドキュメントでは、テストを 2 種類に分けています。

  • CEmemcpy API に基づく copy engine 転送
  • SM:kernel ベースの転送

この 2 種類の結果は、必ずしも完全には一致しません。なぜなら、異なるコピー経路を表しているからです。
まず通常のデバイス間転送を見たいなら、一般的には CE を先に確認します。より細かい実行経路まで見たい場合は、続けて SM を見るのがよいです。

また README では、帯域の結果は既定で複数回の測定に対する中央値を使うと説明されています。新しいバージョンでは変動統計も追加されており、値の安定性を判断しやすくなっています。

4. 実行に必要な環境

nvbandwidth は、ダウンロードしてそのまま実行できる単独バイナリではありません。標準的な CUDA 開発環境が前提です。

現在の README にある基本要件は次のとおりです。

  • CUDA Toolkit 11.x 以上
  • C++17 をサポートするコンパイラ
  • CMake 3.20+、推奨は 3.24+
  • Boost program_options
  • 利用可能な CUDA デバイスと互換ドライバ

マルチノード版を使う場合は要件がさらに上がります。README では次のように明記されています。

  • マルチノード版のビルドには CUDA Toolkit 12.3 が必要
  • ドライバは 550 以上が必要
  • MPI が必要
  • nvidia-imex サービスの設定が必要

そのため、これは一般的なデスクトップ向けというより、Linux の GPU サーバーやクラスタ向けのエンジニアリングツールと考えたほうが自然です。

5. シングルノード版のビルドと実行方法

シングルノード版のビルド手順はシンプルです。

1
2
cmake .
make

Ubuntu / Debian では、共通依存関係のインストールとビルドを行う debian_install.sh スクリプトも用意されています。

ビルド後は、まずヘルプを確認できます。

1
./nvbandwidth -h

よく使うオプションは次のとおりです。

  • -l:利用可能なテストを一覧表示する
  • -t:名前または番号で特定のテストを実行する
  • -p:プレフィックス指定でテストをまとめて実行する
  • -b:memcpy buffer サイズを設定する。既定値は 512 MiB
  • -i:測定反復回数を設定する
  • -jJSON で出力する
  • -H:ホストメモリ割り当てで huge pages を有効にする

まずは既定のテストを 1 回流したいだけなら、次のように実行します。

1
./nvbandwidth

特定の項目だけ試したい場合、たとえばデバイス間コピーを 1 つだけ見るなら次のようにします。

1
./nvbandwidth -t device_to_device_memcpy_read_ce

6. マルチノード対応がこのツールの特徴

nvbandwidth はシングルノードのマルチ GPU テストだけのツールではなく、マルチノード環境にも対応しています。

README によると、マルチノード版のビルドは次のように行います。

1
2
cmake -DMULTINODE=1 .
make

実行時は通常 mpirun と組み合わせ、GPU ごとに 1 プロセスを割り当てて起動します。
公式ドキュメントでは、参加するすべての rank が同じ multinode clique に属している必要があるとされており、MPI 環境では主に multinode プレフィックスの付いたテストを実行することが推奨されています。

このあたりからも、ワークステーションの簡単な自己診断用というより、高性能計算や大規模 GPU システム寄りのツールであることが分かります。

NVLink を使うマルチノード構成や、GB200 / Grace Hopper のような複雑なプラットフォームを扱っているなら、一般的なコンシューマ GPU 環境よりも nvbandwidth の価値はずっと高くなります。

7. v0.9 では何が変わったか

2026 年 4 月 24 日 時点で、GitHub Releases ページでは nvbandwidth の最新バージョンは v0.9、公開日は 2026 年 4 月 8 日 となっています。

このリリースで特に注目しやすい更新点は次のとおりです。

  • 帯域出力に変動統計を追加
  • ホストメモリ向け huge pages 対応を追加(Windows は対象外)
  • デバイス間テストに pair sampling オプションを追加
  • troubleshooting guide を追加
  • シングルノードとマルチノードの実行経路を統一

加えて、エンジニアリング面で次の 2 点も実用的です。

  • 実際の GPU アクセスにあまり依存しない CUDA アーキテクチャ検出に改善
  • CUDA Toolkit 13.0+ 環境で Voltasm_70 / sm_72)サポートを廃止

初期の情報しか見ていなかった人にとっては、v0.9 はもはや単なる帯域測定の初期版ではありません。自動化、トラブルシュート、大規模システム検証へと明確に進んでいます。

8. どんなときに使うとよいか

nvbandwidth が特に向いているのは次のようなケースです。

  • 複数の NVIDIA GPU 間で実際の相互接続帯域を確認したい
  • ある GPU が帯域制限のある PCIe スロットに挿さっている疑いがある
  • NVLink 経路と非 NVLink 経路を比較したい
  • マルチノード GPU クラスタを構築していて、リンクを検証したい
  • 結果を JSON で出して自動化パイプラインに組み込みたい

一方で、「学習はどれくらい速いか」「推論は何 tokens/s 出るか」といった問いにそのまま答えるツールではありません。
その場合は、学習フレームワーク、推論エンジン、あるいは実際のワークロードでの測定と合わせて見る必要があります。

9. このツールの価値をどう捉えるか

GPU の性能問題の多くは、実は計算性能そのものが足りないのではなく、データの通り道が想定どおりに機能していないことが原因です。

たとえば次のようなケースです。

  • GPU 間で意図した接続経路が使われていない
  • NUMA をまたぐアクセスで速度が落ちている
  • 一部の GPU ペアだけ帯域が異常に低い
  • マルチノード通信の設定が不完全

こうした問題は、nvidia-smi やモデルのスループットだけを見ていても特定しにくいことがあります。
nvbandwidth のような、より低レイヤで行列形式のテストツールは、相互接続レイヤで何が起きているかを可視化できる点が強みです。

つまり、nvbandwidth は NVIDIA GPU システム向けの帯域ヘルスチェック用コマンドラインツールとして理解すると分かりやすいです。

関連リンク

记录并分享
Hugo で構築されています。
テーマ StackJimmy によって設計されています。