• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 數據中心/云端

    編譯器資源管理器:CUDA 開發者必備的內核實驗室

    您是否曾想過,當您編寫 GPU 核函數時,CUDA 編譯器究竟會生成什么?是否曾想與同事輕松分享精簡的 CUDA 示例,而無需他們先安裝特定的 CUDA 工具包版本?或者,也許您完全不熟悉 CUDA,正在尋找一種無需安裝任何東西甚至無需配備 GPU 的簡單方法?

    得益于廣泛使用的開源工具 Compiler Explorer (通常稱為 godbolt) ,您可以直接通過瀏覽器以交互方式即時完成所有這些工作。本文將解釋 Compiler Explorer 提供的內容,以及為什么它應該成為 CUDA 開發工具套件的一部分。

    什么是編譯器資源管理器?

    編譯器資源管理器是一款基于 Web 的工具,可幫助開發者編寫源代碼,使用各種編譯器實時編譯,并立即查看生成的輸出,例如 assembly、中間表示 (IR) 、PTX 等。

    Screenshot of the Compiler Explorer browser window. The left pane is the input source code and the right pane has multiple windows showing the generated PTX, generated SASS, and the program execution output.
    圖 1。借助用于 CUDA 開發的 Compiler Explorer 接口,您可以編寫代碼、選擇編譯器和標志、編譯、查看主機組件和設備 PTX,以及直接在真實 GPU 上運行代碼,所有這些操作均可在遠程 GPU 上運行的瀏覽器中完成

    Compiler Explorer 最初由 Matt Godbolt 創建,旨在幫助開發者了解編譯器優化,現已發展成為一款用于整個系統編程世界的強大多語言工具。根據 godbolt.org 網站 Grafana 控制面板的數據,該網站目前支持 70 多種語言 (包括 C++、C、Rust、Python 和 CUDA) ,每周可處理超過 100 萬次編譯。

    雖然 `Compiler Explorer` 和 `godbolt` 這兩個名稱通常可互換使用,但二者并不完全相同。Compiler Explorer 是應用程序的名稱。Godbolt 是其創作者的姓氏,創作者還在 godbolt.org 上維護了該工具最廣泛使用的公共實例。任何人都可以在本地運行 Compiler Explorer 或托管自己的實例,但提及“godbolt”通常指 godbolt.org 實例。

    編譯器資源管理器的主要優勢之一是,您可以使用它來編譯和運行代碼。在 CPU 方面,此功能長期以來一直可用,并因其簡化學習、驗證和調試工作流程的能力而受到廣泛贊賞。

    多年來,Compiler Explorer 一直支持編譯 CUDA 代碼,因此無需安裝完整的工具包,即可輕松構建 CUDA C++ 代碼原型并檢查 PTX 或 SASS 輸出。但它最初缺乏 CPU 工作流的優勢之一:能夠實際運行 CUDA 代碼。

    通過 NVIDIA 工程師與 Compiler Explorer 維護人員之間的密切合作,這一差距在 2022 年得到了彌合。Compiler Explorer 經過擴展,支持直接在 NVIDIA GPU 上執行 CUDA 代碼,為 CUDA 開發者在瀏覽器中提供完整的寫入 – 編譯 – 運行功能。

    面向 CUDA 開發者的強大功能

    本節將分享Compiler Explorer作為CUDA開發者不可或缺的工具的五種實用方式。

    在瀏覽器中運行 CUDA C++ 代碼

    編譯器 Explorer 支持直接在 NVIDIA GPU 上的瀏覽器中編寫、編譯和運行小型 CUDA 程序。這顯著降低了原型設計、調試和學習的門檻。您可以在幾秒鐘內完成從想法到結果的過程。

    這將提高您的工作效率。亮點包括:

    • 無需本地設置即可工作
    • 獲取實時反饋:write → compile → run → output
    • 輕松進行prototype設計、validate和teach

    示例工作流程包括:

    • 無需完整的本地環境即可快速對 CUDA C++ 代碼進行原型設計
    • 復制和調試問題
    • 使用交互式執行進行 CUDA 教學

    2. 輕松共享和協作

    編譯器 Explorer 簡化了用于調試、協作或教育的最小 CUDA 示例的共享。

    • 編寫 CUDA 代碼片段,單擊“Share”,并獲取永久 URL —您的收件人可以看到完全相同的代碼、編譯器設置和輸出
    • 報告compiler bugs或性能問題
    • 教授 CUDA 概念

    示例工作流程包括:

    • 通過快速向同事發送精確代碼示例來調試編譯器優化問題
    • 分享一個最小的可運行示例,向隊友或學生說明 CUDA 最佳實踐或常見陷阱

    3. 實驗庫

    編譯器資源管理器不限于原版 CUDA C++ 代碼。您還可以開箱即用地使用 CCCLMatX 等 CUDA 庫。因為它是開源的,所以您可以自由地進一步擴展。如果您想集成自己的 CUDA 庫,只需向 compiler-explorer GitHub 存儲庫做出貢獻即可。

    Screenshot of web browser page showing an example of adding libraries to a project.
    圖 2。在 godbolt.org 上為您的項目添加 libraries

    4. 并行檢查 PTX 和 SASS assembly

    查看由 CUDA C++ 代碼生成的程序集可以揭示有關性能優化的關鍵見解。如需了解有關 PTX 的更多信息,請參閱了解 PTX, the Assembly Language of CUDA GPU Computing

    使用 cuobjdumpnvdisasmNVIDIA Nsight Compute 等工具檢查 GPU 組件的方法有很多。Compiler Explorer 通常被證明是最方便的,尤其是對于快速實驗、教學或早期調試而言。

    編譯器資源管理器將源代碼的每行與相應生成的指令相關聯。此映射在用戶界面中進行視覺顏色編碼,因此可以輕松追蹤每行 CUDA C++ 代碼如何在輸出窗格中轉換為 PTX 和 SASS 指令。例如,在圖 1 中,您可以看到如何對第 4 行的 printf 調用進行顏色編碼以匹配右側生成的 PTX 指令。

    借助 Compiler Explorer,您可以輕松完成以下工作:

    • 直接在瀏覽器中編寫 CUDA C++ 核函數
    • 查看 PTX 和 SASS 的并排視圖

    示例工作流程包括:

    • 觀察更改loop unrolling pragmas如何影響assembly
    • 跟蹤 __restrict__ 如何影響生成的加載指令
    • 驗證 vector 加載/存儲指令的生成

    5. 即時比較 compiler 版本和 flags

    想知道不同的 CUDA 編譯器版本或特定編譯器標志對您生成的 GPU 代碼有何影響?Compiler Explorer 簡化了這一過程:

    • 從多個 CUDA 編譯器版本中進行選擇
    • 無需管理多個本地安裝即可立即查看結果
    • 即時確認或反證不同版本compiler行為的變化

    示例工作流程包括:

    • 驗證最新的 CUDA 工具包版本是否能更好地優化您的設備代碼
    • 跟蹤 -use_fast_math 如何影響生成的 assembly
    • 使用 --resource-usage 檢查資源使用情況,例如每個線程的寄存器

    開始使用 Compiler Explorer

    編譯器 Explorer 已成為現代 CUDA 開發工作流程中不可或缺的一部分,簡化了從調試和性能分析到教授和共享代碼的所有工作。因此,該項目被選定為 NVIDIA FOSS 基金的創始接受方,該基金支持對開發者產生切實影響的開源工具。該團隊為能夠支持該項目而感到自豪,并希望它成為您自己的 CUDA 工具包中的核心工具。

    如果您尚未使用 Compiler Explorer,請嘗試以下操作:

    • 原型設計和探索 CUDA 概念
    • 調試性能回歸或驗證compiler行為
    • 輕松共享最小的可復制示例

    請查看以下示例以開始使用:?Hello World,?Vector AddCCCL。如需了解更多信息,請訪問 godbolt.org,為 Compiler-Explorer GitHub 存儲庫做出貢獻,并在 Discord 上加入 Compiler Explorer

    致謝

    特別感謝 Compiler Explorer 的創建者 Matt Godbolt 以及整個社區,感謝他們為開發者構建和維護如此強大的資源。特別要感謝 Patrick Quist他的長期合作和技術工作有助于擴展 Compiler Explorer 上的 CUDA 支持

    0

    標簽

    人人超碰97caoporen国产