AMD 發布了 AOMP 17.0-1 作為此開源編譯器的最新版本,專注於為 Radeon 和 Instinct 加速器產品提供最新的 OpenMP 卸載支持。
AOMP 是在最新的上游 LLVM/Clang 狀態之上承載的一組補丁。 AMD 工程師繼續致力於將他們對 LLVM 的各種改進推向上游,而對於那些想要前沿、最佳支持的人來說,AOMP 現在可以利用最佳的 OpenMP 設備功能。
AOMP 17.0-1 基於本月早些時候的上游 LLVM/Clang 狀態,並使用 AMD 的 ROCm 5.4.4 源構建。此更新值得注意的是默認切換到其下一代插件,這反過來應該會產生顯著的 OpenMP 性能改進。
發佈公告提到以下內容AOMP 17.0-1 的更改:
-默認切換到 nextgen 插件。這顯示了顯著的性能改進。要恢復到舊插件,請設置 LIBOMPTARGET_NEXTGEN_PLUGINS=OFF。
-從 hostrpc 切換到 hostexec。 hostexec 是對 hostrpc 的重大重寫。設備 hostexec_invoke 現在用 OpenMP 編寫,以便移植到其他平台。運行主機函數的包裝器(存根)的名稱已更改為 hostexec() 和 hostexec_() 。 hostexec 還使用全局變量而不是 AMD 隱式內核參數來查找傳輸負載緩衝區。這將支持 hostexec、printf 和 fprintf 到其他平台的可移植性。此設備全局更新是使用 nextgen 插件中的全局變量服務進行的。
-給出了使用 hostexec 在目標區域中運行 MPI_Send 和 MPI_Recv 的示例。此示例演示了庫所有者如何構建補充頭文件,以在具有相同主機接口的 OpenMP 目標區域內啟用所選庫函數的透明主機執行。當需要從目標區域執行主機時,這消除了對用戶代碼中任何源代碼更改的需要。在 hostexec 之前,用戶通常必須結束他們的目標區域,執行僅主機功能,然後啟動另一個目標區域。此功能顯著提高了 OpenMP 在 GPGPU 平台上的通用計算能力。
-下一代插件的 OMPT 目標支持不完整。要使用 OMPT,請設置環境變量 LIBOMPTARGET_NEXTGEN_PLUGINS=OFF。
-在 gpurun 中設置 GPU_MAX_HW_QUEUES
-通過 critical 指令創建的關鍵區域現在效率更高:通過放寬鎖的語義並將其與獲取和釋放柵欄的使用相結合,我們可以將 GPU 緩存的刷新限制為每次獲取鎖時刷新,而不是每次鎖檢查時刷新。
-當從內核調用內聯函數時,在內核入口塊中為它們的參數移動 allocas,而不是將它們留在啟動點。
-遵守環境變量以強制同步目標區域執行。可通過 OMPX_FORCE_SYNC_REGIONS=1 獲得。
AOMP 17.0-1 下載和更多詳細信息,請訪問 GitHub 包括 RHEL/Debian 二進製文件以補充源代碼。