Linux上でNVidia H100 GPUが8枚搭載されたノードのNVLink/NVSwitch構成やPCIeバス、CPUソケットといったトポロジーを調べるには、以下の手法が有効です。
1. **nvidia-smiによるトポロジ表示**
`nvidia-smi`コマンドにはトポロジを表示するためのサブコマンドやオプションがあります。特に有用なのが以下です。
- `nvidia-smi topo -m`
GPU間の接続性マトリックスをテキストで表示します。NVLinkやNVSwitch経由のGPU間接続や、PCIe経由の帯域・距離などがわかります。
```
nvidia-smi topo -m
```
- `nvidia-smi topo -mp`
トポロジ情報を階層的に表示し、GPUとCPUソケットやPCIeバスとの接続関係を可視化します。
```
nvidia-smi topo -mp
```
2. **hwloc (lstopo)によるトポロジ可視化**
[hwloc](https://www.open-mpi.org/projects/hwloc/)ツールをインストールすると、システム内のCPUソケット、NUMAノード、PCIeデバイス、GPUなどをグラフィカルに表示することができます。
- `lstopo`コマンドを実行すると、テキストまたはグラフィカル形式でシステムトポロジを確認できます。PCIeツリー上にGPUがどのソケットに紐づいているかなどもわかります。
- 例:
```
lstopo --of console
```
または画像ファイルとして出力:
```
lstopo --of png > topo.png
```
3. **numactlや/sys/class以下の情報確認**
CPUソケットやNUMAノードとの関連性は`numactl --hardware`で確認できます。また、`/sys/class/pci_bus`や`/sys/class/drm`等のシステムファイルを参照すると、各GPUのバスIDやCPUとの近接性を詳細に追うことが可能です。
- 例:
```
numactl --hardware
```
4. **ベンダー固有ツールやドキュメンテーション**
NVidia公式のドキュメントには、H100 GPU環境でのNVSwitchやNVLink構成例が記されています。必要に応じて公式マニュアルを確認することで、`nvidia-smi`で得られる出力結果の詳細な意味や最適な解析手順を確認できます。
**まとめ**
基本的には `nvidia-smi topo -m` や `nvidia-smi topo -p` を用いることでGPU間のNVLink/NVSwitch接続性、PCIeルート、CPUソケットとの関連を表示するのが最も簡便かつ確実な方法です。さらに詳細なハードウェアトポロジ分析には、hwloc (lstopo) などのシステムトポロジツールを併用できます。