webooru icon indicating copy to clipboard operation
webooru copied to clipboard

CPU TFLOPS 计算 - 姚伟峰 - 博客园

Open madobet opened this issue 4 years ago • 0 comments

姚伟峰
[email protected]]
http://www.cnblogs.com/Matrix_Yao/

深度学习任务是一个计算密集型任务,所以很关注计算设备的算力指标,因为目前深度学习还是以 float32 为主流,所以落实到具体指标,就变成了大家都很关心 TFLOPS(Tera FLoat point OPerations per Second),这里,浮点操作指的就是浮点乘法和加法操作。这个在 GPU 上是明码写在 spec 里可以查的,但 CPU 目前并不会在 spec 中暴露 TFLOPS 指标。一种方法可以通过跑 BLAS 的 benchmark 来测量的,但这个一是需要一定的操作成本,二是受软件优化的影响(所以,如果出了问题就容易不知道这是硬件能力不行还是软件优化没到位)。需要一个对硬件能力的直接估计。
在深度学习任务中,计算量的绝大部分是由协处理器 (co-processor) 来完成的 (如 SSE,AVX2,AVX-512),更具体地,是由 FMA(Fused Multiply-Add) 单元完成的。所以对 CPU 的 TFLOPS 估计一般可以通过以下公式来达成:

FMA 做了啥?
FMA 指令里做了以下操作。这里这些向量的长度由 AVX 寄存器长度决定,比如 AVX-512 就是 16 个 float。 FMA 每个 clock 可以做完一个以下操作,这里 都是长度为 16 的向量。

举个栗子
Xeon Skylake 8180,一个 socket 有 28 个 core,每个 core 有一个 AVX-512 协处理器,每个 AVX-512 协处理器配有 2 个 FMA,每个 FMA 每 clock 可以处理 个单精度浮点乘加操作。所以:

frequency 可以通过查 spec 得到,如下:

所以单 socket 的峰值 TFLOPS 为:

所以一个 dual-socket Skylake 8180 的 node 的峰值 TFLOPS 应为:

https://www.cnblogs.com/Matrix_Yao/p/9550967.html

madobet avatar Jun 13 '20 08:06 madobet