CPU TFLOPS 计算

姚伟峰
yaoweifeng0301@126.com]
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应为:

CPU TFLOPS 计算的更多相关文章

  1. Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算

    目录(?)[-] proc文件系统 proccpuinfo文件 procstat文件 procpidstat文件 procpidtasktidstat文件 系统中有关进程cpu使用率的常用命令 ps ...

  2. cpu时间 / cpu利用率计算

    CPU时间即反映CPU全速工作时完成该进程所花费的时间 cpu时间计算CPU TIME = (# of CPU Clock Cycles) x Clock Period     // “#” 表示消耗 ...

  3. CPU使用率计算

    昨天接到临时任务,需要将一个工作线程执行真正工作的时机推迟到CPU空闲时执行.当时第一感觉认为是将线程优先级设置为空闲级别就行了,以为只有CPU空闲下来才会去跑这个线程,实际上应该不是,毕竟即时是空闲 ...

  4. CPU怎么计算1+1----CPU计算的电路基础

    从<十进制和二进制的运算---我所理解到的人类的运算的本质>这里我们知道,人类进行运算的本质是查表,并且我们存储的表是有限的.那么计算机是怎进行四则运算的呢,也是查表吗,肯定不是,今天,我 ...

  5. java程序中线程cpu使用率计算

    原文地址:https://www.imooc.com/article/27374 最近确实遇到题目上的刚需,也是花了一段时间来思考这个问题. cpu使用率如何计算 计算使用率在上学那会就经常算,不过往 ...

  6. RT-Thread的CPU使用率计算

    CPU 的使用率一般是我们比较关心的问题,在这里我们就用空闲线程的钩子函数去统计 CPU 的使用率,并通过串口打印出来.首先我们在初始化线程中设置好钩子函数,并在 LED 线程中给系统人为的加入很多“ ...

  7. Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算(转)

    Java 系统性能分析 命令 1. cpu分析 top , pidstat(sysstat) pid -p PID -t 1 10 vmstat 1 CPU上下文切换.运行队列.利用率 ps Hh - ...

  8. Linux查看CPU信息计算CPU核数量

    1. 物理CPU的个数: cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l 2. 每个物理CPU的核心数量: ...

  9. 12、关于系统cpu的计算

    1.cpu核数和逻辑cpu: CPU总核数 = 物理CPU个数 * 每颗物理CPU的核数: 总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数 2.查看linux的cpu相关信 ...

随机推荐

  1. [JAVA]JAVA实现多线程的三种方式

    1.继承Thread类,通过start()方法调用 public class MultiThreadByExtends extends Thread { @Override public void r ...

  2. python selenium-webdriver 常用浏览器的操作 (十)

    浏览器常用的一些方法和属性其实很简单一些方法,但是却在实际测试过程中经常使用. 浏览器中加载url 方法:get(url) 实例:driver.get("http//:www.baidu.c ...

  3. LOJ 2551 「JSOI2018」列队——主席树+二分

    题目:https://loj.ac/problem/2551 答案是排序后依次走到 K ~ K+r-l . 想维护一个区间排序后的结果,使得可以在上面二分.求和:二分可以知道贡献是正还是负. 于是想用 ...

  4. Linux col命令详解

    Linux col命令 Linux col命令用于过滤控制字符. 在许多UNIX说明文件里,都有RLF控制字符.当我们运用shell特殊字符">"和">> ...

  5. Fibonacci_array

    重新开始学习C&C++ Courage is resistance to fear, mastery of fear, not abscence of fear //斐波那契数列 Fibona ...

  6. 通用唯一识别码UUID

    UUID 概念:UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,目前最广泛应用的UUID,是微软公司的全局唯一标识符(GUID),而其他重要的应用,则 ...

  7. 前端表单提交数据~php获取表单内容

    上图代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  8. python解决四舍五入问题

    小数问题是计算机编程中大部分语言都会遇到的问题,尤其是在内容中涉及到评分.金额计算等等,本人一般在解决需求中固定小数位的数字计算时,都会先将其放大整10的倍数至整数,然后计算.存储,只有在显示的时候再 ...

  9. 前端——JavaScript之if语句

    4.1 if语句 如果……否则……  , 让程序出现分支 1        <script type="text/javascript"> 2           va ...

  10. ubuntu16.04上vue环境搭建

    $ sudo apt-get install python-software-properties $ curl -sL https://deb.nodesource.com/setup_8.x | ...