Shelton Dsouza – NVIDIA 技術博客 http://www.open-lab.net/zh-cn/blog 閱讀開發者創建的最新技術信息、頭條新聞 和內容。 Fri, 14 Feb 2025 04:54:53 +0000 zh-CN hourly 1 196178272 CUDA 運行時中的動態加載機制 http://www.open-lab.net/zh-cn/blog/dynamic-loading-in-the-cuda-runtime/ Fri, 31 Jan 2025 04:52:19 +0000 http://www.open-lab.net/zh-cn/blog/?p=12889 Continued]]> 過去,我們使用 等離線工具將 GPU 設備代碼與應用程序一起編譯。在這種情況下,GPU 設備代碼在 CUDA 運行時內部進行管理。然后,您可以使用 啟動內核,并且 CUDA 運行時可確保啟動所調用的內核。 但是,在某些情況下,需要動態編譯和加載 GPU 設備代碼。本文介紹了使用 CUDA 運行時實現此目標的方法,同時還展示了在 CUDA 驅動程序和 CUDA 運行時核句柄之間實現互操作性的方法。 在 CUDA 12.0 中,NVIDIA 通過 CUDA 驅動引入了 APIs。這些 APIs 使您能夠以與上下文無關的方式動態選擇和加載 GPU 設備代碼。有關更多信息,請參閱 CUDA Context-Independent Module Loading 。 現在,我們將此功能擴展為通過 CUDA 運行時加載動態 GPU 設備代碼,

Source

]]>
12889
CUDA 上下文無關模塊加載 http://www.open-lab.net/zh-cn/blog/cuda-context-independent-module-loading/ Mon, 12 Dec 2022 06:46:00 +0000 http://www.open-lab.net/zh-cn/blog/?p=5952 Continued]]> 大多數 CUDA 開發人員都熟悉 API 及其對應的 API ,用于將包含設備代碼的模塊加載到 CUDA context 中。在大多數情況下,您希望在所有設備上加載相同的設備代碼。這需要將設備代碼顯式加載到每個 CUDA 上下文中。此外,不控制上下文創建和銷毀的庫和框架必須跟蹤它們,以顯式加載和卸載模塊。 本文討論了 CUDA 12.0 中引入的上下文無關加載,它解決了這些問題。 傳統上,模塊加載總是與 CUDA 上下文相關聯。下面的代碼示例顯示了將相同的設備代碼加載到兩個設備中,然后在它們上啟動內核的傳統方法。 在每個設備上啟動內核需要檢索每個模塊,如以下代碼示例所示: 這增加了應用程序中的代碼復雜性,因為您必須檢索和跟蹤每個上下文和每個模塊類型。您還必須使用 API 顯式卸載每個模塊。 當庫或框架主要使用 CUDA 驅動程序 API 來加載自己的模塊時,

Source

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