
日志最佳实践与 printf 迁移指南【免费下载链接】ops-sparse本项目是CANN提供的高性能稀疏矩阵计算的算子库专注于优化稀疏矩阵的计算效率。项目地址: https://gitcode.com/cann/ops-sparseprintf → OP_LOG 迁移表仓内现有代码src/spmv/、src/spmm/仍使用LOG_PRINT/printf新代码禁止使用旧代码应逐步迁移❌ 旧代码✅ 新代码说明printf(error: %s\n, msg)OP_LOGE(aclsparseXxx, error: %s, msg)错误日志LOG_PRINT([ERROR] %s\n, msg)OP_LOGE(aclsparseXxx, %s, msg)LOG_PRINT 是 printf 的包装std::cout info std::endlOP_LOGI(aclsparseXxx, info)C 流输出fprintf(stderr, warn\n)OP_LOGW(aclsparseXxx, warn)stderr 输出printf(tiling: %u\n, val)OP_LOGD(aclsparseXxx, tiling: %u, val)调试信息迁移步骤添加头文件#include log/log.h确定 API 名使用当前函数所属的 API 名如aclsparseSpMV选择级别按 log-quickref.md 的场景表选择替换格式去掉末尾\ndlog 自动换行去掉std::endl删除旧宏定义移除#define LOG_PRINT(...)等旧宏常见陷阱陷阱说明解决忘记#include log/log.h编译报错OP_LOGE was not declared添加头文件日志级别选错错误信息用了OP_LOGD生产环境看不到错误必须用OP_LOGE缺少上下文failed无法定位问题包含 API 名 具体参数值高频路径无条件 DEBUG性能下降用CheckLogLevel包裹Kernel 侧使用 dlog编译失败或性能严重下降Kernel 侧禁止 dlog仅用PRINT调试最佳实践每个 API 入口的第一条日志OP_LOGI记录 API 名和关键参数每个错误返回前OP_LOGE记录错误原因Tiling 计算完成后OP_LOGD记录 tiling 结构体关键字段Kernel launch 前OP_LOGI记录 numBlocks 和 stream早期返回nnz0不输出日志避免噪音【免费下载链接】ops-sparse本项目是CANN提供的高性能稀疏矩阵计算的算子库专注于优化稀疏矩阵的计算效率。项目地址: https://gitcode.com/cann/ops-sparse创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考