最新發布的 NVIDIA CUDA Toolkit 12.2 引入了一系列重要的新功能,對編程模型進行了修改,并增強了對硬件功能的支持,加速了 CUDA 應用程序的發展。
現在,通過 通用可用性 來獲取 NVIDIA 的 CUDA Toolkit 12.2,其中包括許多新功能,包括主要功能和次要功能。
以下文章概述了許多關鍵功能,包括:
- NVIDIA Hopper( H100 ) GPU 支持。
- Hopper GPU 早期訪問 NVIDIA 機密計算( CC )。
- 異構內存管理( HMM )支持。
- 延遲加載默認設置。
- CUDA 多進程服務( MPS )的應用程序優先級。
- NVIDIA Nsight Compute 和 NVIDIA Nsight Systems 開發工具更新。
作為 加速計算,NVIDIA 為解決世界上最嚴峻的計算挑戰創造了解決方案。加速計算需要全棧優化,從芯片架構、系統和加速庫,到安全和網絡連接,這一切都始于 CUDA 工具包。
觀看以下 CUDA Toolkit12.2 YouTube 首映式網絡研討會。
Hopper GPU 支架
新的 H100 現在,所有 GPU 的編程模型增強都支持 GPU 架構的功能,包括新的 PTX 指令以及通過更高級別的 C 和 C++ API 進行的公開。其中一個例子是 Hopper Confidential Computing(請參閱下文了解更多信息),它提供了 Hopper GPU 架構獨有的早期訪問部署。
Hopper 的機密計算
Confidential Computing 早期訪問軟件版本擁有完整的軟件堆棧,針對單個 H100 GPU 的直通模式,提供用于加密和身份驗證的單個會話密鑰,以及基本的 NVIDIA 開發工具使用。用戶代碼和數據按照 AES-GCM 標準進行加密和驗證。
不需要任何特定的 H100 SKU 、驅動程序或工具包下載。 H100 GPU 的機密計算需要支持基于虛擬機( VM )的 TEE 技術的 CPU ,如 AMD SEV-SNP 和 Intel TDX 。
閱讀 Protecting Sensitive Data and AI Models with Confidential Computing 文章,重點介紹了 OEM 合作伙伴運送 CC 兼容的服務器。
下圖比較了在 CC 打開和關閉時使用 VM 時的數據流。

在圖 1 中,左側設置了一個傳統的虛擬機。在此模式下,系統管理程序分配一個 H100 GPU (未啟用 CC 模式)。雖然系統管理程序被隔離并受到惡意虛擬機的保護,但情況并非如此:系統管理程序可以訪問整個虛擬機空間,也可以直接訪問 GPU 。
圖 1 的右側顯示了相同的環境,但在一臺具有機密計算能力的機器上。 CPU 體系結構將現在保密的虛擬機( CVM )與系統管理程序隔離,使其無法再訪問其內存頁。 H100 也被配置為禁用所有外部訪問,除了它和 CVM 之間的路徑。 CVM 和 H100 對 PCIe 總線上的傳輸進行了加密和簽名,防止了帶有總線分析器的攻擊者利用或靜默地破壞數據。
在使用早期訪問版本的同時,采用良好做法,僅測試合成數據和非專有人工智能模型。安全審查、性能增強和審計尚未最終確定。
Hopper 機密計算目前不包括加密密鑰輪換。要了解更多信息,請參閱帖子 什么是機密計算?
異構內存管理
該版本還引入了異構內存管理( HMM )。該技術擴展了對統一虛擬內存的支持,從而在主機內存和加速器設備之間無縫共享數據,而無需由 CUDA 分配或管理內存。這使得將應用程序移植到 CUDA 或使用外部框架和 API 變得更加容易。
目前, HMM 僅在 Linux 上受支持,并且需要最新的內核( 6 . 1 . 24 +或 6 . 2 . 11 +)以及使用 NVIDIA GPU 開放內核模塊驅動程序。
第一個版本存在一些限制,以下內容尚不支持:
- GPU 對文件備份內存的原子操作。
- Arm CPU 。
- HMM 上的 HugeTLBfs 頁面。
- 這個
fork()
試圖在父進程和子進程之間共享 GPU 可訪問內存時的系統調用。
HMM 還沒有完全優化,可能比使用cudaMalloc()
,cudaMallocManaged()
,或其他現有的 CUDA 內存管理 API 。
懶加載
NVIDIA 最初在 CUDA 11.7 中引入了一項功能,作為一種選擇加入,延遲加載現在在帶有 R535 驅動程序及更高版本的 Linux 上默認啟用。通過根據需要僅加載 CUDA 內核和庫函數,延遲加載可以顯著減少主機和設備內存占用。復雜的庫通常包含數千個不同的內核和變體。這帶來了可觀的節省。
延遲加載由用戶控制,并且只更改默認值。您可以通過在啟動應用程序之前設置環境變量來禁用 Linux 上的功能:
CUDA_MODULE_LOADING=EAGER
雖然在 Windows 中禁用當前不可用,但您可以在 Windows 中啟用它,方法是在啟動前設置環境變量:
CUDA_MODULE_LOADING=LAZY
CUDA MPS 的應用程序優先級
當使用 CUDA MPS 運行應用程序時,每個應用程序通常被編碼為系統中存在的唯一應用程序。因此,其單獨的流優先級可以假定沒有系統級爭用。然而,在實踐中,用戶通常希望在全局范圍內提高或降低某些流程的優先級。
為了幫助解決這一需求,現在可以為 CUDA MPS 提供運行時的每個客戶端的粗粒度優先級映射。這使得在 MPS 下運行的多個進程能夠在不更改應用程序代碼的情況下,在多個進程之間以粗粒度級別仲裁優先級。
一個名為CUDA_MPS_CLIENT_PRIORITY
接受兩個值:NORMAL priority, 0
,和 BELOW_NORMAL priority, 1
.
例如,給定兩個客戶端,潛在配置如下:
客戶端 1 環境 | 客戶端 2 環境 |
---|---|
export CUDA_MPS_CLIENT_PRIORITY=0 // NORMAL |
export CUDA_MPS_CLIENT_PRIORITY=1 // BELOW NORMAL |
值得注意的是,這并沒有在 GPU 調度器中引入優先級搶先調度或硬實時處理。它確實向調度器提供了關于哪些內核應該在何時排隊的附加信息。
Nsight 開發工具
Nsight Developer Tools包含在 CUDA 工具包中,可以幫助調試和評估 CUDA 應用程序的性能。這些用于 GPU 開發的工具已經與 H100 體系結構兼容。此外,Nsight Systems 現在還支持 NVIDIA Grace CPU 體系結構,用于全系統性能評測。
Nsight Systems 是一個跟蹤和分析平臺硬件指標的工具,如 CPU 和 GPU 之間的交互,以及統一時間線上的 CUDA 應用程序、 API 和庫。CUDA Toolkit 12.2 中提供的 2023.2 版本引入了 Python 回溯采樣功能。
GPU 加速的Python 正在改變人工智能工作負載。通過對 Python 代碼的定期采樣,Nsight Systems 的時間線可以更深入地了解重構中涉及的算法,以最大限度地利用 GPU。Python 采樣結合了多節點分析和網絡度量收集,有助于優化數據中心規模的計算。想要了解更多關于 如何使用 Nsight Systems 加速數據中心和 HPC 性能分析 的信息,請點擊此處。
Nsight Compute提供了對在 GPU 上運行的 CUDA 內核的詳細性能評估和分析。2023.2 版本在摘要頁面上添加了一個新的檢測到的性能問題的排序列表,包括估計的加速以糾正問題。此列表旨在幫助用戶避免在不必要的問題上花費時間,從而為性能調優提供指導。
添加的另一個關鍵功能是源頁面上源行級別的性能規則標記。以前,檢測到的內置性能規則問題僅顯示在詳細信息頁面上。現在,問題在源頁面上用警告圖標進行標記。性能指標確定位置。

這些新功能擴展了高級摘要視圖和低級源代碼視圖的引導分析,進一步改進了 Nsight Compute 性能評測和分析功能。
CUDA Toolkit 12 . 2 還為您提供最新的調試工具。其中包括:
- NVIDIA Compute Sanitizer 用于檢查功能的正確性。
- CUDA-GDB 用于命令行 CPU 和 GPU 的調試。
- NVIDIA Nsight Visual Studio Code Edition可用于集成 CUDA 調試的 IDE。
了解如何使用 Compute Sanitizer 調試 CUDA 代碼。
總結
最新發布的 CUDA Toolkit 引入了一些新功能,這些功能對提升 CUDA 應用程序至關重要,為加速計算應用程序奠定了基礎。從芯片架構來看,NVIDIA DGX Cloud 和 NVIDIA DGX SuperPOD 平臺、AI Enterprise software 和圖書館,以及實現安全和 accelerated network 連接的 CUDA 工具包,提供了無與倫比的全棧優化。NVIDIA DGX Cloud、NVIDIA DGX SuperPOD、AI Enterprise software 和 accelerated network。
還有任何問題嗎?立即注冊,加入我們的 CUDA 專家行列,參加 2023 年 7 月 26 日舉行的特別 AMA,涵蓋 CUDA 12 中的所有內容:https://nvda.ws/3XEcy2m。
有關詳細信息,請參閱以下內容:
- NVIDIA CUDA 工具包
- CUDA 工具包 12.2 版本發布說明
- NVIDIA Hopper 架構
- CUDA 兼容性
- NVIDIA 發布開源 GPU 內核模塊
- GPU 加速庫
- NVIDIA Nsight Compute 以及 NVIDIA Nsight Systems
?