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. sunzl is not in the sudoers file.This incident will be reported

    Description: [sunzl@localhost nuc900bsp$] ./install.sh sorry!you are not the root !! [sunzl@localhos ...

  2. Caching in Presto

    转自:Caching in Presto Qubole’s Presto-as-a-Service is primarily targeted at Data Analysts who are tas ...

  3. python模拟大数据登陆

    #针对tableu 撰写的大数据框架 #tesseract 识别简单的验证码 不多说  直接上代码 # coding:utf-8 from selenium import webdriver from ...

  4. [UE4]Event Tick

    一.每一帧都会触发Event Tick事件,“Delta Seconds”参数表示当前帧说花费的时间 二.因为各种原因(比如卡帧等),每一帧所花费的时间并不是相同的

  5. winrar+目录穿透复现

    前言: 学习下该漏洞,记录下这是自动化复现,没有具体分析.菜逼只会用. 00x1: 漏洞简单描述: 该漏洞事一个由UNACEV2.dll代码库中的一个深藏已久的漏洞 当攻击者制作一个恶意的ACE文件时 ...

  6. android 中activity重启的方法

    private void reLoadActivity(){ Intent intent = new Intent(context, SettingsActivity.class); intent.s ...

  7. Memcache,redis,rabbitMQ,SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  8. vue设置路由跳转参数,以及接收参数

    最近做Vue项目,遇到了一个路由跳转问题:首页要跳转到项目页指定的Tab选项卡项,一开始总是跳到默认项.解决方法如下: 在跳转链接处设置了路由跳转参数,如下: <router-link  :to ...

  9. String 相关

    1. 输出结果为 true,"hello" + 1 在编译期间就被优化成了 "hello1",因此在运行期间,变量 a 和变量 b 指向的是同一个对象 Stri ...

  10. LeetCode1-5题

    1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个 ...