在 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,选择以下任意一种方式:

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 操作系统主机,操作系统主机,主机

参考

发表评论

您的电子邮件地址不会被公开。 必填字段已标记 *