吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深入了解浮點運算—CPU和GPU算力是如何計算的?

OSC開源社區 ? 來源:又拍云 ? 2024-01-18 18:20 ? 次閱讀

隨著國家大力發展數字經濟,算力的提升和普惠變得越來越重要。在數字化時代,算力已成為推動科技發展和創新的關鍵要素。它不僅僅是衡量計算機處理速度的標準,還涉及計算機系統或設備執行計算任務的能力、數據處理能力以及解決復雜計算問題的能力。那么算力到底是什么呢?

簡單了解算力

算力(Computational Power)在計算機科學和計算領域中是一個重要概念,它指的是計算機系統或設備執行數值計算和處理任務的能力。提升算力意味著可以更快地執行復雜的計算任務,從而提高計算的效率和性能。簡單來說,算力決定了計算機處理信息的速度和效率,直接影響我們使用電子設備的體驗,例如網頁加載速度和游戲流暢度等。

在數字經濟時代,算力是新的生產力,為加強數字政府建設、激活數據要素潛能以及實現各行各業的數字化轉型提供了動力。據中國信息通信研究所的測算,每投入1元的算力,可以帶動3至4元的經濟產出。算力的提升對經濟具有巨大的影響力。根據統計數據顯示,每提高一個算力指數點,可以帶動數字經濟增長 0.36% 和 GDP 增長 0.17%。

那算力大小具體是如何衡量的呢?這里就必須提及浮點運算,接下來我們來了解下浮點運算這個概念。

什么是浮點運算

算力最基本的計量單位是 FLOPS,英文 Floating-point Operations Per Second,即每秒執行的浮點運算次數。浮點運算其實就是帶小數的加減乘除運算。

舉個例子:1.1+2.2 就是典型的浮點運算,估計你已經心算出結果是 3.3 了。不過對計算機來說,這個問題并不簡單。我們知道,計算機是以 0 和 1 構成的二進制數字進行運算的,比如在基礎的二進制里,1 就是 1,2 就變成了 “10”,3 是 “11”,這也帶來一個問題:計算機能夠處理的數字只有整數。

其實,0.1 可以看成是1除以10的結果,我們想讓計算機計算一個帶小數點的數字,只要告訴 CPU 這是一個被 1 后面加了多少個 0 整除的整數就行了。這樣一來,計算機在處理小數點的時候,就多了好幾個運算步驟。浮點運算的速度也就成了衡量計算機性能的標準。

算力的計量單位,除了 FLOPS,從小到大還有:

KFLOPS(每秒1000次浮點運算,10^3)

MFLOPS(每秒1百萬次,10^6)

GFLOPS(每秒10億次,10^9)

TFLOPS(每秒1萬億次,10^12)

PFLOPS(每秒1000萬億次,10^15)

EFLOPS(每秒100億億次,10^18)

浮點數

浮點數的浮點就是指它的小數點的位置是可以是漂浮不定的。這怎么理解呢?其實,浮點數是采用科學計數法的方式來表示的,例如十進制小數 1.234,用科學計數法表示,可以有多種方式:

1.234 = 1.234 * 10^0
1.234 = 12.34 * 10^-1
1.234 = 123.4 * 10^-2
...

用這種科學計數法的方式表示小數時,小數點的位置就變得漂浮不定了。使用同樣的規則,對于二進制數,我們也可以用科學計數法表示,也就是說把基數 10 換成 2 即可。那浮點數如何表示數字?其實浮點數是采用科學計數法來表示一個數字的,它的格式可以寫成這樣:

V = (-1)^S * M * R^E

其中各個變量的含義如下:

S:符號位,取值 0 或 1,決定一個數字的符號,0 表示正,1 表示負

M:尾數,用小數表示,例如前面所看到的 1.234 * 10^0,1.234 就是尾數

R:基數,表示十進制數 R 就是 10,表示二進制數 R 就是 2

E:指數,用整數表示,例如前面看到的 10^-1,-1 即是指數

如果我們要在計算機中,用浮點數表示一個數字,只需要確認這幾個變量即可。

舉個例子:將十進制數 0.125 轉換為浮點數,我們可以使用二進制浮點數表示。

符號位(S):由于數字為正數,所以 S = 0。

尾數(M):將小數部分轉換為二進制。0.125 的二進制表示為 0.001。

基數(R):對于二進制數,R = 2。

指數(E):確定指數的值。將 0.125 轉換為科學計數法形式可得 0.125 = 1.0 * 2^-3。因此,指數 E = -3。

代入公式:V = (-1)^S * M * R^E

將以上值代入公式可得:

V = (-1)^0 * 0.001 * 2^-3 = 0.001 * 0.125

運算結果為 0.000001。因此十進制數 0.125 在二進制浮點數表示下為 0.000001。

計算機中使用有限的連續字節來保存浮點數,而 IEEE 754標準定義了三種常見的浮點數格式:單精度、雙精度和擴展雙精度,它們適用于不同的計算需求。一般來說,單精度適合一般計算,雙精度適合科學計算,擴展雙精度適合高精度計算。一個遵循 IEEE 754標準的系統必須支持單精度類型(強制類型),最好也支持雙精度類型(推薦類型),而擴展雙精度類型則是可選的。

單精度浮點數(FP32)

單精度浮點數格式(英語:single-precision floating-point format)是一種數據類型,在計算機存儲器中占用 4 個字節(32 bits),利用 “浮點”(浮動小數點)的方法,可以表示一個范圍很大的數值。在 IEEE 754-2008 的定義中,32-bit base 2 格式被正式稱為 binary32 格式。這種格式在 IEEE 754-1985 被定義為 single,即單精度。需要注意的是,在更早的一些計算機系統中,也存在著其他 4 字節的浮點數格式。

第 1 位表示正負,中間 8 位表示指數,后 23 位儲存有效數位(有效數位是 24 位)。第一位的正負號 0 代表正,1 代表負。中間八位共可表示 2^8 = 256 個數,指數可以是二補碼;或 0 到 255,0 到 126 代表 -127 到 -1,127 代表零,128-255 代表 1-128。有效數位最左手邊的 1 并不會儲存,因為它一定存在(二進制的第一個有效數字必定是1)。換言之,有效數位是 24 位,實際儲存 23 位。

舉個例子:要將十進制數 0.125 轉換為單精度浮點數(32 位)。

遵循 IEEE 754 標準的表示方法,可以按照以下步驟進行轉換:

符號位(Sign):由于數字為正數,所以符號位為 0。

尾數(Fraction):將小數部分轉換為二進制。0.125 的二進制表示為 0.001。

指數(Exponent):指數的偏移量為 127。由于 0.125 可以表示為 1.0 × 2^(-3),指數為 -3。加上偏移量后,實際指數為 -3 + 127 = 124。將 124 轉換為二進制得到 01111100。

組合位:將符號位、指數位和尾數位組合在一起,得到單精度浮點數的二進制表示。

最終的二進制表示為:0 01111100 00100000000000000000000

雙精度浮點數(FP64)

雙精度浮點數(Double Precision Floating Point),也稱為 FP64,是一種浮點數數據類型,用于在計算機中表示和進行高精度的浮點數運算。FP64 使用 64 個比特位(8 個字節)來表示一個浮點數,其中 1 位用于表示符號位(正負號),11 位用于表示指數,52 位用于表示尾數。

雙精度浮點數的表示形式同樣采用科學計數法,即 ±M × 2^E,其中 M 為尾數,E 為指數。通過使用更多的指數位和尾數位,FP64 相對于單精度浮點數能夠表示更廣范圍和更高精度的數值。

舉個例子:將十進制數 0.125 轉換為雙精度浮點數(64位)。

遵循 IEEE 754 標準的表示方法,可以按照以下步驟進行轉換:

符號位(Sign):由于數字為正數,所以符號位為 0。

尾數(Fraction):將小數部分轉換為二進制。0.125 的二進制表示為 0.001。

指數(Exponent):指數的偏移量為 1023。由于 0.125 可以表示為 1.0 × 2^(-3),指數為 -3。加上偏移量后,實際指數為 -3 + 1023 = 1020。將 1020 轉換為二進制得到 01111111100。

組合位:將符號位、指數位和尾數位組合在一起,得到雙精度浮點數的二進制表示。

最終的二進制表示為:0 01111111100 0010000000000000000000000000000000000000000000000000

49fdeb98-b5e8-11ee-8b88-92fbcf53809c.png

雙精度浮點數的取值范圍約為 ±4.9 × 10^-324 到 ±1.8 × 10^308,并提供大約 15 到 16 位有效數字的精度。相比于單精度浮點數,雙精度浮點數能夠處理更大范圍的數值和提供更高的精度,適用于對精確性要求較高的計算任務。

雙精度浮點數常用于科學計算、工程應用、金融分析和高性能計算等領域。它在這些領域中被廣泛用于處理實數數據,如數值模擬、大規模計算、天文學、物理學和工程計算等。

然而,需要注意的是,雙精度浮點數的存儲空間和計算開銷相對于單精度浮點數更高。在某些情況下,如果對精度要求不高或者計算資源有限,可以考慮使用單精度浮點數進行計算,以提高計算效率和節省內存消耗。

浮點數的舍入

由于浮點數計算過程中丟失了精度,浮點運算的性質與數學運算有所不同。任何有效數上的運算結果,通常都存放在較長的寄存器中,當結果被放回浮點格式時,必須將多出來的比特丟棄。IEEE 標準列出 4 種不同的方法:

舍入到最接近:舍入到最接近,在一樣接近的情況下偶數優先(Ties To Even,這是默認的舍入方式):會將結果舍入為最接近且可以表示的值,但是當存在兩個數一樣接近的時候,則取其中的偶數(在二進制中是以0結尾的)。

朝 +∞ 方向舍入:會將結果朝正無限大的方向舍入。

朝 -∞ 方向舍入:會將結果朝負無限大的方向舍入。

朝 0 方向舍入:會將結果朝 0 的方向舍入。

單、雙精度的應用場景

單精度浮點數通常應用在需要較高計算速度的場景,例如嵌入式系統和移動設備。在這些應用中,對于一些實時性要求較高的任務,如圖形渲染、音視頻處理等,單精度浮點數能夠提供足夠的精度,并且在存儲和計算上更加高效,能夠滿足實時性和資源限制的需求。此外,單精度浮點數也廣泛應用于科學研究和工程領域中的數值計算,包括求解方程、模擬物理過程等。在這些領域中,單精度浮點數的精度已經足夠滿足大部分的計算需求,同時可以提高計算速度和節省存儲空間。

雙精度浮點數主要應用于需要更高精度的場景,如科學計算、工程計算、金融分析等。在這些領域中,對計算結果的精確性要求較高,需要更多的有效數字來表示和處理實數。雙精度浮點數能夠提供更高的精度和更大的表示范圍,能夠處理更復雜和精細的計算任務。在科學計算中,如天文學、數值模擬等領域,雙精度浮點數常常用于求解復雜的數學模型和算法,以獲得更準確的結果。在金融分析中,雙精度浮點數可以處理更大的數值范圍和更高的精度,確保計算結果的準確性和可靠性。

總之,選擇單精度還是雙精度浮點數應根據具體應用的需求來決定,需要權衡計算速度、精度要求和資源限制等因素。單精度浮點數適用于對計算速度要求較高且精度要求不是特別嚴格的場景,而雙精度浮點數適用于對精度要求更高的科學計算和工程領域。

CPU 和 GPU 的算力計算

目前服務器的算力主要包括 CPU 和 GPU 等不同芯片產生的算力。那具體到每臺服務器的算力,究竟如何計算呢?

CPU 的算力計算

我們以 CPU 的雙精度浮點運算能力(FP64)為例,單個 CPU 的算力,與 CPU 核心的個數、頻率、單時鐘周期浮點計算能力 3 個因素有關。

單 CPU 算力 = CPU 核數 * 單核主頻 * 單周期浮點計算能力

Intel Cascade Lake 架構的 Xeon Platinum 8280 為例,該 CPU 具有 28 個核心,主頻為 2.7GHz,并支持 AVX512 指令集。根據提供的信息,我們可以計算出該 CPU 的雙精度浮點運算能力(FP64)。

首先,計算單個 CPU 核心的單周期浮點計算能力:

單周期浮點計算能力 = 512bit * 2FMA * 2M/A / 64bit = 32 FLOPS/Cycle

然后,計算單個 CPU 核心的峰值浮點運算能力:

單個 CPU 核心的峰值浮點運算能力 = 單周期浮點計算能力 * 主頻 = 32 FLOPS/Cycle * 2.7 GHz

最后,計算整個 CPU 的峰值浮點運算能力:

單 CPU 算力 = CPU 核數 * 單個 CPU 核心的峰值浮點運算能力 = 28 cores * 單個CPU核心的峰值浮點運算能力

根據提供的數據,計算得到:

單個 CPU 核心的峰值浮點運算能力 = 32 FLOPS/Cycle * 2.7 GHz = 86.4 GFLOPS

單 CPU 算力 = 28 cores * 86.4 GFLOPS = 2.4192 TFLOPS

因此,以 Intel Cascade Lake 架構的 Xeon Platinum 8280 為例,該 CPU 的理論峰值雙精度浮點性能為 2.4192 TFLOPS。

注:該計算是理論值,實際性能可能受到多種因素(如指令級并行性、內存訪問延遲等)的影響。

GPU 的算力計算

GPU 的算力與上面的計算方法類似。單個 GPU 算力也是與核心個數、頻率、單時鐘周期能力 3 個因素有關。

以 NVIDIA Volta 架構的 V100 為例,該 GPU 擁有 2560 個雙精度浮點核心(FP64 cores),主頻為 1.530GHz。

4a0b62fa-b5e8-11ee-8b88-92fbcf53809c.png

根據提供的信息,我們可以計算出該 GPU 的雙精度浮點運算能力(FP64)。

首先,計算單個 GPU 核心的單周期浮點計算能力:

單周期浮點計算能力 = 64bit * 1FMA * 2M/A / 64bit = 2 FLOPS/Cycle

然后,計算單個 GPU 核心的峰值浮點運算能力:

單個 GPU 核心的峰值浮點運算能力 = 單周期浮點計算能力 * 主頻 = 2 FLOPS/Cycle * 1.530 GHz

最后,計算整個 GPU 的峰值浮點運算能力:

單 GPU 算力 = GPU 核數 * 單個 GPU 核心的峰值浮點運算能力 = 2560 cores * 單個 GPU 核心的峰值浮點運算能力

根據提供的數據,計算得到:

單個 GPU 核心的峰值浮點運算能力 = 2 FLOPS/Cycle * 1.530 GHz = 3.060 GFLOPS

單 GPU 算力 = 2560 cores * 3.060 GFLOPS = 7833 GFLOPS = 7.833 TFLOPS

因此,以 NVIDIA Volta 架構的 V100 為例,該 GPU 的理論峰值雙精度浮點性能為 7.833 TFLOPS。

注:該計算是理論值,實際性能可能受到多種因素(如內存帶寬、功耗限制等)的影響。

聊了這么多,相信大家對 CPU、GPU 的算力計算和浮點運算都有了一定的了解,雖然看起來比較復雜,其實還是比較好理解的。大家也可以收藏下這篇內容,以備不時之需。







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 存儲器
    +關注

    關注

    38

    文章

    7528

    瀏覽量

    164345
  • 二進制
    +關注

    關注

    2

    文章

    796

    瀏覽量

    41757
  • 計算機
    +關注

    關注

    19

    文章

    7536

    瀏覽量

    88643
  • 浮點運算
    +關注

    關注

    0

    文章

    19

    瀏覽量

    11206

原文標題:深入了解浮點運算——CPU和GPU算力是如何計算的

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    請問AURIX TC3xx tricore架構下浮點運算和將浮點數小數點去掉變成整數來計算哪種方式更加節省

    AURIX TC3xx tricore架構下浮點運算和將浮點數小數點去掉變成整數來計算哪種方式更加節省
    發表于 08-26 06:54

    名單公布!【書籍評測活動NO.43】 芯片 | 高性能 CPU/GPU/NPU 微架構分析

    這個想法被否決了,因為投入較大、難以落地,且客戶對的認同遠不及今天這種高度。 這幾年間其實我們聯系甚少,但是作者一直沒有脫離對芯片的應用和關注。特別是目睹GPU從消費電子轉向
    發表于 09-02 10:09

    【「芯片 | 高性能 CPU/GPU/NPU 微架構分析」閱讀體驗】--全書概覽

    GPU、NPU,給我們剖析了芯片的微架構。書中有對芯片方案商處理器的講解,理論聯系實際,使讀者能更好理解芯片。 全書共11章,
    發表于 10-15 22:08

    芯片 高性能 CPU/GPU/NPU 微架構分析》第1-4章閱讀心得——之巔:從基準測試到CPU微架構的深度探索

    浮點數單元則專門處理浮點運算,其中加法器和乘法器的設計直接影響了CPU浮點性能。SIMD(單指令多數據)技術如MMX、SSE、AVX等指
    發表于 10-19 01:21

    【「芯片 | 高性能 CPU/GPU/NPU 微架構分析」閱讀體驗】--了解芯片CPU

    Computing)拓撲是一種特殊的 CPU設計,其核心思想是將在儲器和運算器緊密地結合在一起,使得計算操作可以在存儲器中進行,從而大幅提高數據處理效率和性能。 通過章節學習,可以看到
    發表于 10-20 12:03

    【「芯片 | 高性能 CPU/GPU/NPU 微架構分析」閱讀體驗】--了解芯片GPU

    著色器(Pixel shader)是圖形流水線中相當強大的功能單元,因為它可以為每個片段執行復雜的計算,從而為最終渲染的圖像添加細節和視覺效果。 DirectX API推動 GPU
    發表于 11-03 12:55

    深入了解示波器

    深入了解示波器
    發表于 11-14 22:32

    數據、算法和其實現載體是什么

    背景介紹數據、算法和是人工智能技術的三大要素。其中,體現著人工智能(AI)技術具體實現的能力,實現載體主要有CPU
    發表于 07-26 06:47

    Xilinx Zynq7035指標

    Operations,浮點運算次數,每一個加、減、乘、除操作都1FLOPs操作,常用來衡量模型計算復雜度。注意下FLOPS,注意全大寫,是floating point operat
    發表于 12-15 21:19

    CPU浮點運算能力比 GPU 差,為什么不提高 CPU浮點運算能力呢

    為什么 CPU浮點運算能力比 GPU 差,為什么不提高 CPU浮點
    的頭像 發表于 03-16 15:12 ?1.6w次閱讀

    GPU是顯卡嗎 cpugpu哪個

    很大的區別,因此它們的計算能力也不同。 首先,我們來看一下CPU(中央處理器)的CPU是一種通用處理器,它被設計用于處理各種不同類型的
    的頭像 發表于 01-10 15:45 ?5640次閱讀

    力系列基礎篇——計算機性能:解鎖超能力的神秘力量!

    在《力系列基礎篇——101:從零開始了解》中,相信各位粉絲初步
    的頭像 發表于 07-11 08:04 ?104次閱讀
    <b class='flag-5'>算</b>力系列基礎篇——<b class='flag-5'>算</b><b class='flag-5'>力</b>與<b class='flag-5'>計算</b>機性能:解鎖超能力的神秘力量!

    服務器為什么選擇GPU

    隨著人工智能技術的快速普及,需求日益增長。智中心的服務器作為支撐大規模數據處理和計算的核心設備,其性能優化顯得尤為關鍵。而GPU服務器
    的頭像 發表于 07-25 08:28 ?815次閱讀
    <b class='flag-5'>算</b><b class='flag-5'>力</b>服務器為什么選擇<b class='flag-5'>GPU</b>

    【一文看懂】大白話解釋“GPUGPU

    隨著大模型的興起,“GPU”這個詞正頻繁出現在人工智能、游戲、圖形設計等工作場景中,什么是GPU,它與CPU的區別是什么?以及到底什么是
    的頭像 發表于 10-29 08:05 ?985次閱讀
    【一文看懂】大白話解釋“<b class='flag-5'>GPU</b>與<b class='flag-5'>GPU</b><b class='flag-5'>算</b><b class='flag-5'>力</b>”

    中心的如何衡量?

    (ComputationalPower)是指智中心通過其內部的計算設備(如CPUGPU、AI芯片等)對數據進行處理和計算的能力。它體現了
    的頭像 發表于 01-16 14:03 ?470次閱讀
    <b class='flag-5'>算</b>智<b class='flag-5'>算</b>中心的<b class='flag-5'>算</b><b class='flag-5'>力</b>如何衡量?
    大发888娱乐| 百家乐官网赢退输进有哪些| 盈丰| 大发888安装需要多久| 百家乐娱乐官网| 百家乐网上投注网站| 百家乐图表分析| 百家乐官网扑| 闲和庄百家乐官网赌场娱乐网规则| 博E百百家乐官网娱乐城| 豪门国际| 大发888娱乐场df888| 大发888是真的吗| 麻将二八杠技巧| 百家乐赌场娱乐网规则 | 真人百家乐官网蓝盾娱乐平台| 缅甸百家乐官网博彩真假| 百家乐官网真人娱乐注册| 黄金城百家乐官网游戏| 银泰国际娱乐城| 百家乐官网打印程序| 皇冠网上投注站| 额尔古纳市| bet365直播| 最好的网上真人赌博| 灵川县| 百家乐官网最好的投注法| 新思维百家乐官网投注法| 百家乐庄最高连开几把| 大发888娱乐厂场| 百家乐破解版| 全讯网找新全讯网| 申城棋牌官网| 柏乡县| 百家乐官网2号破解下载| 网络百家乐官网会作假吗| 银河百家乐官网的玩法技巧和规则| 24个招财方法| 百家乐庄闲对冲| 大发888真钱游戏注册| 澳门盘口|