科普 | 單精度、雙精度、多精度和混合精度計算的區別是什么?

科普 | 單精度、雙精度、多精度和混合精度計算的區別是什么?

轉自:https://zhuanlan.zhihu.com/p/93812784

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

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

在小學的時候,小學生們可能只會用手算的方式計算數學題目,圓周率的數值也只能計算到小數點后兩位——3.14;而高中生使用圖形計算器可能會使圓周率數值排到小數點后10位,更加精確地表示圓周率。在計算機科學中,這被稱為精度,它通常以二進制數字來衡量,而非小數。

對于復雜的科學模擬,開發人員長期以來一直都依靠高精度數學來研究諸如宇宙大爆炸,或是預測數百萬個原子之間的相互作用。

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

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

由于并非每個工作負載都需要高精度,因此 AI 和 HPC 研究人員可以通過混合或匹配不同級別的精度的方式進行運算,從而使效益最大化。NVIDIA Tensor Core GPU 支持多精度和混合精度技術,能夠讓開發者優化計算資源并加快 AI 應用程序及其推理功能的訓練。

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

在這里插入圖片描述

IEEE 浮點算術標準是用來衡量計算機上以二進制所表示數字精度的通用約定。在雙精度格式中,每個數字占用64位,單精度格式占用32位,而半精度僅16位。

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

在單精度32位格式中,1位用于指示數字為正數還是負數。指數保留了8位,這是因為它為二進制,將2進到高位。其余23位用于表示組成該數字的數字,稱為有效數字。

而在雙精度下,指數保留11位,有效位數為52位,從而極大地擴展了它可以表示的數字范圍和大小。半精度則是表示范圍更小,其指數只有5位,有效位數只有10位。

圓周率在每個精度級別表現如下:

在這里插入圖片描述

多精度和混合精度的計算的差異

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

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

在混合精度中,計算從半精度值開始,以進行快速矩陣數學運算。但是隨著數字的計算,機器會以更高的精度存儲結果。例如,如果將兩個16位矩陣相乘,則結果為32位大小。

使用這種方法,在應用程序結束計算時,其累積得到結果,在準確度上可與使用雙精度算法運算得到的結果相媲美。

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

隨著混合精度算法在現代超級計算應用程序中的普及,HPC 專家 Jack Dongarra 提出了一個新的基準,即 HPL-AI,以評估超級計算機在混合精度計算上的性能。當 NVIDIA 在全球最快的超級計算機 Summit 上運行 HPL-AI 計算時,該系統達到了前所未有的性能水平,接近550 petaflop,比其在 TOP500 榜單上的官方性能快了3倍。

如何開始使用混合精度計算

NVIDIA Volta 和 Turing GPU 具有 Tensor Core,旨在簡化和加速多精度計算和混合精度計算。只需幾行代碼,開發人員就可以在 TensorFlow、PyTorch 和 MXNet 深度學習框架中啟用自動混合精度功能。該工具可為研究人員提供高達3倍的 AI 訓練速度提升。

NGC GPU 加速軟件目錄還包括迭代優化求解器和 cuTensor 庫,可輕松地為 HPC 部署混合精度應用程序。

混合精度計算的用途是什么

研究人員和公司依靠 NVIDIA GPU 的混合精度功能來支持科學模擬、AI 和自然語言處理工作負載。以下為一些示例:

地 球 科 學:東京大學(University of Tokyo)、橡樹嶺國家實驗室(Oak Ridge National Laboratory)和瑞士國家超級計算中心(Swiss National Supercomputing Center)的研究人員將 AI 和混合精度技術用于地震模擬。通過對東京的 3D 模擬,科學家能夠模擬地震波如何對硬土、軟土、地上建筑、地下商場和地鐵系統產生影響。他們的新模型在 Summit 超級計算機上運行,并結合了雙精度計算、單精度計算和半精度計算,其速度提高了25倍。

勞倫斯伯克利國家實驗室(Lawrence Berkeley National Laboratory)的一個 Gordon Bell 獲獎團隊使用 AI 從高分辨率氣候模擬中識別極端天氣模式,從而幫助科學家分析未來極端天氣將如何變化。在 Summit 上使用 NVIDIA V100 Tensor Core GPU 的混合精度功能,他們實現了1.13 exaflops 的性能。

醫 學 研 究 與 健 康 事 業:總部位于舊金山的 Fathom 是 NVIDIA 初創加速計劃的成員,該公司正在 NVIDIA V100 Tensor Core GPU 上使用混合精度計算,以加快對其深度學習算法的訓練,該算法可實現醫學編碼自動化。這家初創公司可與許多美國最大的醫療編碼機構合作,將醫生輸入的備注轉換為字母數字代碼,代表保險公司和患者出具的每個診斷和程序。

橡樹嶺國家實驗室的研究人員因其在阿片類藥物成癮方面的開創性工作而獲得了 Gordon Bell 獎,該研究利用混合精度技術實現了2.31 exaops 的峰值通量。該研究分析了種群內的遺傳變異,確定了導致復雜性狀的基因模式。

核 能:核聚變反應非常不穩定,對于科學家來說,持續超過幾秒鐘都很棘手。橡樹嶺國家實驗室的另一個團隊正在模擬這些反應,以向物理學家提供有關反應堆中變量的更多信息。使用 Tensor Core GPU 的混合精度功能,該團隊能夠將其模擬速度提高3.5倍。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532795.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532795.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532795.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux 磁盤分配 簡書,linux 磁盤分區

1物理磁盤的構成: 盤面:由一圈一圈的磁道組成機械手臂:讀取數據主軸馬達:幫助機械手臂轉動2 扇區:磁盤上存取數據的最小單位512字節按照扇區分配大小,如果數據只有一字節也會占用512字節簇:用若…

條件控制與條件傳送詳解

條件控制與條件傳送詳解 提要 CSAPP3e中文譯本 3.6.5 用條件控制來實現條件分支 3.6.6 用條件傳送來實現條件分支 CSAPP3e第三章前面主要是介紹了機器級代碼的二進制形式和匯編形式、反匯編、x86匯編的基礎指令、條件碼及其訪問方式等。 在介紹到匯編語言的條件分支時分了兩…

聯合體(union)的使用方法及其本質

聯合體(union)的使用方法及其本質 轉自:https://blog.csdn.net/huqinwei987/article/details/23597091 有些基礎知識快淡忘了,所以有必要復習一遍,在不借助課本死知識的前提下做些推理判斷,溫故知新。 1…

linux設備驅動之串口移植,Linux設備驅動之UART驅動結構

一、對于串口驅動Linux系統中UART驅動屬于終端設備驅動,應該說是實現串口驅動和終端驅動來實現串口終端設備的驅動。要了解串口終端的驅動在Linux系統的結構就先要了解終端設備驅動在Linux系統中的結構體系,一方面自己了解的不夠,另一發面關于…

linux python復制安裝,復制一個Python全部環境到另一個環境,python另一個,導出此環境下安裝的包...

復制一個Python全部環境到另一個環境,python另一個,導出此環境下安裝的包導出此環境下安裝的包的版本信息清單pipfreeze>requirements.txt聯網,下載清單中的包到all-packet文件夾[[email protected] ~]# pip download -d ./all-packet -r requirement…

NVIDIA英偉達的Multi-GPU多卡通信框架NCCL

NVIDIA英偉達的Multi-GPU多卡通信框架NCCL 筆者注:NCCL 開源項目地址:https://github.com/NVIDIA/nccl 轉自:https://www.zhihu.com/question/63219175/answer/206697974 NCCL是Nvidia Collective multi-GPU Communication Library的簡稱&…

C語言n個坐標點間的最大距離,c語言已知兩點坐標,求另一點到穿過這兩點的直線最短距離。...

c語言已知兩點坐標,求另一點到穿過這兩點的直線最短距離。以下文字資料是由(歷史新知網www.lishixinzhi.com)小編為大家搜集整理后發布的內容,讓我們趕快一起來看一下吧!c語言已知兩點坐標,求另一點到穿過這兩點的直線最短距離。#…

[分布式訓練] 單機多卡的正確打開方式:理論基礎

[分布式訓練] 單機多卡的正確打開方式:理論基礎 轉自:https://fyubang.com/2019/07/08/distributed-training/ 瓦礫由于最近bert-large用的比較多,踩了很多分布式訓練的坑,加上在TensorFlow和PyTorch之間更換,算是熟…

s3c2416開發板 linux,S3C2416移植內核Linux3.1的wm9713聲卡過程

移植內核的聲卡驅動。原因沒有聲卡驅動,WM9713聲卡驅動移植(原來的內核有UDA1341聲卡驅動,我們再次基礎上直接修改)1、直接復制內核得到三個文件:s3c2416_wm9713.c , wm9713.c , s3c2416_ac97.c.linux-3.1\sound\soc\codecs\Wm9713.c---->wm9713.c;li…

Linux查看文件內容命令:cat, tail, head, more, less

Linux查看文件內容命令:cat, tail, head, more, less cat 直接顯示整個文件。 cat直接顯示全部文件內容,沒有換頁等交互。 cat filenamemore more命令,功能類似 cat ,cat命令是整個文件的內容從上到下顯示在屏幕上。 more會…

linux查看隊列 msg,linux第10天 msg消息隊列

cat /proc/sys/kernel/msgmax最大消息長度限制cat /proc/sys/kernel/msgmnb消息隊列總的字節數cat /proc/sys/kernel/msgmni消息條目數消息隊列綜合案例//server#include #include #include #include #include #include #include #include #define ERR_EXIT(m)do{perror(m);}wh…

Linux中 C++ main函數參數argc和argv含義及用法

Linux中 C main函數參數argc和argv含義及用法 簡介 argc 是 argument count的縮寫,表示傳入main函數的參數個數; argv 是 argument vector的縮寫,表示傳入main函數的參數序列或指針,并且第一個參數argv[0]一定是程序的名稱&…

c語言六位搶答器課程設計,51單片機八路搶答器課程設計

;說明:本人的這個設計改進后解決了前一個版本中1號搶答優先的問題,并增加了錦囊的設置,當參賽選手在回答問題時要求使用錦囊,則主持人按下搶答開始鍵,計時重新開始。;八路搶答器電路請看下圖是用ps仿真的,已…

ELF文件詳解—初步認識

ELF文件詳解—初步認識 轉自:https://blog.csdn.net/daide2012/article/details/73065204 一、 引言 在講解ELF文件格式之前,我們來回顧一下,一個用C語言編寫的高級語言程序是從編寫到打包、再到編譯執行的基本過程,我們知道在C…

埃及分數問題c語言,埃及分數問題(轉)

今日,小雨和小明來到網絡中心,繼續與劉老師討論“數的認識”問題。劉老師說:“還有一種‘埃及分數’需要認識。這是一類分裂分數的思維題,對思維能力的訓練很有價值。”小明說:“有意思,愿洗耳恭聽。”劉老…

linux常用命令--開發調試篇

前言 Linux常用命令中有一些命令可以在開發或調試過程中起到很好的幫助作用,有些可以幫助了解或優化我們的程序,有些可以幫我們定位疑難問題。本文將簡單介紹一下這些命令。 轉自:https://www.yanbinghu.com/2018/09/26/61877.html 示例程序…

簡單有趣的c語言小程序,一個有趣的小程序

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓源碼:#include #include #include #include #include HINSTANCE g_hInstance 0;LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine,int nSh…

linux下ora 01110,ORA-01003ORA-01110

Oracle 9i數據庫登錄時,提示ORA-01003&ORA-01110,大概意思是數據文件存儲介質損壞。startup nomount,正常;alter database mount,也正常;alter database open,提示如下:alter database open*ERROR 位于第 1 行:ORA…

x11轉發:通過ssh遠程使用GUI程序

x11轉發:通過ssh遠程使用GUI程序 我們常常使用ssh服務遠程操控服務器,大多數操作我們都可以通過命令行命令來實現。 ssh遠程無法查看GUI程序 現在,筆者在x11-test目錄下放入一張圖片test.jpg,并通過opnencv-python寫一個簡單的…

操作系統引導詳細過程

操作系統引導詳細過程 轉自:https://blog.csdn.net/lijie45655/article/details/89366372 就直觀而言,我們所見到計算機啟動的過程是:按下電腦開機鍵,系統在黑色的屏幕下打印出一些英文語句、然后進入進度條狀態,最后…