news 2026/6/26 3:59:10

在CATLASS样例工程使用AscendC算子调测API

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在CATLASS样例工程使用AscendC算子调测API

在CATLASS样例工程使用AscendC算子调测API

【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass

AscendC算子调测API是AscendC提供的调试能力,可进行kernel内部的打印(printf)、Tensor内容的查看(DumpTensor)。

使用示例

下面以00_basic_matmul为例,演示基于AscendC算子调测API的测试过程。

插入调试代码

在想进行调试的层级,增加调测API调用,如在include/catlass/gemm/kernel/basic_matmul.hpp的核函数中添加下述代码。

// include/catlass/gemm/kernel/basic_matmul.hpp template <> CATLASS_DEVICE void operator()<AscendC::AIC>(Params const &params) { BlockScheduler matmulBlockScheduler(params.problemShape, MakeCoord(L1TileShape::M, L1TileShape::N)); uint32_t coreLoops = matmulBlockScheduler.GetCoreLoops(); + AscendC::printf("CoreLoops is %d\n", coreLoops); Arch::Resource<ArchTag> resource; BlockMmad blockMmad(resource); // Represent the full gm AscendC::GlobalTensor<ElementA> gmA; gmA.SetGlobalBuffer((__gm__ ElementA *)params.ptrA); AscendC::GlobalTensor<ElementB> gmB; gmB.SetGlobalBuffer((__gm__ ElementB *)params.ptrB); AscendC::GlobalTensor<ElementC> gmC; gmC.SetGlobalBuffer((__gm__ ElementC *)params.ptrC); + AscendC::DumpTensor(gmA, coreLoops, 16); for (uint32_t loopIdx = AscendC::GetBlockIdx(); loopIdx < coreLoops; loopIdx += AscendC::GetBlockNum()) { // Compute block location GemmCoord blockCoord = matmulBlockScheduler.GetBlockCoord(loopIdx); GemmCoord actualBlockShape = matmulBlockScheduler.GetActualBlockShape(blockCoord); // Compute initial location in logical coordinates MatrixCoord offsetA{blockCoord.m() * L1TileShape::M, blockCoord.k() * L1TileShape::K}; MatrixCoord offsetB{blockCoord.k() * L1TileShape::K, blockCoord.n() * L1TileShape::N}; MatrixCoord offsetC{blockCoord.m() * L1TileShape::M, blockCoord.n() * L1TileShape::N}; int64_t gmOffsetA = params.layoutA.GetOffset(offsetA); int64_t gmOffsetB = params.layoutB.GetOffset(offsetB); int64_t gmOffsetC = params.layoutC.GetOffset(offsetC); // Compute block-scoped matrix multiply-add blockMmad(gmA[gmOffsetA], params.layoutA, gmB[gmOffsetB], params.layoutB, gmC[gmOffsetC], params.layoutC, actualBlockShape); } }

编译运行

  1. 参考快速上手,编译算子样例。当前版本无需传入额外编译选项,若代码中调用调试接口,编译器将自动使能。
bash scripts/build.sh 00_basic_matmul
  1. 切换到可执行文件的编译目录output/bin下,直接执行算子样例程序。
cd output/bin # 可执行文件名 |矩阵m轴|n轴|k轴|Device ID(可选) ./00_basic_matmul 256 512 1024 0
  • ⚠ 注意事项
    • 目前DumpTensor支持打印L0AL0BFixPipe上的数值。特别地,在Ascend 950PR/Ascend 950DT上,额外支持打印L1上的数值。

输出示例(仅为示例,实际输出可能因硬件和算子实现不同而有所差异)

./00_basic_matmul 256 512 1024 0 opType=device_gemm, DumpHead: AIC-0, CoreType=AIC, block dim=24, total_block_num=24, block_remain_len=1048408, block_initial_space=1048576, rsv=0, magic=5aa5bccd CoreLoops is 4 DumpTensor: desc=4, addr=c0013000, data_type=float16, position=GM [3.402344, -1.056641, 2.830078, 2.984375, 4.117188, -3.025391, -1.647461, 2.681641, -2.222656, 0.539551, -0.226074, 1.289062, -1.352539, 0.134033, 4.523438, 4.160156] ... #每个Cube核都会输出一次信息 Compare success.

【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass

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

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

2025届最火的十大降重复率网站解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要针对知网AIGC检测系统&#xff0c;降低AI生成内容的检出率&#xff0c;就得从文本特征方面…

作者头像 李华
网站建设 2026/6/26 3:56:28

ESP-WHO完全指南:10分钟快速上手人脸检测与识别框架

ESP-WHO完全指南&#xff1a;10分钟快速上手人脸检测与识别框架 【免费下载链接】esp-who Face detection and recognition framework 项目地址: https://gitcode.com/gh_mirrors/es/esp-who ESP-WHO是一款专为嵌入式设备设计的人脸检测与识别框架&#xff0c;提供从图像…

作者头像 李华
网站建设 2026/6/26 3:56:03

CANN驱动查询设备容器共享使能状态

dcmi_get_device_share_enable 【免费下载链接】driver 本项目是CANN提供的驱动模块&#xff0c;实现基础驱动和资源管理及调度等功能&#xff0c;使能昇腾芯片。 项目地址: https://gitcode.com/cann/driver 函数原型 int dcmi_get_device_share_enable(int card_id, …

作者头像 李华
网站建设 2026/6/26 3:58:14

CANN/driver DCMI网关获取接口

dcmi_get_device_gateway 【免费下载链接】driver 本项目是CANN提供的驱动模块&#xff0c;实现基础驱动和资源管理及调度等功能&#xff0c;使能昇腾芯片。 项目地址: https://gitcode.com/cann/driver 函数原型 int dcmi_get_device_gateway(int card_id, int device…

作者头像 李华
网站建设 2026/5/9 19:53:54

Firebase Auth实战:构建雅思练习Web应用的用户认证系统

1. 项目概述&#xff1a;一个基于Firebase的雅思练习Web应用 最近在GitHub上看到一个挺有意思的练手项目&#xff0c;叫“IELTS Practice - Firebase Authentication”。这项目本质上是一个前端练手Demo&#xff0c;核心目标是通过构建一个简单的雅思练习网站&#xff0c;来学…

作者头像 李华
网站建设 2026/5/9 19:53:50

LoRA训练助手环境部署:Ubuntu/CentOS下Ollama+Gradio免配置安装

LoRA训练助手环境部署&#xff1a;Ubuntu/CentOS下OllamaGradio免配置安装 1. 环境准备与系统要求 在开始部署LoRA训练助手之前&#xff0c;我们先来确认一下你的系统环境是否满足要求。这个工具基于Qwen3-32B大模型&#xff0c;通过Gradio提供友好的Web界面&#xff0c;使用…

作者头像 李华