调试信息展示
ascend info devices
输入以下命令查询算子运行的设备信息,*所在行代表当前聚焦的设备。
(msdebug) ascend info devices Device Aic_Num Aiv_Num Aic_Mask Aiv_Mask * 1 1 2 0x10000 0x3
关键信息说明如下表:
字段 |
释义 |
---|---|
Device |
设备逻辑id。 |
Aic_Num |
使用的cube核数量。 |
Aiv_Num |
使用的vector核数量。 |
Aic_Mask |
实际使用的cube的mask码,用64 bit位表示,如果第 i 位bit为1,表示使用了cube i。 |
Aiv_Mask |
实际使用的vector的mask码,用64 bit位表示,如果第 i 位bit为1,表示使用了vector i。 |
ascend info cores
输入以下命令查询算子运行的核信息,*所在行代表当前聚焦的核。如下所示当前聚焦的核为aiv的“core 0”。
(msdebug) ascend info cores CoreId Type Device Stream Task Block PC stop reason 16 aic 1 3 0 0 0x12c0c00f1fc0 breakpoint 1.1 * 0 aiv 1 3 0 0 0x12c0c00f8fcc breakpoint 1.1 1 aiv 1 3 0 0 0x12c0c00f8d3c breakpoint 1.1
关键信息说明如下表:
字段 |
释义 |
---|---|
CoreId |
aiv或aic的核id,从0开始。 |
Type |
核类型,包括aic或aiv。 |
Device |
设备逻辑id。 |
Stream |
当前kernel函数下发的stream id,stream由一系列的task组成。 |
Task |
当前stream里的task id。task表示下发给task scheduler处理的任务。 |
Block |
表示核函数将会在几个核上执行。每个执行该核函数的核会被分配一个逻辑ID,即block_id。 |
PC |
当前核上的pc逻辑绝对地址。 |
Stop Reason |
表示程序执行停止原因,有breakpoint、step in、 step over和ctrl+c等。 |
ascend info tasks
输入以下命令查询算子运行的task信息,*所在行代表当前聚焦的task,包括device id、stream id、task id、Invocation即核函数名称。
(msdebug) ascend info tasks Device Stream Task Invocation * 1 3 0 matmul_leakyrelu_custom
ascend info stream
输入以下命令查询算子运行的stream信息,*所在行代表当前聚焦的stream,包括device id、stream id、Type即核类型(包括aic或aiv)。
(msdebug) ascend info stream Device Stream Type * 1 3 aiv
ascend info blocks
输入以下命令查询算子运行的block信息,*所在行代表当前聚焦的block,包括device id、stream id、task id、block id。
(msdebug) ascend info blocks Device Stream Task Block 1 3 0 0 * 1 3 0 0 1 3 0 0
输入以下命令显示所运行的block在当前中断处的代码。
(msdebug) ascend info blocks -d Current stop state of all blocks: [CoreId 16, Block 0] * thread #1, name = 'matmul_leakyrel', stop reason = breakpoint 1.1 frame #0: 0x0000000000008fc0 device_debugdata`_ZN7AscendC14KfcMsgGetStateEj_mix_aic(flag=0) at kfc_comm.h:188 185 return static_cast<KFC_Enum>((flag & 0xffff0000) >> KFC_MSG_BYTE_OFFSET); 186 } 187 __aicore__ inline uint32_t KfcMsgGetState(uint32_t flag) -> 188 { 189 return (flag & 0x00008000); 190 } 191 __aicore__ inline uint32_t KfcMsgMakeFlag(KFC_Enum funID, uint16_t instID) [* CoreId 0, Block 0] * thread #1, name = 'matmul_leakyrel', stop reason = breakpoint 1.1 frame #0: 0x000000000000ffcc device_debugdata`_ZN17MatmulLeakyKernelIDhDhffE7CopyOutEj_mix_aiv(this=0x0000000000167b60, count=0) at matmul_leakyrelu_kernel.cpp:116:1 113 (uint16_t)((tiling.N - tiling.baseN) * sizeof(cType) / DEFAULT_C0_SIZE)}; 114 DataCopy(cGlobal[startOffset], reluOutLocal, copyParam); 115 reluOutQueue_.FreeTensor(reluOutLocal); -> 116 } 117 118 template <typename aType, typename bType, typename cType, typename biasType> 119 __aicore__ inline void MatmulLeakyKernel<aType, bType, cType, biasType>::CalcOffset(int32_t blockIdx, [CoreId 1, Block 0] * thread #1, name = 'matmul_leakyrel', stop reason = breakpoint 1.1 frame #0: 0x000000000000fd3c device_debugdata`_ZN7AscendC13WaitEventImplEt_mix_aiv(flagId=1) at kernel_operator_sync_impl.h:142:5 139 140 __aicore__ inline void WaitEventImpl(uint16_t flagId) 141 { -> 142 wait_flag_dev(flagId); 143 } 144 145 __aicore__ inline void SetSyncBaseAddrImpl(uint64_t config)
父主题: 算子调试(msDebug)