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

CANN/PTO-ISA高级调试工具

高级调试工具

【免费下载链接】pto-isaParallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.项目地址: https://gitcode.com/cann/pto-isa

mssanitizer 内存检测

mssanitizer是昇腾平台的内存安全检测工具,可检测通信算子中的内存越界、未对齐访问等问题。

编译集成

在 CMakeLists.txt 中添加 sanitizer 编译选项:

option(ENABLE_SANITIZER "Enable mssanitizer for memory checking" OFF) if(ENABLE_SANITIZER) target_compile_options(comm_kernel PRIVATE -fsanitize=memory) target_link_options(comm_kernel PRIVATE -fsanitize=memory) target_compile_options(compute_kernel PRIVATE -fsanitize=memory) target_link_options(compute_kernel PRIVATE -fsanitize=memory) endif()

使用方式

# 编译带 sanitizer 的版本 cmake .. -DENABLE_SANITIZER=ON make -j # 运行(mssanitizer 自动检测) mssanitizer --tool=memcheck mpirun -np 8 ./my_operator

可检测问题

问题类型说明通信算子中的典型场景
GM 越界读读取超出分配范围的 GM 地址Tile 分块时边界计算错误
GM 越界写写入超出分配范围的 GM 地址远端地址偏移计算溢出
UB 越界访问超出 UB 容量Tile 大小设置过大
未对齐访问未满足对齐要求Signal 地址非 4B 对齐

输出解读

[mssanitizer] ERROR: out-of-bounds access at GM address 0x12345678 in kernel CommKernelEntry at comm_kernel.cpp:142 allocated at main.cpp:89 with size 65536 accessed offset: 65540 (4 bytes beyond allocation)

重点关注:

  • out-of-bounds:检查 Tile 边界和远端地址计算
  • use-after-free:检查 buffer 生命周期
  • uninitialized:检查信号矩阵是否清零

环境变量调试

# HCCL 调试 export HCCL_LOG_LEVEL=DEBUG # HCCL 日志级别 export HCCL_BUFFSIZE=1024 # 通信缓冲区大小(MB) # ACL 错误码检查 export ACL_ERROR_ABORT=1 # 遇到 ACL 错误立即 abort

缩小问题规模

#define DEBUG_MODE #ifdef DEBUG_MODE static constexpr uint32_t G_ORIG_M = 128; static constexpr uint32_t G_ORIG_N = 256; static constexpr int COMPUTE_BLOCK_NUM = 2; static constexpr int COMM_BLOCK_NUM = 2; #endif

Host 侧性能计时

aclrtEvent startEvent, endEvent; aclrtCreateEvent(&startEvent); aclrtCreateEvent(&endEvent); aclrtRecordEvent(startEvent, stream); launchKernel(..., stream); aclrtRecordEvent(endEvent, stream); aclrtSynchronizeStream(stream); float elapsed_ms; aclrtEventElapsedTime(&elapsed_ms, startEvent, endEvent); printf("Kernel time: %.3f ms\n", elapsed_ms);

Warmup + 多次测量

// Warmup(排除首次开销) for (int i = 0; i < WARMUP_ITERS; i++) { ClearSignals(); LaunchKernel(...); aclrtSynchronizeStream(stream); } // 正式测量 float total_ms = 0; for (int i = 0; i < MEASURE_ITERS; i++) { ClearSignals(); aclrtRecordEvent(start, stream); LaunchKernel(...); aclrtRecordEvent(end, stream); aclrtSynchronizeStream(stream); float ms; aclrtEventElapsedTime(&ms, start, end); total_ms += ms; } printf("Average: %.3f ms\n", total_ms / MEASURE_ITERS);

msprof 硬件 Profiling

对于 Device 侧管道级分析:

# 采集 kernel 执行 timeline msprof --output=./prof_data --application="mpirun -np 8 ./my_operator" # 导出分析结果 msprof --export=timeline --output=./prof_data

可展示 MTE2/MTE3/Cube/Vec 管道占用率,定位通信/计算重叠空洞。

【免费下载链接】pto-isaParallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.项目地址: https://gitcode.com/cann/pto-isa

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

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

相关文章:

  • 告别固定类别!用YOLO-World v2模型,5分钟实现自定义物体检测(附Python代码)
  • 蓝桥杯嵌入式STM32G431按键实战:从CubeMX配置到长按短按识别(附完整代码)
  • CANN/ops-nn Gelu激活函数算子
  • Embedbase:简化AI应用开发的向量化即服务平台
  • AI眼底疾病诊断:从图像处理到深度学习的技术演进与应用实践
  • 昆仑芯接受上市辅导:拟科创板上市 估值已超百亿
  • Jetson Nano摄像头实战:从CSI到USB,5分钟搞定拍照与录像(附常见问题排查)
  • 用51单片机和HC-SR04做个智能小车的‘眼睛’:超声波测距+LED分级报警实战
  • 保姆级教程:在Ubuntu 22.04上搞定SPEC CPU 2006的下载、安装与首次测试
  • 竟然还在手动逐句整理录音转文字?2026年这4款AI工具,2分钟转完1小时录音
  • 深入浅出:图解RK3588 MPP解码的三种内存模式(附代码对比)
  • 零成本云端部署OpenClaw AI智能体:Docker容器化一键体验指南
  • 基于语音识别与ChatGPT的智能语音助手开发实战
  • FPGA与结构化ASIC的功耗优化对比与实践
  • 保姆级教程:H3C NX30 PRO刷OpenWrt后,用Cron定时任务搞定烦人的LED灯
  • Transformer与AGI如何重塑医学影像分析:从技术原理到临床落地
  • AIVectorMemory:为AI编程助手构建本地向量记忆大脑,提升开发协作效率
  • CANN/driver DCMI设备电子标签接口
  • LLaMAWorkspace:一体化LLM应用开发与部署平台实战指南
  • 英国AI人才技能缺口分析:高校课程与行业需求的错位与应对
  • LangChain实战指南:从提示词工程到智能体开发的生成式AI应用构建
  • 基于ChatGPT的浏览器扩展开发指南:从原理到实战
  • CANN/ge 图拆分模块约束文档
  • 基于Claude的智能任务编排中枢:从对话代理到自动化工作流引擎
  • 深度学习在心血管影像AI分析中的核心技术与工程实践
  • CANN/hixl Python接口参考
  • 2026年5月广州 GEO 优化服务商选型指南:本土实力品牌与中小机构深度测评 - 海棠依旧大
  • LeetCode 电话号码的字母组合题解
  • 别再为Word转PDF发愁了!Java项目集成Aspose.Words保姆级教程(附Linux字体配置)
  • 物流人必看:除了EIQ,你的WMS系统真的用对了吗?结合ABC分类优化库位与拣货路径实战