Intel 工程师正在努力为 GNU 调试器 (GDB) 提供上游支持,以调试在 Intel GPU 上运行的软件。
Intel 一直在其下游存储库中提供对 Intel 图形的 GDB 调试器支持,而最近几周一直在努力将支持添加到上游 GDB 中,这是 Linux 上广泛使用的调试器,是 GNU 工具链的一部分。
“我们(英特尔)希望提交补丁,以启用对 Intel GPU 设备的基本调试支持。将来,我们计划添加更多补丁,以提高性能和用户体验。这些补丁已在下游 “Intel Distribution for GDB” 调试器中提供。
…
GPU 线程以 SIMD(单指令多数据)方式运行:它们被矢量化,其中每个通道(也称为“执行通道”)执行相同的指令,但使用不同的数据值。同一线程的泳道以 lock-step 移动执行。因此,显示源程序变量的值不仅需要线程上下文,还需要通道上下文。GDB 目前没有内置此知识。此外,一些 DWARF 扩展对于以车道相对方式表示数据位置是必要的,这些扩展目前正在讨论或将提交给 DWARF 委员会。因此,对于此提交,变量可能会出现类似 “” 的错误。出于同样的原因,类似的限制也适用于上游 GDB 中的 AMD ROCm (AMDGPU) 目标。下游的“Intel Distribution for GDB”调试器实现了通道支持以及 DWARF 扩展,因此能够正确打印通道相对值。
有关此 Intel 图形对 GDB 的调试支持的更多详细信息,请参阅此补丁系列。
此 Intel 图形调试目标依赖于 Intel oneAPI Level Zero Debug API,反过来,GNU Debugger 的重点似乎主要集中在 Level Zero / SYCL 工作负载上。用于 GDB 的 Intel 图形端口目前大约有 11k 行代码。