利用 Intel® DPC++ 相容性工具將 Spectral 3D Globe 移植到 DPC++

Find AI Tools
No difficulty
No complicated process
Find ai tools

利用 Intel® DPC++ 相容性工具將 Spectral 3D Globe 移植到 DPC++

目錄

  1. 簡介
  2. 規格 3D 球面套件
    • 2.1 結構
    • 2.2 使用方式
  3. 遷移到資料平行 C++
    • 3.1 Intel 資料平行 C++ 相容性工具
    • 3.2 遷移工作流程
  4. 總結
  5. 效能比較
  6. 優點
  7. 缺點
  8. 常見問題
    • 8.1 小型緩衝區資料傳輸時間的問題是由 DPC++ 或 OpenCL 引起的嗎?
    • 8.2 這個問題與執行時期及驅動程式有關,還是與資料平行 C++ 本身有關?

🔍 簡介

我是 Sunny Goghar,目前在 Intel 的架構和圖像軟體團隊擔任應用工程師,今天我將向大家展示我們團隊使用 Intel 資料平行 C++ 相容性工具將 Spectral 3D Globe 的規格移植到資料平行 C++ 的工作。首先,我們會簡單介紹 Spectral 3D Globe 套件的結構和使用方式,並解釋為什麼我們決定將其移植到資料平行 C++ 的動機。接著,我們會介紹 Intel 資料平行 C++ 相容性工具,並討論遷移應用程式的一般工作流程。最後,我們會總結整個遷移過程並進行性能比較。

📦 規格 3D 球面套件

2.1 結構

規格 3D Globe 軟體套件模擬全球和區域地震波傳播。該套件由 Fortran、MPI 和 Ruby 程式碼組成,Ruby 程式碼通常用於使用 Boost 自動化工具生成 OpenCL 和 CUDA 程式碼。官方儲存庫位於幻燈片中所示的位置,我們正使用開發分支進行這項工作,以獲得最新的程式碼位元。

2.2 使用方式

我們選擇了兩個工作量來進行分析,這些工作量適用於基於 Intel Gen9 HD 圖形卡的記憶體需求和仿真時間。具體而言,我們使用了一個大小為 64x64 的各向同性基底地震和一個較複雜的地震模擬工作量 s362a_ini,但我們將網格的大小減小為 80x80 以適應 Gen9 圖形卡。

📝 遷移到資料平行 C++

3.1 Intel 資料平行 C++ 相容性工具

Intel 資料平行 C++ 相容性工具可幫助開發人員將 CUDA 程式碼遷移為資料平行 C++ 程式碼。根據我的經驗,這個工具可以自動生成八到九成的程式碼,並將其遷移,對於未遷移的程式碼,工具會在適當的位置留下註釋或診斷訊息。在幻燈片中有一個範例診斷訊息,顯示了訊息的結構和引導開發人員如何修復問題的參考指南。

3.2 遷移工作流程

遷移應用程式的過程通常分為三個步驟。首先,我們需準備遷移工作,這包括製作編譯數據庫(compile commands.json)以攔截編譯過程並記錄有用的資訊,如包含頭文件的路徑和編譯時的常數。接下來,我們使用 Intel 資料平行 C++ 相容性工具進行自動遷移操作。最後,我們需要對遷移後的程式碼進行驗證,並手動完成未遷移的部分。

📊 總結

經過遷移後,我們觀察到資料平行 C++ 版本與 OpenCL 版本相比的解算時間基本相同,但由於小型緩衝區資料傳輸時間的顯著減少,整體執行時間大幅降低。因此,資料平行 C++ 可能更適合實現可攜性和性能。

⚡ 效能比較

我們將資料平行 C++ 版本與使用 OpenCL 的版本在 Intel Gen9 圖形卡上進行效能比較。結果顯示,在同一硬體上,資料平行 C++ 版本的整體執行時間明顯優於 OpenCL 版本。例如,對於工作量一,使用 OpenCL 版本解算所需的時間為 3600 多秒,而使用資料平行 C++ 版本解算所需的時間只有 393 秒。

👍 優點

  • 通過資料平行 C++ 的遷移,我們可以支持更多類型的加速器,並實現可攜性和性能。
  • Intel 資料平行 C++ 相容性工具大大簡化了遷移過程,節省了大量時間。

👎 缺點

  • 在遷移過程中,有些特定於應用程式的問題需要手動修復。
  • 部分部分代碼使用的功能指標在遷移中未被自動轉換,需要手動重新編寫。

FAQ

Q: 小型緩衝區資料傳輸時間的問題是由 DPC++ 或 OpenCL 引起的嗎?

A: 這個問題主要是由 OpenCL 的實現方式引起的,它在將小型緩衝區從主機傳輸到設備時存在效率問題。

Q: 這個問題與執行時期及驅動程式有關,還是與資料平行 C++ 本身有關?

A: 這個問題主要與資料平行 C++ 本身無關,與執行時期及驅動程式有關。執行時期及驅動程式的實現方式會影響到資料傳輸的效率。

🔗 相關資源


Highlights:

  • Spectral 3D Globe 是一個模擬全球和區域地震波傳播的軟體套件。
  • 使用 Intel 資料平行 C++ 相容性工具將 Spectral 3D Globe 從 CUDA 移植到資料平行 C++。
  • 遷移後,資料平行 C++ 版本的整體執行時間明顯優於 OpenCL 版本。
  • 資料平行 C++ 提供了更好的可攜性和性能,可以在不同類型的加速器上運行。

FAQ:

Q: 小型緩衝區資料傳輸時間的問題是由 DPC++ 或 OpenCL 引起的嗎?

A: 這個問題主要是由 OpenCL 的實現方式引起的,它在將小型緩衝區從主機傳輸到設備時存在效率問題。

Q: 這個問題與執行時期及驅動程式有關,還是與資料平行 C++ 本身有關?

A: 這個問題主要與執行時期及驅動程式有關,而與資料平行 C++ 本身無關。執行時期及驅動程式的實現方式會影響到資料傳輸的效率。


資源:

Most people like

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.