1. 发行说明
1.1. 11.8 版本
- 新的统一调试器后端
- 在此版本中,Linux 平台上引入了一个名为统一调试器 (UD) 的新调试器后端。UD 跨多个平台(包括 Windows 和 Linux)受支持。对于 API 的现有客户端,UD 应该在很大程度上是透明的。先前的调试器后端(称为经典调试器后端)仍然可以通过将环境变量 CUDBG_USE_LEGACY_DEBUGGER 设置为 1 来使用。 Maxwell GPU 上不支持 UD。如果需要 Maxwell 支持,API 的客户端应切换到经典后端。
- 设备端 cudaDeviceSynchronize() 未定义行为
- API 的客户端应防止在已弃用的 cudaDeviceSynchronize() 函数中使用 SingleStepWarp。而是恢复为使用 BP 设置跳过调用并继续。
- CUDBG_EVENT_KERNEL_READY 事件不再为 GPU 启动的网格传递
- 通过 ASYNC 事件管道传递的 GPU 启动网格的 CUDBG_EVENT_KERNEL_READY 事件将不再发送。此处 GPU 启动指的是使用 CUDA 动态并行性的代码。此用例的现有实现不精确。回调不会报告执行开始之前的所有 GPU 启动网格,而只会报告当前正在执行的设备上找到的那些先前未在其启动期间报告的网格。此功能可能会在未来的版本中重新引入。如果严格需要此功能,可以使用经典调试器后端。
- getLoadedFunctionInfo
- 添加了新的 getLoadedFunctionInfo 调用,以获取给定模块的已加载函数的节号和地址。
1.4. 6.5 版本
- 谓词寄存器
- 可以通过 readPredicates() 和 writePredicates() 调用访问和修改每个线程的谓词寄存器。这些调用中的每一个都期望一个足够大小的缓冲区来覆盖当前 GPU 架构的所有谓词。可以通过 getNumPredicates() API 调用读取回当前谓词寄存器的数量。
- 条件代码寄存器
- 可以通过 readCCRegister() 和 writeCCRegister() 调用访问和修改每个线程的条件代码寄存器。条件代码寄存器是一个 32 位无符号寄存器,其格式可能因 GPU 架构而异。
- 设备名称
- getDeviceName() API 返回一个字符串,其中包含 GPU 的公开产品名称。
- API 错误报告改进
- 符号 CUDBG_REPORT_DRIVER_API_ERROR_FLAGS 指向应用程序进程空间中的一个 32 位无符号整数,该整数控制 API 错误报告。可以写入此标志的值在 CUDBGReportDriverApiErrorFlags 枚举中指定。在 6.5 中,支持在变量 CUDBG_REPORT_DRIVER_API_ERROR_FLAGS 中设置与 CUDBG_REPORT_DRIVER_API_ERROR_FLAGS_SUPPRESS_NOT_READY 对应的位。这将阻止 CUDA API 调用执行 CUDA API 错误报告函数,这些调用返回运行时 API 错误代码 cudaErrorNotReady 或驱动程序 API 错误代码 cuErrorNotReady。