天天看點

《OpenACC并行程式設計:性能優化實踐指南》一 3.10 使用Score-P和Vampir記錄OpenACC運作時事件

編譯器和運作時在實作OpenACC指令時有一定的自由度。是以,檢查編譯器和運作時對OpenACC指令轉換和最終程式執行非常重要。例如,kernels指令觸發裝置初始化、裝置記憶體配置設定和沒有明确指定相應操作的資料傳輸。OpenACC 2.5引入的分析接口定義了一組事件,這些事件揭示了OpenACC指令的實作和執行細節。這使得Score-P之類的工具能夠測量OpenACC區域的持續時間、在主機上的等待時間和任務送出開銷,以及跟蹤加速器上的記憶體配置設定。例如GPU核心開始和結束時間、CPU和GPU資料傳輸等更多的GPU事件可以使用CUDA的CUPTI接口或OpenCL庫包裝(Dietrich & Tschüter, 2015)。OpenACC事件将低級别加速器事件與應用程式的源代碼相關聯。OpenACC事件被标記為隐式或顯式的,并且根據它們的類型,還可以提供有關資料傳輸的變量名或核心啟動操作的核心名稱的資訊。

圖3-12展示了Vampir可視化使用MPI、OpenMP和OpenACC的應用程式的執行間隔。在所選間隔中,兩個MPI程序執行相同的程式區域,每個運作兩個OpenMP線程和帶有兩個CUDA流的一個GPU。加速器活動是異步的,但是主機大部分時間在等待加速器活動的完成。例如,右邊的調用樹顯示更新構件觸發加速器向CPU的資料拷貝和等待操作。OpenACC和OpenMP區域使用檔案名和行号注釋以便于源代碼相對應。

《OpenACC并行程式設計:性能優化實踐指南》一 3.10 使用Score-P和Vampir記錄OpenACC運作時事件

繼續閱讀