nvcc – NVIDIA 技術博客 http://www.open-lab.net/zh-cn/blog 閱讀開發者創建的最新技術信息、頭條新聞 和內容。 Wed, 14 May 2025 07:04:34 +0000 zh-CN hourly 1 196178272 CUDA C++ 編譯器更新對 ELF 可見性和鏈接影響 http://www.open-lab.net/zh-cn/blog/cuda-c-compiler-updates-impacting-elf-visibility-and-linkage/ Fri, 09 May 2025 05:37:20 +0000 http://www.open-lab.net/zh-cn/blog/?p=13805 Continued]]> 在下一個 CUDA 主要版本 CUDA 13.0 中,NVIDIA 將對 NVIDIA CUDA 編譯器驅動程序 (NVCC) 作出兩項重大更改,這些更改將影響 函數和設備變量的 ELF 可見性和關聯。這些更新旨在防止長期以來難以檢測和調試的細微運行時錯誤。但是,這些更改可能會影響一些現有的 CUDA C++ 程序。 本文旨在提醒用戶注意潛在的中斷,解釋更改背后的原因,并就可以恢復舊版行為的 NVCC 標志提供指導。表 1 匯總了這兩項更改。 在 CUDA 13.0 之前的工具包中,NVCC 編譯器未修改發送給主機編譯器的代碼中 函數和 變量的 ELF 可見性。如果將生成的代碼打包到共享庫中,這些符號將對共享庫的用戶可見。 默認情況下,NVCC 鏈接 CUDA Runtime Library (CUDART) 的靜態版本。

Source

]]>
13805
NVIDIA Blackwell 和 NVIDIA CUDA 12.9 引入基于系列的架構特性 http://www.open-lab.net/zh-cn/blog/nvidia-blackwell-and-nvidia-cuda-12-9-introduce-family-specific-architecture-features/ Thu, 01 May 2025 07:01:52 +0000 http://www.open-lab.net/zh-cn/blog/?p=13844 Continued]]> 最早進入 NVIDIA GPU CUDA 平臺的架構設計決策之一是支持 GPU 代碼的向后兼容性。這種設計意味著,新 GPU 應該能夠運行為之前的 GPU 編寫的程序,而無需進行修改。它由 CUDA 的兩個基本特性完成: PTX 是面向 NVIDIA GPU 的虛擬 ISA。您可以將其想象成組裝代碼,但它不限于特定的物理芯片硬件架構,其設計足夠通用,可以與未來的 GPU 架構兼容。 自 NVIDIA 創建 CUDA 平臺使開發者能夠為 GPU 編寫通用程序以來,PTX 一直是 CUDA 不可或缺的一部分。為之前的 GPU 構建的 PTX 代碼可以由當前的驅動進行 JIT 編譯,并在當前的 GPU 上運行,無需修改。 舉個例子。這是一段簡單的代碼,可打印 GPU 名稱和計算能力,還可從 GPU 內核內部打印 hello。 當我們使用 CUDA 12.8…

Source

]]>
13844
了解 CUDA GPU 計算的匯編語言 PTX http://www.open-lab.net/zh-cn/blog/understanding-ptx-the-assembly-language-of-cuda-gpu-computing/ Wed, 12 Mar 2025 06:29:58 +0000 http://www.open-lab.net/zh-cn/blog/?p=13348 Continued]]> 并行線程執行(PTX)是一種虛擬機指令集架構,從一開始就是 CUDA 的一部分。您可以將 PTX 視為 NVIDIA CUDA GPU 計算平臺的匯編語言。 在本文中,我們將解釋這意味著什么,PTX 的用途,以及您需要了解哪些內容才能在您的應用中充分利用 CUDA。我們將首先介紹 CUDA 如何生成、存儲和加載最終在 GPU 上運行的代碼。然后,我們將展示 PTX 如何實現前向兼容性,以及如何使用 PTX 讓特定領域的編程語言和其他編程語言面向 CUDA。 指令集架構(ISA)是對處理器可以執行的指令、其格式、這些指令的行為以及二進制編碼的規范。每個處理器都有 ISA。例如,x86_64 是 CPU ISA。ARM64 是另一類。GPU 也具有 ISA。對于 NVIDIA GPU,對于不同世代的 GPU,甚至是一代內不同產品線的 GPU,ISA 可能會有所不同。

Source

]]>
13348
優化 CUDA C++ 編譯時間 http://www.open-lab.net/zh-cn/blog/optimizing-compile-times-for-cuda-c/ Mon, 10 Mar 2025 08:58:34 +0000 http://www.open-lab.net/zh-cn/blog/?p=13121 Continued]]> 在現代軟件開發中,時間是非常寶貴的資源,尤其是在編譯過程中。對于在大規模 GPU 加速應用程序上使用 CUDA C++的開發者而言,優化編譯時間可以顯著提高工作效率并簡化整個開發周期。 使用 編譯器進行離線編譯時,高效的編譯時間使您能夠快速構建代碼并保持勢頭。在使用 nvrtc 的即時 (JIT) 編譯環境中,最小化編譯時間有助于減少執行或運行時延遲,并提高應用程序性能。如果您在實時系統或交互式應用程序上工作,您將從盡可能快的編譯時間中受益匪淺。 理解編譯瓶頸的來源并不總是那么簡單。CUDA 編譯過程十分復雜,因為編譯器會對代碼執行各種優化和轉換,幾乎看不到代碼的哪些部分需要很長時間才能編譯。 例如,看似簡單的代碼行可能會觸發復雜的模板實例化,從而導致其他模板的遞歸擴展,進而消耗過多的編譯時間。如果不清楚幕后發生了什么,您就不知道編譯時間較長的根本原因是什么,

Source

]]>
13121
人人超碰97caoporen国产