在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

CUDA和NVIDIA Ampere微體系結(jié)構(gòu)GPUs

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:Pramod Ramarao ? 2022-04-27 14:29 ? 次閱讀

基于 NVIDIA Ampere GPU 架構(gòu)的新型 NVIDIA A100 GPU 在加速計(jì)算方面實(shí)現(xiàn)了最大的一代飛躍。 A100 GPU 具有革命性的硬件功能,我們很高興宣布 CUDA 11 與 A100 結(jié)合使用。

CUDA 11 使您能夠利用新的硬件功能來加速 HPC 、基因組學(xué)、 5G 、渲染、深度學(xué)習(xí)、數(shù)據(jù)分析、數(shù)據(jù)科學(xué)、機(jī)器人技術(shù)和更多不同的工作負(fù)載。

CUDA 11 包含了從平臺(tái)系統(tǒng)軟件到您開始開發(fā) GPU 加速應(yīng)用程序所需的所有功能。本文概述了此版本中的主要軟件功能:

支持 NVIDIA Ampere GPU 架構(gòu),包括新的 NVIDIA A100 GPU ,用于加速 AI 和 HPC 數(shù)據(jù)中心的擴(kuò)展和擴(kuò)展;具有 NVSwitch 結(jié)構(gòu)的多 GPU 系統(tǒng),如 DGX A100 型 和 HGX A100 型 。

多實(shí)例 GPU ( MIG )分區(qū)功能,這對(duì)云服務(wù)提供商( csp )提高 GPU 利用率特別有利。

新的第三代張量核心加速混合精度,不同數(shù)據(jù)類型的矩陣運(yùn)算,包括 TF32 和 Bfloat16 。

用于任務(wù)圖、異步數(shù)據(jù)移動(dòng)、細(xì)粒度同步和二級(jí)緩存駐留控制的編程和 API

CUDA 庫中用于線性代數(shù)、 fft 和矩陣乘法的性能優(yōu)化。

Nsight 產(chǎn)品系列的更新,用于跟蹤、分析和調(diào)試 CUDA 應(yīng)用程序。

全面支持所有主要的 CPU 體系結(jié)構(gòu),跨 x86 趶 64 、 Arm64 服務(wù)器和電源體系結(jié)構(gòu)。

一篇文章不能公正地反映 CUDA 11 中提供的每一個(gè)特性。在這篇文章的最后,有一些鏈接到 GTC 數(shù)字會(huì)議,這些會(huì)議提供了對(duì)新的 CUDA 特性的深入探討。

CUDA 和 NVIDIA Ampere微體系結(jié)構(gòu) GPUs

NVIDIA Ampere GPU 微體系結(jié)構(gòu)采用 TSMC 7nm N7 制造工藝制造,包括更多的流式多處理器( SMs )、更大更快的內(nèi)存以及與第三代 NVLink 互連帶寬,以提供巨大的計(jì)算吞吐量。

A100 的 40 GB ( 5 站點(diǎn))高速 HBM2 內(nèi)存的帶寬為 1 。 6 TB /秒,比 V100 快 1 。 7 倍以上。 A100 上 40 MB 的二級(jí)緩存幾乎比 Tesla V100 大 7 倍,提供 2 倍以上的二級(jí)緩存讀取帶寬。 CUDA 11 在 A100 上提供了新的專用二級(jí)緩存管理和駐留控制 API 。 A100 中的短消息包括一個(gè)更大更快的一級(jí)緩存和共享內(nèi)存單元(每平方米 192 千字節(jié)),提供 1.5 倍于沃爾塔 V100GPU 的總?cè)萘俊?/p>

A100 配備了專門的硬件單元,包括第三代張量核心、更多視頻解碼器( NVDEC )單元、 JPEG 解碼器和光流加速器。所有這些都被各種 CUDA 庫用來加速 HPC 和 AI 應(yīng)用程序。

接下來的幾節(jié)將討論 NVIDIA A100 中引入的主要?jiǎng)?chuàng)新,以及 CUDA 11 如何使您充分利用這些功能。 CUDA 11 為每個(gè)人提供了一些東西,無論你是管理集群的平臺(tái) DevOps 工程師,還是編寫 GPU 加速應(yīng)用程序的軟件開發(fā)人員。

多實(shí)例

MIG 功能可以將單個(gè) A100 GPU 物理劃分為多個(gè) GPUs 。它允許多個(gè)客戶機(jī)(如 vm 、容器或進(jìn)程)同時(shí)運(yùn)行,同時(shí)在這些程序之間提供錯(cuò)誤隔離和高級(jí)服務(wù)質(zhì)量( QoS )。

圖 1 A100 中的新 MIG 功能。

A100 是第一款 GPU 可以通過 NVLink 擴(kuò)展到完整的 GPU ,也可以通過降低每個(gè) GPU 實(shí)例的成本,使用 MIG 擴(kuò)展到許多用戶。 MIG 支持多個(gè)用例來提高 GPU 的利用率。這可能是 CSP 租用單獨(dú)的 GPU 實(shí)例,在 GPU 上運(yùn)行多個(gè)推理工作負(fù)載,托管多個(gè) Jupyter 筆記本會(huì)話進(jìn)行模型探索,或者在組織中的多個(gè)內(nèi)部用戶(單個(gè)租戶、多用戶)之間共享 GPU 的資源。

nvidia-smi 對(duì) CUDA 是透明的,現(xiàn)有的 CUDA 程序可以在 MIG 下運(yùn)行,以減少編程工作量。 CUDA 11 允許使用 NVIDIA 管理庫( NVML )或其命令行界面 NVIDIA ( nvidia-smi MIG 子命令)在 Linux 操作系統(tǒng)上配置和管理 MIG 實(shí)例。

使用啟用了 MIG 的 集裝箱工具包 和 A100 ,您還可以使用 Docker 運(yùn)行 GPU 容器(使用從 Docker 19 。 03 開始的 --gpus 選項(xiàng))或使用 NVIDIA 設(shè)備插件 擴(kuò)展 Kubernetes 容器平臺(tái)。

下面的命令顯示了使用 nvidia-smi 進(jìn)行的 MIG 管理:

# List gpu instance profiles:
# nvidia-smi mig -i 0 -lgip
+-------------------------------------------------------------------------+
| GPU instance profiles: |
| GPU Name ID Instances Memory P2P SM DEC ENC |
| Free/Total GiB CE JPEG OFA |
|=========================================================================|
| 0 MIG 1g.5gb 19 0/7 4.95 No 14 0 0 |
| 1 0 0 |
+-------------------------------------------------------------------------+
| 0 MIG 2g.10gb 14 0/3 9.90 No 28 1 0 |
| 2 0 0 |
+-------------------------------------------------------------------------+
| 0 MIG 3g.20gb 9 0/2 19.81 No 42 2 0 |
| 3 0 0 |
+-------------------------------------------------------------------------+
| 0 MIG 4g.20gb 5 0/1 19.81 No 56 2 0 |
| 4 0 0 |
+-------------------------------------------------------------------------+
| 0 MIG 7g.40gb 0 0/1 39.61 No 98 5 0 |
| 7 1 1 |
+-------------------------------------------------------------------------+ 

系統(tǒng)軟件平臺(tái)支持

為企業(yè)級(jí)應(yīng)用程序 NVIDIA 引入了新的恢復(fù)功能,避免了 NVIDIA A100 對(duì)內(nèi)存使用的影響。先前架構(gòu)上不可糾正的 ECC 錯(cuò)誤將影響 GPU 上所有正在運(yùn)行的工作負(fù)載,需要重置 GPU 。

在 A100 上,影響僅限于遇到錯(cuò)誤并被終止的應(yīng)用程序,而其他正在運(yùn)行的 CUDA 工作負(fù)載不受影響。 GPU 不再需要重置來恢復(fù)。 NVIDIA 驅(qū)動(dòng)程序執(zhí)行動(dòng)態(tài)頁面黑名單以標(biāo)記頁面不可用,以便當(dāng)前和新的應(yīng)用程序不會(huì)訪問受影響的內(nèi)存區(qū)域。

當(dāng) GPU 被重置時(shí),作為常規(guī) GPU / VM 服務(wù)窗口的一部分, A100 配備了一種稱為行重映射的新硬件機(jī)制,它用備用單元替換內(nèi)存中降級(jí)的單元,并避免在物理內(nèi)存地址空間中造成任何漏洞。

帶有 CUDA 11 的 NVIDIA 驅(qū)動(dòng)程序現(xiàn)在報(bào)告了與帶內(nèi)(使用 NVML / NVIDIA -smi )和帶外(使用系統(tǒng) BMC )行重映射相關(guān)的各種度量。 A100 包括新的帶外功能,包括更多可用的 GPU 和 NVSwitch 遙測、控制和改進(jìn)的 GPU 和 BMC 之間的總線傳輸數(shù)據(jù)速率。

為了提高多 GPU 系統(tǒng)(如 DGX A100 和 HGX A100 )的彈性和高可用性,系統(tǒng)軟件支持禁用發(fā)生故障的 GPU 或 NVSwitch 節(jié)點(diǎn)的能力,而不是像前幾代系統(tǒng)中那樣禁用整個(gè)基板。

CUDA 11 是第一個(gè)為 Arm 服務(wù)器添加生產(chǎn)支持的版本。通過將 Arm 的 節(jié)能 CPU 體系結(jié)構(gòu) 與 CUDA 相結(jié)合, Arm 生態(tài)系統(tǒng)將受益于 GPU ——一種針對(duì)各種用例的加速計(jì)算:從邊緣、云、游戲到超級(jí)計(jì)算機(jī)。 CUDA 11 支持 Marvell 的高性能 基于 ThunderX2 服務(wù)器,并與 Arm 和生態(tài)系統(tǒng)中的其他硬件和軟件合作伙伴密切合作,以快速支持 GPUs 。

第三代多精度張量核

NVIDIA A100 中每個(gè) SM 的四個(gè)大張量核(總共 432 個(gè)張量核)為所有數(shù)據(jù)類型提供更快的矩陣乘法累加( MMA )操作: Binary 、 INT4 、 INT8 、 FP16 、 Bfloat16 、 TF32 和 FP64 。

您可以通過不同的深度學(xué)習(xí)框架、 CUDA C ++模板抽象來訪問張量核, CUTLASS 、 CUDA 庫 cuBLAS 、 CuSOLVER 、 CursSuror 或 TensorRT 。

CUDA C ++利用張量矩陣( WMMA ) API 使張量核可用。這種便攜式 API 抽象公開了專門的矩陣加載、矩陣乘法和累加運(yùn)算以及矩陣存儲(chǔ)操作,以有效地使用 CUDA C ++程序的張量核。 WMMA 的所有函數(shù)和數(shù)據(jù)類型都可以在 nvcuda::wmma 命名空間中使用。您還可以使用 mma_sync PTX 指令直接訪問 A100 的張量核心(即具有計(jì)算能力 compute _及更高版本的設(shè)備)。

CUDA 11 增加了對(duì)新的輸入數(shù)據(jù)類型格式的支持: Bfloat16 、 TF32 和 FP64 。 Bfloat16 是另一種 FP16 格式,但精度降低,與 FP32 數(shù)值范圍匹配。它的使用會(huì)降低帶寬和存儲(chǔ)需求,從而提高吞吐量。 BFLAT16 作為一個(gè)新的 CUDA C ++ __nv_bfloat16 數(shù)據(jù)類型在 CUDA α BF16 。 H 中通過 WMMA 公開,并由各種 CUDA 數(shù)學(xué)庫支持。

TF32 是一種特殊的浮點(diǎn)格式,用于張量核心。 TF32 包括一個(gè) 8 位指數(shù)(與 FP32 相同)、 10 位尾數(shù)(精度與 FP16 相同)和一個(gè)符號(hào)位。這是默認(rèn)的數(shù)學(xué)模式,允許您在不改變模型的情況下,獲得超過 FP32 的 DL 訓(xùn)練加速。最后, A100 為 MMA 操作帶來了雙精度( FP64 )支持, WMMA 接口也支持這種支持。

圖 2 矩陣運(yùn)算支持的數(shù)據(jù)類型、配置和性能表。

編程 NVIDIA Ampere架構(gòu) GPUs

為了提高 GPU 的可編程性和利用 NVIDIA A100 GPU 的硬件計(jì)算能力, CUDA 11 包括內(nèi)存管理、任務(wù)圖加速、新指令和線程通信結(jié)構(gòu)的新 API 操作。下面我們來看看這些新操作,以及它們?nèi)绾问鼓軌蚶?A100 和 NVIDIA Ampere微體系結(jié)構(gòu)。

內(nèi)存管理

最大化 GPU 內(nèi)核性能的優(yōu)化策略之一是最小化數(shù)據(jù)傳輸。如果內(nèi)存駐留在全局內(nèi)存中,將數(shù)據(jù)讀入二級(jí)緩存或共享內(nèi)存 MIG ht 的延遲需要幾百個(gè)處理器周期。

例如,在 GV100 上,共享內(nèi)存提供的帶寬比全局內(nèi)存快 17 倍,比 L2 快 3 倍。因此,一些具有生產(chǎn)者 – 消費(fèi)者范式的算法可以觀察到在內(nèi)核之間的 L2 中持久化數(shù)據(jù)的性能優(yōu)勢,從而獲得更高的帶寬和性能。

在 A100 上, CUDA 11 提供了 API 操作,以留出 40 MB 二級(jí)緩存的一部分來持久化對(duì)全局內(nèi)存的數(shù)據(jù)訪問。持久訪問優(yōu)先使用二級(jí)緩存的這一預(yù)留部分,而全局內(nèi)存的正常或流式訪問只能在持久訪問未使用的情況下使用這部分二級(jí)緩存。

L2 持久性可以設(shè)置為在 CUDA 流或 CUDA 圖內(nèi)核節(jié)點(diǎn)中使用。在留出二級(jí)緩存區(qū)域時(shí),需要考慮一些問題。例如,在不同的流中并發(fā)執(zhí)行的多個(gè) CUDA 內(nèi)核在具有不同的訪問策略窗口時(shí),共享二級(jí)預(yù)留緩存。下面的代碼示例顯示為持久性預(yù)留二級(jí)緩存比率。

cudaGetDeviceProperties( &prop, device_id);
// Set aside 50% of L2 cache for persisting accesses size_t size = min( int(prop.l2CacheSize * 0.50) , prop.persistingL2CacheMaxSize );
cudaDeviceSetLimit( cudaLimitPersistingL2CacheSize, size); // Stream level attributes data structure cudaStreamAttrValue attr ;? attr.accessPolicyWindow.base_ptr = /* beginning of range in global memory */ ;? attr.accessPolicyWindow.num_bytes = /* number of bytes in range */ ;? // hitRatio causes the hardware to select the memory window to designate as persistent in the area set-aside in L2 attr.accessPolicyWindow.hitRatio = /* Hint for cache hit ratio */ // Type of access property on cache hit attr.accessPolicyWindow.hitProp = cudaAccessPropertyPersisting;?
// Type of access property on cache miss
attr.accessPolicyWindow.missProp = cudaAccessPropertyStreaming; cudaStreamSetAttribute(stream,cudaStreamAttributeAccessPolicyWindow,&attr);

虛擬內(nèi)存管理 API 操作 已經(jīng)擴(kuò)展到支持對(duì)固定的 GPU 內(nèi)存的壓縮,以減少 L2 到 DRAM 的帶寬。這對(duì)于深度學(xué)習(xí)訓(xùn)練和推理用例非常重要。使用 cuMemCreate 創(chuàng)建可共享內(nèi)存句柄時(shí),將向 API 操作提供分配提示。

算法(如 3D 模板或卷積)的有效實(shí)現(xiàn)涉及內(nèi)存復(fù)制和計(jì)算控制流模式,其中數(shù)據(jù)從全局內(nèi)存?zhèn)鬏數(shù)骄€程塊的共享內(nèi)存,然后進(jìn)行使用該共享內(nèi)存的計(jì)算。全局到共享內(nèi)存的復(fù)制擴(kuò)展為從全局內(nèi)存讀取到寄存器,然后寫入共享內(nèi)存。

CUDA 11 允許您利用一種新的異步復(fù)制( async-copy )范式。它本質(zhì)上是將數(shù)據(jù)從全局復(fù)制到共享內(nèi)存與計(jì)算重疊,并避免使用中間寄存器或一級(jí)緩存。異步復(fù)制的好處是:控制流不再遍歷內(nèi)存管道兩次,不使用中間寄存器可以減少寄存器壓力,增加內(nèi)核占用。在 A100 上,異步復(fù)制操作是硬件加速的。

下面的代碼示例顯示了一個(gè)使用異步復(fù)制的簡單示例。生成的代碼雖然性能更好,但可以通過對(duì)多批異步復(fù)制操作進(jìn)行管道化來進(jìn)一步優(yōu)化。這種額外的流水線可以消除代碼中的一個(gè)同步點(diǎn)。

異步復(fù)制是在 CUDA 11 中作為實(shí)驗(yàn)特性提供的,并且使用協(xié)作組集合公開。 CUDA C ++程序設(shè)計(jì)指南 包括在 A100 中使用多級(jí)流水線和硬件加速屏障操作的異步復(fù)制的更高級(jí)示例。

//Without async-copy using namespace nvcuda::experimental;
__shared__ extern int smem[];? // algorithm loop iteration
?while ( ... ) {? __syncthreads(); // load element into shared mem for ( i = ... ) {? // uses intermediate register // {int tmp=g[i]; smem[i]=tmp;} smem[i] = gldata[i]; ? }?
//With async-copy using namespace nvcuda::experimental;
__shared__ extern int smem[];? pipeline pipe; // algorithm loop iteration
?while ( ... ) {? __syncthreads(); // load element into shared mem for ( i = ... ) {? // initiate async memory copy memcpy_async(smem[i], gldata[i], pipe); ? }? // wait for async-copy to complete pipe.commit_and_wait(); __syncthreads();? /* compute on smem[] */? }?

任務(wù)圖加速

CUDA 10 中引入的 CUDA 圖 代表了使用 CUDA 提交工作的新模型。圖由一系列操作組成,如內(nèi)存拷貝和內(nèi)核啟動(dòng),它們由依賴關(guān)系連接,并在執(zhí)行時(shí)單獨(dú)定義。

圖形支持定義一次重復(fù)運(yùn)行的執(zhí)行流。它們可以減少累積的啟動(dòng)開銷并提高應(yīng)用程序的整體性能。對(duì)于深度學(xué)習(xí)應(yīng)用程序來說尤其如此,這些應(yīng)用程序可能會(huì)啟動(dòng)多個(gè)內(nèi)核,任務(wù)大小和運(yùn)行時(shí)會(huì)減少,或者任務(wù)之間可能存在復(fù)雜的依賴關(guān)系。

從 A100 開始, GPU 提供任務(wù)圖硬件加速來預(yù)取網(wǎng)格啟動(dòng)描述符、指令和常量。與以前的 GPUs 如 V100 相比,在 A100 上使用 CUDA 圖改善了內(nèi)核啟動(dòng)延遲。

CUDA Graph API 操作現(xiàn)在有了一個(gè)輕量級(jí)的機(jī)制,可以支持對(duì)實(shí)例化圖的就地更新,而不需要重新構(gòu)建圖。在圖的重復(fù)實(shí)例化過程中,節(jié)點(diǎn)參數(shù)(如內(nèi)核參數(shù))通常會(huì)在圖拓?fù)浔3植蛔兊那闆r下發(fā)生變化。 Graph API 操作提供了一種更新整個(gè)圖形的機(jī)制,您可以使用更新的節(jié)點(diǎn)參數(shù)提供拓?fù)湎嗤?cudaGraph_t 對(duì)象,或者顯式更新單個(gè)節(jié)點(diǎn)。

另外, CUDA 圖現(xiàn)在支持協(xié)同內(nèi)核啟動(dòng)( cuLaunchCooperativeKernel ),包括與 CUDA 流進(jìn)行奇偶校驗(yàn)的流捕獲。

線集體

以下是 CUDA 11 添加到 合作小組 中的一些增強(qiáng),這些增強(qiáng)在 CUDA 9 中引入。協(xié)作組是一種集體編程模式,旨在使您能夠顯式地表達(dá)線程可以在其中通信的粒度。這使得 CUDA 內(nèi)的新的協(xié)作并行模式得以實(shí)現(xiàn)。

在 CUDA 11 中,協(xié)作組集體公開了新的 A100 硬件特性,并添加了幾個(gè) API 增強(qiáng)。

A100 引入了一個(gè)新的 reduce 指令,它對(duì)每個(gè)線程提供的數(shù)據(jù)進(jìn)行操作。這是一個(gè)新的使用協(xié)作組的集合,它提供了一個(gè)可移植的抽象,也可以在舊的體系結(jié)構(gòu)上使用。 reduce 操作支持算術(shù)(例如 add )和邏輯(例如和)操作。下面的代碼示例顯示 reduce 集合。

// Simple Reduction Sum
#include  ... const int threadId = cta.thread_rank(); int val = A[threadId]; // reduce across tiled partition reduceArr[threadId] = cg::reduce(tile, val, cg::plus()); // synchronize partition cg::sync(cta); // accumulate sum using a leader and return sum

協(xié)作組提供了集體操作( labeled_partition ),將父組劃分為一維子組,在這些子組中線程被合并在一起。這對(duì)于試圖通過條件語句的基本塊跟蹤活動(dòng)線程的控制流特別有用。

例如,可以使用 labeled_partition 在一個(gè) warp 級(jí)別組(不限制為 2 的冪)中形成多個(gè)分區(qū),并在原子加法操作中使用。 labeled_partition API 操作計(jì)算條件標(biāo)簽,并將具有相同標(biāo)簽值的線程分配到同一組中。

下面的代碼示例顯示自定義線程分區(qū):

// Get current active threads (that is, coalesced_threads())
cg::coalesced_group active = cg::coalesced_threads(); // Match threads with the same label using match_any() int bucket = active.match_any(value); cg::coalesced_group subgroup = cg::labeled_partition(active, bucket); // Choose a leader for each partition (for example, thread_rank = 0)
// if (subgroup.thread_rank() == 0) { threadId = atomicAdd(&addr[bucket], subgroup.size()); } // Now use shfl to transfer the result back to all threads in partition
return (subgroup.shfl(threadId, 0));

CUDA C ++語言及其編譯器改進(jìn)

CUDA 11 也是第一個(gè)正式將 CUB 作為 CUDA 工具包一部分的版本。 CUB 現(xiàn)在是支持的 CUDA C ++核心庫之一。

CUDA 11 的 nvcc 公司 的一個(gè)主要特性是支持鏈路時(shí)間優(yōu)化( LTO ),以提高單獨(dú)編譯的性能。 LTO 使用 --dlink-time-opt 或 -dlto 選項(xiàng),在編譯期間存儲(chǔ)中間代碼,然后在鏈接時(shí)執(zhí)行更高級(jí)別的優(yōu)化,例如跨文件內(nèi)聯(lián)代碼。

nvcc 公司 在 CUDA 11 中添加了對(duì) ISO C ++ 17 的支持,并支持 PGI 、 GCC 、 CLAN 、 ARM 和微軟 VisualStudio 上的新主機(jī)編譯器。如果您想嘗試尚未支持的主機(jī)編譯器, CUDA 在編譯構(gòu)建工作流期間支持一個(gè)新的 nvcc 公司 標(biāo)志。 --allow-unsupported-compiler 添加了其他新功能,包括:

改進(jìn)的 lambda 支持

依賴文件生成增強(qiáng)功能( -MD , -MMD 選項(xiàng))

傳遞選項(xiàng)到主機(jī)編譯器

圖 4 CUDA 11 中的平臺(tái)支撐。

CUDA 庫

CUDA 11 中的庫通過使用線性代數(shù)、信號(hào)處理、基本數(shù)學(xué)運(yùn)算和圖像處理中常見的 api 中的最新和最好的 A100 硬件特性,繼續(xù)推動(dòng)性能和開發(fā)人員生產(chǎn)力的邊界。

在整個(gè)線性代數(shù)庫中,您將看到 A100 上提供的全系列精度的張量核心加速度,包括 FP16 、 Bfloat16 、 TF32 和 FP64 。這包括 cuBLAS 中的 BLAS3 運(yùn)算, cuSOLVER 中的因子分解和稠密線性解算器,以及 cuTENSOR 中的張量收縮。

除了提高精度范圍外,對(duì)矩陣維數(shù)和張量核心加速度對(duì)齊的限制也被取消。為了達(dá)到適當(dāng)?shù)木龋铀佻F(xiàn)在是自動(dòng)的,不需要用戶選擇加入。 cuBLAS 的啟發(fā)式算法在 A100 上使用 MIG 在 GPU 實(shí)例上運(yùn)行時(shí)自動(dòng)適應(yīng)資源。

圖 6 用 cuBLAS 對(duì) A100 進(jìn)行混合精度矩陣乘法。

彎刀 、 CUDA C ++模板用于高性能 GEMM 的抽象,支持 A100 提供的各種精度模式。有了 CUDA 11 , Cutless 現(xiàn)在達(dá)到了 95% 以上的性能與 cuBLAS 相當(dāng)。這允許您編寫您自己的自定義 CUDA 內(nèi)核來編程 NVIDIA GPUs 中的張量核心。

cuFFT 利用了 A100 中更大的共享內(nèi)存大小,從而在較大的批處理大小下為單精度 fft 帶來更好的性能。最后,在多個(gè) GPU A100 系統(tǒng)上,與 V100 相比, cuFFT 可擴(kuò)展并提供 2 倍于 GPU 的性能。

nvJPEG 是一個(gè)用于 JPEG 解碼的 GPU 加速庫。它與數(shù)據(jù)擴(kuò)充和圖像加載庫 NVIDIA DALI 一起,可以加速圖像分類模型,特別是計(jì)算機(jī)視覺的深度學(xué)習(xí)訓(xùn)練。圖書館加速了深度學(xué)習(xí)工作流的圖像解碼和數(shù)據(jù)擴(kuò)充階段。

A100 包括一個(gè) 5 核硬件 JPEG 解碼引擎, nvJPEG 利用硬件后端對(duì) JPEG 圖像進(jìn)行批處理。專用硬件塊的 JPEG 加速緩解了 CPU 上的瓶頸,并允許更好的 GPU 利用率。

選擇硬件解碼器是由給定圖像的 nvjpegDecode 自動(dòng)完成的,或者通過使用 nvjpegCreateEx init 函數(shù)顯式選擇硬件后端來完成的。 nvJPEG 提供基線 JPEG 解碼的加速,以及各種顏色轉(zhuǎn)換格式,例如 yuv420 、 422 和 444 。

圖 8 顯示,與僅使用 CPU 處理相比,這將使圖像解碼速度提高 18 倍。如果您使用 DALI ,您可以直接受益于這種硬件加速,因?yàn)?nvJPEG 是抽象的。

圖 9 nvJPEG 加速比 CPU 。

(第 128 批使用 Intel Platinum 8168 @ 2GHz 3 。 7GHz Turbo HT ;使用 TurboJPEG )

在 CUDA 數(shù)學(xué)庫中,有許多特性比一篇文章所能涵蓋的還要多。

開發(fā)人員工具

CUDA 11 繼續(xù)為現(xiàn)有的開發(fā)人員工具組合添加豐富的功能,其中包括熟悉的 Visual Studio 插件和 NVIDIA Nsight 集成 for Visual Studio ,以及 Eclipse 和 Nsight Eclipse 插件版。它還包括獨(dú)立的工具,如用于內(nèi)核評(píng)測的 Nsight Compute 和用于系統(tǒng)范圍性能分析的 Nsight 系統(tǒng)。 Nsight Compute 和 Nsight 系統(tǒng)現(xiàn)在在 CUDA 支持的三種 CPU 架構(gòu)上都得到支持: x86 、 POWER 和 Arm64 。

Nsight Compute for CUDA 11 的一個(gè)關(guān)鍵特性是能夠生成應(yīng)用程序的屋頂線模型。 Roofline 模型是一種直觀直觀的方法,可以讓您通過將浮點(diǎn)性能、算術(shù)強(qiáng)度和內(nèi)存帶寬組合到二維圖中來了解內(nèi)核特性。

通過查看 Roofline 模型,可以快速確定內(nèi)核是受計(jì)算限制還是內(nèi)存受限。您還可以了解進(jìn)一步優(yōu)化的潛在方向,例如,靠近屋頂線的內(nèi)核可以優(yōu)化利用計(jì)算資源。

圖 11 Nsight 計(jì)算中的屋頂線模型。

CUDA 11 包括 Compute Sanitizer ,這是下一代的功能正確性檢查工具,它為內(nèi)存訪問和競爭條件提供運(yùn)行時(shí)檢查。 Compute Sanitizer 旨在替代 cuda-memcheck 工具。

下面的代碼示例顯示了計(jì)算消毒劑檢查內(nèi)存訪問的示例。

//Out-of-bounds Array Access __global__ void oobAccess(int* in, int* out)
{ int bid = blockIdx.x; int tid = threadIdx.x; if (bid == 4) { out[tid] = in[dMem[tid]]; }
} int main()
{ ... // Array of 8 elements, where element 4 causes the OOB std::array hMem = {0, 1, 2, 10, 4, 5, 6, 7}; cudaMemcpy(d_mem, hMem.data(), size, cudaMemcpyHostToDevice); oobAccess<<<10, Size>>>(d_in, d_out); cudaDeviceSynchronize(); ... $ /usr/local/cuda-11.0/Sanitizer/compute-sanitizer --destroy-on-device-error kernel --show-backtrace no basic
========= COMPUTE-SANITIZER
Device: Tesla T4
========= Invalid __global__ read of size 4 bytes
========= at 0x480 in /tmp/CUDA11.0/ComputeSanitizer/Tests/Memcheck/basic/basic.cu:40:oobAccess(int*,int*)
========= by thread (3,0,0) in block (4,0,0)
========= Address 0x7f551f200028 is out of bounds

下面的代碼示例顯示了用于競爭條件檢查的計(jì)算消毒劑示例。

//Contrived Race Condition Example __global__ void Basic()
{ __shared__ volatile int i; i = threadIdx.x;
} int main()
{ Basic<<<1,2>>>(); cudaDeviceSynchronize(); ... $ /usr/local/cuda-11.0/Sanitizer/compute-sanitizer --destroy-on-device-error kernel --show-backtrace no --tool racecheck --racecheck-report hazard raceBasic
========= COMPUTE-SANITIZER
========= ERROR: Potential WAW hazard detected at __shared__ 0x0 in block (0,0,0) :
========= Write Thread (0,0,0) at 0x100 in /tmp/CUDA11.0/ComputeSanitizer/Tests/Racecheck/raceBasic/raceBasic.cu:11:Basic(void)
========= Write Thread (1,0,0) at 0x100 in /tmp/CUDA11.0/ComputeSanitizer/Tests/Racecheck/raceBasic/raceBasic.cu:11:Basic(void)
========= Current Value : 0, Incoming Value : 1
=========
========= RACECHECK SUMMARY: 1 hazard displayed (1 error, 0 warnings)

最后,盡管 CUDA 11 不再支持在 macOS 上運(yùn)行應(yīng)用程序,但我們正在為 macOS 主機(jī)上的用戶提供開發(fā)工具:

使用 cuda-gdb 進(jìn)行遠(yuǎn)程目標(biāo)調(diào)試

NVIDIA Visual Profiler

Nsight Eclipse 插件

用于遠(yuǎn)程分析或跟蹤的 Nsight 工具系列

摘要

CUDA 11 為在 NVIDIA A100 上構(gòu)建應(yīng)用程序提供了基礎(chǔ)開發(fā)環(huán)境,用于構(gòu)建 NVIDIA Ampere GPU 體系結(jié)構(gòu)和強(qiáng)大的服務(wù)器平臺(tái),用于 AI 、數(shù)據(jù)分析和 HPC 工作負(fù)載,這些平臺(tái)均用于內(nèi)部( DGX A100 型 )和云( HGX A100 型 )部署。

圖 12 得到 CUDA 11 的不同方法。

CUDA 11 現(xiàn)在可用。和往常一樣,您可以通過多種方式獲得 CUDA 11 : 下載 本地安裝程序包,使用包管理器進(jìn)行安裝,或者從各種注冊(cè)中心獲取容器。對(duì)于企業(yè)部署, CUDA 11 還包括 RHEL8 的 驅(qū)動(dòng)程序打包改進(jìn) ,使用模塊化流來提高穩(wěn)定性并減少安裝時(shí)間。

關(guān)于作者

Pramod Ramarao 是 NVIDIA 加速計(jì)算的產(chǎn)品經(jīng)理。他領(lǐng)導(dǎo) CUDA 平臺(tái)和數(shù)據(jù)中心軟件的產(chǎn)品管理,包括容器技術(shù)。

審核編輯:郭婷

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

    關(guān)注

    14

    文章

    5026

    瀏覽量

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

    關(guān)注

    28

    文章

    4754

    瀏覽量

    129087
  • CUDA
    +關(guān)注

    關(guān)注

    0

    文章

    121

    瀏覽量

    13644
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【「RISC-V體系結(jié)構(gòu)編程與實(shí)踐」閱讀體驗(yàn)】-- SBI及NEMU環(huán)境

    基于《RISC-V體系結(jié)構(gòu)編程與實(shí)踐(第二版)》這本書籍,官方文檔及網(wǎng)上資料繼續(xù)我的RISC-V旅程。 接前面的篇章,今天來看看RISCV-V的SBI、BenOS和MySBI及NEMU環(huán)境。 SBI
    發(fā)表于 11-26 09:37

    【「RISC-V體系結(jié)構(gòu)編程與實(shí)踐」閱讀體驗(yàn)】-- 前言與開篇

    發(fā)燒友論壇書籍評(píng)測活動(dòng)中,看到有RISC-V相關(guān)的書籍在評(píng)測:《RISC-V體系結(jié)構(gòu)編程與實(shí)踐(第二版)》,于是抱著僥幸的心理參加了,第一次參加這種書籍或開發(fā)板評(píng)測活動(dòng),沒想到居然中了,緣分真的挺奇妙
    發(fā)表于 11-23 15:43

    GPGPU體系結(jié)構(gòu)優(yōu)化方向(1)

    繼續(xù)上文GPGPU體系結(jié)構(gòu)優(yōu)化方向 [上],介紹提高并行度和優(yōu)化流水線的方向。
    的頭像 發(fā)表于 10-09 10:03 ?308次閱讀
    GPGPU<b class='flag-5'>體系結(jié)構(gòu)</b>優(yōu)化方向(1)

    無刷DC門驅(qū)動(dòng)系統(tǒng)的體系結(jié)構(gòu)

    電子發(fā)燒友網(wǎng)站提供《無刷DC門驅(qū)動(dòng)系統(tǒng)的體系結(jié)構(gòu).pdf》資料免費(fèi)下載
    發(fā)表于 09-29 11:52 ?0次下載
    無刷DC門驅(qū)動(dòng)系統(tǒng)的<b class='flag-5'>體系結(jié)構(gòu)</b>

    名單公布!【書籍評(píng)測活動(dòng)NO.45】RISC-V體系結(jié)構(gòu)編程與實(shí)踐(第二版)

    放棄本次試用評(píng)測資格! 火熱的RISC-V市場 去年,一部講述 RISC-V 技術(shù)基礎(chǔ)的書在國內(nèi)市場掀起了一陣學(xué)習(xí)熱潮,它就是 《RISC-V體系結(jié)構(gòu)編程與實(shí)踐》 ,這本書在豆瓣上更是獲得了 9.6
    發(fā)表于 09-25 10:08

    嵌入式系統(tǒng)的體系結(jié)構(gòu)包括哪些

    嵌入式系統(tǒng)的體系結(jié)構(gòu)通常是一個(gè)復(fù)雜而精細(xì)的架構(gòu),旨在滿足特定應(yīng)用需求,同時(shí)兼顧系統(tǒng)的可靠性、效率、成本和體積等多方面因素。以下是對(duì)嵌入式系統(tǒng)體系結(jié)構(gòu)的詳細(xì)解析,包括其主要組成部分、層次結(jié)構(gòu)以及各部分的功能和特點(diǎn)。
    的頭像 發(fā)表于 09-02 15:25 ?1422次閱讀

    工業(yè)控制計(jì)算機(jī)的體系結(jié)構(gòu)是什么

    工業(yè)控制計(jì)算機(jī)是一種專門為工業(yè)自動(dòng)化控制領(lǐng)域設(shè)計(jì)的計(jì)算機(jī)系統(tǒng),具有高性能、高可靠性、實(shí)時(shí)性、可擴(kuò)展性等特點(diǎn)。本文將詳細(xì)介紹工業(yè)控制計(jì)算機(jī)的體系結(jié)構(gòu),包括其硬件結(jié)構(gòu)、軟件結(jié)構(gòu)、通信協(xié)議、控制策略等方面
    的頭像 發(fā)表于 06-16 11:38 ?1058次閱讀

    嵌入式微處理器體系結(jié)構(gòu) 嵌入式微處理器原理與應(yīng)用

    嵌入式微處理器是一種集成于嵌入式系統(tǒng)中的微處理器,其體系結(jié)構(gòu)和應(yīng)用具有獨(dú)特特點(diǎn)。本文將詳細(xì)介紹嵌入式微處理器的體系結(jié)構(gòu)以及其原理與應(yīng)用。 一、嵌入式微處理器體系結(jié)構(gòu) 嵌入式微處理器的體系結(jié)構(gòu)
    的頭像 發(fā)表于 05-04 16:53 ?2309次閱讀

    NVIDIA推出兩款基于NVIDIA Ampere架構(gòu)的全新臺(tái)式機(jī)GPU

    兩款 NVIDIA Ampere 架構(gòu) GPU 為工作站帶來實(shí)時(shí)光線追蹤功能和生成式 AI 工具支持。
    的頭像 發(fā)表于 04-26 11:25 ?646次閱讀

    嵌入式微處理器體系結(jié)構(gòu)有幾種

    嵌入式微處理器體系結(jié)構(gòu)是指嵌入式系統(tǒng)中的微處理器采用的硬件結(jié)構(gòu)和設(shè)計(jì)技術(shù),以實(shí)現(xiàn)特定的功能和性能要求。在嵌入式系統(tǒng)中,微處理器被用于控制、通信、計(jì)算、數(shù)據(jù)處理等不同的任務(wù)。根據(jù)不同的功能要求,嵌入式
    的頭像 發(fā)表于 04-21 16:29 ?1311次閱讀

    嵌入式微處理器的體系結(jié)構(gòu)

    嵌入式微處理器的體系結(jié)構(gòu)通常包括核心架構(gòu)、指令集架構(gòu)、存儲(chǔ)體系架構(gòu)和系統(tǒng)總線架構(gòu)等關(guān)鍵組成部分。
    的頭像 發(fā)表于 03-29 11:48 ?997次閱讀

    WiMAX MAC層基礎(chǔ)知識(shí):WiMAX網(wǎng)絡(luò)體系結(jié)構(gòu)

    WiMAX形式支持的WiMAX架構(gòu)是支持固定、游牧和移動(dòng)操作的統(tǒng)一網(wǎng)絡(luò)架構(gòu)。WiMAX 網(wǎng)絡(luò)體系結(jié)構(gòu)基于全 IP 模型。
    發(fā)表于 02-08 10:39 ?843次閱讀
    WiMAX MAC層基礎(chǔ)知識(shí):WiMAX網(wǎng)絡(luò)<b class='flag-5'>體系結(jié)構(gòu)</b>

    基于最新E/E體系結(jié)構(gòu)的傳感器應(yīng)用白皮書

    電子發(fā)燒友網(wǎng)站提供《基于最新E/E體系結(jié)構(gòu)的傳感器應(yīng)用白皮書.pdf》資料免費(fèi)下載
    發(fā)表于 01-30 17:41 ?0次下載
    基于最新E/E<b class='flag-5'>體系結(jié)構(gòu)</b>的傳感器應(yīng)用白皮書

    智能化的計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)方案

    未來計(jì)算機(jī)體系結(jié)構(gòu)將趨向于智能化和自適應(yīng)性。智能化的計(jì)算機(jī)體系結(jié)構(gòu)可以根據(jù)不同的任務(wù)和場景進(jìn)行智能調(diào)整,提高計(jì)算機(jī)的性能和效率。
    發(fā)表于 01-22 11:05 ?495次閱讀
    智能化的計(jì)算機(jī)<b class='flag-5'>體系結(jié)構(gòu)</b>設(shè)計(jì)方案

    《RVfpga:理解計(jì)算機(jī)體系結(jié)構(gòu)》3.0 版本更新上線

    《RVfpga:理解計(jì)算機(jī)體系結(jié)構(gòu)》3.0版本更新上線,掃碼進(jìn)入官網(wǎng)注冊(cè)申請(qǐng)獲取。《RVfpga:理解計(jì)算機(jī)體系結(jié)構(gòu)》(以下簡稱“《RVfpga》”)是Imagination推出的完整RISC-V
    的頭像 發(fā)表于 01-18 08:27 ?807次閱讀
    《RVfpga:理解計(jì)算機(jī)<b class='flag-5'>體系結(jié)構(gòu)</b>》3.0 版本更新上線
    主站蜘蛛池模板: 伊人久久大香线蕉综合网站| 伊人草| 黄色高清视频网站| 日本人69xxxxxxx69| www.欧美成| 欧美成网站| 亚洲精品久久久久影| 色婷婷在线观看视频| 欧美高清一区| 免费观看在线视频| 六月丁香激情综合成人| 欧美一区二区视频三区| 亚洲特级毛片| 日本高清色www| 狠狠色丁香| 新天堂网| 可以在线看黄的网站| 欧美精品黑人性xxxx| 久久国产精品无码网站| 香港三级在线视频| 男人的天堂免费网站| 大尺度视频在线| 欧美一级黄色片在线观看| 日本老师69xxxxxxxxx| 免费精品美女久久久久久久久久| 亚洲xxx视频| 欧美一级黄色片| 成年ssswww日本| 免费人成黄页在线观看1024| 天天做天天爽天天谢| 久久精品草| 婷婷国产在线| 性毛片| 久草亚洲视频| 天天操天天摸天天碰| 好黄好硬好爽好刺激| 亚洲宅男天堂a在线| 美女网站一区二区三区| 亚洲日本中文字幕天天更新| 成人剧场| 妖精视频一区二区三区|