NVIDIA JetPack 為 Jetson 平臺邊緣的硬件加速 AI 提供了一個完整的開發環境。以前, NVIDIA JetPack 的獨立版本支持單一版本的 CUDA ,您無法在給定的 NVIDIA JetPack 版本上升級 CUDA 。 NVIDIA JetPack 以滾動步調發布,使用單一版本的 CUDA ,通常在每個主要發布周期中都受支持(例如, NVIDIA JetPack 4.x 或 NVIDIA JetPack 5.x )。
從 CUDA Toolkit 11.8 開始, NVIDIA JetPack 5.0 和更高版本上的 Jetson 用戶可以升級到最新的 CUDA 版本,而無需更新 NVIDIA JetPack 版本或 Jetson Linux BSP ( Board Support Package )。您可以與 CUDA 桌面版本保持一致。
Jetson 上的 CUDA 與桌面上的 CUDA 相比
為了理解為什么具有離散 – GPU ( dGPU )和具有集成 – GPU ( iGPU )的 Jetson 桌面之間的 CUDA 支持模型有所不同,這有助于理解以下內容:
- CUDA 如何在 Jetson 上打包
- CUDA 如何在桌面上打包
- 他們之間的差異
圖 1 顯示了 Jetson 軟件體系結構,其核心是 Jetson Linux BSP 和組成 NVIDIA JetPack SDK 的各種軟件組件層。有關詳細信息,請參閱 Jetson Software Architecture 。

圖 2 顯示了 CUDA 在整個 NVIDIA JetPack SDK 打包結構中的位置,以及它如何與 Jetson Linux BSP 的所有其他組件交互。如圖 2 所示, CUDA 驅動程序和其他組件是 Jetson LinuxBSP 的一部分。所有這些組件都根據 Jetson Linux BSP 的發布節奏和頻率進行更新,這與 CUDA 的季度發布節奏不同。 CUDA 工具包獨立于 BSP ,不打包 CUDA 驅動程序。
安裝 NVIDIA JetPack SDK 時,默認情況下會安裝 Jetson Linux BSP (包含 CUDA 驅動程序)和 CUDA 工具箱。
由于這種打包結構,桌面上的 CUDA 開發人員可以靈活地跟上最新的 CUDA 版本,與 CUDA 季度發布節奏保持一致。此外, forward compatibility 和 minor version compatibility 等特性可以幫助您選擇驅動程序和工具箱的組合,并根據應用程序的需要進行定制。
CUDA Jetson 上的可升級包
從 CUDA 11.8 開始, CUDA 引入了一個升級路徑,為 Jetson 開發人員提供了一個選項,可以將[ZCK0 :驅動程序和[ZCK0 /工具箱更新到最新版本。
圖 4 顯示了藍色框,其中描述了 NVIDIA JetPack 5.0 SDK 中默認存在的組件。虛線將 Jetson Linux BSP 與 NVIDIA JetPack SDK 的其他組件分隔開。綠色框表示可以通過此功能升級到的 CUDA 組件。
這些升級是通過引入 CUDA 驅動程序升級(也稱為[ZCK0 兼容性包)實現的,如圖 5 所示。
此升級包主要包含 CUDA 驅動程序(libcuda.so.*
)及其依賴項,使您能夠訪問每個季度[ZCK0 發布的最新和最大的[ZCK0 :功能。
如果沒有這個包,您以前只能使用 Jetson Linux BSP 中打包的默認 CUDA 驅動程序提供的功能。您沒有升級到最新 CUDA 驅動程序和工具箱的機制。
有了這個軟件包,為現有 Jetson Linux BSP 投入了漫長而徹底的驗證周期的 Jetson 用戶可以升級到最新的 CUDA 版本。此升級是在現有 Jetson Linux BSP 上完成的,保持不變。
如何在 Jetson 上升級 CUDA
對于 CUDA 11.8 , CUDA Downloads 頁面現在顯示了一個新的體系結構 aarch64-Jetson ,如圖 6 所示,以及相關的 aarch64- Jetson [ZCK0 安裝程序,并提供了有關如何下載和使用本地安裝程序或[ZCK0 :網絡存儲庫來安裝最新 PyTorch 版本的逐步說明。

新的aarch64-Jetson
Jetson 安裝程序將 CUDA 工具包和升級包打包在一起。提供的分步安裝說明可確保下載并安裝 CUDA 升級包以及 CUDA 設備的相應 CUDA 工具包。
已安裝的升級包位于版本化工具包文件目錄中。例如,您可以在以下目錄中找到 11.8 :
/usr/local/cuda-11.8/
升級包包含以下文件:
libcuda.so.*
: CUDA 驅動程序。libnvidia-nvvm.so.*
:實時鏈路時間優化(僅限 CUDA 11.8 及更高版本)。libnvidia-ptxjitcompiler.so.*
: PTX 文件的 JIT (實時)編譯器。
這些文件一起實現了 CUDA 驅動程序接口。此軟件包僅提供文件,不配置系統。
如果您正在 x86 主機上工作并交叉編譯到aarch64-Jetson
目標,可以在 CUDA Downloads 頁面上找到 U20.04 CUDA 主機安裝程序。交叉編譯位可以在以下目錄中找到:
aarch64-jetson/cross/Ubuntu/20.04/deb installer
實例
下面的代碼示例顯示了如何安裝 CUDA Upgrade 包并使用它來運行應用程序。
$ sudo apt-get -y install cuda Reading package lists... Building dependency tree... Reading state information... The following additional packages will be installed: cuda-11-8 cuda-cccl-11-8 cuda-command-line-tools-11-8 cuda-compat-11-8 ...<snip>… The following NEW packages will be installed: cuda cuda-11-8 cuda-cccl-11-8 cuda-command-line-tools-11-8 cuda-compat-11-8 ...<snip>… 0 upgraded, 48 newly installed, 0 to remove and 38 not upgraded. Need to get 15.7 MB/1,294 MB of archives. After this operation, 4,375 MB of additional disk space will be used. Get:1 http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/arm64 cuda-compat-11-8 11.8.31058490-1 [15.8 MB] Fetched 15.7 MB in 12s (1,338 kB/s) Selecting previously unselected package cuda-compat-11-8. (Reading database ... ...<snip>… (Reading database ... 100% (Reading database ... 148682 files and directories currently installed.) Preparing to unpack .../00-cuda-compat-11-8_11.8.31058490-1_arm64.deb ... Unpacking cuda-compat-11-8 (11.8.31058490-1) ... ...<snip>… Unpacking cuda-11-8 (11.8.0-1) ... Selecting previously unselected package cuda. Preparing to unpack .../47-cuda_11.8.0-1_arm64.deb ... Unpacking cuda (11.8.0-1) ... Setting up cuda-toolkit-config-common (11.8.56-1) ... Setting up cuda-compat-11-8 (11.8.31058490-1) ... $ ls -l /usr/local/cuda-11.8/compat total 55300 lrwxrwxrwx 1 root root 12 Jan 6 19:14 libcuda.so -> libcuda.so.1 lrwxrwxrwx 1 root root 14 Jan 6 19:14 libcuda.so.1 -> libcuda.so.1.1 -rw-r--r-- 1 root root 21702832 Jan 6 19:14 libcuda.so.1.1 lrwxrwxrwx 1 root root 19 Jan 6 19:14 libnvidia-nvvm.so -> libnvidia-nvvm.so.4 lrwxrwxrwx 1 root root 23 Jan 6 19:14 libnvidia-nvvm.so.4 -> libnvidia-nvvm.so.4.0.0 -rw-r--r-- 1 root root 24255256 Jan 6 19:14 libnvidia-nvvm.so.4.0.0 -rw-r--r-- 1 root root 10665608 Jan 6 19:14 libnvidia-ptxjitcompiler.so lrwxrwxrwx 1 root root 27 Jan 6 19:14 libnvidia-ptxjitcompiler.so.1 -> libnvidia-ptxjitcompiler.so The user can set LD_LIBRARY_PATH to include the libraries installed by upgrade package before running the CUDA 11.8 application: $ LD_LIBRARY_PATH=/usr/local/cuda-11.8/compat:$LD_LIBRARY_PATH ~/Samples/1_Utilities/deviceQuery CUDA Device Query (Runtime API) version (CUDART static linking) Detected 1 CUDA Capable device(s) Device 0: "Orin" CUDA Driver Version / Runtime Version 11.8 / 11.8 CUDA Capability Major/Minor version number: 8.7 ...<snip>... deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 11.8, CUDA Runtime Version = 11.8, NumDevs = 1 Result = PASS
默認驅動程序(最初隨 NVIDIA JetPack 和 Jetson Linux BSP 的一部分一起安裝)由安裝程序保留。應用程序可以使用默認版本的 CUDA (最初與 NVIDIA JetPack 一起安裝),也可以使用升級包安裝的版本。使用 LD _ LIBRARY _ PATH 變量選擇所需的版本。
在給定的系統上,任何時候都只能安裝一個 CUDA 升級包。安裝新的 CUDA 升級包時,已安裝的升級包的先前版本將被刪除,并替換為新版本。如果升級包與 NVIDIA JetPack 版本不兼容,則安裝失敗。
例如,由于 CUDA 驅動程序的向后兼容性,以前使用 CUDA 11.4 編譯的應用程序可以繼續使用 CUDA 11.8 升級包。
表 1 顯示了 NVIDIA JetPack 5.0 版本的 CUDA 用戶模式驅動程序( UMD )和 CUDA Toolkit 版本兼容性。
C =兼容; X =不兼容
要注意的要點
- 此功能在 CUDA 11.8 和 NVIDIA JetPack 5.0 以后的版本中可用,最新的 Jetson Linux 版本將支持此功能。
- CUDA 升級包僅更新 CUDA 驅動程序接口,而保持 NVIDIA JetPack SDK 其余組件不變。如果最新 CUDA 驅動程序中的新功能需要更新的 NVIDIA JetPack SDK 組件或接口,則在調用時可能會返回錯誤。有關功能兼容性的更多信息,請參閱 CUDA release notes 。
- 由于并非所有 NVIDIA JetPack SDK 都支持 CUDA 的所有版本,因此要求用戶檢查新 CUDA 版本與所使用的 NVIDIA JetPack 軟件開發工具包版本的兼容性。有關兼容版本的更多信息,請參閱 CUDA for Tegra App Note 。
在 Jetson 上, CUDA 、 cuDNN 、 TensorRT 等的計算堆棧與 Jetson Linux ( L4T )的特定版本緊密相連。要升級到計算堆棧的更新版本,還必須處理升級到 Jetson Linux 的問題。
我們正在努力實現一個未來, Jetson 開發人員可以遷移到計算庫的更新版本,而無需升級 Jetson Linux 。支持升級 CUDA 的 CUDA 功能是朝著這個方向邁出的一步。
立即在 Jetson 上升級到最新的 CUDA 版本!
- 在 CUDA 11.8 Downloads 頁面上,下載
aarch64-Jetson
的 CUDA 安裝程序,并按照安裝說明將 Jetson 設備升級到 CUDA 11.8 。 - 有關 Jetson 上 CUDA 可升級包的更多信息,請參閱 CUDA for Tegra App Note 。
- 有關 CUDA 11.8 引入的所有新功能的信息,請參閱 CUDA 11.8 Omnibus 。
- 如果您有任何問題或需要支持,請在 Jetson forum 上發布您的問題。
請注冊 NVIDIA JetPack 5 deep-dive webinar 。 CUDA 和 Jetson 團隊將為您介紹此新功能的詳細信息,您將有機會現場提問!
?