整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢(xún)熱線(xiàn):

          一文看懂CPU算力測(cè)算方法

          一文看懂CPU算力測(cè)算方法

          到CPU算力,就不能不提到FLOPS了。



          FLOPS是CPU每秒浮點(diǎn)運(yùn)算次數(shù),也稱(chēng)為每秒峰值速度,英語(yǔ)是Floating-point operations per second;簡(jiǎn)寫(xiě)就是FLOPS,flops 或者 flop/s。

          在多數(shù)情況下,測(cè)算FLOPS比測(cè)算每秒指令數(shù)(IPS)要準(zhǔn)確。

          要測(cè)算FLOPS就要搞清楚浮點(diǎn)數(shù)的精度。



          浮點(diǎn)(floating-point)指的是帶有小數(shù)的數(shù)值,浮點(diǎn)運(yùn)算就是小數(shù)的四則運(yùn)算,常用來(lái)測(cè)量計(jì)算機(jī)運(yùn)算速度或被用來(lái)估算計(jì)算機(jī)性能,特別是在科學(xué)計(jì)算領(lǐng)域會(huì)使用到大量的浮點(diǎn)運(yùn)算,對(duì)CPU的算力性能要求就比較高了。

          說(shuō)到浮點(diǎn)計(jì)算能力,就涉及到半精度、單精度、雙精度三種類(lèi)型,雙精度是64位的(FP64),單精度是32位的(FP32),半精度是16位的(FP16),半精度是英偉達(dá)在2002年搞出來(lái)的,雙精度和單精度是為了計(jì)算,而半精度更多是為了降低數(shù)據(jù)傳輸和存儲(chǔ)成本。

          雙精度浮點(diǎn)數(shù)

          單精度浮點(diǎn)數(shù)

          半精度浮點(diǎn)數(shù)

          雙精度、單精度、半精度都分成3部分,符號(hào)位,指數(shù)和尾數(shù)。

          不同精度只不過(guò)是指數(shù)位和尾數(shù)位的長(zhǎng)度不一樣。

          解析一個(gè)浮點(diǎn)數(shù)就5條規(guī)則

          1、如果指數(shù)位全零,尾數(shù)位是全零,那就表示0
          2、如果指數(shù)位全零,尾數(shù)位是非零,就表示一個(gè)很小的數(shù)(subnormal),計(jì)算方式 (?1)^signbit × 2^?126 × 0.fractionbits
          3、如果指數(shù)位全是1,尾數(shù)位是全零,表示正負(fù)無(wú)窮
          4、如果指數(shù)位全是1,尾數(shù)位是非零,表示不是一個(gè)數(shù)NAN
          5、剩下的計(jì)算方式為 (?1)^signbit × 2^(exponentbits?127) × 1.fractionbits
          常用的語(yǔ)言幾乎都不提供半精度的浮點(diǎn)數(shù),這時(shí)候需要我們自己轉(zhuǎn)化。

          所以,要做算力規(guī)劃時(shí)要結(jié)合其使用場(chǎng)景來(lái)分析,其實(shí)很多場(chǎng)景對(duì)于精度要求也沒(méi)那么高,例如:分布式深度學(xué)習(xí)里面,如果用半精度的話(huà),比起單精度來(lái)可以節(jié)省一半傳輸成本??紤]到深度學(xué)習(xí)的模型可能會(huì)有幾億個(gè)參數(shù),使用半精度傳輸還是非常有價(jià)值的。

          通常,在沒(méi)有特別明確算力算法的前提下,我們默認(rèn)都是按照雙精度去測(cè)算算力能力的。

          一般做算力規(guī)模分析時(shí)會(huì)明確算力單位如EFLOPS,或PFLOPS,這就需要自己根據(jù)情況去換算了,但都是通過(guò)FLOPS換算而來(lái)的。

          浮點(diǎn)計(jì)算值的換算單位:

          一個(gè)MFLOPS(megaFLOPS)等于每秒一佰萬(wàn)(=10^6)次的浮點(diǎn)運(yùn)算

          一個(gè)GFLOPS(gigaFLOPS)等于每秒拾億(=10^9)次的浮點(diǎn)運(yùn)算

          一個(gè)TFLOPS(teraFLOPS)等于每秒萬(wàn)億(=10^12)次的浮點(diǎn)運(yùn)算

          一個(gè)PFLOPS(petaFLOPS)等于每秒千萬(wàn)億(=10^15)次的浮點(diǎn)運(yùn)算

          一個(gè)EFLOPS(exaFLOPS)等于每秒百億億(=10^18)次的浮點(diǎn)運(yùn)算

          一個(gè)ZFLOPS(zettaFLOPS)等于每秒十萬(wàn)京(=10^21)次的浮點(diǎn)運(yùn)算


          對(duì)于FLOPS的計(jì)算公式為: FLOPS=CPU核數(shù)*單核主頻*CPU單個(gè)周期浮點(diǎn)計(jì)算值*1000000

          只要我們知道CPU的型號(hào),就可以到對(duì)應(yīng)的CPU廠(chǎng)商網(wǎng)站上查詢(xún)相關(guān)參數(shù)了。

          下面我們拿intel的CPU為例,到Intel官網(wǎng)進(jìn)行查詢(xún),網(wǎng)址如下:https://ark.intel.com/content/www/us/en/ark/search.html

          輸入具體的CPU型號(hào),如 6240R,進(jìn)入對(duì)應(yīng)參數(shù)頁(yè)面。

          https://ark.intel.com/content/www/us/en/ark/products/199343/intel-xeon-gold-6240r-processor-35-75m-cache-2-40-ghz.html





          CPU單個(gè)周期浮點(diǎn)計(jì)算值有點(diǎn)復(fù)雜,具體如下表

          instruction set(指令集)

          每時(shí)鐘周期的單精度運(yùn)算次數(shù)

          每時(shí)鐘周期的雙精度運(yùn)算次數(shù)

          SSE(128-bits)

          8

          4

          AVX(256-bits)

          16

          8

          AXV2(256-bits)

          32

          16

          AXV256(512-bits)

          64

          16(FMA=1)
          32(FMA=2)

          那么,6240R的核數(shù)為10,主頻為2.4Hz,每時(shí)鐘周期的雙精度運(yùn)算次數(shù)32,其單顆CPU的GFLOPS算力算法就是24*2.4*32=1843.2 GFLOPS

          索性將之前用過(guò)的CPU都拿出來(lái)分析了一下,順便按照CPU計(jì)算能力排個(gè)序。

          們的最終目標(biāo)是求下面的積分算式:

          integral-function


          1.先看求和的方法:

          求整數(shù)數(shù)列的和:

          function sum_integers(a, b) {
              return a > b ? 0
                  : a + sum_integers(a+1, b);
          }

          求立方和:

          function sum_cubes(a, b) {
              return a > b ? 0
                  : cube(a) + sum_cubes(a+1, b);
          }

          求下面的序列之和:

          求pi的序列

          function pi_sum(a, b) {
              return a > b ? 0
                  : 1 / (a * (a+2)) + pi_sum(a+4, b);
          }

          該值收斂于pi/8.

          2.提取抽象部分

          數(shù)學(xué)上的求和公式為:

          sigma notation

          抽象到數(shù)學(xué)方程為:

          function sum(term, a, next, b) {
              return a > b ? 0
                  : term(a) + sum(term, next(a), next, b);
          }

          應(yīng)用上面的公式重新計(jì)算立方和:

          function inc(n) {
              return n + 1;
          }
          
          function sum_cubes(a, b) {
              return sum(cube, a, inc, b);
          }

          求整數(shù)之和:

          function identity(x) {
              return x;
          }
          function sum_integers(a, b) {
              return sum(identity, a, inc, b);
          }

          最后是pi值的求和:

          function pi_sum(a, b) {
              function pi_term(x) {
                  return 1 / (x * (x+2));
              }
              function pi_next(x) {
                  return x + 4;
              }
              return sum(pi_term, a, pi_next, b);
          }

          3.求積分

          積分公式為:

          積分公式

          方程為:

          function integral(f, a, b, dx) {
              function add_dx(x) {
                  return x + dx;
              }
              return sum(f, a + dx/2, add_dx, b) * dx;
          }
          integral(cube, 0, 1, 0.01);

          如此便能應(yīng)用簡(jiǎn)單的抽象解決問(wèn)題。

          PC端進(jìn)行網(wǎng)頁(yè)制作時(shí),經(jīng)常使用固定像素并且內(nèi)容居中的網(wǎng)頁(yè)布局,為了適應(yīng)小屏幕的設(shè)備,在移動(dòng)設(shè)備和跨平臺(tái)(響應(yīng)式)網(wǎng)頁(yè)開(kāi)發(fā)過(guò)程中,多數(shù)使用流式布局,下面我們就對(duì)流式布局進(jìn)行詳細(xì)介紹。

          流式布局是一種等比例縮放布局方式,在CSS代碼中使用百分比來(lái)設(shè)置寬度,也稱(chēng)百分比自適應(yīng)的布局。 流式布局實(shí)現(xiàn)方法是將CSS固定像素寬度換算為百分比寬度。換算公式如下: 目標(biāo)元素寬度/父盒子寬度=百分?jǐn)?shù)寬度 下面通過(guò)一個(gè)案例來(lái)演示固定布局如何轉(zhuǎn)換為百分比布局,如demo4-1.html 所示。

          <!DOCTYPE html>
          <html lang="en">
          <head>
          	<meta charset="UTF-8">
          	<title>固定布局轉(zhuǎn)換為百分比布局</title>
          	<style type="text/css">
          		body>*{ width: 980px; height:auto; margin:0 auto;
          				margin-top:10px;
          				border:1px solid #000; padding:5px;}
          		header{ height:50px;}
          		section{ height: 300px;}
          		footer{ height:30px;}
          		section>*{ height:100%; border:1px solid #000; float:left;}
          		aside{ width:250px;}
          		article{ width:700px; margin-left:10px;}
          	</style>
          
          </head>
          <body>
          <header>header</header>
          <nav>nav</nav>
          <section>
          	<aside>aside</aside>
          	<article>article</article>
          </section>
          <footer> footer</footer>
          </body>
          </html>
          

          打開(kāi)Chrome瀏覽器訪(fǎng)問(wèn)demo4-1.html,頁(yè)面效果如下圖所示。

          可以嘗試改變?yōu)g覽器窗口的大小,頁(yè)面元素的大小不會(huì)隨瀏覽器窗口改變,如下圖所示。

          下面修改demo4-1樣式代碼,將所有寬度修改為百分比的形式,具體如下:

          	<style type="text/css">
          		body>*{ width:95%; height:auto; margin:0 auto; margin-top:10px;
                         border:1px solid #000; padding :5px; }
          		header{ height:50px; }
          		section{ height: 300px; }
          		footer{ height:30px;}
          		section>*{ height:100%; border:1px solid #000; float:left; }
          		aside{ width:25.510204%; /*250÷980*/}
          		article{ width: 71.428571%; /*700÷980*/margin-left:1.0204088%;}
          	</style>
          

          刷新頁(yè)面,縮小瀏覽器,頁(yè)面按百分比隨瀏覽器逐漸縮小,顯示完整,頁(yè)面效果如下圖所示:


          主站蜘蛛池模板: 中文字幕不卡一区| 精品国产一区二区三区免费看| 国产在线精品一区二区三区直播| 久久99国产一区二区三区| 精品人妻少妇一区二区三区在线| 中文字幕人妻丝袜乱一区三区| 一区国严二区亚洲三区| 国产一区二区三精品久久久无广告| 国产人妖视频一区二区| tom影院亚洲国产一区二区| 亚洲国产AV无码一区二区三区 | 国产成人久久精品麻豆一区| 亚洲av午夜精品一区二区三区| 亚洲一区二区三区香蕉| 麻豆AV无码精品一区二区| 国产精品一区二区电影| 国产一区二区四区在线观看| 骚片AV蜜桃精品一区| 免费无码一区二区三区蜜桃大 | 国产精久久一区二区三区| 久久亚洲综合色一区二区三区| 中文字幕av人妻少妇一区二区| 一区二区三区在线免费| 久久er99热精品一区二区 | 国产av夜夜欢一区二区三区| 国产一区二区女内射| 狠狠做深爱婷婷久久综合一区| 中文字幕人妻丝袜乱一区三区| 五十路熟女人妻一区二区| 国产一区麻豆剧传媒果冻精品| 亚洲欧美日韩一区二区三区| 久久精品无码一区二区app | 丰满爆乳无码一区二区三区| 超清无码一区二区三区| 亚洲A∨精品一区二区三区下载| 国产一区二区三区在线视頻 | 亚洲乱码国产一区网址| 国产精品一区视频| 亚洲国产一区在线| 中文字幕在线一区二区三区| 99国产精品欧美一区二区三区|