文档首页/ AI开发平台ModelArts/ 常见问题/ Lite Server/ GPU A系列裸金属服务器节点内如何进行NVLINK带宽性能测试方法?
更新时间:2024-09-05 GMT+08:00
分享

GPU A系列裸金属服务器节点内如何进行NVLINK带宽性能测试方法?

场景描述

本文指导如何进行节点内NVLINK带宽性能测试,适用的环境为:Ant8或者Ant1 GPU裸金属服务器, 且服务器中已经安装相关GPU驱动软件,以及Pytorch2.0。

GPU A系列裸金属服务器,单台服务器GPU间是走NVLINK,可以通过相关命令查询GPU拓扑模式:

nvidia-smi topo -m
图1 查询GPU拓扑模式

操作步骤

  1. 使用以下脚本测得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)

  2. 以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。

      可能原因如下,仅供参考:

      1. 驱动程序问题:可能是由于驱动程序没有正确安装或配置,导致NVLINK带宽受限。重新安装nvidia驱动、CUDA和nvidia-fabricmanager等软件后,驱动程序可能已经正确配置,从而解决了这个问题。
      2. 硬件问题:如果GPU之间的NVLINK连接存在硬件故障,那么这可能会导致带宽受限。重新安装软件后,重启系统,可能触发了某种硬件自检或修复机制,从而恢复了正常的带宽。
      3. 系统负载问题:最初测试GPU卡间带宽时,可能存在其他系统负载,如进程、服务等,这些负载会占用一部分网络带宽,从而影响NVLINK带宽的表现。重新安装软件后,这些负载可能被清除,从而使NVLINK带宽恢复正常。

相关文档