CPU TFLOPS 计算node
姚伟峰
yaoweifeng0301@126.com]
http://www.cnblogs.com/Matrix_Yao/socket
深度学习任务是一个计算密集型任务,因此很关注计算设备的算力指标,由于目前深度学习仍是以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能够处理个单精度浮点乘加操做。因此:
spa
因此单socket的峰值TFLOPS为:
blog