当前位置: 首页 > news >正文

CUDA-GDB(13)——支持的平台及常见问题解决

安全二次方(security²)博客目录导读

目录

13.1 支持的平台

13.2 支持操作系统上的常见问题

13.3 已知问题


13.1 支持的平台

主机平台要求

CUDA-GDB 在所有 CUDA 工具包支持的平台上均可使用,它与工具包一同发布。更多信息请参阅CUDA Toolkit release notes

GPU 要求

调试功能在当前CUDA版本支持的所有兼容CUDA的GPU上均可使用。

GDB Python集成

cuda-gdb通过多重构建机制支持GDB Python集成,以便在不同平台上支持多种python3解释器。cuda-gdb程序是一个shell脚本,它会根据系统上可用的Python版本选择关联的支持cuda-gdb二进制文件。支持以下Python版本:Python 3.8Python 3.9Python 3.10Python 3.11Python 3.12

适用于Linux的Windows子系统(WSL)

  • cuda-gdb支持在WSL2上调试CUDA应用程序。

  • 确保通过注册表项 >HKEY_LOCAL_MACHINE\SOFTWARE\NVIDIA Corporation\GPUDebugger\EnableInterface 将此功能启用,设置为 (DWORD) 1

  • 调试计算密集型应用可参考increase or disable TDR.

13.2 支持操作系统上的常见问题

以下是当前版本在支持的操作系统上的已知问题及其解决方法。

Python未初始化

出现此问题的原因是机器上缺少Python 3.x库,安装该库即可解决。当PATH环境变量中默认python3解释器安装的libpython主次版本不匹配时也会引发此问题。必须确保PATH中默认python3解释器对应的libpython版本可用。可通过python3 --version命令查看libpython版本。例如,以下命令会提示我们需要在默认库搜索路径中安装libpython3.8.so*文件:

$ python3 --version
Python 3.8.10

以下是安装正确libpython的具体命令。

RHEL 8/9

$ sudo yum -y install python3-libs

Debian 10/11/12

$ sudo apt-get -y install libpython3-stdlib

Fedora 39

$ sudo yum -y install python3-libs

OpenSUSE 15

$ sudo zypper install -y libpython3

Ubuntu 20.04/22.04

$ sudo apt-get -y install python3.8 $ sudo apt-get -y install libpython3.8

13.3 已知问题

以下是当前版本中已知的问题。

  • 在Windows或WSL上不支持启用MCDM的Hopper架构调试。

  • 在模块加载前,在__device____global__函数内的某一行设置断点,可能会导致断点被临时设置在源代码中下方函数的首行。一旦目标函数的模块加载完成,断点将被正确重置。在此期间,根据应用程序的不同,可能会触发该断点。这种情况下可以安全忽略该断点,并继续执行应用程序。

  • scheduler-locking 选项不能设置为 on

  • 在从内核单步跳出后再次单步执行会导致未定义行为。建议改用'continue'命令。

  • 不支持在启用软件抢占的CUDA应用程序上使用cuda-gdb进行附加调试。

  • 不支持在QNX系统上附加到CUDA应用程序。

  • 不支持附加到以MPS客户端模式运行的CUDA应用程序。

  • 不支持使用cuda-gdb附加到MPS服务器进程(nvidia-cuda-mps-server),也不支持用cuda-gdb启动MPS服务器。

  • 如果CUDA应用程序以MPS客户端模式启动并使用cuda-gdb调试,该MPS客户端将等待所有其他MPS客户端终止后,以非MPS应用程序模式运行。

  • 当调试器单步执行内联例程时,会出现显著的性能下降。

由于内联代码块可能包含多个退出点,调试器在底层会逐步执行每一条指令,直到到达退出点,这对于大型例程来说会产生相当大的开销。建议采取以下措施以避免此问题:

  • 避免在声明函数时使用__forceinline__。(对于带有调试信息编译的代码,只有使用__forceinline__关键字声明的例程才会真正被内联)

  • 使用until 命令来单步跳过内联子程序。

  • 在Jetson上,调用cuda API可能导致调试器跳转到_dl_catch_exception()。一个解决方法是继续执行。

  • 在Jetson和Drive设备上,GPU调试功能仅在调试器以root权限运行时才能正常工作。若要在非root权限下运行调试器,需要修改devfs节点权限设置。

  • 调试器可能会漏报一个引发的trap(__trap()),如果该陷阱是设备从断点恢复后执行的下一条指令。

  • 在恢复执行过程中,如果先前空闲的SM上启动了新的warp,调试器可能会漏报断点或异常。

  • 调试器使用系统上安装的libpython库。使用Python脚本功能将使cuda-gdb面临与系统libpython版本相同的安全漏洞。建议始终保持系统libpython库为最新版本。

  • 调试器不支持访问通过CUDA IPC API从其他进程导入的共享内存分配。调试器尝试访问这些共享内存分配时,将返回错误提示:不支持访问通过IPC共享的内存分配。

  • 除非将OPTIX_FORCE_DEPRECATED_LAUNCHER设置为1,否则break_on_launch在OptiX/RTCore程序中不会生效。

  • 在QNX系统上,需要将QNX_TARGET环境变量指向目标根文件系统。如果该变量不可用,请将环境变量设置为空字符串。

http://www.dtcms.com/a/545105.html

相关文章:

  • Warp是什么
  • Go语言设计模式:建造者模式详解
  • 外观模式:复杂系统的统一入口
  • 个人做网站模版是否有人买如何引用网站图片
  • 库卡机器人通讯-EtherKRL-XML格式
  • 自动驾驶技术全景解析:从感知、决策到控制的演进与挑战
  • 建站平台在线提交表格apache 配置网站
  • 前端HTTP,JavaScript,网络
  • 汽车充电站光储充项目方案
  • 为什么Service层和Mapper层需要实现interface接口
  • 杭州做网站公司排名建筑工人招工网
  • 服务RejectedExecutionException问题对Semaphore的思考
  • GitLab 钩子 + Jenkins 自动化构建项目
  • 安装Pytorch GPU+CPU版本【通过本地安装解决无法使用pip指令下载问题】
  • DevExpress WinForms中文教程:Data Grid - 如何自定义汇总函数?
  • 西安建设市场诚信信息平台网站wordpress文章缩略图
  • 解锁未来:云原生如何重塑企业数字竞争力
  • 铜陵市建设工程管理局网站专业的网站开发团队
  • AI赋能座舱产品需求开发
  • SENT协议详解
  • 2026年ESWA SCI1区TOP,基于成本差异的跨境公路物流混合车队构成与调度:一种双层规划方法,深度解析+性能实测
  • 2025广州国际物联网产业生态博览会(物联网展)最新技术与亮点揭秘!
  • 【C++】哈希表实现 - 链地址法/哈希桶
  • 建设一个教程视频网站需要什么资质龙岗网络推广公司
  • 后端日志框架
  • 服务器在企业中的作用与价值
  • 《搭建属于自己的网站之网页前端学习》基础入门
  • 拿网站做商标童装网站建设
  • 金融投资网站毕设做网站是不是太low
  • 【pandas】pandas apply 方法详解