一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

NVIDIA Hopper GPU上的新cuBLAS12.0功能和矩陣乘法性能

jf_pJlTbmA9 ? 來(lái)源:NVIDIA ? 作者:NVIDIA ? 2023-07-05 16:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

人工智能機(jī)器學(xué)習(xí)基準(zhǔn)測(cè)試中相當(dāng)一部分操作是 通用矩陣乘法 ,也稱為 matmul 函數(shù)。 GEMs 也存在于深度學(xué)習(xí)訓(xùn)練的前向和后向通道以及推理中。

GEMM 的突出性使得深度學(xué)習(xí)軟件能夠最大限度地利用用于矩陣乘法的硬件,同時(shí)支持幾個(gè)關(guān)鍵的 AI 組件。這些成分包括具有偏置和流行激活功能的融合體及其衍生物。

本文探討了 NVIDIA cuBLAS 庫(kù) 在里面 CUDA 12.0 重點(diǎn)是最近推出的 FP8 format 、 NVIDIA Hopper 上的 GEM 性能 GPU ,以及新 64 位整數(shù)應(yīng)用程序編程接口 ( API )和新融合等用戶體驗(yàn)的改進(jìn)。

在深入了解這些功能之前,簡(jiǎn)要概述了當(dāng)前可用的 cuBLAS API 、如何更有效地應(yīng)用每種 API ,以及 cuBLAS 與其他可用的 NVIDIA 矩陣乘法工具的關(guān)系。

確定要使用的 cuBLAS API

cuBLAS 庫(kù)是在 NVIDIA CUDA 運(yùn)行時(shí)之上的基本線性代數(shù)子程序( BLAS )的一種實(shí)現(xiàn),旨在利用 NVIDIA GPU 進(jìn)行各種矩陣乘法運(yùn)算。本文主要討論 cuBLAScuBLASLt API 的新功能。然而, cuBLAS 庫(kù)還提供了針對(duì)多 GPU 分布式 GEMs 的 cuBLASXt API 。 cuBLASXt API 將于 2023 年在 Early Access 中提供,目標(biāo)是 GEMs 及其設(shè)備內(nèi)融合功能。

表 1 概述了每種 API 的設(shè)計(jì)用途以及用戶可以在哪里獲得最佳性能。

API API complexity Called from Fusion support Matrix sizes for maximum performance
cuBLAS
(since CUDA 6.0)
Low Host None Large (global memory)
cuBLASXt (since CUDA 6.0) Low Host None Very Large (multi-GPU, global memory)
cuBLASLt
(since CUDA 10.1)
Medium Host Fixed set Medium (global memory)
cuBLASDx (targeting 2023 EA) Medium/High Device User ops Small (shared memory)

表 1 。各種 cuBLAS 原料藥的比較。通常, API 復(fù)雜度越高, API 越適合內(nèi)核開(kāi)發(fā)人員.

cuBLAS API

cuBLAS API 在所有三個(gè)級(jí)別實(shí)現(xiàn) NETLIB BLAS 規(guī)范,每個(gè)例程最多有四個(gè)版本:實(shí)數(shù)單精度、實(shí)數(shù)雙精度、復(fù)數(shù)單精度和復(fù)數(shù)雙精度,分別帶有 S 、 D 、 C 和 Z 前綴。

對(duì)于 BLAS L3 GEMM ,latex.php?latex=D%3D%5Calpha+%2A+op%28A%29+%2A+op%28B%29+%2B+%5Cbeta+%2A+C&bg=transparent&fg=000&s=0&c=20201002,latex.php?latex=%5Calpha&bg=transparent&fg=000&s=0&c=20201002latex.php?latex=%5Cbeta&bg=transparent&fg=000&s=0&c=20201002變量(如主機(jī)和設(shè)備引用)有更多可用選項(xiàng)。該 API 還提供了幾個(gè) extensions ,如傳統(tǒng)函數(shù)的批處理和降低/混合精度版本。

cuBLASLt API

cuBLASLt API 是一個(gè)比 cuBLAS 更靈活的解決方案,專門(mén)為人工智能和機(jī)器學(xué)習(xí)中的 GEMM 操作而設(shè)計(jì)。它通過(guò)以下選項(xiàng)的參數(shù)可編程性提供靈活性:

矩陣數(shù)據(jù)布局

輸入類型

計(jì)算類型

結(jié)語(yǔ)

算法實(shí)現(xiàn)選擇

啟發(fā)式

一旦用戶確定了預(yù)期 GEM 操作的一組選項(xiàng),這些選項(xiàng)就可以重復(fù)用于不同的輸入。簡(jiǎn)而言之,與 cuBLAS API 相比, cuBLASLt 可以支持復(fù)雜的情況,例如:

latex.php?latex=D%2C+Aux%3D+Epilogue%28%5Calpha+%2A+scale_%7BA%7D+%2A+scale_%7BB%7D+%2A+op%28A%29+%2A+op%28B%29+%2B+%5Cbeta+%2A+scale_%7BC%7D+%2A+C%29&bg=transparent&fg=000&s=0&c=20201002

該案例有多個(gè)輸出,是基于變壓器的模型中遇到的一個(gè)突出的 GEMM .

為了提供最近的示例, a 和 B 可以采用兩種新的 FP8 格式中的任一種,并在 FP32 中進(jìn)行乘法和累加。 Epilogue 可以包括 GELU 和偏倚,偏倚在 BF16 或 FP16 中。許多常見(jiàn)的尾聲現(xiàn)在都融入了 matmul 。此外,latex.php?latex=Aux&bg=transparent&fg=000&s=0&c=20201002是一個(gè)可選的附加尾聲輸出,用于計(jì)算梯度。使用 cuBLASLt 操作 handle type 描述了上述操作和許多類似操作。

NVIDIA 切割機(jī)和 GEMS

作為最著名的開(kāi)源 NVIDIA 庫(kù)之一, NVIDIA CUTLASS 還為 NVIDIA GPU 上的 GEMM (和卷積)提供 CUDA C ++和 Python 抽象,并在設(shè)備、塊、扭曲和線程級(jí)別提供原語(yǔ)。 CUTRASS 的一個(gè)優(yōu)點(diǎn)是,用戶可以專門(mén)為其所需范圍編譯 GEMs ,而無(wú)需像 cuBLAS 庫(kù)那樣加載更大的二進(jìn)制文件。

當(dāng)然,這會(huì)帶來(lái)性能上的權(quán)衡,因?yàn)樾枰罅康呐?lái)為每個(gè)單獨(dú)的用例找到和實(shí)例化最佳內(nèi)核。 cuBLAS 庫(kù)通過(guò)廣泛訓(xùn)練的啟發(fā)式方法,在廣泛的問(wèn)題范圍內(nèi)提供最大的性能。

事實(shí)上,對(duì)于許多用例和數(shù)據(jù)類型, cuBLAS 可能包括從 CULASS 實(shí)例化的幾個(gè)內(nèi)核。通常, cuBLAS 使用各種內(nèi)核源,以確保在應(yīng)用程序之間更均勻地實(shí)現(xiàn)最大性能。

NVIDIA Hopper 上的 FP8 支持

首次在 CUDA 18.1 中引入, FP8 是 16 位浮點(diǎn)類型的自然發(fā)展,減少了 神經(jīng)網(wǎng)絡(luò)訓(xùn)練的記憶和計(jì)算要求 。此外,由于其對(duì)實(shí)數(shù)的非線性采樣,與 int8 相比, FP8 在推理方面也具有優(yōu)勢(shì)。
FP8 由兩種編碼 E4M3 和 E5M2 組成,其中名稱明確表示指數(shù)( E )和尾數(shù)( M )位數(shù),符號(hào)位隱含。在 CUDA C ++中,這些編碼公開(kāi)為 __nv_fp8_e4m3 和 __nv_fp8_e5m2 類型。 NVIDIA Hopper Tensor Core 支持 FP16 和 FP32 累積的 FP8 矩陣產(chǎn)品。

在 CUDA 12.0 (以及 CUDA 11.8 )中, cuBLAS 提供了多種 matmul 操作,支持具有 FP32 累積的 both encodings 。(有關(guān)完整列表,請(qǐng)參見(jiàn) cuBLAS 文檔 .) FP8 matmul 操作還支持附加的融合操作,這些操作對(duì)于使用 FP8 進(jìn)行訓(xùn)練和推理非常重要,包括:

除了傳統(tǒng)的 alpha 和 beta 外, A 、 B 、 C 和 D 矩陣的每矩陣比例因子

輸出矩陣的絕對(duì)最大值計(jì)算

common-GEMM-in-transformers-diagram.png 圖 2 :變壓器中常見(jiàn)的 GEM 示意圖,帶有尾聲、縮放因子和 cuBLASLt API 支持的多個(gè)輸出

latex.php?latex=D_%7Btemp%7D%2C+Aux_%7Btemp%7D+%3D+Epilogue%28%5Calpha+%2A+scale_%7BA%7D+%2A+scale_%7BB%7D+%2A+op%28A%29+%2A+op%28B%29+%2B+%5Cbeta+%2A+scale_%7BC%7D+%2A+C%29&bg=transparent&fg=000&s=0&c=20201002

latex.php?latex=amax_%7BD%7D+%3D+max%28%5Cvert+D_%7Btemp%7D+%5Cvert%29&bg=transparent&fg=000&s=0&c=20201002

latex.php?latex=amax_%7BAux%7D+%3D+max%28%5Cvert+Aux_%7Btemp%7D+%5Cvert%29&bg=transparent&fg=000&s=0&c=20201002

latex.php?latex=D+%3D+scale_%7BD%7D+%2A+D_%7Btemp%7D&bg=transparent&fg=000&s=0&c=20201002

latex.php?latex=Aux+%3D+scale_%7BAux%7D+%2A+Aux_%7Btemp%7D&bg=transparent&fg=000&s=0&c=20201002

latex.php?latex=scale_%7BA%7D&bg=transparent&fg=000&s=0&c=20201002latex.php?latex=scale_%7BB%7D&bg=transparent&fg=000&s=0&c=20201002latex.php?latex=scale_%7BC%7D&bg=transparent&fg=000&s=0&c=20201002

請(qǐng)注意,所有比例因子都是乘法應(yīng)用的。這意味著有時(shí)需要根據(jù)應(yīng)用的上下文使用縮放因子或其倒數(shù)??s放因子和矩陣之間的乘法的特定順序無(wú)法保證。

cuBLAS 12.0 performance on NVIDIA H100 GPU

我們比較了 H100 PCIe 和 SXM (預(yù)覽版)與 A100 ( PCIe )上 FP16 、 BF16 和 FP8 GEMM 在三種情況下的基本時(shí)鐘性能: cuBLAS 庫(kù)對(duì)于大矩陣大小的峰值性能,以及 MLPerf 和 NVIDIA 深度學(xué)習(xí)示例 中存在的 GEMM 。

大型 GEMM 表現(xiàn)出較大的算術(shù)強(qiáng)度,因此受到計(jì)算限制。當(dāng)標(biāo)準(zhǔn)化為 A100 時(shí),加速因子接近于 GPU 對(duì)之間基礎(chǔ)數(shù)據(jù)類型的峰值性能比率。對(duì)于計(jì)算綁定的 FP16 GEMM , cuBLAS 庫(kù)在 H100 SXM 上實(shí)現(xiàn)了相對(duì)于 A100 的三倍加速。

另一方面, MLPerf 和 NVIDIA DL 示例由跨越一系列算術(shù)強(qiáng)度的 GEMM 組成。有些距離計(jì)算范圍較遠(yuǎn),因此表現(xiàn)出比大型 GEMs 更小的加速。對(duì)于 MLPerf 和 NVIDIA DL 示例中的 GEMs , cuBLAS 庫(kù)在 H100 SXM 上分別實(shí)現(xiàn)了 2.7 倍和 2.2 倍的加速。

在 MLPerf 和 NVIDIA DL 示例中,通過(guò) H100 ( PCIe 和 SXM ) GPU 上的 cuBLASLt 標(biāo)準(zhǔn)化為 A100 PCIe GPU ,實(shí)現(xiàn) FP16 矩陣乘法和 GEMM 的加速。通過(guò)將圖形時(shí)鐘鎖定到每個(gè) GPU 的基本時(shí)鐘來(lái)完成測(cè)量。

為了比較 H100 上的 FP8 和 BF16 性能,我們選擇 A100 上的 BF16 作為基線。之所以選擇此選項(xiàng),是因?yàn)?FP8 支持僅在 NVIDIA Hopper 架構(gòu)上可用。與 A100 PCIe 上的 BF16 相比, cuBLAS 庫(kù)在 H100 SXM 上為 BF16 和 FP8 提供了近 2.8 倍的加速。

cuBLASLt-speedup-H100-for-BF16-and-FP8-2.png 圖 4 。通過(guò) H100 ( PCIe 和 SXM ) GPU 上的 cuBLASLt 實(shí)現(xiàn)加速, BF16 和 FP8 矩陣乘法標(biāo)準(zhǔn)化為 A100 80 GB PCIe GPU 。通過(guò)將圖形時(shí)鐘鎖定到每個(gè) GPU 的基本時(shí)鐘來(lái)完成測(cè)量。

NVIDIA Hopper 架構(gòu)工作空間要求

H100 原生內(nèi)核增加了對(duì)工作空間大小的需求。因此,強(qiáng)烈建議為 cuBLASLt 調(diào)用或使用 cublasSetWorkspace 時(shí)提供至少 32 MiB ( 33554432 B )的工作空間。

cuBLAS 用戶體驗(yàn)的改進(jìn)

cuBLAS 12.0 啟用了新的 FP8 和 FP16 / BF16 融合外延。在 NVIDIA Hopper 上, FP8 融合現(xiàn)在提供偏置( BF16 和 FP16 )、 ReLU 和 GELU ,以及輔助輸出緩沖器和輔助輸出緩沖器。新的 FP16 融合器還可用于 NVIDIA Hopper 的偏置、 ReLU 和 GELU 、 dBias 和 dReLU 。對(duì)于 NVIDIA Ampere 架構(gòu),單核、更快的 BF16 融合(帶有偏置和 GELU )以及 dBias 和 dGELU 現(xiàn)在已經(jīng)公開(kāi)。

Heuristics cache 允許將 matmul 問(wèn)題映射到先前通過(guò)啟發(fā)式選擇的內(nèi)核。這有助于減少重復(fù) matmul 問(wèn)題的主機(jī)端開(kāi)銷。

cuBLAS 12.0 擴(kuò)展了 cuBLAS API ,以支持 64 位整數(shù)問(wèn)題大小、前導(dǎo)維數(shù)和向量增量。這些新函數(shù)與 32 位整數(shù)對(duì)應(yīng)函數(shù)具有相同的 API ,不同之處在于它們的名稱中有_64后綴,并將相應(yīng)的參數(shù)聲明為int64_t。

例如,對(duì)于經(jīng)典的 32 位整數(shù)函數(shù):

cublasStatus_t cublasIsamax( cublasHandle_t handle, int n, const float *x, int incx, int *result);

64 位整數(shù)對(duì)應(yīng)項(xiàng)是:

cublasStatus_t cublasIsamax_64( cublasHandle_t handle, int64_t n, const float *x, int64_t incx, int64_t *result);

性能是 cuBLAS 的主要關(guān)注點(diǎn),因此當(dāng)傳遞給 64 位整數(shù) API 的參數(shù)符合 32 位范圍時(shí),庫(kù)將使用與用戶調(diào)用 32 位整數(shù) API 相同的內(nèi)核。要嘗試新的 API ,遷移應(yīng)該像向 cuBLAS 函數(shù)添加_64后綴一樣簡(jiǎn)單,這要?dú)w功于 C / C ++將int32_t值自動(dòng)轉(zhuǎn)換為int64_t。

cuBLAS 12.0 和 NVIDIA Hopper GPU

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5282

    瀏覽量

    106040
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4925

    瀏覽量

    130902
  • AI
    AI
    +關(guān)注

    關(guān)注

    88

    文章

    34765

    瀏覽量

    276939
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    NVIDIA火熱招聘GPU性能計(jì)算架構(gòu)師

    這邊是NVIDIA HR Allen, 我們目前在上海招聘GPU性能計(jì)算架構(gòu)師(功能驗(yàn)證)的崗位,有意向的朋友歡迎發(fā)送簡(jiǎn)歷到 allelin@nv
    發(fā)表于 09-01 17:22

    NVIDIA-SMI:監(jiān)控GPU的絕佳起點(diǎn)

    nvidia-smi可執(zhí)行文件位于虛擬機(jī)管理程序。如果在同一部署中您選擇在GPU使用作為傳遞,那么GPU正在尋找訪客
    發(fā)表于 09-04 15:18

    Nvidia GPU風(fēng)扇和電源顯示ERR怎么解決

    問(wèn)題最近在Ubuntu使用Nvidia GPU訓(xùn)練模型的時(shí)候,如果機(jī)器鎖屏一段時(shí)間再打開(kāi)的時(shí)候鼠標(biāo)非??D,或者說(shuō)顯示界面非??D,使用nvidia-smi查看發(fā)現(xiàn),訓(xùn)練模型的
    發(fā)表于 12-30 06:44

    在Ubuntu使用Nvidia GPU訓(xùn)練模型

    問(wèn)題最近在Ubuntu使用Nvidia GPU訓(xùn)練模型的時(shí)候,沒(méi)有問(wèn)題,過(guò)一會(huì)再訓(xùn)練出現(xiàn)非??D,使用nvidia-smi查看發(fā)現(xiàn),顯示GPU
    發(fā)表于 01-03 08:24

    Arm Neoverse NVIDIA Grace CPU 超級(jí)芯片:為人工智能的未來(lái)設(shè)定步伐

    和數(shù)據(jù)吞吐量進(jìn)行優(yōu)化的服務(wù)器和數(shù)據(jù)中心人工智能和機(jī)器學(xué)習(xí) (ML) 的需求。否則,人工智能所需的成本、電力和碳將開(kāi)始超過(guò)收益。NVIDIA 率先使用 GPU 來(lái)提高數(shù)據(jù)中心中 HPC 和 AI 的性能
    發(fā)表于 03-29 14:40

    探求NVIDIA GPU極限性能的利器

    1、探求 NVIDIA GPU 極限性能的利器  在通常的 CUDA 編程中,用戶主要通過(guò) CUDA C/C++ 或 python 語(yǔ)言實(shí)現(xiàn) CUDA 功能的調(diào)用。在
    發(fā)表于 10-11 14:35

    Adreno GPU 矩陣乘法——第1講:OpenCL優(yōu)化

    Adreno GPU架構(gòu),用于計(jì)算和加速重要線性代數(shù)算法,包括GPU矩陣乘法。 由于近來(lái)依賴于卷積的深度學(xué)習(xí)引起廣泛關(guān)注,
    發(fā)表于 09-18 19:15 ?1970次閱讀

    NVIDIA下下代GPU核心架構(gòu)將是Hopper

    來(lái)自國(guó)外的最新爆料稱,NVIDIA的下一代GPU核心架構(gòu)是Ampere(安培),下下代將是Hopper,用于紀(jì)念Grace Hopper(格蕾絲·赫柏)。
    發(fā)表于 06-12 15:53 ?2100次閱讀

    NVIDIA獲得Hopper商標(biāo)申請(qǐng),傳聞的Hopper GPU要來(lái)了?

    盡管AMD已經(jīng)推出了7nm工藝、RDNA架構(gòu)的新一代Navi家族顯卡,但是NVIDIA在高端GPU市場(chǎng)上的地位依然無(wú)可動(dòng)搖,12nm工藝的圖靈Turing顯卡在性能及能效還是占據(jù)上風(fēng)
    的頭像 發(fā)表于 12-10 10:44 ?2165次閱讀

    NVIDIA下一代GPU曝光:5nm Lovelace、Hopper被延后

    圖靈(Turing)和安培(Ampere)之后,很早就有爆料NVIDIA的下一代GPU將以“Hopper(赫柏)”知名,Hopper被譽(yù)為編譯之母,是偉大的女性程序員。 不過(guò),爆料好手
    的頭像 發(fā)表于 12-21 18:07 ?2071次閱讀

    GE完成XA100循環(huán)發(fā)動(dòng)機(jī)測(cè)試 NVIDIA發(fā)布Hopper GPU架構(gòu)

    今日在 GTC 發(fā)布的 NVIDIA Hopper GPU 架構(gòu)利用全新 DPX 指令,將動(dòng)態(tài)編程速度提高多達(dá) 40 倍。動(dòng)態(tài)編程是一種應(yīng)用于基因組學(xué)、量子計(jì)算、路線優(yōu)化等領(lǐng)域算法中
    的頭像 發(fā)表于 03-25 16:28 ?2236次閱讀

    NVIDIA發(fā)布最新Hopper架構(gòu)的H100系列GPU和Grace CPU超級(jí)芯片

    今日凌晨,NVIDIA(英偉達(dá))發(fā)布了基于最新Hopper架構(gòu)的H100系列GPU和Grace CPU超級(jí)芯片!
    的頭像 發(fā)表于 03-26 09:07 ?3392次閱讀

    關(guān)于NVIDIA H100 GPU的問(wèn)題解答

    今年的 GTC22 NVIDIA 發(fā)布其首款基于 Hopper 架構(gòu)的 GPUNVIDIA H100。
    的頭像 發(fā)表于 07-18 10:35 ?2341次閱讀

    NVIDIA cuBLAS庫(kù)加速BLAS的GPU設(shè)計(jì)實(shí)現(xiàn)

    cuBLASMg 提供了先進(jìn)的多 GPU 矩陣乘法,您可在多臺(tái)設(shè)備間以 2D 塊循環(huán)方式分發(fā)每個(gè)矩陣。cuBLASMg 目前已加入 CUDA 數(shù)學(xué)庫(kù)搶先體驗(yàn)計(jì)劃。
    的頭像 發(fā)表于 08-07 15:46 ?1888次閱讀

    NVIDIA即將推出首批基于開(kāi)創(chuàng)性 NVIDIA Hopper 架構(gòu)的產(chǎn)品和服務(wù)

    NVIDIA 于今日宣布 NVIDIA H100 Tensor Core GPU 全面投產(chǎn),NVIDIA 全球技術(shù)合作伙伴計(jì)劃于 10 月推出首批基于開(kāi)創(chuàng)性
    的頭像 發(fā)表于 09-22 10:45 ?1377次閱讀