在CATLASS样例工程进行设备侧打印
【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass
编译器提供设备侧打印函数cce::printf进行调试,用法与C标准库的printf一致。
支持
cube/vector/mix算子支持格式化字符串
支持打印常见整型与浮点数、指针、字符
- ⚠️注意该特性功能有限,请优先使用
AscendC调测API进行打印调试。
- ⚠️注意该特性功能有限,请优先使用
使用示例
下面以09_splitk_matmul为例,进行设备侧打印的使用说明。
插入打印代码
在想进行调试的代码段增加打印代码。
// include/catlass/gemm/kernel/splitk_matmul.hpp // ... CATLASS_DEVICE void operator()( AscendC::GlobalTensor<ElementOut> const &dst, AscendC::GlobalTensor<ElementAccumulator> const &src, uint64_t elementCount, uint32_t splitkFactor) { // The vec mte processes 256 bytes of data at a time. constexpr uint32_t ELE_PER_VECTOR_BLOCK = 256 / sizeof(ElementAccumulator); uint32_t aivNum = AscendC::GetBlockNum() * AscendC::GetSubBlockNum(); uint32_t aivId = AscendC::GetBlockIdx(); uint64_t taskPerAiv = (elementCount / aivNum + ELE_PER_VECTOR_BLOCK - 1) / ELE_PER_VECTOR_BLOCK * ELE_PER_VECTOR_BLOCK; if (taskPerAiv == 0) taskPerAiv = ELE_PER_VECTOR_BLOCK; uint32_t tileLen; if (taskPerAiv > COMPUTE_LENGTH) { tileLen = COMPUTE_LENGTH; } else { tileLen = taskPerAiv; } + cce::printf("tileLen:%d\n", tileLen); // ... }编译运行
- 基于快速上手,打开工具的编译开关
--enable_print, 使能设备侧打印特性编译算子样例。
bash scripts/build.sh --enable_print 09_splitk_matmul- 切换到可执行文件的编译目录
output/bin下,直接执行算子样例程序。
cd output/bin # 可执行文件名 |矩阵m轴|n轴|k轴|Device ID(可选) ./09_splitk_matmul 256 512 1024 0- ⚠ 注意事项
- 目前
设备侧打印仅支持打印GM、UB和SB(Scalar Buffer)上的数值。
- 目前
输出示例
输出结果
./09_splitk_matmul 256 512 1024 0 ----------------------------------------------------------------------------- ---------------------------------HiIPU Print--------------------------------- ----------------------------------------------------------------------------- ==> Logical Block 0 => Physical Block => Physical Block tileLen:2752 => Physical Block tileLen:2752 ==> Logical Block 1 => Physical Block => Physical Block tileLen:2752 => Physical Block tileLen:2752 ... # 此处省略 ==> Logical Block 23 => Physical Block => Physical Block tileLen:2752 => Physical Block tileLen:2752 Compare success.【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考