更新时间:2025-02-27 gmt 08:00
gpu a系列裸金属服务器节点内如何进行nvlink带宽性能测试方法?-九游平台
场景描述
本文指导如何进行节点内nvlink带宽性能测试,适用的环境为:ant8或者ant1 gpu裸金属服务器, 且服务器中已经安装相关gpu驱动软件,以及pytorch2.0。
gpu a系列裸金属服务器,单台服务器gpu间是走nvlink,可以通过相关命令查询gpu拓扑模式:
nvidia-smi topo -m
图1 查询gpu拓扑模式

操作步骤
- 使用以下脚本测得gpu服务器内nvlink带宽性能。
import torch import numpy as np device = torch.device("cuda") n_gpus = 8 data_size = 1024 * 1024 * 1024 # 1 gb speed_matrix = np.zeros((n_gpus, n_gpus)) for i in range(n_gpus): for j in range(i 1, n_gpus): print(f"testing communication between gpu {i} and gpu {j}...") with torch.cuda.device(i): data = torch.randn(data_size, device=device) torch.cuda.synchronize() with torch.cuda.device(j): result = torch.randn(data_size, device=device) torch.cuda.synchronize() with torch.cuda.device(i): start = torch.cuda.event(enable_timing=true) end = torch.cuda.event(enable_timing=true) start.record() result.copy_(data) end.record() torch.cuda.synchronize() elapsed_time_ms = start.elapsed_time(end) transfer_rate = data_size / elapsed_time_ms * 1000 * 8 / 1e9 speed_matrix[i][j] = transfer_rate speed_matrix[j][i] = transfer_rate print(speed_matrix)
- 以ant8 gpu裸金属服务器为例, 其理论gpu卡间带宽为:nvidia*nvlink*bridge for 2gpus: 400gb/s。使用上述测试脚本测得带宽性能进行如下分析。
- 正常模式-nvlink全互通,带宽约为370gb。基本符合预期,且证明ant gpu裸金属服务器内部gpu间确实走nvlink模式,且完全互联。
图2 正常模式带宽性能
- 异常模式-nvlink部分互通,出现带宽波动较大的情况。如下图中gpu0和gpu4之间带宽远低于理论值, 存在问题。
图3 异常模式带宽性能
出现这种现象, 可尝试重装nvidia/cuda/nvidia-fabricmanager, 重装后再测试又恢复到了正式模式,gpu0和gpu4之间带宽恢复到370gb/s。
可能原因如下,仅供参考:
- 驱动程序问题:可能是由于驱动程序没有正确安装或配置,导致nvlink带宽受限。重新安装nvidia驱动、cuda和nvidia-fabricmanager等软件后,驱动程序可能已经正确配置,从而解决了这个问题。
- 硬件问题:如果gpu之间的nvlink连接存在硬件故障,那么这可能会导致带宽受限。重新安装软件后,重启系统,可能触发了某种硬件自检或修复机制,从而恢复了正常的带宽。
- 系统负载问题:最初测试gpu卡间带宽时,可能存在其他系统负载,如进程、服务等,这些负载会占用一部分网络带宽,从而影响nvlink带宽的表现。重新安装软件后,这些负载可能被清除,从而使nvlink带宽恢复正常。
- 正常模式-nvlink全互通,带宽约为370gb。基本符合预期,且证明ant gpu裸金属服务器内部gpu间确实走nvlink模式,且完全互联。
父主题: lite server
相关文档
意见反馈
文档内容是否对您有帮助?
提交成功!非常感谢您的反馈,我们会继续努力做到更好!
您可在查看反馈及问题处理状态。
系统繁忙,请稍后重试
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨