在 Linux* 操作系統主機上開始使用面向 GDB* 的英特爾® 發行版
開始使用面向 GDB* 的英特爾® 分發版來調試應用程序。 按照以下說明設置調試器以調試內核卸載到 CPU 和 GPU 設備的應用程序。
面向 GDB* 的英特爾® 分發版作為英特爾® oneAPI 基礎工具包的一部分提供。 有關 oneAPI 工具包的更多信息,請訪問 產品頁面.
參觀 發行說明 有關關鍵功能、新功能和已知問題的信息的頁面。
您可以使用 SYCL* samp文件代碼 Array Transform,開始使用面向 GDB* 的英特爾® 分發版。 的ample 不會產生錯誤,只是說明調試器的功能。 該代碼根據輸入數組的元素是偶數還是奇數來處理它們,並生成輸出數組。 你可以使用amp文件在 CPU 或 GPU 上進行調試,通過命令行參數指定所選設備。 請注意,GPU 調試可能需要兩個系統和額外的遠程調試配置。
先決條件
如果您打算在 GPU 上進行調試,請安裝最新的 GPU 驅動程序並配置您的系統以使用它們。 請參閱 適用於 Linux* 操作系統的英特爾® oneAPI 工具包安裝指南。 按照說明操作 安裝英特爾 GPU 驅動程序 安裝與您的系統匹配的 GPU 驅動程序。
此外,您還可以安裝 Visual Studio Code* 的擴展,以便使用面向 GDB* 的英特爾® 分發版調試 GPU。 請參閱 將 Visual Studio Code 與英特爾® oneAPI 工具包指南結合使用.
設置 GPU 調試器
要設置 GPU 調試器,您必須具有根訪問權限。
筆記 在內核調試期間,GPU 停止運行,目標機器上的視頻輸出不可用。 因此,如果系統的 GPU 卡也用於圖形輸出,則無法從目標系統調試 GPU。 在這種情況下,通過 ssh 連接到機器。
1. 如果你打算在 GPU 上進行調試,則需要一個支持 GPU 調試的 Linux 內核。
a. 按照說明操作 用於通用 GPU 功能的英特爾® 軟件 下載並安裝必要的驅動程序。
b. 在內核中啟用 i915 調試支持:
a. 打開終端機。
b. 打開 grub file 在 /etc/default.
c. 在蠐螬 file, 找到 GRUB_CMDLINE_LINUX_DEFAULT=” 行。
d. 在引號(“”)之間輸入以下文本:
i915.debug_eu=1
筆記 默認情況下,GPU 驅動程序不允許工作負載在 GPU 上運行超過一定時間。 驅動程序通過重置 GPU 以防止掛起來終止此類長時間運行的工作負載。 如果應用程序在調試器下運行,驅動程序的 hangcheck 機制將被禁用。 如果您計劃在不附加調試器的情況下運行長時間的計算工作負載,請考慮應用 GPU:禁用 Hangcheck 透過添加
i915.enable_hangcheck=0
一樣 GRUB_CMDLINE_LINUX_DEFAULT 行。
c. 更新 GRUB 以使這些更改生效:
sudo 更新 grub
d. 重新啟動。
2. 通過獲取位於工具包安裝根目錄中的 setvars 腳本來設置 CLI 環境。
Linux(須藤):
來源/opt/intel/oneapi/setvars.sh
Linux(用戶):
來源 ~/intel/oneapi/setvars.sh
3. 設置環境
使用以下環境變量啟用對英特爾® oneAPI 零級調試器的支持:
導出 ZET_ENABLE_PROGRAM_DEBUGGING=1
導出 IGC_EnableGTLocationDebugging=1
4. 系統檢查
一切準備就緒後,請運行以下命令確認系統配置是否可靠:
python3 /path/to/intel/oneapi/diagnostics/latest/diagnostics.py –filter debugger_sys_check -force
配置良好的系統的可能輸出如下:
…
檢查結果:
==================================================== = =================================
檢查名稱:debugger_sys_check
說明:此檢查驗證環境是否已準備好使用 gdb(面向 GDB* 的英特爾(R) 分發版)。
結果狀態:PASS
找到調試器。
找到了libipt。
利比加發現。
i915 調試已啟用。
環境變量正確。 ================================================ ================================
1 次檢查:1 次通過,0 次失敗,0 次警告,0 次錯誤
控制台輸出 file: /path/to/logs/diagnostics_filter_debugger_sys_check_force.txt JSON輸出 file:/path/to/diagnostics/logs/diagnostics_filter_debugger_sys_check_force.json …
使用調試信息編譯程序
你可以使用amp文件項目 Array Transform,以快速開始使用應用程序調試器。
1. 得到 sample,選擇以下任意一種方式:
- 使用 oneAPI CLI Samp瀏覽器 從入門類別中選擇數組轉換。
- 下載自 GitHub*.
2. 導航到s的srcamp樂項目:
cd 數組轉換/src
3. 通過啟用調試信息(-g 標誌)並關閉優化(-O0 標誌)來編譯應用程序。
建議禁用優化以獲得穩定準確的調試環境。 這有助於避免在編譯器優化後更改代碼造成的混淆。
筆記 您仍然可以在啟用優化(-O2 標誌)的情況下編譯程序,如果您的目標是 GPU 彙編調試,這會很有幫助。
您可以通過多種方式編譯程序。 選項 1 和 2 使用即時 (JIT) 編譯,建議調試 samp樂。 選項 3 使用提前 (AOT) 編譯。
- 選項 1. 您可以使用 CMake file 配置和構建應用程序。 請參閱 自述文件 的amp樂的說明。
筆記 CMake file 提供 sample 已經傳遞了 -g -O0 標誌。
- 選項 2. 編譯 array-transform.cpp samp沒有 CMake 的文件應用程序 file,發出以下命令:
icpx -fsycl -g -O0 數組轉換.cpp -o 數組轉換
如果編譯和鏈接是分開完成的,請在鏈接步驟保留 -g -O0 標誌。 鏈接步驟是 icpx 翻譯這些標誌以在運行時傳遞給設備編譯器的時候。 前任amp樂:
icpx -fsycl -g -O0 -c 數組變換.cpp
icpx -fsycl -g -O0 數組轉換.o -o 數組轉換
- 選項 3。您可以使用 AOT 編譯來避免運行時更長的 JIT 編譯時間。 對於調試器下的大型內核,JIT 編譯可能需要更長的時間。 要使用 Ahead-of-Time 編譯模式:
• 對於在 GPU 上進行調試:
指定您將用於程序執行的設備。 對於前ample, -device dg2-g10 用於英特爾® 數據中心 GPU Flex 140 顯卡。 有關支持選項的列表和有關 AOT 編譯的更多信息,請參閱 英特爾® oneAPI DPC++ 編譯器開發人員指南和參考.
對於前amp樂:
icpx -fsycl -g -O0 -fsycl-targets=spir64_gen -Xs “-device dg2-g10” array-transform.cpp -o arraytransform
提前編譯需要 OpenCLTM 離線編譯器(OC 編譯器 LOC)。 有關詳細信息,請參閱“安裝 OpenCLTM 離線編譯器 (OCLOC)”部分 安裝指南.
• 對於在 CPU 上進行調試:
icpx -fsycl -g -O0 -fsycl-targets=spir64_x86_64 數組轉換.cpp -o 數組轉換
啟動調試會話
啟動調試會話:
1. 按如下方式啟動面向 GDB* 的英特爾® 分發版:
gdb-oneapi 數組轉換
您應該會看到 (gdb) 提示符。
2. 要確保將內核卸載到正確的設備,請執行以下步驟。 當您從 (gdb) 提示符下執行運行命令時,將 中央處理器, 圖形處理器 or 加速器 爭論:
- 在 CPU 上進行調試:
運行處理器
Examp文件輸出:
[SYCL] 使用設備:來自 [Intel(R) OpenCL] 的 [Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz]- 在 GPU 上進行調試:
運行顯卡
Examp文件輸出:
[SYCL] 使用設備:來自 [Intel(R) LevelZero] 的 [Intel(R) Data Center GPU Flex Series 140 [0x56c1]]- 在 FPGA 仿真器上進行調試:
運行加速器
Examp文件輸出:
[SYCL] 使用設備:來自 [Intel(R) FPGA Emulation Platform for OpenCL(TM) software] 的 [Intel(R) FPGA Emulation Device]筆記 cpu、gpu 和加速器參數特定於 Array Transform 應用程序。
3. 退出英特爾® GDB* 分發版:
辭職
為方便起見,通用英特爾® GDB* 分發版命令在 參考表.
調試 Array Transform samp文件並了解有關面向 GDB* 的英特爾® 分發版的更多信息,使用 教學.
了解更多
文件 | 描述 |
教程:使用面向 GDB* 的英特爾® 分發版進行調試 | 本文檔描述了使用英特爾® GDB* 分發版調試 SYCL* 和 OpenCL 時要遵循的基本場景。 |
面向 GDB* 的英特爾® 分發版用戶指南 | 本文檔描述了您可以使用面向 GDB* 的英特爾® 分發包完成的所有常見任務,並提供了必要的技術細節。 |
面向 GDB* 的英特爾® 發行版發行說明 | 這些說明包含有關英特爾® GDB* 分發版的主要功能、新特性和已知問題的信息。 |
oneAPI 產品頁面 | 此頁麵包含對 oneAPI 工具包的簡要介紹和有用資源的鏈接。 |
英特爾® GDB* 參考表分發版 | 這份單頁文檔簡要介紹了面向 GDB* 的英特爾® 分發版先決條件和有用的命令。 |
雅可比ample | 這個小型 SYCL* 應用程序有兩個版本:錯誤版本和修復版本。 使用amp文件以使用面向 GDB* 的英特爾® 分發版進行應用程序調試。 |
聲明和免責聲明
英特爾技術可能需要啟用硬件,軟件或服務才能激活。
沒有任何產品或組件是絕對安全的。
您的費用和結果可能會有所不同。
© 英特爾公司。 英特爾、英特爾標識和其他英特爾標誌是英特爾公司或其子公司的商標。 其他名稱和品牌可能是其他人的財產。
本文檔未授予任何智慧財產權許可(明示或暗示、透過禁止反言或其他方式)。
所描述的產品可能包含設計缺陷或錯誤(稱為勘誤表),這可能導致產品偏離已發布的規格。目前特徵勘誤表可依要求提供。
英特爾否認所有明示和默示保證,包括但不限於適銷性、特定用途適用性和不侵權的默示保證,以及因履行過程、交易過程或貿易使用產生的任何保證。
OpenCL 和 OpenCL 標誌是 Apple Inc. 的商標,經 Khronos 許可使用。
文件/資源
![]() |
Linux 操作系統主機上 GDB 的英特爾分發版 [pdf] 使用者指南 Linux 操作系統主機上的 GDB 分佈,Linux 操作系統主機上的 GDB,Linux 操作系統主機,操作系統主機,主機 |