NVIDIA GPU的测试

https://zhuanlan.zhihu.com/p/585622920

我们在购买GPU的时候总是要比较一些关键参数,比如下图是A30的官方标称峰值性能数据:

通过官方数据我们可以大致了解A30 GPU的浮点运算峰值数据。但当我们实际拿到卡后,如何才能了解手里的卡是否达到了官方标称的峰值数据呢?

这里先说我的测试结论,官方标称的峰值是理论上的,在实际环境中即使做到最优化也很难达到这个理论值。

这里我用到了两种测试方法:

  • 通过PyTorch 提供的 Benchmark 进行测试
  • 通过NVIDIA官方的GEMM(General matrix multiplication)工具进行测试

注意:测试需要预先安装GPU驱动程序,CUDA,PyTorch,Open MPI等环境。

在进行测试之前,我们首先需要将GPU的时钟频率调整到此GPU所支持的最大频率,步骤如下:

  • 查看GPU所支持的最大时钟频率
nvidia-smi -q -d clock
  • 设置GPU应用程序时钟频率
nvidia-smi -ac <MEM clock, Graphics clock>
nvidia-smi -lgc 1215,1440

PyTorch 测试

测试代码 flops.py

import torch
from torch.utils import benchmark
​
typ = torch.float16  #数据精度
n = 1024 * 16
a = torch.randn(n, n).type(typ).cuda()
b = torch.randn(n, n).type(typ).cuda()
​
t = benchmark.Timer(
      stmt='a @ b',
      globals={'a': a, 'b': b})
​
x = t.timeit(50)
print(2*n**3 / x.median /1e12)

FP16 测试

TF32 测试

修改 flops.py

typ = torch.float32  #数据精度

FP64 测试

修改 flops.py

typ = torch.float64  #数据精度

GEMM 测试

下载地址:https://pan.baidu.com/s/12TQFBvwilvCM-CE2uKsbbw?pwd=hdsm

INT8

./cublasMatmulBench -P=bisb_imma -m=8192 -n=3456 -k=16384 -T=1000 -ta=1 -B=0

FP16

./cublasMatmulBench -P=hsh -m=12288 -n=9216 -k=32768 -T=1000 -tb=1 -B=0

TF32

./cublasMatmulBench -P=sss_fast_tf32 -m=8192 -n=3456 -k=16384 -T=1000 -ta=1 -B=0

FP32

./cublasMatmulBench -P=ddd -m=3456 -n=2048 -k=16384 -T=1000 -tb=1 -B=0

FP64

./cublasMatmulBench -P=sss -m=3456 -n=2048 -k=16384 -T=1000 -tb=1 -B=0

总结

PyTorch 进行FP32运算的时候CUDA会自动在底层调用Tensor Core 进行TF32运算,故结果接近TF32的结果。

所有测试结果与官方理论值都有一定的差距,不排除软件和测试工具的原因。

GPUINT8FP16TF32FP32FP64 With Tensor
A30 PCI-E 24G(理论值)3301658210.310.3
A30 PCI-E 24G(PyTorch)x106.854.7x8.9
A30 PCI-E 24G(GEMM)194.7107.853.56.89.1

GPU 数据精度支持参考

A100 GEMM 数据参考

Data
Type
A100
Peak
TFLOPs
A100 SXM4
80GB 500W
GEMM
TFLOPs
A100 SXM4
80GB 400W
GEMM
TFLOPs
A100 PCIe
80GB 300W
GEMM
TFLOPs
A100 SXM4
40GB 400W
GEMM
TFLOPs
A100 PCle
40GB 250W
GEMM
TFLOPs
INT8624551468411501338
FP16312296247219259186
TF3215613211410311791
FP3219.519.219.218.619.216.9
FP6419.519.118.116.718.615.1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注