news 2026/5/9 21:08:03

CANN/PTO-ISA高级调试工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 21:05:31

QINGDA清达金属膜电阻原厂一级代理分销经销

序号 品牌 元件类别 型号 描述 包装 数量 1 QINGDA 贴片金属膜电阻 RJM74P0204F2T5602 0204 56K 1% 3000 27,000 2 QINGDA 贴片金属膜电阻 RJM74P0204F2T1002 0204 10K 1% 3000 27,000 3 QINGDA 贴片金属膜电阻 …

作者头像 李华
网站建设 2026/5/9 21:02:39

GPT-3.5与Llama 2大模型在仇恨言论检测中的实战对比与优化

1. 项目概述&#xff1a;当大模型遇上“网络清道夫”的难题最近在做一个挺有意思的课题&#xff0c;就是拿现在市面上最火的两个大语言模型——GPT-3.5和Llama 2&#xff0c;去干一件听起来有点“拧巴”的活儿&#xff1a;检测网络上的仇恨言论。这事儿说白了&#xff0c;就是让…

作者头像 李华
网站建设 2026/5/9 21:02:38

使用taotoken cli工具一键配置多开发环境下的模型接入

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用taotoken cli工具一键配置多开发环境下的模型接入 在团队协作或个人拥有多个开发项目时&#xff0c;为每个项目或每台机器手动…

作者头像 李华
网站建设 2026/5/9 21:02:37

为开源AI智能体工具配置模型源,Taotoken对接Hermes Agent实战

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为开源AI智能体工具配置模型源&#xff0c;Taotoken对接Hermes Agent实战 在构建基于开源智能体框架的应用时&#xff0c;一个核心…

作者头像 李华
网站建设 2026/5/9 20:57:41

多语言开发依赖加速:智能代理multicodex-proxy原理与部署指南

1. 项目概述与核心价值最近在折腾一个多语言代码库的本地化代理服务&#xff0c;发现了一个挺有意思的项目&#xff1a;thibautrey/multicodex-proxy。乍一看这个名字&#xff0c;你可能会有点懵&#xff0c;“multicodex”是什么&#xff1f;“proxy”在这里又扮演什么角色&am…

作者头像 李华