乾坤大挪移的英特爾®DPC ++兼容性工具,協助將CUDA轉換到OpenVino程序的方法

關鍵字 :OpenVinooneAPI Compatibility ToolsCUDAData Parallel C++

英特爾®DPC ++兼容性工具

英特爾® DPC ++相容性工具,簡稱DPCT是一套協助開發人員將CUDA 程序遷移到以數據並行的C ++(Intel DPC ++),Intel DPC ++是基於最新C ++並結合了諸如SYCL *之類的可移植行業標準。想對英特爾DPC++更進一步了解,請參考我的另一篇博文,英特爾OpenVino 在異質平台開發AI應用上加速大解密

 

使用英特爾®DPC ++兼容性工具, DPCT並非表示百分之百遷移程式碼。如下圖完成遷移大多協助轉換80~90%的CUDA程式碼。通常英特爾®DPCT會輸出並概述其他尚需要完成的工作。

開始之前

如下圖示,英特爾® DPC ++相容性工具包含在 英特爾®oneAPI基本工具包。如果尚未安裝 英特爾®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.011.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 Base Toolkit入門指南:

有關測試樣本的目的和用途的更多詳細信息,請找到為每個樣本提供的README文件。



例子

提供的示例使用Vector Add示例。

命令行上的基本調用

使用以下步驟遷移Vector Add DPCT示例。

  1. 下載

    vector_add.cu樣本。

  1. 跑過英特爾® DPC ++相容性工具

  從示例根目錄:

    dpct --in-root=. src/vector_add.cu

  這 vector_add.dp.cpp文件應顯示在 dpct_output目錄。採用:

    cd dpct_output

  如下圖示,該文件現在是 DPC ++源文件。

       

  1. 驗證生成的源代碼並修復英特爾® DPC ++相容性工具無法遷移。(此示例中使用的代碼很簡單。在這種情況下,可能不需要手動更改)。有關解決警告的最準確,最詳細的說明,請參見 解決遷移代碼中的警告 ReadMe File

              注意:    Include文件的部分, 您必須添加 -I /包含用於遷移樣本的編譯。                

       對於更複雜的樣品說明,請參閱 遷移項目 的節 英特爾® DPC ++相容性工具開發人員指南和參考。

尋找更多

內容

說明和鏈接

英特爾® 

DPC ++

 相容性工具

 開發人員指南和參考

https://software.intel.com/content/www/us/en/develop/documentation/intel-dpcpp-compatibility-tool-user-guide/top.html

點播網絡研討會:將您現有的CUDA代碼遷移到DPC ++代碼

https://software.seek.intel.com/CUDA-to-DPC-Webinar

英特爾®oneAPI工具包的安裝指南

https://software.intel.com/content/www/us/en/develop/articles/installation-guide-for-intel-oneapi-toolkits.html

SYCL規範版本1.2.1 PDF

https://www.khronos.org/registry/SYCL/specs/sycl-1.2.1.pdf

Khronos * SYCL概述網站

SYCL概述:https ://www.khronos.org/sycl/

Clang的CUDA支持

https://llvm.org/docs/CompileCudaWithLLVM.html

SYCL規範的擬議擴展

https://github.com/intel/llvm/tree/sycl/sycl/doc/extensions

 

★博文內容參考自 網站,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論