文档 / 简体中文查看源码 ↗

调试与诊断

文档首页 · 编译器 · Runtime API · English | 日本語 | Deutsch | Русский

1. 按阶段定位

阶段/现象 首先检查
Cargo 清单或依赖解析失败 路径、features、锁文件、依赖缓存
Rust 构建失败 首个实际编译错误、工具链及 feature 组合
CUDA 工具包定位失败 CUDA_PATH、实际安装目录、头文件
驱动或设备初始化失败 驱动可用性、设备索引及动态库加载
直接 PTX 配置失败 direct-ptx feature、编译器选择、PTX 版本
Direct PTX 编译错误 错误中的不支持操作、目标或参数布局
回读/同步失败 先前异步提交、输入绑定、设备错误
数值错误 shape、strides、dtype、边界、同步及算法契约

保留首个错误及其上下文,不只复制最终的构建失败摘要。

2. 编译与缓存日志

运行时配置位于 ruda::runtime::config。CompilationConfig 提供 logger、cache 和 check_mode。CompilationLogLevel 的序列化名称为 disabled、basic、full;full 包含源码级编译信息。

ptx-runtime 示例自带日志计数器,统计编译与 PTX 磁盘缓存命中。RUDA_PTX_TEST_CACHE 仅由该示例读取,不是所有应用自动支持的全局环境变量。

配置定义见 compilation.rs,示例见 ptx_runtime.rs。

3. 边界检查

BoundsCheckMode 有三种配置:

配置 运行时定义
auto 普通启动使用检查,显式 unchecked 启动允许跳过检查
enforce 对启动强制使用检查
validate 普通启动保持检查;unchecked 路径选择验证模式

这是运行时选择的执行模式,具体检测能力仍取决于编译器和后端,不代表自动发现所有越界、竞争或生命周期错误。不要为了让失败用例继续运行而关闭检查。

4. 异步错误

ComputeClient::launch 不返回数值结果。使用返回 Result 的回读或等待同步 future 观察完成情况;区分参数检查失败、Kernel 编译失败和设备执行失败。

5. 定向复现

示例页列出共享内存限制、张量、位运算和半精度用例。

提交问题时附源码版本、features、完整命令、后端、PTX 版本、GPU/驱动/工具包、输入与实际输出;去除敏感内容后按贡献指南反馈。