# nvidia-peermem
## 定義
`nvidia-peermem` は、[[NVIDIA]] GPUドライバパッケージが提供するLinuxカーネルモジュールであり、Mellanox/[[NVIDIA]] InfiniBand系HCA(Host Channel Adapter)に対してGPUビデオメモリへの直接peer-to-peer read/writeアクセスを付与する。ConnectX-3 VPI以降のアダプタで動作し、InfiniBandとRoCE(RDMA over Converged Ethernet)の双方をサポートする。CUDA 11.4で導入された。[[GPUDirect RDMA]] を実際にInfiniBandファブリック上で有効化する、カーネル空間側の実装コンポーネントに当たる。
## GPUDirect RDMAとの位置付け
- NVIDIA OFED(MLNX_OFED)がInfiniBand CoreとPeer Memory Client(GPU等)向けのAPIを提供し、`nvidia-peermem` はこのAPIを介してGPUをInfiniBandサブシステムへ登録する。
- ロードには `modprobe nvidia-peermem`(root権限)を用いる。カーネル側にRDMA peer memoryサポート(カーネルパッチまたはMLNX_OFED)が前提条件。
- GPUドライバがMLNX_OFEDより先にインストールされている場合、`nvidia-peermem` がMLNX_OFED提供のRDMA APIでコンパイルされないため、GPUドライバの再インストールが必要になる。
## 前身 nv_peer_mem との関係
GitHubコミュニティが提供していた `nv_peer_mem` モジュールと機能が重複する。両者は同時ロードを想定しておらず、`nvidia-peermem` を使う場合は `nv_peer_mem` サービスの停止(`service nv_peer_mem stop`)・モジュールのアンロード(`rmmod nv_peer_mem`)・パッケージのアンインストール(`dpkg -P nvidia-peer-memory` 等)が必要になる。
## 未編纂の観察
- CUDA 11.4時点では `nvidia-peermem` を自動ロードするサービスが存在せず、手動での `modprobe` が必要という既知の制約がある([[@2026__NVIDIA__GPUDirect RDMA]])。
## 未解決の問い
- `nvidia-peermem` は [[@2023__NSDI__SRNIC - A Scalable Architecture for RDMA NICs|SRNIC]] のような独自RDMA NICアーキテクチャや、Broadcom/AMD等の非Mellanox系HCAとどう関係するか(peer memory client APIの一般性の範囲)。
## 関連
- 概念: [[GPUDirect RDMA]]、[[RDMA]]
- エンティティ: [[NVIDIA]]
## 出典
- [[@2026__NVIDIA__GPUDirect RDMA]]