背景:
我们平时想做gpu的压力测试,需要一个简单的可以一键执行的工具来测试,主要要来打满gpu的使用率和显存,这里以8卡4090机器为测试机,驱动版本550.54.14,cuda版本12.3。
开源方案:
gpu-burn一个开源的cuda测试工具,一个专门用来给 NVIDIA GPU 施加压力的工具。
前提:
测试的服务器有安装好的cuda和gpu驱动。
测试方法:
(1)虚拟机或逻金属服务器进行GPU压力测试
# 方式1:克隆仓库 git clone https://github.com/wilicc/gpu-burn.git # 方式2:如果git下载不下来,推荐使用wget下载zip包并解压缩 wget https://github.com/wilicc/gpu-burn/archive/refs/heads/master.zip unzip master.zip mv gpu-burn-master gpu-burn # 进入目录 cd gpu-burn # 编译 make # 备注:编译不通过具体原因具体分析,大部分原因是找不到cuda等库文件,可以通过指定库文件方式来编译,以下是一个示例: make CXXFLAGS="-I/usr/local/cuda-12.3/include" \ CUDA_HOME=/usr/local/cuda-12.3 \ NVCCFLAGS="-I/usr/local/cuda-12.3/include" \ NVCC=/usr/local/cuda-12.3/bin/nvcc \ LDFLAGS="-L/usr/local/cuda-12.3/lib64 -Wl,-rpath=/usr/local/cuda-12.3/lib64" # 将 gpu_burn 程序运行在后台,并将输出重定向到 output.log 文件 60代表要压测的时间,可以自由修改,压测的结果会打印在output文件里 ./gpu_burn 60 > output.log 2>&1 &
未运行压测前GPU使用概览:
运行之后:
可以看到GPU的利用率和显存基本都被打满
(2)以容器方式进行测试
git clone https://github.com/wilicc/gpu-burn cd gpu-burn docker build -t gpu_burn . docker run --rm --gpus all gpu_burn
这样默认生成的压测docker镜像是60s的压测镜像,gpu_burn项目里本身的dockerfile内容是这样的:
其中CMD的启动命令里‘60’控制的是容器的运行时长,默认为60s,但是实际随着用户压测场景不同,可能需要修改,比如12h,24h
这里以12h的压测镜像为例:
将时间改为43200s,也就是12h
也可以推送到镜像仓库作为以后的公共镜像来经常使用:
docker tag gpu_burn:latest harbor-pro.wd.net/model_library/gpu_burn_12h:latest docker push harbor-pro.wd.net/model_library/gpu_burn_12h:latest # 镜像拉取: docker pull docker pull harbor-pro.wd.net/model_library/gpu_burn_12h:latest # 镜像运行(进行12h的gpu压测): docker run --rm --gpus all harbor-pro.wd.net/model_library/gpu_burn_12h:latest
GPU压力测试工具----gpu_burn的使用
于 2024-08-22 10:33:33 首次发布