nvidia GPU HPL&Linpack性能测试及调优建议

目录

一、Linpack简介

 二、环境准备

2.1 名词解释与相关说明

2.2 准备测试相关的文件 

2.3 测试环境介绍

2.4 手动编译安装openmpi 

 2.4.1 编译安装UCX

2.4.2 编译安装openmpi

2.5 HPL.dat文件修改

 2.5.1 调优建议

三、GPU linpack测试前环境检查及系统优化

四、运行GPU linpack测试程序 

4.1 修改run_linpack_GPU_dgx1_1xv100_cuda10.1脚本文件

 4.2 编写运行脚本

 4.3 测试结果展示

五、总结


一、Linpack简介

Linpack是国际上最流行的用于测试高性能计算机系统浮点性能的benchmark。通过对高性能计算机采用高斯消元法求解一元N次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。

Linpack 测试包括三类,Linpack100Linpack1000HPLLinpack100求解规模为100阶的稠密线性代数方程组,它只允许采用编译优化选项进行优化,不得更改代码,甚至代码中的注释也不得修改。Linpack1000要求求解1000阶的线性代数方程组,达到指定的精度要求,可以在 不改变计算量的前提下做算法和代码上做优化。HPLHigh Performance Linpack,也叫高度并行计算基准测试,它对数组大小N没有限制,求解问题的规模可以改变,除基本算法(计算量)不可改变外,可以采用其它任何优化方 法。前两种测试运行规模较小,已不是很适合现代计算机的发展。

HPL是针对现代并行计算机提出的测试方式。用户在不修改任意测试程序的基础上,可 以调节问题规模大小(矩阵大小)、使用CPU、GPU数目、使用各种优化方法等等来执行该测试程序,以获取最佳的性能。HPL采用高斯消元法求解线性方程组。求解 问题规模为N时,浮点运算次数为(2/3 * N^32*N^2)。因此,只要给出问题规模N,测得系统计算时间T,峰值=计算量(2/3 * N^32*N^2)/计算时间T,测试结果以浮点运算每秒(Flops)给出。HPL测试结果是TOP500排名的重要依据。

衡量计算机性能的一个重要指标就是计算峰值或者浮点计算峰值,它是指计算机每秒钟能完成的浮点计算最大次数。包括理论浮点峰值和实测浮点峰值。理论浮点峰值是该计算机理论上能达到的每秒钟能完成浮点计算最大次数,它主要是由CPU的主频决定的。

 二、环境准备

检查GPU节点GPU卡驱动及CUDA是否正确安装,使用nvidia-smi 查看驱动版本是否满足xhpl 程序运行的环境要求,由于GPU Linpack测试所需要的xhpl文件并未在官方文件中给出,获取途径有2种方法,一种是通过nvidia内部获取,另外一种就是自行使用hpl编译生成GPU Linpack测试程序xhpl,需要说明的是通过nvidia官方获取的测试文件是经过特定场景测试优化过的,现场测试方法简单,工作量相对较小,但是灵活性较差,只有简单参数修改,自行编译xhpl,需要编译安装的依赖软件较多,难度相对较大,网上可参考文献资料较少,但是可以根据现场环境及要求,可以灵活修改相关参数,调优的空间大,本文主要介绍通过官方获取到的二进制文件的使用方法。后续更新手动编译生成xhpl测试GPU Linpack的文档。

2.1 名词解释与相关说明

关于GPU Linpack测试的名词解释

架构

目前GPU Linpack测试依据架构和产品的不同运行的脚本会有相应的部分差异,针对的都是nvidia的Tesla系列的产品进行测试的。架构不同,GPU里面能够用来处理计算的线程数量也不同,因而脚本的区别在于处理计算时,线程的数量等不尽相同。

NVIDIA数据中心系列的产品及其对应的架构:

Volta架构:V100

Ampere架构:A100、A800

Hopper架构:H100、H800、H200

Pascal架构:P100,P4,P40等(P100具有双精度,可用来进行双精度的Linpack测试)

Kepler架构:K80,K40等

理论峰值

GPU Linpack的理论峰值与CPU不同,不是完全通过计算主频等得来的,而是以nvidia发布的单卡技术白皮书为准。

总的理论峰值 = GPU单卡理论峰值(来自于官网)*GPU卡的数量

下面图片是Tesla V100技术白皮书中给出理论的Linpack值:

 下面图片是Hopper H100技术白皮书中给出理论的Linpack值:

2.2 准备测试相关的文件 

主要需要用到的文件如下,该文件的命名已经给出了其基本的环境命名,通过解压即可获得文件内部的运行脚本,最主要的是要用到xhpl这个可执行程序及运行脚本。

xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b

注意:其实基本的所需基础软件环境已经在名称中显示,尽量严格按照命名中的环境来就没有问题,如名称为cuda-10.1:表示需要使用cuda 10.1的环境ompi-3.1.3:表示需要使用openmpi-3.1.3(GNU版本的,因为下面的gcc_4.8.5 表示需要使用4.8.5版本的gcc环境)

2.3 测试环境介绍

测试集群为某项目部署的48台宁畅X620-G30 主机名是GGN001-GGN048

CPU:每节点2颗*16 core

每节点1张Tesla v100 32G显存

操作系统:CentOS 7.6 1810

以上面xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b

的文件为例基本环境如下:

  • CUDA:10.1 GPU卡驱动使用cuda自带的GPU卡驱动,版本为418.39 (A100需要CUDA 11.0以上,H100需要12.0以上,相应的其它软件版本也要对应)
  • UCX 1.6
  • OpenMPI:openmpi 3.1.3
  • GCC编译器:4.8.5
  • 测试的硬件架构类型:Pascal或Kepler架构
  • numactl rpm包,该包为CPU用来绑定CPU核心的(yum源安装,操作系统自带)

这是A100的测试文件:xhpl_cuda-11.0-dyn_mkl-static_ompi-4.0.4_gcc4.8.5_7-23-20

 目前clussoft2.4软件中未提供基于GNU 3.1.3版本的OpenMPI,所以需要额外单独下载对应版本的OpenMPI,编译安装

ps:有些特殊用户无法接外网的情况下,可能OpenMPI的版本无法准确匹配,建议可以将缺少的动态链接库进行软链接到类似的库

如缺少libmpi.so.12的库,但是在我们clussoft里面的OpenMPI-GNU版本的库中有libmpi.so.20,那么可以通过软链接进行链接,如:

ln –s libmpi.so.20 libmpi.so.12

 具体视情况分析,万不可照搬照抄文档

2.4 手动编译安装openmpi 

安装openmpi-3.1.3之前,需要先安装ucx1.6.0,为什么要安装ucx呢?下面简单介绍下

ucx是一个以数据中心和高性能应用程序,生产级通信框架,经过优化的生产验证的通信框架,适用于现代、高带宽和低延迟网络。通过使用它可以提高网络性能,主要包括RDMA(InfiniBand and RoCE),TCP,GPUS,共享内存管理,网络原子操作等,支持openmpi3.0及以上版本,以下是官方给出的架构图

 

 2.4.1 编译安装UCX

下载地址:

https://github.com/openucx/ucx/releases/tag/v1.10.0

mkdir /public/software/GPU_linpack_test/ucx-1.6.0
cd /public/sourcecode
tar xvf ucx-1.6.0.tar.gz
cd ucx-1.6.0
./configure --prefix=/public/software/GPU_linpack_test/ucx-1.6.0
make -j 8 
make install

 设置环境变量

vim /public/software/profile.d/ucx-1.6.0.sh

#!/bin/bash
export UCX_HOME=/public/software/GPU_linpack_test/ucx-1.6.0
export PATH=$UCX_HOME/bin:$UCX_HOME/bin"${PATH:+:${PATH}}"
export LD_LIBRARY_PATH=$UCX_HOME/lib"${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
export LD_LIBRARY_PATH=$UCX_HOME/lib/ucx"${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
export C_INCLUDE_PATH=$UCX_HOME/include"${C_INCLUDE_PATH:+:${C_INCLUDE_PATH}}"
export INCLUDE_PATH=$UCX_HOME/include"${INCLUDE_PATH:+:${INCLUDE_PATH}}"
export MANPATH=$UCX_HOME/share/ucx:${MANPATH}

2.4.2 编译安装openmpi

下载地址:https://download.open-mpi.org/release/open-mpi/v3.1/openmpi-3.1.3.tar.bz2

tar xvf openmpi-3.1.3.tar.gz
cd openmpi-3.1.3
./configure --prefix=/public/software/GPU_linpack_test/openmpi-3.1.3 --enable-mpi-cxx --enable-mpirun-prefix-by-default --enable-mpi-thread-multiple --with-ucx=/public/software/GPU_linpack_test/ucx-1.6.0 CC=icc CXX=icpc FC=ifort F77=ifort
make -j 8 
make install

 设置环境变量

vim /public/software/profile.d/mpi_openmpi-3.1.3.sh
#!/bin/bash
export MPI_HOME=/public/software/GPU_linpack_test/openmpi-3.1.3
export PATH=$UCX_HOME/bin:$ MPI_HOME/bin"${PATH:+:${PATH}}"
export LD_LIBRARY_PATH=$ MPI_HOME/lib"${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
export C_INCLUDE_PATH=$ MPI_HOME/include"${C_INCLUDE_PATH:+:${C_INCLUDE_PATH}}"
export INCLUDE_PATH=$ MPI_HOME/include"${INCLUDE_PATH:+:${INCLUDE_PATH}}"
export OMPI_MCA_btl_openib_warn_default_gid_prefix=0
export OMPI_MCA_btl_openib_warn_no_device_params_found=0
export UCX_WARN_UNUSED_ENV_VARS=n

2.5 HPL.dat文件修改

HPL输入文件内容如下,一般需要调整三部分参数进行优化测试:

N和NB将是调整性能调优的关键变量。

1、问题规模的个数及大小,可设置为多组,N=1表示一组,需要一个Ns值。问题规模计算方法为sqrt (总显存 * 1024 * 1024 *1024 / 8) * 80%

1       # of problems sizes(N)
491520   Ns

2、NB值,即分块大小,取经验值,经过现场测试,一般设置GPU一般设置为384,v100测试最高的是768

3            # of NBs
384 512 768 1024  NBs

3、P和Q的设置(进程数目的设置),P和Q设置一般为1组,原则为:

P*Q=进程数 PxQ必须与gpu数量相等。

P≤Q且P和Q尽量接近

例如16进程,P=Q=4,如32进程,P=4,Q=8

注意:采用多线程+多进程方式并行,是P*Q等于总的进程数,而不是总的核心数

1       # of  process grids (P×Q)
1       Ps
1       Qs

 2.5.1 调优建议

*******************************************

  • MPI运行的进程数量应该始终等于运行的GPU卡总数。

在大多数情况下,最好的性能是N值大小,所以比较适合GPU内存或稍微大一点的环境。HPL输出包括每等级使用的估计内存的指示。

这对于查看增加N或如何增加GPU内存使用最终超过GPU内存是很有用的。这个输出看起来像:“每进程主机内存估计:16.43 GB (MAX) 16.43 GB (MIN)”。

较小的NB值通常情况下工作最好(即256,288,320,384),特别是当有4个或更多的GPU卡 /节点时。

使用更大的N和NB值(即768、896、1024或更高)某些情况下可以提高性能。最有可能的情况下是,2 GPU和1:1 CPU:GPU拓扑的情况下可以提高性能。

使用大于1024的NB值需要特殊设置。当CPU非常强大,系统内存非常大,允许非常大的N值时,这很可能对2个或更少的gpu /节点和1:1拓扑的环境很有用。

export CHUNK_SIZE=4096 (set >= NB when NB>2048)

export ICHUNK_SIZE=4096 (set >= NB when NB>1024)
  • 保持N是NB的偶数倍。

要设置CPU:GPU配比,运行“nvidia-smi topo -m”可能对测试有所帮助。对于在每个CPU插槽上有相同数量的GPU卡的均衡拓扑的系统,那么您希望绑定的GPU和CPU与它们的物理连接方式一致。对于不平衡的拓扑,您可能想要尝试留下一些不使用的核心,或者将GPU绑定到它们没有连接的套接字上,看看什么对特定的配置有效。

cpu_core_per_rank设置通常为节点中的(物理)核总数,然后除以GPU卡或节点的数量。在很多情况下,保留一些内核也会有助于性能。需要进行一些实验来调整这一点。例如,如果每个节点有40个核心,每个节点有4个GPU卡,那么可以将该值设置为10,并尝试将其设置为8或9,看看哪种方式最适合您的配置。另外我们还建议您禁用节点上的超线程。

GPU_DGEMM_SPLIT是一个变量,用于调整DGEMM工作负载在gpu和cpu之间的分配方式。对于当前的GPU节点,通常最好设置GPU_DGEMM_SPLIT=1.0或非常接近1.0。这将100%的DGEMM工作放在gpu上。注意,这只会影响gpu内存中不适合的部分问题。对于GPU内存中的问题部分,GPU_DGEMM_SPLIT将始终是1.0。因此,这对于只有1或2个gpu节点、高端cpu和使用较大N值的情况最有可能。

TRSM_CUTOFF控制CPU和GPU何时进行TRSM计算。通常,将这个值设置为100000(一些值大于N)可以很好地将所有TRSM工作转移到GPU上。如果设置为0,所有的TRSM工作都将在CPU上进行。您可以(例如)设置一个介于0和N之间的值(单节点测试可能是20000)来将工作分配给CPU和GPU。在这种情况下,CPU在运行开始时进行TRSM, GPU在CPU变得繁忙时进行TRSM。尝试从那里调整,看看它如何影响性能并调优最佳结果。最优值取决于CPU类

型和系统。这很可能只会轻微地帮助表现。对于具有更高端的GPU和每个节点较少的GPU卡的情况,它很有可能是有用的。

调整时钟以防止GPU将时钟提升到最大,这可能有助于提高性能,并减少一些可变性。例如,下面的命令行将V100的时钟调整到内存、核心的基本级别,通常工作得很好。您可以运行"nvidia-smi——query-supported-clocks=gr——format=csv -i 0"来找到GPU可用的时钟选项。通常最好是找到一个尽可能高的值,但是当您开始在最慢的级别上达到功率限制时,时钟节流就开始了。当运行在大量节点上时,调优这个值将更加重要,而对于运行在单个节点上则不那么重要。

nvidia-smi -ac 877,1230 #基准时钟用于V100 PCIe

nvidia-smi -ac 877,1312 #基准时钟用于V100 SXM2

在某些情况下,为非HPL开销保留一些CPU内核将有助于提高性能。例如,如果你有40个核心运行4个GPU,你可以尝试每GPU运行10个核心,也可以每GPU运行8个核心,看看哪个效果最好。

如果你想用相同的参数以循环方式运行HPL,你可以设置下面的变量:

export TEST_LOOPS=100

另一种循环方法是修改HPL.dat文件,使其包含最多20个N、NB或可能的其他变量,以生成所有组合。像下面这样的摘录将生成6x20=120次运行,其中N和NB的所有组合都在列表中。

20            # of problems sizes (N)
	79872 82944 86016 89088 92160 95232 98304 101376 104448 107520 110592 113664 116736 119808 122880 125952 129024 132096 135168 138240 Ns
	6             # of NBs
	128 256 384 512 768 1024 768 896 768 1024 512 384 640 768 896 960 1024 1152 1280 384 640 960 768 640 256  960 512 768 1152         NBs

整机HPL.dat文件,单机修改进程PXQ跟Ns值即可

vim HPL.dat
HPLinpack benchmark input file
Innovative Computing Laboratory, University of Tennessee
HPL.out      output file name (if any)
6            device out (6=stdout,7=stderr,file)
1            # of problems sizes (N)               #问题规模大小
491520   127488 96000 102400 168960 153600  Ns  #sqrt (总显存 * 1024 * 1024 *1024 / 8) * 80%)
1             # of NBs
768 256 384 512 768 1024 768 896 640 960 768 640 256  960 512 768 1152         NBs  #设置分块大小
1           PMAP process mapping (0=Row-,1=Column-major)
1          # of process grids (P x Q)
6         Ps    
8         Qs
16.0         threshold
1            # of panel fact
0 1 2        PFACTs (0=left, 1=Crout, 2=Right)
1            # of recursive stopping criterium
2 8          NBMINs (>= 1)
1            # of panels in recursion
2            NDIVs
1            # of recursive panel fact.
0 1 2        RFACTs (0=left, 1=Crout, 2=Right)
1            # of broadcast
2 0 2          BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
1            # of lookahead depth
0            DEPTHs (>=0)
1            SWAP (0=bin-exch,1=long,2=mix)
192          swapping threshold
1            L1 in (0=transposed,1=no-transposed) form
0            U  in (0=transposed,1=no-transposed) form
1            Equilibration (0=no,1=yes)
8            memory alignment in double (> 0)

三、GPU linpack测试前环境检查及系统优化

  • 首先,确保编译器的版本,OpenMPI的版本,GPU的驱动,CUDA的版本按照章节1.3中的内容配置正确
  • 其次,确保编译器,OpenMPI,CUDA等相关的可执行命令、动态库被加到响应的环境变量里面,如$PATH,$LD_LIBRARY_PATH等。

如:自行安装的OpenMPI-3.1.3版本的环境变量可以直接写到运行GPU Linpack的脚本里面

MPI_HOME=/public/software/compiler/gnu
export  PATH=${MPI_HOME}/bin:$PATH
export  LD_LIBRARY_PATH=${MPI_HOME}/lib:$LD_LIBRARY_PATH
export  INCLUDE=${MPI_HOME}/include:$INCLUDE
export  MANPATH=${MPI_HOME}/share/man:$MANPATH

GPU可以用nvidia-smi查看GPU卡的型号等,which nvcc查看CUDA相关的路径等。

为了运行HPL,您需要确保您的系统通常是为性能而配置的。在某些情况下,可能会有系统BIOS设置来权衡性能和节能,或定义系统风扇可能如何运行,权衡系统风扇噪音和冷却等。

注意:

为了使运行HPL,需要确保系统通常是为性能而配置的。在某些情况下,可能会通过BIOS设置来权衡性能和节能,或定义系统风扇如何运行,权衡系统风扇噪音和冷却等。在运行HPL时,您将希望调整该类型的任何设置以获得最佳性能模式。

验证/sys/devices/system/cpu下的linux系统设置设置为state以获得最大性能也是一种好做法。下面类似的方法可能会有用。

vim CPU in perf mode.sh
#!/bin/bash
## CPU in perf mode
# Must be root or sudo to run
PERFMODE=performance
MINFREQ=2800000     # appropriate value depends on specific CPU type
echo -e "\nCPU info"
cat /proc/cpuinfo | grep "model name" |uniq
# Perf mode for all cores 
for cpufreq in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
  do
    echo "setting:  ${cpufreq}"
    echo -n i${PERFMODE} > $i{cpufreq}
  done
for cpufreq in /sys/devices/system/cpu/cpu*/cpufreq/scaling_min_freq;
  do
    echo "setting:  ${cpufreq}"
    echo -n ${MINFREQ} > ${cpufreq}
  done
echo "CPU mode is now set to:"
echo "scaling_governor"
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor | uniq
echo "scaling_min_freq"
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_min_freq | uniq

 对于HPL,确保启用“(THP)”也是一个好主意。一种方法是使用下面的命令:

echo always > /sys/kernel/mm/transparent_hugepage/enabled

在多个节点上运行测试时,强烈建议分别(并同时)在每个节点上运行HPL,也就是先测试单机性能,首先要验证所有节点的性能达到预期和一致性,然后再在更大规模的HPL运行中运行多个节点。在运行非常大规模的测试之前,分解运行在较小组上的大量节点也很有用。这种方法有助于隔离个别的慢节点和(或)网络问题,因此它们可以被解决或排除在非常大规模的测试之外。如果不使用这种方法,在大型测试中诊断缓慢的性能要困难得多。在规模上,单个慢节点或GPU或网络连接可能最终会限制所有优秀节点的性能,因为每个排名将获得相同的工作,而慢节点最终会导致所有优秀节点等待。

要想成功的进行大规模测试,一个最关键的步骤就是检查各个节点基础环境(ssh免密登录,网络连接,存储)都是正常的。

在多个节点上运行HPL时,如果使用多个网络适配器(如果有的话),那么利用这些网络适配器是很有用的。用户可以根据系统的拓扑/亲和性,将网卡与图形处理器绑定。使用openmpi时的一种方法是使用“OMPI_MCA_btl_openib_if_include”环境变量。命令“nvidia-smi topo -m”对于识别网卡和GPU卡的最佳映射很有用。

四、运行GPU linpack测试程序 

4.1 修改run_linpack_GPU_dgx1_1xv100_cuda10.1脚本文件

这里以run_linpack_GPU_dgx1_1xv100_cuda10.1为例进行说明,同时需要修改的地方用红色字体标识出,另外在脚本的下面有对应参数的具体说明:

vim run_linpack_GPU_dgx1_1xv100_cuda10.1
CPU_CORES_PER_RANK=16  #每个进程的CPU核心数,一般是将总的核心数平均分给每个GPU卡得到的商,且数量不能超过单颗CPU的总核心数,即为 总CPU核心数/ GPU卡的数量
RANK_PER_NODE=2   #每个节点的进程数,一般是有几个GPU卡,就设置几个进程
下面有一组变量可以根据HPL输出启用一些警告。您通常希望调整特定系统和GPU的值,以便仅为边缘或意外行为生成警告。如果你想禁用这些警告,你可以设置MONITOR_GPU=0。
这些警告在大规模运行时是最有价值的,因为这样更容易发现某个特定节点或GPU有某种问题。
#!/bin/bash
#location of HPL 
HPL_DIR=`pwd`
CPU_CORES_PER_RANK=16 #进程对应的cpu核心
#CPU_CORES_PER_RANK=5 
RANK_PER_NODE=1 #进程数,一般几张GPU卡就几个进程
#cho "CPU_CORES_PER_RANK= $CPU_CORES_PER_RANK"
export btl_openib_warn_no_device_params_found=0 
export OMP_NUM_THREADS=$CPU_CORES_PER_RANK
export MKL_NUM_THREADS=$CPU_CORES_PER_RANK
export LD_LIBRARY_PATH=$HPL_DIR:$LD_LIBRARY_PATH
export MONITOR_GPU=1             #启动GPU卡信息采集
export GPU_TEMP_WARNING=75      #如果GPU报告温度高于这个阈值
export GPU_CLOCK_WARNING=1312   #如果GPU报告时钟低于此阈值
export GPU_POWER_WARNING=300     #如果GPU报告功率高于此阈值
export GPU_PCIE_GEN_WARNING=3    #如果GPU报告PCIe gen不等于这个值
export GPU_PCIE_WIDTH_WARNING=16 #如果GPU报告PCIe宽度不等于这个值

#export CUDA_DEVICE_MAX_CONNECTIONS=16
#export TRSM_CUTOFF=16000
export TRSM_CUTOFF=1000000
#export GPU_DGEMM_SPLIT=1.00
export GPU_DGEMM_SPLIT=1.0
#export RANK_PERF=1100.0
#export CHECK_CPU_DGEMM_PERF=0
#export CPU_DGEMM_PERF_WARNING=1000.0

#export TEST_SYSTEM_PARAMS=0            #系统测试扫描 0为禁用1为开始默认开启
#export TEST_LOOPS=10


#APP=$HPL_DIR/xhpl_cuda-10.0-dyn_mkl-dyn_ompi-1.10.7_gcc4.8.5_9-27-18
#APP=$HPL_DIR/xhpl_cuda-10.0-dyn_mkl-dyn_ompi-3.1.0_gcc4.8.5_9-26-18
#APP=$HPL_DIR/xhpl_cuda-10.0-dyn_mkl-static_ompi-1.10.7_gcc4.8.5_9-27-18
#APP=$HPL_DIR/xhpl_cuda-10.0-dyn_mkl-static_ompi-3.1.0_gcc4.8.5_9-26-18
APP=$HPL_DIR/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
#APP=$HPL_DIR/xhpl_cuda-10.1-dyn_mkl-dyn_ompi-3.1.3_gcc4.8.5_3-12-19b

#echo "xhpl binary= $APP"

lrank=$OMPI_COMM_WORLD_LOCAL_RANK

case ${lrank} in
0)
#ldd $APP
echo "host=$me rank= $OMPI_COMM_WORLD_RANK lrank = $lrank cores=$CPU_CORES_PER_RANK bin=$APP"

  #set GPU and CPU affinity of local rank 
  export CUDA_VISIBLE_DEVICES=0; #GPU卡的编号,0,表示第0块卡numactl --cpunodebind=0  #cpu的编号,0,表示绑定第0块cpu $APP
  #export OMPI_MCA_btl_openib_if_include=mlx5_0
  ;;

#1)
#echo "host=$me rank= $OMPI_COMM_WORLD_RANK lrank = $lrank cores=$CPU_CORES_PER_RANK bin=$APP"

  #set GPU and CPU affinity of local rank
#  export CUDA_VISIBLE_DEVICES=1; #GPU卡的编号,1,表示第1块卡 numactl --cpunodebind=0  #cpu的编号,0,表示绑定第0块cpu $APP
  #export OMPI_MCA_btl_openib_if_include=mlx5_0
#  ;;
esac
#机器上有更多GPU卡的后面依次类推。


  • 关于参数RANK_PER_NODE和CPU_CORES_PER_RANK的说明:
  • RANK_PER_NODE为每个节点的进程数,该变量依赖两个方面:GPU卡的数量,CPU核心数量。通常该数量填写的GPU卡的数量
  • CPU_CORES_PER_RANK是每个进程分配到的CPU核心数。即每个GPU卡对应一个进程,而每个进程包含多个线程,每个线程控制一个核心。
  • 如一台双路服务器,单颗CPU的核心数量为16

1GPU:RANK_PER_NODE=1,CPU_CORES_PER_RANK=16

2GPU:RANK_PER_NODE=2,CPU_CORES_PER_RANK=16

4GPU:RANK_PER_NODE=4,CPU_CORES_PER_RANK=8

8GPU:RANK_PER_NODE=8,CPU_CORES_PER_RANK=4

  • 关于CUDA_VISIBLE_DEVICES的数量

首先用nvidia-smi,nvidia-smitopo -m 查看一下GPU的编号及拓扑情况,如下图

发现两颗GPU编号分别是0,1

那么我们则在上面的CUDA_VISIBLE_DEVICES的位置分别填入

0([0]对应的那一部分),

1([1]对应的那一部分)

如果是多块卡,那就依次顺延,写到 总的GPU卡数量-1即可,

如有4块卡,则写法如下:

case ${lrank} in
[0])
  #uncomment next line to set GPU affinity of local rank 0
  export CUDA_VISIBLE_DEVICES=0 #GPU卡的编号,0,表示第0块卡
  #uncommen next line to set CPU affinity of local rank 0
  numactl --cpunodebind=0 \
  $APP
;;
[1])
  #uncomment next line to set GPU affinity of local rank 0
  export CUDA_VISIBLE_DEVICES=1 #GPU卡的编号,1,表示第1块卡
  #uncommen next line to set CPU affinity of local rank 0
  numactl --cpunodebind=0 \
  $APP
;;
[2])
  #uncomment next line to set GPU affinity of local rank 0
export CUDA_VISIBLE_DEVICES=2 #GPU卡的编号,2,表示第2块卡
  #uncommen next line to set CPU affinity of local rank 0
  numactl --cpunodebind=0 \
  $APP
;;
[3])
  #uncomment next line to set GPU affinity of local rank 0
  export CUDA_VISIBLE_DEVICES=3 #GPU卡的编号,3,表示第3块卡
  #uncommen next line to set CPU affinity of local rank 0
  numactl --cpunodebind=0 \
  $APP
  ;;

 4.2 编写运行脚本

以下是整机运行脚本

Vim  run_48_node_dgx1_v100x1.sh
#!/bin/bash
HPL_DIR=`pwd`
#Set openmpi environment variable
export PATH=/public/GPU-2021-byh/openmpi-3.1.3/bin/:$PATH #openmpi的安装bin路径
export LD_LIBRARY_PATH=/public/GPU-2021-byh/openmpi-3.1.3/lib/:$LD_LIBRARY_PATH  #openmpi的安装lib路径
#Set UCX environment variable
export PATH=/public/GPU-2021-byh/ucx-1.6.0/bin/:$PATH      #ucx的bin路径
export LD_LIBRARY_PATH=/public/GPU-2021-byh/ucx-1.6.0/lib/:$LD_LIBRARY_PATH     #ucx的lib路径
#Set CUDA environment variable
export PATH=/usr/local/cuda-10.1/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64/:$LD_LIBRARY_PATH
#nvidia-smi -pm 1

#mpirun -np 2 -bind-to none -x LD_LIBRARY_PATH --allow-run-as-root ./run_linpack_GPU_hsw32_2xv100 
#mpirun -np 16 -hostfile nodelist -bind-to none  --allow-run-as-root --mca btl_tcp_if_include ib0 ./run_linpack_GPU_hsw32_8xv100 >& total_gpu_v100x8_`date +%F-%H%M`.log  &
#export OMPI_MCA_btl_vader=ib0

#Set Run Parameters
mpirun -np 48 --allow-run-as-root -hostfile nodelist -bind-to none -x LD_LIBRARY_PATH --mca btl self,tcp ./run_linpack_GPU_dgx1_1xv100_cuda10.1 >& total_gpu_v100x1_`date +%F-%H%M`.log  &

#mpirun -np 168 -hostfile nodelist  --allow-run-as-root -mca pml ucx -x LD_LIBRARY_PATH -x UCX_NET_DEVICES=mlx5_1:1 -x UCX_MAX_EAGER_LANES=1 -x UCX_MAX_RNDV_LANES=1 ./run_linpack_GPU_dgx1_8xv100_cuda10.1 >& total_gpu_v100x8_`date +%F-%H%M`.log  &

#mpirun -np 16 -hostfile nodelist -bind-to none --allow-run-as-root ./run_linpack_GPU_dgx1_8xv100_cuda10.1 >& total_gpu_v100x8_`date +%F-%H%M`.log  &


  • 主机名列表书写规范如下

slots后面是每个节点运行的进程数

Vim nodelist
GGN001 slots=1
GGN002 slots=1
GGN003 slots=1
GGN004 slots=1
GGN005 slots=1
GGN006 slots=1
GGN007 slots=1
GGN008 slots=1
GGN009 slots=1
GGN010 slots=1
GGN011 slots=1
GGN012 slots=1
GGN013 slots=1
GGN014 slots=1
GGN015 slots=1
GGN016 slots=1
GGN017 slots=1
GGN018 slots=1
GGN019 slots=1
GGN020 slots=1
GGN021 slots=1
GGN022 slots=1
GGN023 slots=1
GGN024 slots=1
GGN025 slots=1
GGN026 slots=1
GGN027 slots=1
GGN028 slots=1
GGN029 slots=1
GGN030 slots=1
GGN031 slots=1
GGN032 slots=1
GGN033 slots=1
GGN034 slots=1
GGN035 slots=1
GGN036 slots=1
GGN037 slots=1
GGN038 slots=1
GGN039 slots=1
GGN040 slots=1
GGN041 slots=1
GGN042 slots=1
GGN043 slots=1
GGN044 slots=1
GGN045 slots=1
GGN046 slots=1
GGN047 slots=1
GGN048 slots=1

 4.3 测试结果展示

host= rank= 0 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 15 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 19 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 1 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 17 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 20 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 16 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 2 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 31 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 34 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 24 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 13 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 27 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 35 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 4 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 25 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 43 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 14 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 12 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 21 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 30 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 38 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 46 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 6 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 22 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 29 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 8 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 41 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 37 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 42 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 11 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 9 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 36 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 26 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 33 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 32 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 18 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 44 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 47 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 45 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 10 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 40 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 7 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 3 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 39 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 5 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 28 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
host= rank= 23 lrank = 0 cores=16 bin=/public/GPU-2021-byh/gpu-lincpak/xhpl_cuda-10.1-dyn_mkl-static_ompi-3.1.3_gcc4.8.5_3-12-19b
================================================================================
HPLinpack 2.1  --  High-Performance Linpack benchmark  --   October 26, 2012
Written by A. Petitet and R. Clint Whaley,  Innovative Computing Laboratory, UTK
Modified by Piotr Luszczek, Innovative Computing Laboratory, UTK
Modified by Julien Langou, University of Colorado Denver
================================================================================

An explanation of the input/output parameters follows:
T/V    : Wall time / encoded variant.
N      : The order of the coefficient matrix A.
NB     : The partitioning blocking factor.
P      : The number of process rows.
Q      : The number of process columns.
Time   : Time in seconds to solve the linear system.
Gflops : Rate of execution for solving the linear system.

The following parameter values will be used:

N      :  491520 
NB     :     768 
PMAP   : Column-major process mapping
P      :       6 
Q      :       8 
PFACT  :    Left 
NBMIN  :       2 
NDIV   :       2 
RFACT  :    Left 
BCAST  :   2ring 
DEPTH  :       0 
SWAP   : Spread-roll (long)
L1     : no-transposed form
U      : transposed form
EQUIL  : yes
ALIGN  : 8 double precision words

--------------------------------------------------------------------------------

- The matrix A is randomly generated for each test.
- The following scaled residual check will be computed:
      ||Ax-b||_oo / ( eps * ( || x ||_oo * || A ||_oo + || b ||_oo ) * N )
- The relative machine precision (eps) is taken to be               1.110223e-16
- Computational tests pass if scaled residuals are less than                16.0

trsm_cutoff from environment variable 1000000 
gpu_dgemm_split from environment variable 1.000 
monitor_gpu from environment variable 1 
gpu_temp_warning from environment variable 75 
gpu_clock_warning from environment variable 1312 
gpu_power_warning from environment variable 300 
gpu_pcie_gen_warning from environment variable 3 
gpu_pcie_width_warning from environment variable 16 

	******** TESTING SYSTEM PARAMETERS ********
	PARAM 	[UNITS] 	MIN 	MAX 	AVG 
	----- 	------- 	--- 	--- 	--- 
CPU : 
	CPU_BW	[GB/s ] 	49.5 	50.0 	49.8 
	CPU_FP	[GFLPS] 
	     	NB =   32 	 133 	 139 	 137 
	     	NB =   64 	 243 	 256 	 251 
	     	NB =  128 	 434 	 465 	 449 
	     	NB =  256 	 647 	 696 	 675 
	     	NB =  512 	 774 	 829 	 803 
PCIE (NVLINK on IBM) : 
	H2D_BW	[GB/s ] 	5.5 	11.5 	11.4 
	D2H_BW	[GB/s ] 	5.8 	12.3 	12.2 
	BID_BW	[GB/s ] 	9.1 	19.9 	19.6 
CPU_BW concurrent with BID_BW : 
	CPU_BW	[GB/s ] 	36.8 	42.0 	37.3 
	BID_BW	[GB/s ] 	11.3 	19.3 	18.5 
GPU : 
	GPU_BW	[GB/s ] 	958 	966 	961 
	GPU_FP	[GFLPS] 
	     	NB =  128 	6491 	6554 	6534 
	     	NB =  256 	7178 	7357 	7316 
	     	NB =  384 	7191 	7553 	7366 
	     	NB =  512 	6230 	6675 	6469 
	     	NB =  640 	6270 	6738 	6515 
	     	NB =  768 	6192 	6731 	6440 
	     	NB =  896 	6323 	6905 	6595 
	     	NB = 1024 	6361 	6797 	6596 
NET : 
	PROC COL NET_BW	[MB/s ] 
		     8 B  	   0 	   0 	   0 
		    64 B  	   3 	   4 	   3 
		   512 B  	  20 	  31 	  25 
		     4 KB 	 146 	 254 	 189 
		    32 KB 	 793 	 948 	 868 
		   256 KB 	1327 	1726 	1501 
		  2048 KB 	2482 	2929 	2773 
		 16384 KB 	3019 	3284 	3217 
	NET_LAT	[ us  ] 	26.2 	72.2 	35.8 

	PROC ROW NET_BW	[MB/s ] 
		     8 B  	   0 	   0 	   0 
		    64 B  	   3 	   3 	   3 
		   512 B  	  19 	  26 	  22 
		     4 KB 	 154 	 236 	 177 
		    32 KB 	 762 	1105 	 911 
		   256 KB 	1348 	1710 	1527 
		  2048 KB 	2718 	2886 	2797 
		 16384 KB 	3135 	3304 	3228 
	NET_LAT	[ us  ] 	25.6 	70.9 	35.0 

displaying Prog:%complete, N:columns, Time:seconds
iGF:instantaneous GF, GF:avg GF, GF_per: process GF


Per-Process Host Memory Estimate: 41.28 GB (MAX) 40.90 GB (MIN)

PCOL: 2 GPU_COLS: 46081 CPU_COLS: 15360 
PCOL: 0 GPU_COLS: 46081 CPU_COLS: 15360 
PCOL: 6 GPU_COLS: 46081 CPU_COLS: 15360 
PCOL: 1 GPU_COLS: 46081 CPU_COLS: 15360 
PCOL: 5 GPU_COLS: 46081 CPU_COLS: 15360 
PCOL: 7 GPU_COLS: 46081 CPU_COLS: 15360 
PCOL: 4 GPU_COLS: 46081 CPU_COLS: 15360 
PCOL: 3 GPU_COLS: 46081 CPU_COLS: 15360 
2021-04-26 17:31:54.506
!!!! WARNING: Rank: 8 : GGN009 : GPU 0000:3b:00.0 	[0;31mClock: 1297 MHz [0m	Temp: 45 C 	Power: 246 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 1 : GGN002 : GPU 0000:3b:00.0 	[0;31mClock: 1282 MHz [0m	Temp: 44 C 	Power: 248 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 21 : GGN022 : GPU 0000:3b:00.0 	[0;31mClock: 1282 MHz [0m	Temp: 45 C 	Power: 245 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 42 : GGN043 : GPU 0000:3b:00.0 	[0;31mClock: 1305 MHz [0m	Temp: 53 C 	Power: 246 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 44 : GGN045 : GPU 0000:3b:00.0 	[0;31mClock: 1305 MHz [0m	Temp: 53 C 	Power: 244 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 45 : GGN046 : GPU 0000:3b:00.0 	[0;31mClock: 1297 MHz [0m	Temp: 55 C 	Power: 245 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 47 : GGN048 : GPU 0000:3b:00.0 	[0;31mClock: 1305 MHz [0m	Temp: 56 C 	Power: 236 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 1 : GGN002 : GPU 0000:3b:00.0 	[0;31mClock: 1305 MHz [0m	Temp: 55 C 	Power: 243 W 	PCIe  gen 3 	 x16 
[0;31m Prog= 94.32%	N_left= 188928	Time= 440.25	Time_left= 26.51	iGF= 88739.13	GF= 169605.20	iGF_per= 1848.73 	GF_per= 3533.44 [0m
!!!! WARNING: Rank: 8 : GGN009 : GPU 0000:3b:00.0 	[0;31mClock: 1305 MHz [0m	Temp: 54 C 	Power: 251 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 18 : GGN019 : GPU 0000:3b:00.0 	[0;31mClock: 1297 MHz [0m	Temp: 55 C 	Power: 241 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 19 : GGN020 : GPU 0000:3b:00.0 	[0;31mClock: 1282 MHz [0m	Temp: 53 C 	Power: 237 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 21 : GGN022 : GPU 0000:3b:00.0 	[0;31mClock: 1275 MHz [0m	Temp: 57 C 	Power: 242 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 25 : GGN026 : GPU 0000:3b:00.0 	[0;31mClock: 1297 MHz [0m	Temp: 56 C 	Power: 252 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 32 : GGN033 : GPU 0000:3b:00.0 	Clock: 1342 MHz 	Temp: 55 C 	Power: 224 W 	PCIe  gen 3 	[0;31m x8 [0m
!!!! WARNING: Rank: 47 : GGN048 : GPU 0000:3b:00.0 	[0;31mClock: 1305 MHz [0m	Temp: 55 C 	Power: 241 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 37 : GGN038 : GPU 0000:3b:00.0 	[0;31mClock: 1305 MHz [0m	Temp: 55 C 	Power: 238 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 44 : GGN045 : GPU 0000:3b:00.0 	[0;31mClock: 1305 MHz [0m	Temp: 53 C 	Power: 242 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 39 : GGN040 : GPU 0000:3b:00.0 	[0;31mClock: 1290 MHz [0m	Temp: 55 C 	Power: 248 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 43 : GGN044 : GPU 0000:3b:00.0 	[0;31mClock: 1305 MHz [0m	Temp: 55 C 	Power: 240 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 8 : GGN009 : GPU 0000:3b:00.0 	[0;31mClock: 1305 MHz [0m	Temp: 53 C 	Power: 239 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 21 : GGN022 : GPU 0000:3b:00.0 	[0;31mClock: 1282 MHz [0m	Temp: 56 C 	Power: 237 W 	PCIe  gen 3 	 x16 
[0;31m Prog= 95.17%	N_left= 178944	Time= 448.07	Time_left= 22.72	iGF= 86417.85	GF= 168153.49	iGF_per= 1800.37 	GF_per= 3503.20 [0m
!!!! WARNING: Rank: 32 : GGN033 : GPU 0000:3b:00.0 	Clock: 1357 MHz 	Temp: 54 C 	Power: 249 W 	PCIe  gen 3 	[0;31m x8 [0m
!!!! WARNING: Rank: 22 : GGN023 : GPU 0000:3b:00.0 	Clock: 1500 MHz 	Temp: 54 C 	[0;31mPower: 300 W [0m	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 32 : GGN033 : GPU 0000:3b:00.0 	Clock: 1350 MHz 	Temp: 53 C 	Power: 242 W 	PCIe  gen 3 	[0;31m x8 [0m
!!!! WARNING: Rank: 33 : GGN034 : GPU 0000:3b:00.0 	[0;31mClock: 1297 MHz [0m	Temp: 55 C 	Power: 240 W 	PCIe  gen 3 	 x16 
[0;31m Prog= 95.94%	N_left= 168960	Time= 455.85	Time_left= 19.30	iGF= 77661.16	GF= 166608.61	iGF_per= 1617.94 	GF_per= 3471.01 [0m
!!!! WARNING: Rank: 25 : GGN026 : GPU 0000:3b:00.0 	[0;31mClock: 1297 MHz [0m	Temp: 54 C 	Power: 243 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 32 : GGN033 : GPU 0000:3b:00.0 	Clock: 1417 MHz 	Temp: 53 C 	Power: 264 W 	PCIe  gen 3 	[0;31m x8 [0m
[0;31m Prog= 96.62%	N_left= 158976	Time= 463.36	Time_left= 16.23	iGF= 71543.24	GF= 165068.60	iGF_per= 1490.48 	GF_per= 3438.93 [0m
!!!! WARNING: Rank: 34 : GGN035 : GPU 0000:3b:00.0 	Clock: 1590 MHz 	Temp: 52 C 	[0;31mPower: 310 W [0m	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 32 : GGN033 : GPU 0000:3b:00.0 	Clock: 1395 MHz 	Temp: 53 C 	Power: 254 W 	PCIe  gen 3 	[0;31m x8 [0m
[0;31m Prog= 97.17%	N_left= 149760	Time= 469.62	Time_left= 13.67	iGF= 70215.08	GF= 163804.76	iGF_per= 1462.81 	GF_per= 3412.60 [0m
!!!! WARNING: Rank: 40 : GGN041 : GPU 0000:3b:00.0 	Clock: 1597 MHz 	Temp: 55 C 	[0;31mPower: 313 W [0m	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 32 : GGN033 : GPU 0000:3b:00.0 	Clock: 1417 MHz 	Temp: 52 C 	Power: 228 W 	PCIe  gen 3 	[0;31m x8 [0m
!!!! WARNING: Rank: 32 : GGN033 : GPU 0000:3b:00.0 	Clock: 1552 MHz 	Temp: 52 C 	Power: 273 W 	PCIe  gen 3 	[0;31m x8 [0m
!!!! WARNING: Rank: 32 : GGN033 : GPU 0000:3b:00.0 	Clock: 1515 MHz 	Temp: 52 C 	Power: 229 W 	PCIe  gen 3 	[0;31m x8 [0m
!!!! WARNING: Rank: 32 : GGN033 : GPU 0000:3b:00.0 	Clock: 1515 MHz 	Temp: 51 C 	Power: 249 W 	PCIe  gen 3 	[0;31m x8 [0m
!!!! WARNING: Rank: 32 : GGN033 : GPU 0000:3b:00.0 	Clock: 1530 MHz 	Temp: 51 C 	Power: 181 W 	PCIe  gen 3 	[0;31m x8 [0m
!!!! WARNING: Rank: 32 : GGN033 : GPU 0000:3b:00.0 	Clock: 1560 MHz 	Temp: 50 C 	Power: 262 W 	PCIe  gen 3 	[0;31m x8 [0m
[0;31m Prog= 99.14%	N_left= 100608	Time= 499.30	Time_left= 4.32	iGF= 52575.76	GF= 157193.44	iGF_per= 1095.33 	GF_per= 3274.86 [0m
!!!! WARNING: Rank: 39 : GGN040 : GPU 0000:3b:00.0 	[0;31mClock: 1297 MHz [0m	Temp: 51 C 	Power: 158 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 32 : GGN033 : GPU 0000:3b:00.0 	Clock: 1582 MHz 	Temp: 50 C 	Power: 227 W 	PCIe  gen 3 	[0;31m x8 [0m
!!!! WARNING: Rank: 16 : GGN017 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 41 C 	Power: 50 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 15 : GGN016 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 43 C 	Power: 54 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 12 : GGN013 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 43 C 	Power: 49 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 20 : GGN021 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 41 C 	Power: 53 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 22 : GGN023 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 42 C 	Power: 48 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 18 : GGN019 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 42 C 	Power: 51 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 21 : GGN022 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 43 C 	Power: 59 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 19 : GGN020 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 41 C 	Power: 53 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 23 : GGN024 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 43 C 	Power: 48 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 7 : GGN008 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 42 C 	Power: 53 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 6 : GGN007 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 44 C 	Power: 46 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 8 : GGN009 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 42 C 	Power: 51 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 9 : GGN010 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 41 C 	Power: 52 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 11 : GGN012 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 41 C 	Power: 51 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 28 : GGN029 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 42 C 	Power: 40 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 29 : GGN030 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 41 C 	Power: 40 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 26 : GGN027 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 44 C 	Power: 45 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 27 : GGN028 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 42 C 	Power: 42 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 24 : GGN025 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 42 C 	Power: 41 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 25 : GGN026 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 43 C 	Power: 46 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 37 : GGN038 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 42 C 	Power: 41 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 36 : GGN037 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 44 C 	Power: 41 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 40 : GGN041 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 42 C 	Power: 41 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 38 : GGN039 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 45 C 	Power: 42 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 43 : GGN044 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 42 C 	Power: 41 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 44 : GGN045 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 41 C 	Power: 42 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 42 : GGN043 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 42 C 	Power: 43 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 46 : GGN047 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 43 C 	Power: 41 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 47 : GGN048 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 42 C 	Power: 40 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 45 : GGN046 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 40 C 	Power: 41 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 4 : GGN005 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 42 C 	Power: 38 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 0 : GGN001 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 40 C 	Power: 36 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 3 : GGN004 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 43 C 	Power: 37 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 2 : GGN003 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 41 C 	Power: 35 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 1 : GGN002 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 42 C 	Power: 37 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 5 : GGN006 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 43 C 	Power: 40 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 35 : GGN036 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 40 C 	Power: 40 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 33 : GGN034 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 43 C 	Power: 42 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 30 : GGN031 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 42 C 	Power: 40 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 31 : GGN032 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 41 C 	Power: 42 W 	PCIe  gen 3 	 x16 
!!!! WARNING: Rank: 32 : GGN033 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 42 C 	Power: 40 W 	PCIe  gen 3 	[0;31m x8 [0m
!!!! WARNING: Rank: 34 : GGN035 : GPU 0000:3b:00.0 	[0;31mClock: 1245 MHz [0m	Temp: 41 C 	Power: 38 W 	PCIe  gen 3 	 x16 
[0;31m Prog= 100.00%	N_left= 2304	Time= 532.65	Time_left= 0.00	iGF=  7235.44	GF= 148623.09	iGF_per= 150.74 	GF_per= 3096.31 [0m
2021-04-26 17:40:48.406
================================================================================
T/V                N    NB     P     Q               Time                 Gflops
--------------------------------------------------------------------------------
WC02L2L2      491520   768     6     8             533.90              1.483e+05 
--------------------------------------------------------------------------------
||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)=        0.0020722 ...... PASSED
================================================================================

Finished      1 tests with the following results:
              1 tests completed and passed residual checks,
              0 tests completed and failed residual checks,
              0 tests skipped because of illegal input values.
--------------------------------------------------------------------------------

End of Tests.
================================================================================

五、总结

在上述测试结果中发现,GGN033节点的 0000:3b:00.0GPU卡有问题,导致整个集群的效率低下,整机效率只有38%,移除故障节点再进行测试,发现整机效率可接近60%左右

  • 29
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值