美文网首页
CPU TFLOPS 计算

CPU TFLOPS 计算

作者: MatrixOnEarth | 来源:发表于2020-03-09 12:59 被阅读0次

    深度学习任务是一个计算密集型任务,所以很关注计算设备的算力指标,因为目前深度学习还是以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估计一般可以通过以下公式来达成:
    FLOPS = frequency * fma\_number * operators\_per\_clk

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

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

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


    频率表

    所以单socket的峰值TFLOPS为:



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

    相关文章

      网友评论

          本文标题:CPU TFLOPS 计算

          本文链接:https://www.haomeiwen.com/subject/pmxpdhtx.html