当前位置: 首页 > article >正文

【算力基础】GPU算力计算和其他相关基础(TFLOPS/TOPS/FP32/INT8...)

文章目录

    • :one: 算力的常见指标
    • :two: 算力计算
    • :three: 常用链接


🚀 本文主要是聚焦于深度学习领域的 GPU的算力估计,其他类型的硬件设备如CPU可以类比参考。

1️⃣ 算力的常见指标

算力衡量主要与运算速度精度这两个指标有关。

🌔速度指标常有:

指标备注
FLOPSFloat Operations Per Second(默认精度为FP32)
MFLOPS10^6 FLOPS
GFLOPS10^9 FLOPS
TFLOPS10^12 FLOPS
OPSOperations Per Second(默认精度为INT8)
MOPS10^6 OPS
GOPS10^9 OPS
TOPS10^12 OPS
Compute Capability(CUDA 能力)英伟达GPU的一种算力等级(数值不等于TFLOPS)

⭐️精度指标常有:

指标备注
FP64双精度浮点
FP32单精度浮点(FLOPS的默认精度)
FP16半精度浮点
TF32NVIDIA定义的TensorCore的中间计算格式(FP32的整数部分+FP16的小数部分)
BF16用于半精度的矩阵浮点运算,相比于FP16能提高效率
INT88位整型(OPS的默认精度)

在精度换算时,可以近似地根据位数的倍数来计算。
(这个地方不太严谨,实际中要看对应精度的CUDA核有多少,如果手头参考资料有限,可以这样估计)

比如一个GPU可以操作1个FP32,在同等条件下,可以近似地认为它可以操作4个INT8,即TFLOPS ≈ \approx 4TOPS

常常算力仅以速度指标来表示,因为此时精度指标设定为默认值(FP32/INT8)。

2️⃣ 算力计算

以GPU为例,估计算力涉及以下这些常见参数

符号单位备注
n c u d a n_{cuda} ncuda1CUDA核心数
f b o o s t f_{boost} fboostHz加速频率(Boost Frequency)
a a a1单核心每时钟周期浮点运算系数(GPU常设为2:乘加运算)
C C CFLOPS浮点算力

❤️则一个GPU的算力可以按照如下公式估计:
C = n c u d a × f b o o s t × a C=n_{cuda}\times f_{boost}\times a C=ncuda×fboost×a

以NVIDIA GeForce RTX 2080 Ti 为例,讲解一下算力计算流程:

查询NVIDIA官网,只给出了RTX 2080 Ti的Compute capalibility等级为7.5,没有以FLOPS/TOPS为单位算力指标。
查询得到 n c u d a = 4352 n_{cuda}=4352 ncuda=4352 f b o o s t = 1.64 × 1 0 9 f_{boost}=1.64\times10^9 fboost=1.64×109,进而进行如下计算(以FLOPS为单位):
C = 4352 × ( 1.64 × 1 0 9 ) × 2 = 1.4275 × 1 0 13 C=4352\times(1.64\times10^9)\times2=1.4275\times 10^{13} C=4352×(1.64×109)×2=1.4275×1013
折算为以TFLOPS(FP32)为单位:
C T F = C / 1 0 12 = 14.275 C_{TF}=C/10^{12}=14.275 CTF=C/1012=14.275
理论计算结果与在TECHPOWERUP查询的RTX 2080 Ti算力13.45 TFLOPS较为接近。
\newline
而折算为以TOPS(INT8)为单位:
C T = C T F × 4 = 57.1 C_{T}=C_{TF}\times 4=57.1 CT=CTF×4=57.1
更进一步地,如果手头上有一台设备的算力为6 TOPS,并已知某一深度学习算法在RTX 2080 Ti上的运行速度为80帧,则可以估计出同样的算法在本设备的帧率:
F P S = 80 × 6 57.1 = 8.4 FPS=80\times\frac{6}{57.1}=8.4 FPS=80×57.16=8.4

3️⃣ 常用链接

  • TECHPOWERUP-GPU主页,比较公认的第三方技术参数查询点
  • NVIDIA GeForce GPU 技术参数官网

http://www.kler.cn/a/381760.html

相关文章:

  • Android——动态注册广播
  • 【dvwa靶场:XSS系列】XSS (Stored)低-中-高级别,通关啦
  • 剧本杀小程序,市场发展下的新机遇
  • GPIO子系统中Controller驱动源码分析
  • Spring Boot 与 Vue 共筑高校网上订餐卓越平台
  • VIM使用笔记
  • 【算法】递归+深搜:106.从中序与后序遍历序列构造二叉树(medium)
  • 「Mac畅玩鸿蒙与硬件21」鸿蒙UI组件篇11 - Canvas 组件的静态进阶应用
  • go语言中的nil类型
  • debian系统安装qt的时候 显示xcb相关文件缺失
  • 在培训班学网络安全有用吗
  • 【maven】idea执行了maven的install命令给本地安装项目依赖包 安装后删除
  • Python使用爬虫
  • CSS Position 定位如何使用?
  • 5个有效的华为(HUAWEI)手机数据恢复方法
  • java项目之校园周边美食探索及分享平台(springboot)
  • Neo4j入门:详解Cypher查询语言中的MATCH语句
  • [论文阅读]BERT-based Lexical Substitution
  • 写文件回前端进行下载,报错:原因:CORS 头缺少 ‘Access-Control-Allow-Origin‘)
  • 青少年编程与数学 02-003 Go语言网络编程 10课题、HTTP/HTTPS协议
  • PDF全能免费转换 3.18 | 免费PDF工具集,多种转换和美化功能
  • 前后端理解、API接口
  • Caffeine 手动策略缓存 put() 方法源码解析
  • Java基础-组件及事件处理(上)
  • Qt 环境实现视频和音频播放
  • 【C++的vector、list、stack、queue用法简单介绍】