單精度、雙精度和半精度浮點格式之間的區別

2020-11-30 電子發燒友

單精度、雙精度和半精度浮點格式之間的區別

strongerHuang 發表於 2020-11-29 09:57:55

我們學過數學,都知道有理數和無理數,然後在有理數中有一類叫浮點數的數字,不知道大家對這些還有沒有印象?

在軟體編程的時候,我們也會用到浮點數,一種既包含小數又包含整數的數據類型。

下面就來講講關於浮點數中,單精度、雙精度、多精度和混合精度計算的區別。

1

關於圓周率 π我們提到圓周率 π 的時候,它有很多種表達方式,既可以用數學常數3.14159表示,也可以用一長串1和0的二進位長串表示。

圓周率 π 是個無理數,既小數位無限且不循環。因此,在使用圓周率進行計算時,人和計算機都必須根據精度需要將小數點後的數字四捨五入。

在小學的時候,小學生們可能只會用手算的方式計算數學題目,圓周率的數值也只能計算到小數點後兩位——3.14;而高中生使用圖形計算器可能會使圓周率數值排到小數點後10位,更加精確地表示圓周率。

在計算機科學中,這被稱為精度,它通常以二進位數字來衡量,而非小數。對於複雜的科學模擬,開發人員長期以來一直都依靠高精度數學來研究諸如宇宙大爆炸,或是預測數百萬個原子之間的相互作用。

數字位數越高,或是小數點後位數越多,意味著科學家可以在更大範圍內的數值內體現兩個數值的變化。藉此,科學家可以對最大的星系,或是最小的粒子進行精確計算。

但是,計算精度越高,意味著所需的計算資源、數據傳輸和內存存儲就越多。其成本也會更大,同時也會消耗更多的功率。

由於並非每個工作負載都需要高精度,因此 AI 和 HPC 研究人員可以通過混合或匹配不同級別的精度的方式進行運算,從而使效益最大化。

NVIDIA Tensor Core GPU 支持多精度和混合精度技術,能夠讓開發者優化計算資源並加快 AI 應用程式及其推理功能的訓練。

2

單精度、雙精度和半精度浮點格式之間的區別

IEEE 浮點算術標準是用來衡量計算機上以二進位所表示數字精度的通用約定。在雙精度格式中,每個數字佔用64位,單精度格式佔用32位,而半精度僅16位。要了解其中工作原理,我們可以拿圓周率舉例。

在傳統科學記數法中,圓周率表示為3.14 x100。但是計算機將這些信息以二進位形式存儲為浮點,即一系列的1和0,它們代表一個數字及其對應的指數,在這種情況下圓周率則表示為1.1001001 x 21。

在單精度32位格式中,1位用於指示數字為正數還是負數。指數保留了8位,這是因為它為二進位,將2進到高位。其餘23位用於表示組成該數字的數字,稱為有效數字。而在雙精度下,指數保留11位,有效位數為52位,從而極大地擴展了它可以表示的數字範圍和大小。

半精度則是表示範圍更小,其指數只有5位,有效位數只有10位。圓周率在每個精度級別表現如下:

3

多精度和混合精度計算的差異多精度計算意味著使用能夠以不同精度進行計算的處理器,在需要使用高精度進行計算的部分使用雙精度,並在應用程式的其他部分使用半精度或單精度算法。

混合精度(也稱為超精度)計算則是在單個操作中使用不同的精度級別,從而在不犧牲精度的情況下實現計算效率。

在混合精度中,計算從半精度值開始,以進行快速矩陣數學運算。但是隨著數字的計算,機器會以更高的精度存儲結果。

例如,如果將兩個16位矩陣相乘,則結果為32位大小。使用這種方法,在應用程式結束計算時,其累積得到結果,在準確度上可與使用雙精度算法運算得到的結果相媲美。

這項技術可以將傳統的雙精度應用程式加速多達25倍,同時減少了運行所需的內存、時間和功耗。它可用於 AI 和模擬 HPC 工作負載。

隨著混合精度算法在現代超級計算應用程式中的普及,HPC 專家 Jack Dongarra 提出了一個新的基準,即 HPL-AI,以評估超級計算機在混合精度計算上的性能。

混合精度計算主要用於現在很火人工智慧領域,感興趣的讀者可以上網搜索更多關於混合精度計算的內容。

責任編輯:lq

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • Radeon VII沒有完整的FP64雙精度浮點功能,然而這沒什麼所謂
    AMD在CES 2019上推出了全新的Radeon VII顯卡,這是全球首款7nm工藝製造的遊戲顯卡,採用第二代Vega架構,擁有60組NCU,共計3840個流處理器,配備了16GB HBM2顯存,帶寬達到了1TB/s,是現有RX Vega 64的兩倍多,總體性能也提升了25-30%之間
  • 雙精度(64位)浮點數轉單精度(32位)浮點數
    1、浮點數格式: 64位浮點數(雙精度)格式為:(來自:http://baike.baidu.com/item/雙精度浮點數)
  • freescale單片機單精度浮點與16進位與ascii之間的轉換
    //---將單精度浮點轉換成unsigned char數組,然後將unsigned char數組轉換成ascii碼字符串float BallData[8] = {-8.925133};
  • 新VEGA顯卡靠砍FP64雙精度來證明其是遊戲卡
    雖然蘇媽在發布會上說這張卡用於創作領域也是相當強悍,不過這並不表示它能完整的支持計算應用,國外媒體從AMD營銷總監 Sasa Marinkovic 口中證實Radeon VII並沒有啟用FP64 雙精度。
  • 傳感器解析度、靈敏度和精度三者的區別
    而單靠人們自身的感覺器官,在研究自然現象和規律以及生產活動中它們的功能就遠遠不夠了。為適應這種情況,就需要傳感器。因此可以說,傳感器是人類五官的延長,又稱之為電五官。而單靠人們自身的感覺器官,在研究自然現象和規律以及生產活動中它們的功能就遠遠不夠了。為適應這種情況,就需要傳感器。因此可以說,傳感器是人類五官的延長,又稱之為電五官。傳感器早已滲透到諸如工業生產、農業、宇宙開發、海洋探測、環境保護、資源調查、醫學診斷、生物工程、甚至文物保護等等極其廣泛的領域。
  • java float double精度為什麼會丟失?淺談java的浮點數精度問題
    關於 java 的 float 和 doubleJava 語言支持兩種基本的浮點類型: float 和 double 。java 的浮點類型都依據 IEEE 754 標準。IEEE 754 定義了32 位和 64 位雙精度兩種浮點二進位小數標準。IEEE 754 用科學記數法以底數為 2 的小數來表示浮點數。32 位浮點數用 1 位表示數字的符號,用 8 位來表示指數,用 23 位來表示尾數,即小數部分。作為有符號整數的指數可以有正負之分。小數部分用二進位(底數 2 )小數來表示。
  • 科普|傳感器的靈敏度、解析度和精度三者之間有何區別?
    在現代工業生產尤其是自動化生產過程中,需要各種傳感器來監視和控制生產過程中的各個參數,使設備工作在正常狀態或最佳狀態,並使產品達到最好的質量。因此可以說,沒有眾多的優良的傳感器,現代化生產也就失去了基礎。 要進行—個具體的測量工作,首先要考慮採用何種原理的傳感器,這需要分析多方面的因素之後才能確定。選型確定之後,就需要考慮傳感器的具體性能指標了。
  • 百度聯合英偉達發布最新論文:使深度學習效率事半功倍的混合精度...
    據了解,大多數的深度學習模型使用的是32位單精度浮點數(FP32)來進行訓練,而混合精度訓練的方法則通過16位浮點數(FP16)進行深度學習模型訓練,從而減少了訓練深度學習模型所需的內存,同時由於FP16的運算比FP32運算更快,從而也進一步提高了硬體效率。通過用半精度運算替代全精度運算來提高效率,這一技術原理聽起來很簡單明了,但將其付諸實施並不像聽起來那麼簡單。
  • 淺談精度與解析度的區別
    提到了氣溫,筆者作為儀器儀表銷售首先想到的就是溫度測量,談到測量也就繞不開精度以及解析度。這時,筆者腦補了下列對話:「你們公司的儀表測試精度怎麼樣啊,測量溫度時候有多準啊?」「您看,我們公司儀表精度很高的,我們解析度可以到0.001℃呢,您看我測一下室溫,目前是37.151℃」「這麼看來,你們公司儀表精度確實挺高的,武漢的天氣也確實挺熱啊」Q1、解析度高真的能代表精度高嗎?
  • 基於FPGA高精度浮點運算器的FFT設計與仿真
    摘要 基於IEEE浮點表示格式及FFT算法,提出一種基2FFT的FPGA方法,完成了基於FPGA高精度浮點運算器的FFT的設計。利用VHDL語言描述了蝶形運算過程及地址產生單元,其仿真波形基本能正確的表示輸出結果。
  • 普通工具機精度是多少?工具機精度的定義是什麼?工具機精度保持方法分享
    這些都會有一定的誤差,而我們都知道,誤差是不可避免的,這就決定了工具機的精度是有一定範圍的,在合理合規的範圍之內的誤差都可以接受,而超出部分太多就意味著工具機的精度不夠。   首先我們要明確,工具機的加工精度也是有區別的,其中分為靜態精度和動態精度。
  • Xilinx Vivado HLS中Floating-Point(浮點)設計介紹
    編碼風格 1.1 單雙精度浮點數學函數 #include float example(float var) { return log(var); // 雙精度自然對數 } 在C設計中, 這個例子, Vviado HLS 生成的RTL實現將輸入轉換成雙精度浮點,並基於雙精度浮點計算自然對數
  • 技術科普|傳感器的靈敏度、解析度和精度三者之間有何區別?
    在現代工業生產尤其是自動化生產過程中,需要各種傳感器來監視和控制生產過程中的各個參數,使設備工作在正常狀態或最佳狀態,並使產品達到最好的質量。因此可以說,沒有眾多的優良的傳感器,現代化生產也就失去了基礎。要進行—個具體的測量工作,首先要考慮採用何種原理的傳感器,這需要分析多方面的因素之後才能確定。選型確定之後,就需要考慮傳感器的具體性能指標了。
  • 如何提高航測精度
    16、增加構架航線構架航線與正常航線垂直布設,起高程控制點作用,有利於減少像片控制點量測數量,增強區域網模型之間連續性,提高空中三角測量平差精度。構架航線結合事後差分解算提供的像片高精度POS數據,能夠實現稀少像片控制點甚至無像片控制點完成空中三角測量。
  • 準確度,重複精度和解析度
    大多數工程師對準確度和重複精度之間的差別困惑不已。我們可以通過對目標靶的射箭來解釋準確度和重複精度之間的區別。準確度就指箭頭距離靶心的距離。 圖1 準確的射擊(左)和精確的射擊(右) 如果射出許多箭,那麼重複精度就指箭簇的大小。
  • 利用常用的微控制器設計技術更大限度地提高熱敏電阻精度
    32位非浮點器件的快速示例是Cortex 「M4」器件,而帶有浮點的版本將標記為「M4F」。與使用定點部件和使用浮點固件庫相比,MCU內部具有浮點硬體使計算速度更快、功耗更低。具有固定點意味著只能顯示大於零的整數。例如:如果1 + 1,則得到2,然後取平均值1。如果2 + 1,則得到3,然後取平均值1.5。在定點計算中,結果將為「 1」, 小數點以下的數字都不能用1。
  • 磨床加工精度 如何有效提高加工精度
    引言:對於現代工業而言,保證工件加工精度是必要的,這是保障生產設備其精密性、滿足工廠實際需求的關鍵,因此,本文將對磨床加工精度和提高加工精度策略進行簡單的介紹。磨削的加工精度要求很高,影響加工精度的因素很多,在各種因素中磨床精度是較為重要的可知因素。
  • 溫度傳感器解析度、靈敏度和精度的概念是什麼?
    打開APP 溫度傳感器解析度、靈敏度和精度的概念是什麼?但很多人並不十分清楚這三個參數的區別,導致在使用時會易出現大大小小的問題。下面,就傳感器的靈敏度、精度和解析度三者的區別為大家簡單介紹一下。
  • 基於複數浮點運算的協方差矩陣的FPGA實現
    在充分應用FPGA並行處理能力的同時,為了擴展數據處理的動態範圍,減少數據溢出機率,避免數據截斷所產生的誤差,提高協方差矩陣的運算精度以及擴展該運算的通用性。本文以空間譜估計作為研究背景,研究了複數據運算和浮點運算的特點,提出了一種適用於任何陣列流型、任意陣元的基於複數浮點運算的協方差矩陣的FPGA實現方案。
  • 電巢學堂:利用常用的微控制器設計技術更大限度提高熱敏電阻精度
    定點或浮點微控制器可在內部具有浮點單元硬體,也可具有無需硬體即可進行浮點數學運算的固件庫。32位非浮點器件的快速示例是Cortex 「M4」器件,而帶有浮點的版本將標記為「M4F」。與使用定點部件和使用浮點固件庫相比,MCU內部具有浮點硬體使計算速度更快、功耗更低。具有固定點意味著只能顯示大於零的整數。例如:如果1 + 1,則得到2,然後取平均值1。