隨著國家大力發(fā)展數(shù)字經(jīng)濟(jì),算力的提升和普惠變得越來越重要。在數(shù)字化時(shí)代,算力已成為推動(dòng)科技發(fā)展和創(chuàng)新的關(guān)鍵要素。它不僅僅是衡量計(jì)算機(jī)處理速度的標(biāo)準(zhǔn),還涉及計(jì)算機(jī)系統(tǒng)或設(shè)備執(zhí)行計(jì)算任務(wù)的能力、數(shù)據(jù)處理能力以及解決復(fù)雜計(jì)算問題的能力。那么算力到底是什么呢?
簡(jiǎn)單了解算力
算力(Computational Power)在計(jì)算機(jī)科學(xué)和計(jì)算領(lǐng)域中是一個(gè)重要概念,它指的是計(jì)算機(jī)系統(tǒng)或設(shè)備執(zhí)行數(shù)值計(jì)算和處理任務(wù)的能力。提升算力意味著可以更快地執(zhí)行復(fù)雜的計(jì)算任務(wù),從而提高計(jì)算的效率和性能。簡(jiǎn)單來說,算力決定了計(jì)算機(jī)處理信息的速度和效率,直接影響我們使用電子設(shè)備的體驗(yàn),例如網(wǎng)頁加載速度和游戲流暢度等。
在數(shù)字經(jīng)濟(jì)時(shí)代,算力是新的生產(chǎn)力,為加強(qiáng)數(shù)字政府建設(shè)、激活數(shù)據(jù)要素潛能以及實(shí)現(xiàn)各行各業(yè)的數(shù)字化轉(zhuǎn)型提供了動(dòng)力。據(jù)中國信息通信研究所的測(cè)算,每投入1元的算力,可以帶動(dòng)3至4元的經(jīng)濟(jì)產(chǎn)出。算力的提升對(duì)經(jīng)濟(jì)具有巨大的影響力。根據(jù)統(tǒng)計(jì)數(shù)據(jù)顯示,每提高一個(gè)算力指數(shù)點(diǎn),可以帶動(dòng)數(shù)字經(jīng)濟(jì)增長 0.36% 和 GDP 增長 0.17%。
那算力大小具體是如何衡量的呢?這里就必須提及浮點(diǎn)運(yùn)算,接下來我們來了解下浮點(diǎn)運(yùn)算這個(gè)概念。
什么是浮點(diǎn)運(yùn)算
算力最基本的計(jì)量單位是 FLOPS,英文 Floating-point Operations Per Second,即每秒執(zhí)行的浮點(diǎn)運(yùn)算次數(shù)。浮點(diǎn)運(yùn)算其實(shí)就是帶小數(shù)的加減乘除運(yùn)算。
舉個(gè)例子:1.1+2.2 就是典型的浮點(diǎn)運(yùn)算,估計(jì)你已經(jīng)心算出結(jié)果是 3.3 了。不過對(duì)計(jì)算機(jī)來說,這個(gè)問題并不簡(jiǎn)單。我們知道,計(jì)算機(jī)是以 0 和 1 構(gòu)成的二進(jìn)制數(shù)字進(jìn)行運(yùn)算的,比如在基礎(chǔ)的二進(jìn)制里,1 就是 1,2 就變成了 “10”,3 是 “11”,這也帶來一個(gè)問題:計(jì)算機(jī)能夠處理的數(shù)字只有整數(shù)。
其實(shí),0.1 可以看成是1除以10的結(jié)果,我們想讓計(jì)算機(jī)計(jì)算一個(gè)帶小數(shù)點(diǎn)的數(shù)字,只要告訴 CPU 這是一個(gè)被 1 后面加了多少個(gè) 0 整除的整數(shù)就行了。這樣一來,計(jì)算機(jī)在處理小數(shù)點(diǎn)的時(shí)候,就多了好幾個(gè)運(yùn)算步驟。浮點(diǎn)運(yùn)算的速度也就成了衡量計(jì)算機(jī)性能的標(biāo)準(zhǔn)。
算力的計(jì)量單位,除了 FLOPS,從小到大還有:
KFLOPS(每秒1000次浮點(diǎn)運(yùn)算,10^3)
MFLOPS(每秒1百萬次,10^6)
GFLOPS(每秒10億次,10^9)
TFLOPS(每秒1萬億次,10^12)
PFLOPS(每秒1000萬億次,10^15)
EFLOPS(每秒100億億次,10^18)
浮點(diǎn)數(shù)
浮點(diǎn)數(shù)的浮點(diǎn)就是指它的小數(shù)點(diǎn)的位置是可以是漂浮不定的。這怎么理解呢?其實(shí),浮點(diǎn)數(shù)是采用科學(xué)計(jì)數(shù)法的方式來表示的,例如十進(jìn)制小數(shù) 1.234,用科學(xué)計(jì)數(shù)法表示,可以有多種方式:
1.234 = 1.234 * 10^0 1.234 = 12.34 * 10^-1 1.234 = 123.4 * 10^-2 ...
用這種科學(xué)計(jì)數(shù)法的方式表示小數(shù)時(shí),小數(shù)點(diǎn)的位置就變得漂浮不定了。使用同樣的規(guī)則,對(duì)于二進(jìn)制數(shù),我們也可以用科學(xué)計(jì)數(shù)法表示,也就是說把基數(shù) 10 換成 2 即可。那浮點(diǎn)數(shù)如何表示數(shù)字?其實(shí)浮點(diǎn)數(shù)是采用科學(xué)計(jì)數(shù)法來表示一個(gè)數(shù)字的,它的格式可以寫成這樣:
V = (-1)^S * M * R^E
其中各個(gè)變量的含義如下:
S:符號(hào)位,取值 0 或 1,決定一個(gè)數(shù)字的符號(hào),0 表示正,1 表示負(fù)
M:尾數(shù),用小數(shù)表示,例如前面所看到的 1.234 * 10^0,1.234 就是尾數(shù)
R:基數(shù),表示十進(jìn)制數(shù) R 就是 10,表示二進(jìn)制數(shù) R 就是 2
E:指數(shù),用整數(shù)表示,例如前面看到的 10^-1,-1 即是指數(shù)
如果我們要在計(jì)算機(jī)中,用浮點(diǎn)數(shù)表示一個(gè)數(shù)字,只需要確認(rèn)這幾個(gè)變量即可。
舉個(gè)例子:將十進(jìn)制數(shù) 0.125 轉(zhuǎn)換為浮點(diǎn)數(shù),我們可以使用二進(jìn)制浮點(diǎn)數(shù)表示。
符號(hào)位(S):由于數(shù)字為正數(shù),所以 S = 0。
尾數(shù)(M):將小數(shù)部分轉(zhuǎn)換為二進(jìn)制。0.125 的二進(jìn)制表示為 0.001。
基數(shù)(R):對(duì)于二進(jìn)制數(shù),R = 2。
指數(shù)(E):確定指數(shù)的值。將 0.125 轉(zhuǎn)換為科學(xué)計(jì)數(shù)法形式可得 0.125 = 1.0 * 2^-3。因此,指數(shù) E = -3。
代入公式:V = (-1)^S * M * R^E
將以上值代入公式可得:
V = (-1)^0 * 0.001 * 2^-3 = 0.001 * 0.125
運(yùn)算結(jié)果為 0.000001。因此十進(jìn)制數(shù) 0.125 在二進(jìn)制浮點(diǎn)數(shù)表示下為 0.000001。
計(jì)算機(jī)中使用有限的連續(xù)字節(jié)來保存浮點(diǎn)數(shù),而 IEEE 754標(biāo)準(zhǔn)定義了三種常見的浮點(diǎn)數(shù)格式:?jiǎn)尉?、雙精度和擴(kuò)展雙精度,它們適用于不同的計(jì)算需求。一般來說,單精度適合一般計(jì)算,雙精度適合科學(xué)計(jì)算,擴(kuò)展雙精度適合高精度計(jì)算。一個(gè)遵循 IEEE 754標(biāo)準(zhǔn)的系統(tǒng)必須支持單精度類型(強(qiáng)制類型),最好也支持雙精度類型(推薦類型),而擴(kuò)展雙精度類型則是可選的。
單精度浮點(diǎn)數(shù)(FP32)
單精度浮點(diǎn)數(shù)格式(英語:single-precision floating-point format)是一種數(shù)據(jù)類型,在計(jì)算機(jī)存儲(chǔ)器中占用 4 個(gè)字節(jié)(32 bits),利用 “浮點(diǎn)”(浮動(dòng)小數(shù)點(diǎn))的方法,可以表示一個(gè)范圍很大的數(shù)值。在 IEEE 754-2008 的定義中,32-bit base 2 格式被正式稱為 binary32 格式。這種格式在 IEEE 754-1985 被定義為 single,即單精度。需要注意的是,在更早的一些計(jì)算機(jī)系統(tǒng)中,也存在著其他 4 字節(jié)的浮點(diǎn)數(shù)格式。
第 1 位表示正負(fù),中間 8 位表示指數(shù),后 23 位儲(chǔ)存有效數(shù)位(有效數(shù)位是 24 位)。第一位的正負(fù)號(hào) 0 代表正,1 代表負(fù)。中間八位共可表示 2^8 = 256 個(gè)數(shù),指數(shù)可以是二補(bǔ)碼;或 0 到 255,0 到 126 代表 -127 到 -1,127 代表零,128-255 代表 1-128。有效數(shù)位最左手邊的 1 并不會(huì)儲(chǔ)存,因?yàn)樗欢ù嬖冢ǘM(jìn)制的第一個(gè)有效數(shù)字必定是1)。換言之,有效數(shù)位是 24 位,實(shí)際儲(chǔ)存 23 位。
舉個(gè)例子:要將十進(jìn)制數(shù) 0.125 轉(zhuǎn)換為單精度浮點(diǎn)數(shù)(32 位)。
遵循 IEEE 754 標(biāo)準(zhǔn)的表示方法,可以按照以下步驟進(jìn)行轉(zhuǎn)換:
符號(hào)位(Sign):由于數(shù)字為正數(shù),所以符號(hào)位為 0。
尾數(shù)(Fraction):將小數(shù)部分轉(zhuǎn)換為二進(jìn)制。0.125 的二進(jìn)制表示為 0.001。
指數(shù)(Exponent):指數(shù)的偏移量為 127。由于 0.125 可以表示為 1.0 × 2^(-3),指數(shù)為 -3。加上偏移量后,實(shí)際指數(shù)為 -3 + 127 = 124。將 124 轉(zhuǎn)換為二進(jìn)制得到 01111100。
組合位:將符號(hào)位、指數(shù)位和尾數(shù)位組合在一起,得到單精度浮點(diǎn)數(shù)的二進(jìn)制表示。
最終的二進(jìn)制表示為:0 01111100 00100000000000000000000
雙精度浮點(diǎn)數(shù)(FP64)
雙精度浮點(diǎn)數(shù)(Double Precision Floating Point),也稱為 FP64,是一種浮點(diǎn)數(shù)數(shù)據(jù)類型,用于在計(jì)算機(jī)中表示和進(jìn)行高精度的浮點(diǎn)數(shù)運(yùn)算。FP64 使用 64 個(gè)比特位(8 個(gè)字節(jié))來表示一個(gè)浮點(diǎn)數(shù),其中 1 位用于表示符號(hào)位(正負(fù)號(hào)),11 位用于表示指數(shù),52 位用于表示尾數(shù)。
雙精度浮點(diǎn)數(shù)的表示形式同樣采用科學(xué)計(jì)數(shù)法,即 ±M × 2^E,其中 M 為尾數(shù),E 為指數(shù)。通過使用更多的指數(shù)位和尾數(shù)位,F(xiàn)P64 相對(duì)于單精度浮點(diǎn)數(shù)能夠表示更廣范圍和更高精度的數(shù)值。
舉個(gè)例子:將十進(jìn)制數(shù) 0.125 轉(zhuǎn)換為雙精度浮點(diǎn)數(shù)(64位)。
遵循 IEEE 754 標(biāo)準(zhǔn)的表示方法,可以按照以下步驟進(jìn)行轉(zhuǎn)換:
符號(hào)位(Sign):由于數(shù)字為正數(shù),所以符號(hào)位為 0。
尾數(shù)(Fraction):將小數(shù)部分轉(zhuǎn)換為二進(jìn)制。0.125 的二進(jìn)制表示為 0.001。
指數(shù)(Exponent):指數(shù)的偏移量為 1023。由于 0.125 可以表示為 1.0 × 2^(-3),指數(shù)為 -3。加上偏移量后,實(shí)際指數(shù)為 -3 + 1023 = 1020。將 1020 轉(zhuǎn)換為二進(jìn)制得到 01111111100。
組合位:將符號(hào)位、指數(shù)位和尾數(shù)位組合在一起,得到雙精度浮點(diǎn)數(shù)的二進(jìn)制表示。
最終的二進(jìn)制表示為:0 01111111100 0010000000000000000000000000000000000000000000000000
雙精度浮點(diǎn)數(shù)的取值范圍約為 ±4.9 × 10^-324 到 ±1.8 × 10^308,并提供大約 15 到 16 位有效數(shù)字的精度。相比于單精度浮點(diǎn)數(shù),雙精度浮點(diǎn)數(shù)能夠處理更大范圍的數(shù)值和提供更高的精度,適用于對(duì)精確性要求較高的計(jì)算任務(wù)。
雙精度浮點(diǎn)數(shù)常用于科學(xué)計(jì)算、工程應(yīng)用、金融分析和高性能計(jì)算等領(lǐng)域。它在這些領(lǐng)域中被廣泛用于處理實(shí)數(shù)數(shù)據(jù),如數(shù)值模擬、大規(guī)模計(jì)算、天文學(xué)、物理學(xué)和工程計(jì)算等。
然而,需要注意的是,雙精度浮點(diǎn)數(shù)的存儲(chǔ)空間和計(jì)算開銷相對(duì)于單精度浮點(diǎn)數(shù)更高。在某些情況下,如果對(duì)精度要求不高或者計(jì)算資源有限,可以考慮使用單精度浮點(diǎn)數(shù)進(jìn)行計(jì)算,以提高計(jì)算效率和節(jié)省內(nèi)存消耗。
浮點(diǎn)數(shù)的舍入
由于浮點(diǎn)數(shù)計(jì)算過程中丟失了精度,浮點(diǎn)運(yùn)算的性質(zhì)與數(shù)學(xué)運(yùn)算有所不同。任何有效數(shù)上的運(yùn)算結(jié)果,通常都存放在較長的寄存器中,當(dāng)結(jié)果被放回浮點(diǎn)格式時(shí),必須將多出來的比特丟棄。IEEE 標(biāo)準(zhǔn)列出 4 種不同的方法:
舍入到最接近:舍入到最接近,在一樣接近的情況下偶數(shù)優(yōu)先(Ties To Even,這是默認(rèn)的舍入方式):會(huì)將結(jié)果舍入為最接近且可以表示的值,但是當(dāng)存在兩個(gè)數(shù)一樣接近的時(shí)候,則取其中的偶數(shù)(在二進(jìn)制中是以0結(jié)尾的)。
朝 +∞ 方向舍入:會(huì)將結(jié)果朝正無限大的方向舍入。
朝 -∞ 方向舍入:會(huì)將結(jié)果朝負(fù)無限大的方向舍入。
朝 0 方向舍入:會(huì)將結(jié)果朝 0 的方向舍入。
單、雙精度的應(yīng)用場(chǎng)景
單精度浮點(diǎn)數(shù)通常應(yīng)用在需要較高計(jì)算速度的場(chǎng)景,例如嵌入式系統(tǒng)和移動(dòng)設(shè)備。在這些應(yīng)用中,對(duì)于一些實(shí)時(shí)性要求較高的任務(wù),如圖形渲染、音視頻處理等,單精度浮點(diǎn)數(shù)能夠提供足夠的精度,并且在存儲(chǔ)和計(jì)算上更加高效,能夠滿足實(shí)時(shí)性和資源限制的需求。此外,單精度浮點(diǎn)數(shù)也廣泛應(yīng)用于科學(xué)研究和工程領(lǐng)域中的數(shù)值計(jì)算,包括求解方程、模擬物理過程等。在這些領(lǐng)域中,單精度浮點(diǎn)數(shù)的精度已經(jīng)足夠滿足大部分的計(jì)算需求,同時(shí)可以提高計(jì)算速度和節(jié)省存儲(chǔ)空間。
雙精度浮點(diǎn)數(shù)主要應(yīng)用于需要更高精度的場(chǎng)景,如科學(xué)計(jì)算、工程計(jì)算、金融分析等。在這些領(lǐng)域中,對(duì)計(jì)算結(jié)果的精確性要求較高,需要更多的有效數(shù)字來表示和處理實(shí)數(shù)。雙精度浮點(diǎn)數(shù)能夠提供更高的精度和更大的表示范圍,能夠處理更復(fù)雜和精細(xì)的計(jì)算任務(wù)。在科學(xué)計(jì)算中,如天文學(xué)、數(shù)值模擬等領(lǐng)域,雙精度浮點(diǎn)數(shù)常常用于求解復(fù)雜的數(shù)學(xué)模型和算法,以獲得更準(zhǔn)確的結(jié)果。在金融分析中,雙精度浮點(diǎn)數(shù)可以處理更大的數(shù)值范圍和更高的精度,確保計(jì)算結(jié)果的準(zhǔn)確性和可靠性。
總之,選擇單精度還是雙精度浮點(diǎn)數(shù)應(yīng)根據(jù)具體應(yīng)用的需求來決定,需要權(quán)衡計(jì)算速度、精度要求和資源限制等因素。單精度浮點(diǎn)數(shù)適用于對(duì)計(jì)算速度要求較高且精度要求不是特別嚴(yán)格的場(chǎng)景,而雙精度浮點(diǎn)數(shù)適用于對(duì)精度要求更高的科學(xué)計(jì)算和工程領(lǐng)域。
CPU 和 GPU 的算力計(jì)算
目前服務(wù)器的算力主要包括 CPU 和 GPU 等不同芯片產(chǎn)生的算力。那具體到每臺(tái)服務(wù)器的算力,究竟如何計(jì)算呢?
CPU 的算力計(jì)算
我們以 CPU 的雙精度浮點(diǎn)運(yùn)算能力(FP64)為例,單個(gè) CPU 的算力,與 CPU 核心的個(gè)數(shù)、頻率、單時(shí)鐘周期浮點(diǎn)計(jì)算能力 3 個(gè)因素有關(guān)。
單 CPU 算力 = CPU 核數(shù) * 單核主頻 * 單周期浮點(diǎn)計(jì)算能力
以 Intel Cascade Lake 架構(gòu)的 Xeon Platinum 8280 為例,該 CPU 具有 28 個(gè)核心,主頻為 2.7GHz,并支持 AVX512 指令集。根據(jù)提供的信息,我們可以計(jì)算出該 CPU 的雙精度浮點(diǎn)運(yùn)算能力(FP64)。
首先,計(jì)算單個(gè) CPU 核心的單周期浮點(diǎn)計(jì)算能力:
單周期浮點(diǎn)計(jì)算能力 = 512bit * 2FMA * 2M/A / 64bit = 32 FLOPS/Cycle
然后,計(jì)算單個(gè) CPU 核心的峰值浮點(diǎn)運(yùn)算能力:
單個(gè) CPU 核心的峰值浮點(diǎn)運(yùn)算能力 = 單周期浮點(diǎn)計(jì)算能力 * 主頻 = 32 FLOPS/Cycle * 2.7 GHz
最后,計(jì)算整個(gè) CPU 的峰值浮點(diǎn)運(yùn)算能力:
單 CPU 算力 = CPU 核數(shù) * 單個(gè) CPU 核心的峰值浮點(diǎn)運(yùn)算能力 = 28 cores * 單個(gè)CPU核心的峰值浮點(diǎn)運(yùn)算能力
根據(jù)提供的數(shù)據(jù),計(jì)算得到:
單個(gè) CPU 核心的峰值浮點(diǎn)運(yùn)算能力 = 32 FLOPS/Cycle * 2.7 GHz = 86.4 GFLOPS
單 CPU 算力 = 28 cores * 86.4 GFLOPS = 2.4192 TFLOPS
因此,以 Intel Cascade Lake 架構(gòu)的 Xeon Platinum 8280 為例,該 CPU 的理論峰值雙精度浮點(diǎn)性能為 2.4192 TFLOPS。
注:該計(jì)算是理論值,實(shí)際性能可能受到多種因素(如指令級(jí)并行性、內(nèi)存訪問延遲等)的影響。
GPU 的算力計(jì)算
GPU 的算力與上面的計(jì)算方法類似。單個(gè) GPU 算力也是與核心個(gè)數(shù)、頻率、單時(shí)鐘周期能力 3 個(gè)因素有關(guān)。
以 NVIDIA Volta 架構(gòu)的 V100 為例,該 GPU 擁有 2560 個(gè)雙精度浮點(diǎn)核心(FP64 cores),主頻為 1.530GHz。
根據(jù)提供的信息,我們可以計(jì)算出該 GPU 的雙精度浮點(diǎn)運(yùn)算能力(FP64)。
首先,計(jì)算單個(gè) GPU 核心的單周期浮點(diǎn)計(jì)算能力:
單周期浮點(diǎn)計(jì)算能力 = 64bit * 1FMA * 2M/A / 64bit = 2 FLOPS/Cycle
然后,計(jì)算單個(gè) GPU 核心的峰值浮點(diǎn)運(yùn)算能力:
單個(gè) GPU 核心的峰值浮點(diǎn)運(yùn)算能力 = 單周期浮點(diǎn)計(jì)算能力 * 主頻 = 2 FLOPS/Cycle * 1.530 GHz
最后,計(jì)算整個(gè) GPU 的峰值浮點(diǎn)運(yùn)算能力:
單 GPU 算力 = GPU 核數(shù) * 單個(gè) GPU 核心的峰值浮點(diǎn)運(yùn)算能力 = 2560 cores * 單個(gè) GPU 核心的峰值浮點(diǎn)運(yùn)算能力
根據(jù)提供的數(shù)據(jù),計(jì)算得到:
單個(gè) GPU 核心的峰值浮點(diǎn)運(yùn)算能力 = 2 FLOPS/Cycle * 1.530 GHz = 3.060 GFLOPS
單 GPU 算力 = 2560 cores * 3.060 GFLOPS = 7833 GFLOPS = 7.833 TFLOPS
因此,以 NVIDIA Volta 架構(gòu)的 V100 為例,該 GPU 的理論峰值雙精度浮點(diǎn)性能為 7.833 TFLOPS。
注:該計(jì)算是理論值,實(shí)際性能可能受到多種因素(如內(nèi)存帶寬、功耗限制等)的影響。
聊了這么多,相信大家對(duì) CPU、GPU 的算力計(jì)算和浮點(diǎn)運(yùn)算都有了一定的了解,雖然看起來比較復(fù)雜,其實(shí)還是比較好理解的。大家也可以收藏下這篇內(nèi)容,以備不時(shí)之需。
審核編輯:劉清
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7484瀏覽量
163761 -
二進(jìn)制
+關(guān)注
關(guān)注
2文章
795瀏覽量
41643 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7488瀏覽量
87848 -
浮點(diǎn)運(yùn)算
+關(guān)注
關(guān)注
0文章
19瀏覽量
11164
原文標(biāo)題:深入了解浮點(diǎn)運(yùn)算——CPU和GPU算力是如何計(jì)算的
文章出處:【微信號(hào):OSC開源社區(qū),微信公眾號(hào):OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論