nvidia - 为什么跨 NUMA 节点的 NVIDIA GPU 可以启用 P2P?
问题描述
根据这个答案:
- https://stackoverflow.com/a/33567968/7840729
- https://forums.developer.nvidia.com/t/peer-to-peer-access-fails-between-2-gpus/51261/2
P2P 无法在跨 NUMA 节点的 gpus 之间工作。
但就我而言,GPU 拓扑是:
$ nvidia-smi topo -m
GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7 CPU Affinity NUMA Affinity
GPU0 X PIX PIX PIX SYS SYS SYS SYS 0-17,36-53 0
GPU1 PIX X PIX PIX SYS SYS SYS SYS 0-17,36-53 0
GPU2 PIX PIX X PIX SYS SYS SYS SYS 0-17,36-53 0
GPU3 PIX PIX PIX X SYS SYS SYS SYS 0-17,36-53 0
GPU4 SYS SYS SYS SYS X PIX PIX PIX 18-35,54-71 1
GPU5 SYS SYS SYS SYS PIX X PIX PIX 18-35,54-71 1
GPU6 SYS SYS SYS SYS PIX PIX X PIX 18-35,54-71 1
GPU7 SYS SYS SYS SYS PIX PIX PIX X 18-35,54-71 1
很明显,GPU0-3 和 GPU4-8 位于不同的 NUMA 节点上。
但是在这些 GPU 之间,p2p 仍然启用,根据输出p2pBandwidthLatencyTest
P2P Connectivity Matrix
D\D 0 1 2 3 4 5 6 7
0 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
2 1 1 1 1 1 1 1 1
3 1 1 1 1 1 1 1 1
4 1 1 1 1 1 1 1 1
5 1 1 1 1 1 1 1 1
6 1 1 1 1 1 1 1 1
7 1 1 1 1 1 1 1 1
解决方案
推荐阅读
- azure-app-configuration - 当我们调用触发 IFeatureFilter.Evaulate 方法的 IFeatureManager.IsEnabled("featurename") 时,我们如何传递额外的参数
- c++ - Freetype 是否支持可变字体?
- powershell - 使用 If 语句设置变量,但如果不满足条件则不更改它?
- c - 在哪里可以找到 Windows API 的手册页?
- ssl - 如何使 Roundcube 与 Postfix + Courier 一起工作(不是 dovecot)
- javascript - 从复杂对象中找到匹配的对象结构
- javascript - 如何使用 javascript 在弹出窗口中显示 ArcGIS Online 要素图层中的字段?
- java - 如果在 DB 中找不到数据,则返回空对象
- r - 从 Excel 中创建 Shiny 中的动态选项卡列表
- python - 为什么 scipy.signal.correlate2d 在这个例子中不能工作?