学了IT那么久,只知道CPU主频不断的提升,核数也越来越多,但是如何理论上计算出不同代CPU性能的提升,还真没有认真思考过,我估计大多数人也不会关注,这次由于要进行高性能集群项目遇到,刚好认真的研究了一下CPU的浮点计算理论值。记录一下过程。

首先,FLOAS=核数*单核主频*CPU单个周期浮点计算值。

上述三个参数中,核数,单核主频在CPU型号都会标明,只有CPU单个周期浮点计算值这个要深入思考一下。

首先要了解CPU指令集的概念。

现在服务器的CPU都是AVX-512指令集了,

对应CPU能处理什么样的指令集,可以查intel官方的Specifications.比如我想查Intel® Xeon® Gold 6142 Processor这款CPU的支持哪种指令,可以查如下链结https://ark.intel.com/products/120487/Intel-Xeon-Gold-6142-Processor-22M-Cache-2-60-GHz-

同时还能查到此款CPU的AVX-512 FMA Units是2,这个意思是可以单个CPU周期可以同时执行2条512bit 加法和2条512bit 乘法。

其次是理解单精度和双精度浮点运算概念,简单的理解单精度就是指32bit的指令长度的运算,对应操作系统就是32位操作系统;双精度就是指64bit指令长度的运算,对应操作系统就是64位操作系统。

理解上述二个概念,我们就可以算出CPU单周期浮点计算能力了,

CPU单周期双精度浮点计算能力=2(FMA数量)*2(同时加法和乘法)*512/64

CPU单周期双精度浮点计算能力=2(FMA数量)*2(同时加法和乘法)*512/32

可以理解为单个CPU周期能够同时执行加法和乘法的指令的条数。

例如上述的Intel 6142 CPU的浮点能力可以计算出,6142是16核,每核2.6GHz

FLOAS(双精度)=16*2.6*(2*2*512/64)=1331.2GFLOAs

FLOAS(单精度)=16*2.6*(2*2*512/32)=2662.4GFLOAs

可以理解此款CPU的双精度浮点运算峰值为1.3TFLOAs,单精度为2.6TFLOAs.

对一个计算节点,有可能有多个CPU,那么对于计算节点,单个CPU浮点运算峰值要乘以CPU个数才是一个计算节点的浮点运算峰值。

常用的CPU情况:

Intel Core 2 and Nehalem:

4 DP FLOPs/cycle: 2-wide SSE2 addition + 2-wide SSE2 multiplication

8 SP FLOPs/cycle: 4-wide SSE addition + 4-wide SSE multiplication

Intel Sandy Bridge/Ivy Bridge:

8 DP FLOPs/cycle: 4-wide AVX addition + 4-wide AVX multiplication

16 SP FLOPs/cycle: 8-wide AVX addition + 8-wide AVX multiplication

Intel Haswell/Broadwell/Skylake/Kaby Lake:

16 DP FLOPs/cycle: two 4-wide FMA (fused multiply-add) instructions

32 SP FLOPs/cycle: two 8-wide FMA (fused multiply-add) instructions

AMD K10:

4 DP FLOPs/cycle: 2-wide SSE2 addition + 2-wide SSE2 multiplication

8 SP FLOPs/cycle: 4-wide SSE addition + 4-wide SSE multiplication

AMD Bulldozer/Piledriver/Steamroller/Excavator, per module (two cores):

8 DP FLOPs/cycle: 4-wide FMA

16 SP FLOPs/cycle: 8-wide FMA

AMD Ryzen

8 DP FLOPs/cycle: 4-wide FMA

16 SP FLOPs/cycle: 8-wide FMA

Intel Atom (Bonnell/45nm, Saltwell/32nm, Silvermont/22nm):

1.5 DP FLOPs/cycle: scalar SSE2 addition + scalar SSE2 multiplication every other cycle

6 SP FLOPs/cycle: 4-wide SSE addition + 4-wide SSE multiplication every other cycle

AMD Bobcat:

1.5 DP FLOPs/cycle: scalar SSE2 addition + scalar SSE2 multiplication every other cycle

4 SP FLOPs/cycle: 4-wide SSE addition every other cycle + 4-wide SSE multiplication every other cycle

AMD Jaguar:

3 DP FLOPs/cycle: 4-wide AVX addition every other cycle + 4-wide AVX multiplication in four cycles

8 SP FLOPs/cycle: 8-wide AVX addition every other cycle + 8-wide AVX multiplication every other cycle

ARM Cortex-A9:

1.5 DP FLOPs/cycle: scalar addition + scalar multiplication every other cycle

4 SP FLOPs/cycle: 4-wide NEON addition every other cycle + 4-wide NEON multiplication every other cycle

ARM Cortex-A15:

2 DP FLOPs/cycle: scalar FMA or scalar multiply-add

8 SP FLOPs/cycle: 4-wide NEONv2 FMA or 4-wide NEON multiply-add

Qualcomm Krait:

2 DP FLOPs/cycle: scalar FMA or scalar multiply-add

8 SP FLOPs/cycle: 4-wide NEONv2 FMA or 4-wide NEON multiply-add

IBM PowerPC A2 (Blue Gene/Q), per core:

8 DP FLOPs/cycle: 4-wide QPX FMA every cycle

SP elements are extended to DP and processed on the same units

IBM PowerPC A2 (Blue Gene/Q), per thread:

4 DP FLOPs/cycle: 4-wide QPX FMA every other cycle

SP elements are extended to DP and processed on the same units

Intel Xeon Phi (Knights Corner), per core:

16 DP FLOPs/cycle: 8-wide FMA every cycle

32 SP FLOPs/cycle: 16-wide FMA every cycle

Intel Xeon Phi (Knights Corner), per thread:

8 DP FLOPs/cycle: 8-wide FMA every other cycle

16 SP FLOPs/cycle: 16-wide FMA every other cycle

Intel Xeon Phi (Knights Landing), per core:

32 DP FLOPs/cycle: two 8-wide FMA every cycle

64 SP FLOPs/cycle: two 16-wide FMA every cycle

参考文章:

http://bbs.keinsci.com/thread-786-1-1.html

https://stackoverflow.com/questions/15655835/flops-per-cycle-for-sandy-bridge-and-haswell-sse2-avx-avx2

https://ark.intel.com/products/120487/Intel-Xeon-Gold-6142-Processor-22M-Cache-2-60-GHz-

https://baike.baidu.com/item/%E6%8C%87%E4%BB%A4%E9%9B%86/238130?fromtitle=CPU%E6%8C%87%E4%BB%A4%E9%9B%86&fromid=3728424&fr=aladdin

我是受第一个链结的文章启发的,怕以后找不到,我拷贝过来。

简谈CPU峰值性能怎么计算

文/Sobereva @北京科音2015-Feb-13

CPU峰值性能就是CPU运算能力满打满算最最理想情况下的性能,这只有理论意义,实际性能要以软件实测为准。有人问寡人峰值性能怎么算,这里就很简单地说两句。搞计算化学的一般只关注浮点性能,所以这里只提峰值浮点性能。

峰值浮点性能=CPU核数*CPU频率*每周期执行的浮点操作数

Intel Core 2 and Nehalem:

4 DP FLOPs/cycle: 2-wide SSE2 addition + 2-wide SSE2 multiplication

8 SP FLOPs/cycle: 4-wide SSE addition + 4-wide SSE multiplication

Intel Sandy Bridge/Ivy Bridge:

8 DP FLOPs/cycle: 4-wide AVX addition + 4-wide AVX multiplication

16 SP FLOPs/cycle: 8-wide AVX addition + 8-wide AVX multiplication

Intel Haswell:

16 DP FLOPs/cycle: two 4-wide FMA (fused multiply-add) instructions

32 SP FLOPs/cycle: two 8-wide FMA (fused multiply-add) instructions

AMD K10:

4 DP FLOPs/cycle: 2-wide SSE2 addition + 2-wide SSE2 multiplication

8 SP FLOPs/cycle: 4-wide SSE addition + 4-wide SSE multiplication

AMD Bulldozer/Piledriver/Steamroller, per module (two cores):

8 DP FLOPs/cycle: 4-wide FMA

16 SP FLOPs/cycle: 8-wide FMA

时下搞计算化学的人最常用的XEON E3/E5中,v3对应Haswell,v2对应Ivy Bridge,不带后缀的对应Sandy Bridge。更老的,比如XEON 5500系列对应Nehalem。如果不清楚,建议查阅笔者编纂的《硬件资料库》(http://pan.baidu.com/s/1hq7PLeG)

根据这些资料,可以容易地计算峰值浮点性能,比如E5-2690 v2,基本频率为3.0GHz(这里不考虑Turbo boost动态升频),有10个核,每个核每周期可以做8次双精度浮点运算或16次单精度浮点运算,因此:

单精度峰值浮点性能=3.0*10*16=480 GFLOPs

双精度峰值浮点性能=3.0*10*8=240 GFLOPs

这里FLOPs (FLoating-point Operations Per Second)是衡量浮点性能的常用单位,即每秒做的浮点运算次数。1GFLOPs代表每秒十亿次浮点运算。目前世界顶尖的高性能计算机(HPC)的浮点性能都以PFLOPs来计,1P=1000T=1000000G。

从上面列的数据中看似XEON v3 (Haswell)比v2的浮点性能高一倍,这被一些商家用来忽悠消费者。实际上,同频同核下,v3比v2性能提升很小。如果v3价格只比v2贵一点,那么可以买v3,但如果贵得很多,切勿被表面上看多一倍的峰值性能所冲昏了头脑。适当了解下不同内核以及指令集的特点对理解这个问题是有益的。为了方便,这里我们只考虑双精度浮点。

第一代奔腾支持的MMX、奔3开始支持的SSE(最后发展到SSE4/4A),以及从Sandy Bridge开始支持的AVX等等都是SIMD(单指令多数据)指令集,它允许一个指令同时对多个数据进行处理以达到很大的吞吐量。Sandy Bridge/Ivy Bridge支持的AVX指令集可以一次处理256bit浮点指令,双精度浮点数长度为64bit,即通过AVX指令一次可以做四个双精度浮点运算。如前面给出的信息所示,Sandy Bridge/Ivy Bridge一个周期可以执行一次AVX浮点乘和一次AVX浮点加,也就是说一个周期可以做四个双精度浮点加和四个双精度浮点乘,故曰每周期可以做8个双精度浮点运算。这只是理论最大值,实际上水分很大,因为前提是必须所处理的完全是AVX 256bit指令,但实际中是做不到的,能利用上AVX指令集的只是实际计算程序中的某些部分而已(这需要编译器和操作系统的支持。如果写的时候专为AVX来调整代码编写方式可以更好地利用AVX来达到更好的性能)。另外,不可能总是恰好要算的是一条加法指令和一条乘法指令,比如传来的只有一串浮点加指令,那么乘法运算单元就空闲了,浮点性能也就浪费了一半。所以,虽然我们从前面列的数据中看到Sandy Bridge/Ivy Bridge得益于AVX而比Nehalem每周期能做的浮点运算次数高一倍,但这只是最理想的状况而已,而且这和实际表现出来的性能不是那么的密切。一般应用中前者比后者在同频同核数情况下性能高近一半,这主要还是因为CPU架构做了多方面改进带来的,具体说起来就比较复杂了,这里就不提了。可以说,如果所运行的程序对AVX优化较好,Sandy Bridge/Ivy Bridge表现的性能比Nehalem提升得会更多。

再来看XEON v3和v2的关系。Haswell相比Sandy Bridge/Ivy Bridge的一个主要改进是支持了AVX 2.0指令集,相比AVX有了一些改进,其中很关键的是支持了FMA3指令,这里FMA是Fused Multiply-Add(融合乘加)的缩写,FMA3是一种具体实现。原本,做result=a+(b*c)需要先做一次乘法再做一次加法,而利用FMA指令可以在一个周期内做完这个运算,所以可以认为做一次FMA运算等于做两次常规浮点运算。如前面列出的信息所示,Haswell的每个内核一个周期可以处理两个FMA指令,每条指令包含4个双精度浮点,一次FMA浮点运算又能当两次普通浮点运算来计,因此每个核每周期内满打满算可以做2*4*2=16次双精度浮点操作。由于支持了FMA,表面上看XEON v3比v2浮点性能高了一倍,但这种说法实际上水分巨大:哪可能要做的总是乘加运算?比如传来的就是一条AVX浮点乘指令,此时v3虽然支持FMA却也派不上用场,v3和v2都需要一个周期来完成,即表现出的性能相等。所以说,如果有人说v3比v2性能提升一倍那纯粹是天方夜谭,除非跑的是专门炫耀Haswell的程序,里面的运算全都是乘加。根据实际测试来看,Haswell跑现有的程序也就比Ivy Bridge性能高不到10%,但这很难说是支持FMA的功劳。以后的程序可能会有一些针对FMA专门进行优化,或在编译时使用相应的优化选项(如ifort里用-fma)而使v3有更好的性能,但不要抱太高期待。所以前面提到,买服务器时如果v3比v2贵一点可接受,但贵得太多就算了。

再来说说为什么如今AMD CPU的浮点性能为什么如此之烂。从推土机架构开始,即前面列的Bulldozer/Piledriver/Steamroller这一类,AMD就用了很糟糕的设计,两个核心作为一个模块,共用一个浮点单元,一个周期只能处理一次256bit FMA指令,而Haswell一个核就能同时处理两条256bit FMA指令,也就是说,论峰值浮点性能,现今AMD的U四个核才顶Haswell一个核。不过实际没这么夸张,抛开那些很虚的峰值性能数据,要达到如今XEON v2或v3的N个核的实际性能,同频情况下,如今的Opteron必须要用>2N个核。如果程序的并行效率很低,那么Opteron实际效能简直惨不忍睹,不管怎么算都远不如XEON划得来。所以说,如今做计算化学买AMD的U只有后悔的份。AMD的U的核数比较坑人,N个核才有N/2个浮点单元(想来,当年AMD还无耻地说Intel的Pentium D是胶水粘的,有点自己打脸的意味),但是整数性能还说得过去,整数单元和核数是相同的,但搞计算化学的人才不稀罕整数性能呢。

最后再说一下GPU。从峰值性能上看,GPU比起CPU弱点在于频率低,不支持SIMD,但它的浮点性能之所以胜于CPU在于流处理器数目多。以nVidia的高端的GTX Titan black为例,基础频率是0.889GHz,有2880个单精度浮点单元和960个双精度浮点单元,每个浮点单元每周期能做一次FMA指令,因此

单精度峰值浮点性能:0.889*2880*2=5120GFLOPs

双精度峰值浮点性能:0.889*960*2=1707GFLOPs

可见GTX Titan black峰值性能比前面举的E5-2690 v2的例子高了约一个数量级,但这水分太大,显然不能因为FMA就当成实际中有两倍处理能力,所以公平来说双精度浮点性能前者是后者4、5倍的样子。GPU的单精度浮点性能的确很好,性价比远胜于CPU,但一定要注意大多数消费级GPU的双精度性能其实不咋地。GTX Titan black价格比起同样流处理数目的GTX 780Ti贵出一倍,在我来看贵的主要道理不是因为它是烧包级,而是双精度性能能达到单精度的1/3,而这个比例对于GTX 780Ti仅为1/24!GTX 780Ti的基准频率为0.876GHz,单精度性能和GTX Titan black基本无异,但双精度峰值性能才区区210GFLOPs而已,要不把FMA满打满算记入峰值性能计算公式,那么还明显不如E5-2690 v2呢。

php对cpu浮点运算能力的要求,关于CPU的浮点运算能力计算相关推荐

  1. linux cpu平均负载,关于linux系统CPU篇---平均负载

    1.什么是平均负载?(load average) 平均负载是指单位时间内平均活跃进程数,包括可运行状态的进程数,以及不可中断状态的进程(如等待IO,等待硬件设备响应) 2.如何查看平均负载? 使用to ...

  2. 主板和cpu搭配表_主板和CPU如何搭配?主板和处理器搭配方法

    小白系统 免费的人工客服 点击联系 相信有很多小伙伴都有自己DIY电脑的时候,对于萌新来说,主板和CPU常常弄混,不知道该如何进行搭配,因为不同的主板和CPU是无法搭配的.比如Intel和AMD的CP ...

  3. cpu功耗排行_最全cpu性能排行榜 cpu性能排行天梯图

    cpu可以说是电脑的心脏,作为电脑的核心存在,cpu性能对电脑性能的影响不言而喻.虽然说因为人民币贬值,cpu价格全面上涨近10%,但是游戏还是得照玩呀,面对配置要求越来越高的新游戏,电脑性能跟不上怎 ...

  4. 海光国产CPU芯片和服务器,海光CPU芯片 一文看懂国产CPU!“造不如买”时代终

    CPU(中央处理器)是计算机系统的核心和大脑,也是国家大宗战略物资,系统复杂研发难度高.我国CPU 研发起步较早,但发展较为坎坷,步入正轨是在"十二五"之后.在国家集成电路产业政策 ...

  5. 超线程cpu的寄存器_操作系统之CPU知识扫盲

    前言 CPU的英文全称是(Central Processing Unit),中文意思翻译中央处理器,是计算机的主要设备之一,功能主要是解释计算机指令以及处理计算机软件中的数据.计算机的可编程性主要是指 ...

  6. 惠普服务器CPU位置,手把手教你换CPU 看惠普16核产品性能变化

    硬件升级是服务器维护经常遇到的问题,随着企业的发展,当原有服务器配置很难满足企业需求的时候,我们并不一定要更换原有服务器设备,可以通过对处理器.内存等组件进行升级,也能够很好的解决企业服务器瓶颈问题. ...

  7. 测试cpu单核性能软件,3DMark的CPU专用测试工具CPU Profile体验(含14款处理器跑分对比)...

    拼 命 加 载 中 ... 知名性能测试软件3DMark前几天推出了一个新的CPU专用测试工具CPU Profile,与已经有的3DMark的DirectX基准测试中包含的CPU测试不一样,3DMar ...

  8. idea pom cpu占有率_组装电脑哪个CPU好?如何选择CPU?2020年CPU推荐及分析。

    处理器(CPU) 处理器,就是我们一般最常说的CPU,是英文"Central Processing Unit"的首字母缩写,中文意思就是"中央处理器". 它在电 ...

  9. GPU和CPU是什么?GPU和CPU什么关系?GPU会取代CPU吗?

    GPU和CPU是什么?GPU和CPU什么关系?GPU会取代CPU吗? GPU是什么?与显卡是什么关系?安装在什么地方?有单独的GPU板卡吗? CPU和GPU区别是什么?GPU会取代CPU吗? GPU能 ...

最新文章

  1. Web 前端,易学难精,没有拿手的实战项目,怎么办?
  2. C#的基础琐碎总结-----委托
  3. win2k cannot set the docm proportites
  4. LDAP和Implementation
  5. 科大星云诗社动态20201208
  6. Windows下配置环境变量和需不需要重启?
  7. java servlet 转发和重定向_JavaWeb(一)Servlet中乱码解决与转发和重定向的区别
  8. 上午写了一段代码,下午就被开除了,奇怪的知识又增加了
  9. webpack 生成dist,打zip包
  10. Pentium的指令系统(2)——Pentium的指令系统
  11. php 获取url中的参数
  12. JS 把数组按倒序排列
  13. 使用ensembl的API下载数据
  14. win7计算机自动关机设置在哪里设置方法,win7自动关机怎么设置?W7自动关机命令设置方法...
  15. 阿里云云计算专业认证考试(ACP级)
  16. 中国 省会 地级市 经纬度 city array
  17. 保险保费基本计算规则
  18. 使用Python计算身份证号码最后检验位
  19. linux调整笔记本色彩,linux 调节笔记本屏幕亮度
  20. 两化融合贯标是指什么

热门文章

  1. python-docx 实现分栏
  2. niva mysql_OpenStack juno版 安装配置——第五章(Nova)
  3. 科研不是比赛,而是一种对未知和完美的自我追求——跟邢波(Eric Xing)面对面聊科研
  4. 各种中央空调型式系统特点总结
  5. 飞鸽快信微信消息-LINUX服务器告警、状态监控预警、程序报警提醒等消息实时推送工具
  6. Python游戏开发,pygame模块,Python实现愤怒的小鸟
  7. 用UPUPW配置服务器环境竟然这么简单
  8. python线程池(threadpool)模块使用python2.7
  9. idea中git账号输错后如何删除缓存账户信息重新输入正确信息
  10. 监控过程组--项目管理