AMD Vivado™ Design Suite
AMD 的 AMD Vivado™ ML 和 System Generator for DSP 皆提供健全的工具,支援各種浮點數精確度,無論是多精確度或混合精確度。這套領先業界的工具套件也提供客製精確度的彈性,可加速設計、提高生產力並有效應用資源。進一步瞭解 AMD Vivado 如何提升您的運算效率。
混合不同精確度如何有助於在不喪失準確度的前提下維持效率
瞭解計算該使用哪種精確度格式至關重要,但這有時可能會感覺像是一種取捨:雙精確度運算的準確度似乎與單精確度的效能價值旗鼓相當。兩邊都可確保準確性並挑戰數值的限制,但兩種技術都各有其獨特的用途和營運成本。
本文我們將深入探討每種格式、它們之間的差異,以及混合不同精確度如何有助於在不喪失準確度的前提下維持效率。
為了瞭解單精確度和雙精確度運算之間的差異,瞭解精確度在電腦科學中的角色是很重要的。請想像一下,使用無理數(例如圓周率)進行計算,且僅使用小數點後兩位 (3.14),會是怎樣的情況。如果您進行計算時使用小數點後十位 (3.1415926535),想必會得到更準確的結果。
對於電腦而言,這種準確度稱為精確度,它採用的是二進制(位元),而非十進制。使用的位元越多,精確度越高。
用電腦二進位表示大數需要標準,以確保計算間不會有巨大差異。因此,電機電子工程師學會 (Institute of Electrical and Electronics Engineers, IEEE) 制定了 IEEE 二進位浮點數算術標準 (IEEE 754)。
IEEE 754 有三個部分:
以這些部分為基礎,IEEE 754 將浮點數以兩種方式呈現:單精確度格式與雙精確度格式。雖然還有許多表示浮點數的方式,IEEE 754 是最常見的,因為它通常是最有效的數值表示方法。
用電腦二進位表示大數需要標準,以確保計算間不會有巨大差異。因此,電機電子工程師學會 (Institute of Electrical and Electronics Engineers, IEEE) 制定了 IEEE 二進位浮點數算術標準 (IEEE 754)。
IEEE 754 有三個部分:
以這些部分為基礎,IEEE 754 將浮點數以兩種方式呈現:單精確度格式與雙精確度格式。雖然還有許多表示浮點數的方式,IEEE 754 是最常見的,因為它通常是最有效的數值表示方法。
單精確度浮點數格式使用 32 位元的電腦記憶體,可以表示各種數值。這種格式通常稱為 FP32,最適合用於不會因為一點小誤差受到影響的計算。
另一方面,雙精確度浮點數格式則佔用 64 位元的電腦記憶體,而且比單精確度格式準確許多。這種格式通常稱為 FP64,用於表示需要較多位數或更精確計算的數值。
雖然雙精確度可提高準確度,它也需要更多運算資源、記憶體儲存以及資料傳輸。每次計算都使用此格式的成本不一定是合理的。
要分辨單精確度和雙精確度運算,最簡單的方法就是查看浮點數用了多少位元來表示。單精確度使用 32 位元表示浮點數。雙精確度使用 64 位元表示浮點數。
以歐拉數 (e) 為例。e 的小數點後 50 位為:2.7182818284590452353602874713526624977572470936999.
轉換為單精確度的二進位歐拉數為:
01000000001011011111100001010100
轉換為雙精確度的二進位歐拉數為:
010000000000010110111111 0000101010001011000101000101011101101001
第一個數字代表基數。下一組數字(單精確度為八個,雙精確度為十一個)代表偏移指數。最後一組數字(單精確度為 23 個,雙精確度為 52 個)代表尾數。
|
單精確度 |
雙精確度 |
概述 |
使用 32 位元記憶體來表示數值,其中一個位元代表尾數的符號 |
使用 64 位元記憶體來表示數值,其中一個位元代表尾數的符號
|
偏移指數
|
指數使用 8 個位元
|
指數使用 11 個位元
|
尾數
|
尾數使用 23 個位元(代表小數部分)
|
尾數使用 52 個位元(代表小數部分)
|
實際應用 |
常用於遊戲或任何需要更廣泛表示但不用高準確度的程式 |
常用於科學計算以及需要高準確度的複雜程式 |
執行計算並沒有一體適用的解方,不同的工作負載就需要不同的精確度。電腦科學家需要基於現有資源、預算、儲存空間和其他變數,來兼採各種不同的運算格式。
舉例來說,雙精確度因為極為精確,可能最適合大數據研究或氣候模型製作。但是這些計算所需的儲存空間和資源未必總能合理化其使用。開發人員可視需求混用不同的精確度級別,以最佳化效率和運算花費。
雖然電腦運算的準確性固然重要,但瞭解如何從使用不同精確度中受益也是非常重要的。為了一方面不放棄計算準確性,一方面確保營運效率,您需要支援不同浮點數格式的彈性功能。