處理器和GPU的計(jì)算能力如何計(jì)算的?
(一) CPU的浮點(diǎn)計(jì)算性能公式
我們常用雙精度浮點(diǎn)運(yùn)算能力衡量一個(gè)處理器的科學(xué)計(jì)算的能力,就是處理64bit小數(shù)點(diǎn)浮動(dòng)數(shù)據(jù)的能力
intel的最新cpu支持高級(jí)矢量指令集AVX2、AVX512, 其中AVX2的處理器的單指令的長(zhǎng)度是256bit,每顆intelCPU包含2個(gè)FMA,一個(gè)FMA一個(gè)時(shí)鐘周期可以進(jìn)行2次乘或者加的運(yùn)算,那么這個(gè)處理器在1個(gè)核心1個(gè)時(shí)鐘周期可以執(zhí)行256bit*2FMA*2M/A/64=16次浮點(diǎn)運(yùn)算,也稱為16FLOPs,就是Floating Point Operations Per Second;
支持AVX512的處理器的單指令的長(zhǎng)度是512Bit,每個(gè)intel核心假設(shè)包含2個(gè)FMA,一個(gè)FMA一個(gè)時(shí)鐘周期可以進(jìn)行2次乘或者加的運(yùn)算,那么這個(gè)處理器在1個(gè)核心1個(gè)時(shí)鐘周期可以執(zhí)行512bit*2FMA*2M/A/64=32次浮點(diǎn)運(yùn)算,也稱為32FLOPs,
就是說(shuō)理論上后者的運(yùn)算能力其實(shí)是前者的一倍,但是實(shí)際中不可能達(dá)到,因?yàn)檫M(jìn)行更長(zhǎng)的指令運(yùn)算,流水線之間更加密集,但核心頻率會(huì)降低;導(dǎo)致整個(gè)處理器的能力降低;
一個(gè)處理器的計(jì)算能力和核心的個(gè)數(shù),核心的頻率,核心單時(shí)鐘周期的能力三個(gè)因素有關(guān)系
例如:現(xiàn)在intel purley platform的旗艦skylake 8180是28Core@2.5GHZ,支持AVX512,其理論雙精度浮點(diǎn)性能是:28Core*2.5GHZ*32FLOPs/Cycle=2240GFLPs=2.24TFLOPs
例如:現(xiàn)在intel purley platform的旗艦cascade lake Xeon Platinum 8280是28核@2.7GHZ,支持AVX512,其理論雙精度浮點(diǎn)性能是:28Core*2.7GHZ*32FLOPs/Cycle=2419.2GFLPs=2.4192TFLOPs
但是還是要注意并不是所有的處理器都有支持AVX512的指令集,也并不是每個(gè)支持處理器都有2個(gè)FMA的運(yùn)算單元。
(二) GPU的浮點(diǎn)性能計(jì)算公式
GPU能做的CPU都能做,CPU能做的GPU卻不一定能夠做到,GPU一般一個(gè)時(shí)鐘周期可以操作64bit的數(shù)據(jù),1個(gè)核心實(shí)現(xiàn)1個(gè)FMA。
這個(gè)GPU的計(jì)算能力的單元是:64bit*1FMA*2M/A/64bit=2FLOPs/Cycle
GPU的計(jì)算能力也是一樣和核心個(gè)數(shù),核心頻率,核心單時(shí)鐘周期能力三個(gè)因素有關(guān)。
但是架不住GPU的核心的數(shù)量多呀
例如:對(duì)現(xiàn)在nvidia 的pascal架構(gòu)超算卡--- Tesla P100,是1792核@1.328GHz,其理論的雙精度浮點(diǎn)性能是:1792Core*1.328GHZ*2FLOPs/Cycle=4759.552GFLOPs=4.7TFLOPs
例如:對(duì)現(xiàn)在nvidia 的Volta架構(gòu)的超算卡---Tesla V100,是2560核@1.245GHz,其理論的雙精度浮點(diǎn)性能是:2560Core*1.245GHZ*2FLOPs/Cycle=6374.4GFLOPs=6.3TFLOPs
現(xiàn)在ML繁榮的時(shí)代,對(duì)64bit長(zhǎng)度的浮點(diǎn)運(yùn)算需求不是那么的大,反而是32bit或者16bit、8bit INT、4bit INT的運(yùn)算需求比較大。
因此nvidia 最新的tesla一直在強(qiáng)調(diào)單精度甚至半精度,turing就是這樣的。
intel為了加速這些計(jì)算,也在其處理器中實(shí)現(xiàn)了一些加速低精度運(yùn)算的指令。