服务器GPU性能测试流程

这篇具有很好参考价值的文章主要介绍了服务器GPU性能测试流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

注意:

1、cuda-sample需要和cuda版本对应,否则会报错

2、只有进行hpcg测试时才需要设置当前环境变量为cuda-10,其它测试时设置cuda-12.0,否则在进行浮点性能测试时会报错

一、准备测试程序

1.环境变量要求cuda11.8

# centos7  ubuntu18.04  ubuntu20.04  ubuntu22.04
# 只需安装nvcc不需要安装驱动
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run

 
# 安装完毕后声明cuda11.8环境变量
export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH

2.cuda-samples-11.8测试包

wget https://mirrors.qiql.net/pkgs/cuda-samples-11.8.tar.gz
tar -zxvf cuda-samples-11.8.tar.gz

3.hpcg测试环境

# cuda10.0安装
wget https://mirrors.qiql.net/pkgs/cuda_10.0.130_410.48_linux.run
sh cuda_10.0.130_410.48_linux.run

# 声明cuda10环境变量
export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH

# 安装OpenMPI3.1.0
wget https://mirrors.qiql.net/pkgs/openmpi-3.1.0.tar.gz
tar -zxvf openmpi-3.1.0.tar.gz
cd openmpi-3.1.0
./configure --prefix=/opt/support/soft/openmpi/3.1.0
make -j 
make install
cd /opt/support/soft/openmpi/3.1.0
vim env.sh
“
base_dir=/opt/support/soft/openmpi/3.1.0
export PATH=${base_dir}/bin:$PATH
export LD_LIBRARY_PATH=${base_dir}/lib:$LD_LIBRARY_PATH
export CPATH=${base_dir}/include:$CPATH
export MANPATH=${base_dir}/share:$MANPATH
”
# 保存退出,后续要加载openmpi3.1.0,执行source /opt/support/soft/openmpi/3.1.0/env.sh 命令即可

############# 
# 如果无法编译安装 OpenMPI-3.1.0
# 直接下载编译好的包:
wget https://mirrors.qiql.net/pkgs/openmpi-3.1.0.tgz
# 将其解压到/opt/support/soft/openmpi目录,然后source env.sh 即可

# hpcg包下载解压
cd /opt/support
wget https://mirrors.qiql.net/pkgs/hpcg-3.1_cuda-10_ompi-3.1_gcc485_sm_35_sm_50_sm_60_sm_70_sm75_ver_10_9_18.tgz
tar -zxvf hpcg-3.1_cuda-10_ompi-3.1_gcc485_sm_35_sm_50_sm_60_sm_70_sm75_ver_10_9_18.tgz

4.intel oneAPI安装

# intel oneAPI Base Toolkit
wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18970/l_BaseKit_p_2022.3.1.17310_offline.sh
sh l_BaseKit_p_2022.3.1.17310_offline.sh
进入安装界面 选择
Accpet & customer
Next
指定路径 /opt/support/compiler/intel/2022u2/oneapi 后 Next
Install
选择 Skip 后 Next
选 I do NOT consent to the collection of my information 后 Begin Installation 
等待安装完毕后 Close


# intel oneAPI HPC Toolkit
wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18975/l_HPCKit_p_2022.3.1.16997_offline.sh
sh l_HPCKit_p_2022.3.1.16997_offline.sh
进入安装界面 选择
Accpet & customer
Next
指定路径 /opt/support/compiler/intel/2022u2/oneapi 后 Next
选择 Skip 后 Next
选 I do NOT consent to the collection of my information 后 Begin Installation 
等待安装完毕后 Close

# 启动编译器
两个安装完毕后  source /opt/support/compiler/intel/2022u2/oneapi/setvars.sh intel64

二、测试流程

1.显存带宽

# 进入解压的cuda-samples-11.8目录里
cd /opt/support/cuda-samples-11.8/Samples/1_Utilities/bandwidthTest

# 修该下面这个文件中的 32M 为 2048M
vim bandwidthTest.cu # 进入该文件
#define DEFAULT_SIZE (32 * (1e6))      // 32 M
将上面这一行修改为
#define DEFAULT_SIZE (2048 * (1e6)) 

# 修改cuda路径
vim Makefile 
CUDA_PATH ?= /usr/local/cuda
将上面这行代码修改为
CUDA_PATH ?= /usr/local/cuda-11.8

make
# 测试命令
./bandwidthTest --device=0 # 测试命令,--device=0 表示对 0 号卡进行测试,依次测试所有卡
记录下Host to Device 、Device to Host 、Device to Device

脚本:
#!/bin/bash
for device in {0..7}
do
    echo "Testing device$device:" >> band.txt
    ./bandwidthTest --device=$device >> band.txt
    echo "-----------------------------------" >> band.txt
done

2.卡间带宽

cd /opt/support/cuda-samples-11.8/Samples/5_Domain_Specific/p2pBandwidthLatencyTest

# 修改cuda路径
vim Makefile 
CUDA_PATH ?= /usr/local/cuda
将上面这行代码修改为
CUDA_PATH ?= /usr/local/cuda-11.8

make
./p2pBandwidthLatencyTest
记录下
Bidirectional P2P=Enable Bandwidth Matrix(GB/s)
P2P=Enabled Latency(P2P writes)Matrix(us)

3.浮点性能

cd /opt/support/cuda-samples-11.8/Samples/4_CUDA_Libraries/batchCUBLAS

# 修改cuda路径
vim Makefile 
CUDA_PATH ?= /usr/local/cuda
将上面这行代码修改为
CUDA_PATH ?= /usr/local/cuda-11.8

make
./batchCUBLAS -m8192 -n8192 -k8192 --device=0 # --device=0表示对0号卡进行测试,依次测试所有卡
记录Running N=10 batched的GFLOPS值




#!/bin/bash
  

# 迭代测试device0到device7
for device in {0..7}
do
    echo "Testing device$device:" >> float.txt
    ./batchCUBLAS -m8192 -n8192 -k8192 --device=$device >> float.txt
    echo "-----------------------------------" >> float.txt
done



报错:
./batchCUBLAS: error while loading shared libraries: libcublas.so.12: cannot open shared object file: No such file or directory

4.多卡扩展性

cd /opt/support/hpcg-3.1_cuda-10_ompi-3.1_gcc485_sm_35_sm_50_sm_60_sm_70_sm75_ver_10_9_18/

vim hpcg.dat
HPCG benchmark input file
Sandia National Laboratories; University of Tennessee, Knoxville
256 256 256 # 无需修改
60 # 运行时间,无需修改

# 单卡运行HPCG:
mpirun --allow-run-as-root -n 1 ./xhpcg-3.1_gcc_485_cuda-10.0.130_ompi-3.1.0_sm_35_sm_50_sm_60_sm_70_sm_75_ver_10_9_18
# 双卡运行HPCG
mpirun --allow-run-as-root -n 2 ./xhpcg-3.1_gcc_485_cuda-10.0.130_ompi-3.1.0_sm_35_sm_50_sm_60_sm_70_sm_75_ver_10_9_18
# 四卡运行HPCG
mpirun --allow-run-as-root -n 4 ./xhpcg-3.1_gcc_485_cuda-10.0.130_ompi-3.1.0_sm_35_sm_50_sm_60_sm_70_sm_75_ver_10_9_18
# 八卡运行HPCG
mpirun --allow-run-as-root -n 8 ./xhpcg-3.1_gcc_485_cuda-10.0.130_ompi-3.1.0_sm_35_sm_50_sm_60_sm_70_sm_75_ver_10_9_18

5.内存带宽

cd /opt/support/

# 获取stream源码文件
wget https://mirrors.qiql.net/pkgs/stream.c

# 加载oneAPI环境变量,oneAPI路径根据自己调整
source /opt/support/compiler/intel/2022u2/oneapi/setvars.sh intel64

# 编译Stream.c,根据实际内存数量调整数组大小,以下为在256GB内存节点上的编译命令
icc -o stream.intel stream.c -DSTATIC -DNTIMES=10 -DSTREAM_ARRAY_SIZE=3200000000 -mcmodel=large -shared-intel -Ofast -qopenmp -ffreestanding -qopt-streaming-stores always

# 声明环境变量
export OMP_PROC_BIND=true
export OMP_NUM_THREADS=64

# 运行Stream
./stream.intel

6.NCCL test

安装:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get install libnccl2 libnccl-dev
cd /opt/support/
git clone https://github.com/NVIDIA/nccl-tests
cd nccl-tests/
make

make报错:
root@ubuntu:/opt/support/nccl-tests# make
make -C src build BUILDDIR=/opt/support/nccl-tests/build
make[1]: Entering directory '/opt/support/nccl-tests/src'
Compiling  timer.cc                            > /opt/support/nccl-tests/build/timer.o
Compiling /opt/support/nccl-tests/build/verifiable/verifiable.o
In file included from /usr/local/cuda/bin/..//include/cuda_runtime.h:83,
                 from <command-line>:
/usr/local/cuda/bin/..//include/crt/host_config.h:129:2: error: #error -- unsupported GNU version! gcc versions later than 7 are not supported!
  129 | #error -- unsupported GNU version! gcc versions later than 7 are not supported!
      |  ^~~~~
make[1]: *** [../verifiable/verifiable.mk:11: /opt/support/nccl-tests/build/verifiable/verifiable.o] Error 1
make[1]: Leaving directory '/opt/support/nccl-tests/src'
make: *** [Makefile:20: src.build] Error 2


手动make:
make -C src BUILD_DIR=build CUDA_HOME=/usr/local/cuda-12.0
./build/all_reduce_perf -b 8 -e 256M -f 2 -g 4

三、测试结论

cuda samples程序测试a100显卡性能,人工智能,linux,深度学习

cuda samples程序测试a100显卡性能,人工智能,linux,深度学习

设备 A100
GPU NVIDIA A100 40GB PCIE
显存 40GB HBM2
显存带宽 1555GB/s
功耗 250 W
FP64 9.7 TFLOPS
FP64 Tensor Core 19.5 TFLOPS
FP32 19.5 TFLOPS
TF32 156 TFLOPS
FP16 Tensor Core 312 TFLOPS
INT 8 624 TFLOPS
互连技术* PCIE,或NVLink 桥接器(仅用于连接两张卡)互连带宽为600GB/s
PCIe卡槽 PCIE 4.0 X16,理论带宽为32GB/s
设备 A100
GPU NVIDIA A100 80GB PCIE
显存 80GB HBM2e
显存带宽 1935GB/s
功耗 300 W
FP64 9.7 TFLOPS
FP64 Tensor Core 19.5 TFLOPS
FP32 19.5 TFLOPS
TF32 156 TFLOPS
FP16 Tensor Core 312 TFLOPS
INT 8 624 TFLOPS
互连技术* PCIE,或NVLink桥接器(仅用于连接两张卡)互连带宽为600GB/s
PCIe卡槽 PCIE 4.0 X16,理论带宽为32GB/s
设备 V100S
GPU Tesla V100S-PCIE-32GB
显存 32 GB HBM2
显存带宽 1134 GB/s
功耗 250 W
FP64 8.2 TFLOPS
FP32 16.4 TFLOPS
FP16 130 TFLOPS
PCIe卡槽 PCIE 3.0 X16,理论带宽为16GB/s
设备 V100
GPU NVIDIA V100 16GB PCIE
显存 16GB HBM2
显存带宽 900GB/s
功耗 250W
FP64 7 TFLOPS
FP32 14 TFLOPS
FP16 112 TFLOPS
PCIe卡槽 PCIE 3.0 X16,理论带宽为16GB/s

1.显存带宽

这是一个简单的测试程序,测试为GPU显存与服务器内存间双向带宽测试,包括Host To Device(服务器内存到显存)、Device To Host(显存到服务器内存)、显存带宽(GPU芯片到GPU显存)三项测试结果。用于测量 GPU 的内存拷贝带宽和跨 PCI-e 的内存带宽。此测试应用程序能够测量设备到设备复制带宽、可分页和分页锁定内存的主机到设备复制带宽,以及可分页和分页锁定内存的设备到主机复制带宽。该

Device to Device测出来的值对应是 服务器设备的显存带宽,host to device以及device to host 对应的是PCIe卡槽的规格。

结论:

显存带宽的测试百分比为 测试值/显存带宽理论值 ; 内存到显存,显存到内存的百分比为 测试值/PCIe带宽(一般为PCIe 3.0 16GB 或者 PCIe 4.0 32GB)

2.卡间带宽

此应用程序演示了 GPU 对之间的 CUDA 点对点 (P2P) 数据传输,并计算延迟和带宽。对使用 P2P 和不使用 P2P 的 GPU 对进行测试。该测试为GPU卡之间的实测带宽,即数据从其中一张卡通过PCIE槽传输至另一张卡的测试结果。

"P2P" 的全称是 "Peer-to-Peer",它通常指的是一种直接从一个节点到另一个节点进行通信或数据传输的方式,而不需要经过中间服务器或中心化的控制。它表示GPU之间可以直接访问彼此的显存(内存),以便进行数据传输,而不需要将数据通过主机内存进行中转。这可以提高数据传输的效率和性能。"P2P Memory Access" 允许GPU之间进行双向数据传输,从而可以实现更高的带宽和更低的延迟。所以,你可以将 "P2P" 视为与双向数据传输相关的功能,但它更广泛地指代了直接的、点对点的通信和数据访问方式。

PCIe 3.0的每个通道为1GB/s,PCIe 4.0的每个通道的理论带宽是2GB/s,x16插槽有16个通道,因此理论总带宽为32GB/s,实际带宽通常会受到各种因素的影响,包括硬件性能、系统负载和传输模式。在PCIe通信中,双向通信是默认开启的,这意味着PCIe设备可以在发送和接收之间进行双向数据传输。因此,在PCIe 4.0 x16插槽上,理论上可以实现每个方向的带宽都为32GB/s,总带宽为64GB/s。但实际上,系统的硬件和软件配置可能会限制实际带宽。

结论:

卡间带宽的测试值与理论值的对比,理论值根据PCIe插槽的规格判断:一般为PCIe3.0x16,速度为16GB/s;PCIe4.0x16,速度为32GB/s。然后要看p2p点对点通信功能是否开启,如果能够启动,理论传输速率就翻倍。

3.浮点性能

这是一个 CUDA 示例,演示如何使用批处理的 CUBLAS API 调用来提高整体性能。主要测试的是GPU节点的双精度浮点运算能力

主要指标是双精度浮点数:Float64,就是服务器或显卡指标中的FP64。

1 TFLOPS = 1,000,000 GFLOPS

结论:

浮点性能的测试值要根据厂家标注的理论值进行对比: 测试纸/理论值

4.多卡扩展性

利用 环境 cuda10.0 和 MPI:OpenMPI 3.1.0 看hpcg测试最后给出的GFLOPS值,对比单卡,2卡,4卡,8卡的结果。

结论:

看最后测试给出的hpcg值1卡、2卡、4卡、8卡是不是呈上升的线性增长(2卡效率比单卡高,4卡比2卡效率高,依次类推)

5.内存带宽

安装Intel oneAPI到目标主机,默认安装oneAPI2022.2,使用加载的oneAPI编译Stream.c文件,根据实际内存数量调整数组大小。文章来源地址https://www.toymoban.com/news/detail-764282.html

主机名 Function Best Rate MB/s Avg time Min time Max time
ecs-37632405 Copy 174014.1 2.914759 2.353832 3.624191
Scale 167372.9 3.101483 2.44723 3.849923
Add 148908.6 4.17651 4.126021 4.227916
Triad 150024.4 4.203401 4.095333 4.317513

到了这里,关于服务器GPU性能测试流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • jmeter 在linux服务器中执行性能测试、监听服务器资源指标

    下载apache-jmeter-5.5文件; 下载ServerAgent-2.2.3文件; 解压apache-jmeter-5.5文件;(需先安装java环境) 找到apache-jmeter-5.5apache-jmeter-5.5bin目录,运行 ApacheJMeter.jar 创建 测试计划 、 线程组 、 HTTP请求 及各类监听组件; 保存脚本为 xxx.jmx 文件。 将apache-jmeter-5.5.tgz 压缩包上传至服务器,

    2024年02月09日
    浏览(61)
  • 性能测试分析案例-定位服务器丢包

    预先安装 docker、curl、hping3 等工具,如 apt install docker.io curl hping3。 案例是一个 Nginx 应用,如下图所示,hping3 和 curl 是 Nginx 的客户端。 在终端一中执行下面的命令,启动 Nginx 应用,并在 80 端口监听。如果一切正常,你应该可以看到如下的输出: 执行 docker ps 命令,查询容

    2024年02月01日
    浏览(37)
  • Jmeter性能测试,通过插件监控服务器资源使用情况

    可以通过jmeter 安装\\\"PerfMon(Servers Performance Monitoting)\\\"插件并配合服务端资源监控工具进行实现,详细操作流程如下: (备注:我这个是已安装的,如果未安装,可以点击“Available Plugins”tab搜索该插件) 如果可以选择该元件即代表安装成功 点击AddRow --配置服务器地址、端口号

    2024年02月16日
    浏览(52)
  • Jmeter性能测试 —— jmeter之使用ServerAgent监控服务器

    ServerAgent 性能测试时我们关注的重要指标是:并发用户数,TPS,请求成功率,响应时间,服务器的CPU,memory, I/O disk等。Jmeter的聚合报告可以查看并发数、吞吐量、请求成功率、响应时间等;如果要查看服务器端的CPU,memory, I/O disk等就需要安装插件ServerAgent 将ServerAgent-2.2

    2024年02月07日
    浏览(42)
  • Linux服务器常见运维性能测试(3)CPU测试super_pi、sysbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月02日
    浏览(39)
  • 腾讯云CVM服务器标准型S5性能CPU处理器测试

    腾讯云服务器CVM标准型S5实例是次新一代的标准型实例,CPU采用主频2.5GHzIntel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器,睿频3.1GHz,云服务器S5基于全新优化虚拟化平台,提供了平衡、稳定的计算、内存和网络资源,是很多应用程序的最佳选择。腾讯云服务器网分享腾讯云CV

    2024年02月13日
    浏览(36)
  • Linux服务器常见运维性能测试(1)综合跑分unixbench、superbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月04日
    浏览(54)
  • 华为云云耀云服务器L实例评测|2核2G跑mysql性能测试

    前言 上一次我们介绍了 华为云云耀云服务器L实例 的基本信息,从购买到特色都做了简要介绍。但是 很多人看到这个配置又产生了迟疑,主要是因为云耀现在提供的全系是2核,性能吃得消吗?今天我们就来做一个性能测试 环境准备 因为我们购买的是服务器已经有了宝塔镜

    2024年02月08日
    浏览(40)
  • 性能测试平台 - 集分布式压测、服务器资源监控、远程连接Linux于一体的平台

    前情提要:   网上搜了一下开源性能测试平台或全链路压测平台,只找到了一个stressTestSystem,其他的都是一些垃圾公司的广告。至于使用体验,stressTestSystem没用过,不好评价。本文开源的性能测试平台,在实现功能的前提下,极大地考虑到了使用体验,功能“强大”且部

    2024年02月10日
    浏览(43)
  • 华为云云耀云服务器L实例评测|使用clickhouse-benchmark工具对ClickHouse的性能测试

    目录 引言 1 ClickHouse简介 2 利用docker安装ClickHouse 2.1  安装Docker 2.2 下载ClickHouse Docker镜像 2.3  创建ClickHouse容器 2.4 访问ClickHouse 3 创建测试表 4 运行 clickhouse-benchmark 5 分析结果 结语 利用华为云的云耀云服务器 L 实例,配置为 2 核 2GB 内存和 3M 带宽,操作系统为 CentOS 7.9 ,您可

    2024年02月07日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包