複数の NVIDIA GPU 間の接続性能を調べているときや、PCIe、NVLink、ホストメモリと VRAM の間で実際にどれくらいの帯域が出ているか確認したいとき、NVIDIA/nvbandwidth は知っておく価値のある小さなツールです。
これは汎用的なベンチマークソフトではなく、大規模モデルのフレームワークに隠れているコマンドでもありません。NVIDIA がオープンソースで公開している、GPU 関連のメモリコピーにおける帯域とレイテンシを測定するための専用ツールです。理論帯域を見るだけではなく、nvbandwidth は次のような実務的な問いに向いています。このマシンにある GPU と相互接続の組み合わせで、実際にどれだけの帯域が出るのか。
1. nvbandwidth は何をするツールか
公式 README によると、nvbandwidth は NVIDIA GPU の帯域を測定するためのコマンドラインツールです。
主に、さまざまな memcpy パターンにおける転送性能を測ります。たとえば次のようなものです。
GPU -> GPUCPU -> GPUGPU -> CPU- マルチノード環境での GPU 間転送
この種のテストは、特に次のような場面で役立ちます。
- マルチ GPU の学習や推論で相互接続のボトルネックを調べる
NVLink、PCIe、C2Cなどのリンクが実際にどう動いているかを確認する- サーバー構成、トポロジ、ドライバ、CUDA バージョンごとの差を比較する
- クラスタ導入前の基礎的なハードウェア検証を行う
要するに、nvbandwidth が見ているのはモデルのスループットではなく、より下層の「データを運ぶ力」です。
2. 単なる 1 つのスコアを出すツールではない
帯域テストというと最後に 1 つの数字だけが出るイメージを持つ人もいますが、nvbandwidth の出力はもっと細かいです。
各テストごとに行列形式で結果を出します。たとえば device_to_device_memcpy_write_ce のようなテストでは、GPU の行列として各デバイス対の帯域が表示されます。これにより、「このマシンはだいたい速いかどうか」だけでなく、次のようなことも見えてきます。
- どの GPU ペアが特に高速か
- どの経路が明らかに
PCIeに制限されているか - 一部の GPU ペアで異常に低い帯域が出ていないか
- マルチ GPU のトポロジが想定どおりか
8 GPU サーバー、デュアルソケット構成、あるいはマルチノード環境を見ているなら、この行列形式の出力は単純な平均値より役に立つことが多いです。
3. CE と SM の 2 種類のコピーをどう理解するか
公式ドキュメントでは、テストを 2 種類に分けています。
CE:memcpyAPI に基づく 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. シングルノード版のビルドと実行方法
シングルノード版のビルド手順はシンプルです。
|
|
Ubuntu / Debian では、共通依存関係のインストールとビルドを行う debian_install.sh スクリプトも用意されています。
ビルド後は、まずヘルプを確認できます。
|
|
よく使うオプションは次のとおりです。
-l:利用可能なテストを一覧表示する-t:名前または番号で特定のテストを実行する-p:プレフィックス指定でテストをまとめて実行する-b:memcpy buffer サイズを設定する。既定値は512 MiB-i:測定反復回数を設定する-j:JSONで出力する-H:ホストメモリ割り当てで huge pages を有効にする
まずは既定のテストを 1 回流したいだけなら、次のように実行します。
|
|
特定の項目だけ試したい場合、たとえばデバイス間コピーを 1 つだけ見るなら次のようにします。
|
|
6. マルチノード対応がこのツールの特徴
nvbandwidth はシングルノードのマルチ GPU テストだけのツールではなく、マルチノード環境にも対応しています。
README によると、マルチノード版のビルドは次のように行います。
|
|
実行時は通常 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+環境でVolta(sm_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 システム向けの帯域ヘルスチェック用コマンドラインツールとして理解すると分かりやすいです。
関連リンク
- GitHub プロジェクト: https://github.com/NVIDIA/nvbandwidth
- Releases: https://github.com/NVIDIA/nvbandwidth/releases