英特爾®DPC ++兼容性工具
英特爾® DPC ++相容性工具,簡稱DPCT是一套協助開發人員將CUDA 程序遷移到以數據並行的C ++(Intel DPC ++),Intel DPC ++是基於最新C ++並結合了諸如SYCL *之類的可移植行業標準。想對英特爾DPC++更進一步了解,請參考我的另一篇博文,英特爾OpenVino 在異質平台開發AI應用上加速大解密。
使用英特爾®DPC ++兼容性工具, DPCT並非表示百分之百遷移程式碼。如下圖完成遷移大多協助轉換80~90%的CUDA程式碼。通常英特爾®DPCT會輸出並概述其他尚需要完成的工作。
開始之前
如下圖示,英特爾® DPC ++相容性工具包含在 英特爾®oneAPI基本工具包。如果尚未安裝 英特爾®oneAPI基本工具包,請按照《OneAPI安裝指南》 中的說明進行操作 。
某些CUDA header file(依照您程式的複雜度)可能需要訪問 英特爾® DPC ++
相容性工具。英特爾® DPC ++相容性工具會在默認位置查找以下CUDA頭文件:
- / usr / local / cuda / include
- /usr/local/cuda-xy/include
,其中xy是以下值之一:8.0、9.0、9.1、9.2、10.0、10.1、10.2、11.0或11.1。
您可以通過以下方式指向自定義位置:
--cuda-include-path = <路徑/到/ cuda / include>中的選項
英特爾® DPC ++相容性工具命令行。
CUDA包含路徑不應與需要遷移的源代碼所在的目錄相同或作為其子目錄。
目前, 英特爾® DPC ++相容性工具支持使用CUDA 8.0、9.0、9.1、9.2、10.0、10.1、10.2、11.0或11.1實施的程序的遷移。支持的語言和版本列表可能會在將來擴展。
設置 英特爾® DPC ++相容性工具
環境,運行:
- 在Linux(sudo)上:
源/opt/intel/inteloneapi/setvars.sh
- 在Linux(用戶)上:
源〜/ intel / inteloneapi / setvars.sh
- 在Windows上:
驅動器:\ Program Files(x86)\ Intel \ oneAPI \ setvars.bat
操作系統shell程序的一般調用語法為:
dpct [options] [... ]
內置使用信息要查看清單 英特爾® DPC ++相容性工具具體選項,請使用
- help選項:
dpct --help
要查看語言解析器(Clang *)選項的列表,請傳遞
- help作為Clang選項:
dpct -- -help
發出警告
英特爾®DPC ++兼容性工具記錄了文件遷移期間可能需要注意代碼中的位置,以使代碼與DPC ++兼容或正確。註釋將被輸出並插入到自動生成的代碼文件中,並顯示為警告。有關特定警告含義的更多詳細信息,請參閱《 診斷參考》。下面是一個範例:
/path/to/file.hpp:26:1: warning: DPCT1003:0: Migrated API does not return error code. (*,0) is inserted. You may need to rewrite this code. // source code line for which warning was generated
遷移一個簡單的測試項目
英特爾DPC ++兼容性工具附帶了幾個不同的範例,使您可以探索該工具並熟悉其功能。下表概述了樣本。
通過以下方式之一訪問示例,然後導航到示例項目的根:
- 使用oneapi-cli實用程序從“英特爾®DPC ++兼容性工具”類別中選擇一個範例。
- 從GitHub *下載:https: //github.com/oneapi-src/oneAPI-samples/tree/master/Tools/Migration
有關如何下載和訪問示例的更多詳細信息,請訪問英特爾®oneAPI Base Toolkit入門指南:
有關測試樣本的目的和用途的更多詳細信息,請找到為每個樣本提供的README文件。
例子
提供的示例使用Vector Add示例。
命令行上的基本調用
使用以下步驟遷移Vector Add DPCT示例。
- 下載
vector_add.cu樣本。
- 跑過英特爾® DPC ++相容性工具
從示例根目錄:
dpct --in-root=. src/vector_add.cu
這 vector_add.dp.cpp文件應顯示在 dpct_output目錄。採用:
cd dpct_output
如下圖示,該文件現在是 DPC ++源文件。

- 驗證生成的源代碼並修復英特爾® DPC ++相容性工具無法遷移。(此示例中使用的代碼很簡單。在這種情況下,可能不需要手動更改)。有關解決警告的最準確,最詳細的說明,請參見 解決遷移代碼中的警告 ReadMe File
注意: Include文件的部分, 您必須添加 -I /包含用於遷移樣本的編譯。
對於更複雜的樣品說明,請參閱 遷移項目 的節 英特爾® DPC ++相容性工具開發人員指南和參考。
尋找更多
|
內容 |
說明和鏈接 |
|
英特爾® DPC ++ 相容性工具 開發人員指南和參考 |
|
|
點播網絡研討會:將您現有的CUDA代碼遷移到DPC ++代碼 |
|
|
英特爾®oneAPI工具包的安裝指南 |
|
|
SYCL規範版本1.2.1 PDF |
|
|
Khronos * SYCL概述網站 |
SYCL概述:https ://www.khronos.org/sycl/ |
|
Clang的CUDA支持 |
|
|
SYCL規範的擬議擴展 |
評論