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

CANN/ops-sparse日志规范


【免费下载链接】ops-sparse本项目是CANN提供的高性能稀疏矩阵计算的算子库,专注于优化稀疏矩阵的计算效率。项目地址: https://gitcode.com/cann/ops-sparse

name: sparse-log description: ops-sparse 日志集成规范,定义 dlog 日志使用方式、日志级别、格式要求。

ops-sparse 日志规范

日志框架

ops-sparse 使用dlog作为统一日志框架,对应头文件:

#include "log/log.h"

日志级别

级别用途
OP_LOGEERROR参数校验失败、ACL Runtime 调用失败、不可恢复错误
OP_LOGWWARNING潜在问题、降级处理
OP_LOGIINFOKernel 启动信息、关键执行节点
OP_LOGDDEBUGTiling 数据、详细调试信息

日志格式

OP_LOGE("aclsparseXxx", "Error message: %s, code: %d", detail, code); OP_LOGD("aclsparseXxx", "Tiling data: rows=%u, cols=%u, blockDim=%u", rows, cols, blockDim); OP_LOGI("aclsparseXxx", "Kernel launched: blockIdx=%u, stream=%p", blockIdx, stream);

格式规范

  • 第一个参数为API 名或算子名(如"aclsparseSpMV"
  • 后续参数为格式化字符串 + 可变参数

Host 侧日志集成

强制规则

  1. 必须包含#include "log/log.h"
  2. 禁止使用printfstd::coutLOG_PRINT(旧代码遗留,新代码禁止)
  3. 参数校验失败 →OP_LOGE
  4. ACL Runtime 调用失败 →OP_LOGE
  5. Tiling 参数 →OP_LOGD
  6. Kernel launch →OP_LOGI

示例

static aclsparseStatus_t ValidateSpMVParams(aclsparseHandle_t handle, ...) { if (handle == nullptr) { OP_LOGE("aclsparseSpMV", "handle is nullptr"); return ACL_SPARSE_STATUS_HANDLE_IS_NULLPTR; } // ... } static aclsparseStatus_t LaunchSpMVKernel(...) { OP_LOGD("aclsparseSpMV", "Tiling: rows=%u, cols=%u, blockDim=%u", tiling.totalRowsNum, tiling.totalColNum, blockDim); spmv_kernel_do(...); OP_LOGI("aclsparseSpMV", "Kernel launched, blockDim=%u", blockDim); return ACL_SPARSE_STATUS_SUCCESS; }

Kernel 侧日志

  • Kernel 侧通常不使用 dlog(性能考虑)
  • 如需调试输出,使用AscendC内置的PRINT宏(仅调试模式使用)
  • 正式代码中必须移除所有 Kernel 侧调试输出

日志级别设置

通过环境变量控制(推荐):

export ASCEND_GLOBAL_LOG_LEVEL=0 # 0=DEBUG, 1=INFO, 2=WARNING, 3=ERROR export ASCEND_SLOG_PRINT_TO_STDOUT=1 # 1=输出到 stdout

详见references/log-config.md(含CheckLogLevel条件调试用法)。

参考文档

文档说明
references/log-quickref.md日志级别选择速查表 + 稀疏算子特有参数格式
references/host-log-templates.md6 种标准 Host 侧日志模板(参数校验/ACL 失败/格式不支持/Tiling/Kernel 启动/早期返回)
references/log-config.mdCheckLogLevel条件调试 + 环境变量配置 +aclsparseLoggerSetLevel说明
references/best-practices.mdprintf→OP_LOG 迁移表 + 常见陷阱 + 最佳实践

【免费下载链接】ops-sparse本项目是CANN提供的高性能稀疏矩阵计算的算子库,专注于优化稀疏矩阵的计算效率。项目地址: https://gitcode.com/cann/ops-sparse

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1129788/

相关文章:

  • CANN MatmulPermute算子开发
  • nwpu-cram人工智能算法:强化学习与应用
  • 无感定位如何嵌入视频孪生?核心引擎工作逻辑拆解
  • 模糊测试实战指南:Security-Paper项目中的AFLNet与IJON论文解析
  • 如何快速开始Pillar Valley游戏开发:10个新手必学技巧
  • Project Restoration兼容性测试:确保Majora‘s Mask 3D完美运行的10个关键步骤
  • CANN文档:PNGD图片解码
  • ReActor换脸插件:3分钟掌握Stable Diffusion精准人脸替换技术
  • 低成本高精度时钟合成方案:CS2200-CP与STM32F031K6实践
  • Mastering Embedded Linux Programming内核编译:从源码到设备树的完整流程
  • CANN文档:VENC视频编码
  • RetinexNet实战教程:5分钟完成低光图像增强,附代码示例
  • BilibiliDown:你的B站视频离线收藏专家
  • Pillar Valley游戏美术资源管理:Three.js材质与纹理的最佳实践
  • 如何用Python自动化脚本高效参与B站抽奖活动:BiliBili-Lucky-Draw技术深度解析
  • 6DoF运动感知技术:从IMU到嵌入式系统设计
  • 如何在浏览器中实现人体姿态搜索:免费开源pose-search完整使用指南
  • 10分钟掌握防撤回神器:RevokeMsgPatcher从新手到高手的完整指南
  • Jellyscrub开发者入门:从TrickplayController到VideoProcessor,插件架构详解
  • 为什么选择 Swift Protobuf?探索苹果官方 protobuf 实现的核心优势
  • InGate源码解析:深入理解Gateway API控制器的核心组件设计
  • Project Restoration技术架构深度解析:游戏补丁开发原理与实践
  • RDiscount高级特性解析:智能引号、脚注和TOC生成的完整教程
  • COCO 数据集 80 类目标检测:YOLOv8 训练与 mAP 0.5:0.95 评估指南
  • Coding Coach社区治理指南:开源项目的协作与贡献流程
  • Denoising Diffusion GANs环境搭建教程:快速上手CIFAR-10图像生成
  • StreamPETR:革命性3D物体检测框架快速入门指南
  • 恶意软件分析入门:Security-Paper项目中的Linux恶意软件研究资料
  • Instatic部署自动化平台:GitHub Actions与GitLab CI完整指南
  • 10 个 ConfigArgParse 实用技巧:让你的 CLI 工具更专业、更易用