原文:https://zhuanlan.zhihu.com/p/713121901
由于众所周知的原因,某些GPU在某些地区销售是没有合法渠道&售后保障的,从奇怪的渠道购买GPU有概率买到翻新货、假货。对于计算用途的GPU,我们通常会关心峰值算力、显存带宽、通信带宽三个指标,如果拿到的货这三个指标实测值和理论值相符咱就基本能安全下车了。这里将分三篇分别说明每个指标怎么测,本文是第一篇:算力篇。
想要简单快速又比较准的的测出实际峰值算力,可以使用CUTLASS profiler提供的GEMM算子进行测试。通常认为GEMM是计算受限的算子,且当下大热的Transformer模型负载基本上都是GEMM,故GEMM测得的最优性能可以被当作GPU的实际峰值算力。从github上的CUTLASS仓库(GitHub - NVIDIA/cutlass: CUDA Templates for Linear Algebra Subroutines) 克隆源码并且按照文档里的方法编译cutlass_profiler程序。使用方法见cutlass_profiler --help。
这里附上我测的结果。(GEMM极致调优能应该还能再榨出一丁点性能,但是我们这里的方法主要讲究一个方便快捷,你甚至可以在提货时当场就能花个10分钟测一把验验货。且由下面的数据看,CUTLASS profiler内置的GEMM算子已经将运算单元的理论峰值性能榨到8、90%,完全够用)
实验结果
注:以下表中的“利用率”不是 nvidia-smi里看到的GPU-Util(GPU-Util这个数值除了能让你知道GPU在跑以外,什么用都没有),下表中的“利用率”是指某种精度的GEMM算子运算过程中对GPU对应精度的运算单元硬件的利用效率。
- H100 PCIe vs. A100 PCIe (CUTLASS 3.5.1 GEMM算子)
注:单位均为TFLOPS(浮点)或 TOPS(整型),数值均为实际性能,而非稀疏等价性能。后缀为T的行表示使用Tensor Core。
可以看出CUTLASS目前对A100的优化比对H100 PCIe的优化好。H100 PCIe有着2倍于A100 PCIe的价格,1.4倍于A100的功耗,差不多得到了2倍的算力(以及稍微强些的内存、通信带宽),INT4性能被阉割,但增加了FP8支持。
个人认为,H100 PCIe版的能耗、性价比都有点鸡肋,与其买一两块H100 PCIe版尝尝鲜,不如花多点钱买8卡/4卡的H100 SXM整机一步到位,正所谓“买的越多,省的越多”。
- 4090 vs. A10(CUTLASS 3.5.1 GEMM算子)
可以看CUTLASS对4090各种精度的优化都挺好,对A10的FP32、FP64的优化有点烂。作为常用的大模型推理卡,A10和4090在显存和通信的规格上相似,价格也差不多,A10计算性能却只有4090的1/3,唯一优势就是A10功耗是4090的1/3,少交点电费。
实验设置
- 矩阵形状:M=N=K=8192
测试使用的CUTLASS源码 git commit hash:
19b4c5e065e7e5bbc8082dfc7dbd792bdac850fc
- 4090测试时的CUTLASS编译选项
-DCUTLASS_NVCC_ARCHS="89"
- A10测试时的CUTLASS编译选项
-DCUTLASS_NVCC_ARCHS="86"
- A100测试时的CUTLASS编译选项
-DCUTLASS_NVCC_ARCHS="80"
- H100测试时的CUTLASS编译选项
-DCUTLASS_NVCC_ARCHS="90a"
References
https://resources.nvidia.com/en-us-tensor-core?ncid=no-ncid
https://www.nvidia.com/en-us/data-center/products/a10-gpu/
作者:gdv99
来源:GiantPandaCV
推荐阅读
- vLLM源码之PagedAttention
- 大模型训练:Megatron-Kwai中的内存优化
- LLM101n 硬核代码解读:Micrograd,一个轻量级的自动微分引擎
- CUDA-MODE课程笔记 第8课: CUDA性能检查清单
欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区嵌入式AI专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。