Line data Source code
1 : /**
2 : * Copyright (c) 2026 Huawei Technologies Co., Ltd.
3 : * This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4 : * CANN Open Software License Agreement Version 2.0 (the "License").
5 : * Please refer to the License for details. You may not use this file except in compliance with the License.
6 : * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
7 : * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8 : * See LICENSE in the root of the software repository for the full text of the License.
9 : */
10 : #include "dump_stats_printf.h"
11 :
12 : namespace kfc_dump_stats {
13 47 : void KfcDumpPrintf::PrintKfcDumpInitParam(KfcDumpOpInitParam* kfcInitParam)
14 : {
15 47 : KfcDumpStreamInfo* streamInfo = &kfcInitParam->streamInfo;
16 47 : KfcDumpWorkSpace* workSpace = &kfcInitParam->kfcWorkSpace;
17 47 : KfcDumpOpConfig* opConfig = &kfcInitParam->config;
18 47 : IDE_LOGI(
19 : "[KfcDumpOpInitParam][KfcDumpStreamInfo] streamId[%u] sqId[%u] cqId[%u] logicCqid[%u] deviceId[%u]",
20 : streamInfo->streamIds, streamInfo->sqIds, streamInfo->cqIds, streamInfo->logicCqIds, streamInfo->deviceId);
21 47 : IDE_LOGI(
22 : "[KfcDumpOpInitParam][KfcDumpWorkSpace] msgQ[0x%lx] msgQSize[%lu] output[0x%lx] outputSize[%lu] "
23 : "workspace[0x%lx] workspaceSize[%lu] stackPhyBase32K[0x%lx] stackPhyBase32KSize[%lu]",
24 : workSpace->msgQ, workSpace->msgQSize, workSpace->output, workSpace->outputSize, workSpace->workspace,
25 : workSpace->workspaceSize, workSpace->stackPhyBase32k, workSpace->stackPhyBase32kSize);
26 47 : IDE_LOGI(
27 : "[KfcDumpOpInitParam][KfcDumpOpConfig] aiCoreNum[%lu] vectorCoreNum[%lu] "
28 : "ubSize[%lu] dumpStatPcAddr[0x%lx] statsType[%lu] chipType[%lu]",
29 : opConfig->aiCoreNum, opConfig->vectorCoreNum, opConfig->ubSize, opConfig->dumpStatPcAddr, opConfig->statsType,
30 : opConfig->chipType);
31 47 : }
32 :
33 36 : void KfcDumpPrintf::PrintKfcDumpStreamCtx(KfcDumpStreamCtx* streamCtx)
34 : {
35 36 : IDE_LOGI(
36 : "[KfcDumpStreamCtx] devId[%u] chipType[%u] sqHead[%u] sqTail[%u] sqDepth[%u] sqBaseAddr[%p]", streamCtx->devId,
37 : streamCtx->chipType, streamCtx->sqHead, streamCtx->sqTail, streamCtx->sqDepth, streamCtx->sqBaseAddr);
38 36 : }
39 :
40 30 : void KfcDumpPrintf::PrintSqeV1(uint8_t* sqeIn)
41 : {
42 30 : rtFftsPlusKernelSqe_t* sqe = (rtFftsPlusKernelSqe_t*)sqeIn;
43 30 : IDE_LOGI(
44 : "Header:type[%u] l1_lock[%u] l1_unlock[%u] ie[%u] pre_p[%u]", sqe->header.type, sqe->header.l1_lock,
45 : sqe->header.l1_unlock, sqe->header.ie, sqe->header.pre_p);
46 30 : IDE_LOGI(
47 : "post_p [%u] wr_cqe[%u] reserved[%u] block_dim[%u] rt_stream_id[%u] task_id[%u]", sqe->header.post_p,
48 : sqe->header.wr_cqe, sqe->header.reserved, sqe->header.block_dim, sqe->header.rt_stream_id, sqe->header.task_id);
49 30 : IDE_LOGI(
50 : "SQE:ffts_type[%u] wrr_ratio[%u] sqe_index[%u] kernel_credit[%u]", sqe->ffts_type, sqe->wrr_ratio,
51 : sqe->sqe_index, sqe->kernel_credit);
52 30 : IDE_LOGI(
53 : "stack_phy_base_high[0x%x] res4[%u] pmg[%u] ns[%u]", sqe->stack_phy_base_high, sqe->res4, sqe->pmg, sqe->ns);
54 30 : IDE_LOGI("part_id[%u] res5[%u] qos[%u] res6[%u]", sqe->part_id, sqe->res5, sqe->qos, sqe->res6);
55 30 : IDE_LOGI(
56 : "pc_addr_low[0x%x] pc_addr_high[0x%x] res7[%u] param_addr_low[0x%x] param_addr_high[0x%x]", sqe->pc_addr_low,
57 : sqe->pc_addr_high, sqe->res7, sqe->param_addr_low, sqe->param_addr_high);
58 30 : }
59 :
60 2 : void KfcDumpPrintf::PrintSqeV2(uint8_t* sqeIn)
61 : {
62 2 : auto sqe = (hwts_kernel_sqe_t*)sqeIn;
63 2 : IDE_LOGI(
64 : "type[%u] graph_lock[%u] graph_unlock[%u] ie[%u] pre_p[%u]", sqe->type, sqe->graph_lock, sqe->graph_unlock,
65 : sqe->ie, sqe->pre_p);
66 2 : IDE_LOGI(
67 : "post_p[%u] wr_cqe[%u] rd_cond[%u] reserved[%u] l2_lock[%u]", sqe->post_p, sqe->wr_cqe, sqe->rd_cond,
68 : sqe->reserved, sqe->l2_lock);
69 2 : IDE_LOGI(
70 : "l2_unlock[%u] block_dim[%u] rt_stream_id[%u] task_id[%u] pc_addr_low[0x%x] pc_addr_high[0x%x]", sqe->l2_unlock,
71 : sqe->block_dim, sqe->rt_stream_id, sqe->task_id, sqe->pc_addr_low, sqe->pc_addr_high);
72 2 : IDE_LOGI(
73 : "kernel_credit[%u] res0[%u] prefetch_cnt[%u] param_addr_low[0x%x] param_addr_high[0x%x]", sqe->kernel_credit,
74 : sqe->res0, sqe->prefetch_cnt, sqe->param_addr_low, sqe->param_addr_high);
75 2 : IDE_LOGI(
76 : "l2_in_main[%u] res1[%u] literal_addr_low[0x%x] literal_addr_high[0x%x] res2[%u]", sqe->l2_in_main, sqe->res1,
77 : sqe->literal_addr_low, sqe->literal_addr_high, sqe->res2);
78 2 : IDE_LOGI(
79 : "literal_base_ub[%u] res3[%u] sta_mode[%u] literal_buff_len[%u] res4[%u]", sqe->literal_base_ub, sqe->res3,
80 : sqe->sta_mode, sqe->literal_buff_len, sqe->res4);
81 2 : IDE_LOGI(
82 : "p2_l2ctrl_low[0x%x] p_l2ctrl_high[0x%x] res5[%u] res6[%u] res7[%u]", sqe->p_l2ctrl_low, sqe->p_l2ctrl_high,
83 : sqe->res5, sqe->res6, sqe->res7);
84 2 : }
85 :
86 3 : void KfcDumpPrintf::PrintSqeCloudV4(uint8_t* sqeIn)
87 : {
88 3 : rtDavidStarsAicAivSqeCloudV4* sqe = reinterpret_cast<rtDavidStarsAicAivSqeCloudV4*>(sqeIn);
89 3 : IDE_LOGI(
90 : "Header: type[%u] lock[%u] unlock[%u] ie[%u] preP[%u] postP[%u] wrCqe[%u]", sqe->header.type, sqe->header.lock,
91 : sqe->header.unlock, sqe->header.ie, sqe->header.preP, sqe->header.postP, sqe->header.wrCqe);
92 3 : IDE_LOGI(
93 : "ptrMode[%u] rttMode[%u] headUpdate[%u] blockDim[%u] rtStreamId[%u] taskId[%u]", sqe->header.ptrMode,
94 : sqe->header.rttMode, sqe->header.headUpdate, sqe->header.blockDim, sqe->header.rtStreamId, sqe->header.taskId);
95 3 : IDE_LOGI(
96 : "SQE: groupDim[%u] groupBlockDim[%u] featureFlag[%u] kernelCredit[%u]", sqe->groupDim, sqe->groupBlockDim,
97 : sqe->featureFlag, sqe->kernelCredit);
98 3 : IDE_LOGI("dieFriendly[%u] mix[%u] loose[%u] sqeLength[%u]", sqe->dieFriendly, sqe->mix, sqe->loose, sqe->sqeLength);
99 3 : IDE_LOGI(
100 : "stackPhyBaseLow[%x] stackPhyBaseHigh[%x] aicPmg[%u] aicNs[%u] aicPartId[%u]", sqe->stackPhyBaseLow,
101 : sqe->stackPhyBaseHigh, sqe->aicPmg, sqe->aicNs, sqe->aicPartId);
102 3 : IDE_LOGI(
103 : "piMix[%u] aicQos[%u] aicWrrRd[%u] aicWrrWr[%u] aicIcachePrefetchCnt[%u] aivIcachePrefetchCnt[%u]", sqe->piMix,
104 : sqe->aicQos, sqe->aicWrrRd, sqe->aicWrrWr, sqe->aicIcachePrefetchCnt, sqe->aivIcachePrefetchCnt);
105 3 : IDE_LOGI(
106 : "aivPmg[%u] aivNs[%u] aivPartId[%u] aivQos[%u] aivWrrRd[%u] aivWrrWr[%u] schem[%u] ratio[%u]", sqe->tail.aivPmg,
107 : sqe->tail.aivNs, sqe->tail.aivPartId, sqe->tail.aivQos, sqe->tail.aivWrrRd, sqe->tail.aivWrrWr, sqe->tail.schem,
108 : sqe->tail.ratio);
109 3 : IDE_LOGI(
110 : "aicStartPcLow[%u] aivStartPcLow[%u] aicStartPcHigh[%u] aivStartPcHigh[%u] aivSimtDcuSmSize[%u]",
111 : sqe->tail.aicStartPcLow, sqe->tail.aivStartPcLow, sqe->tail.aicStartPcHigh, sqe->tail.aivStartPcHigh,
112 : sqe->tail.aivSimtDcuSmSize);
113 3 : IDE_LOGI(
114 : "aicTaskParamPtrLow[%x] aicTaskParamPtrHigh[%x] aivTaskParamPtrLow[%x] aivTaskParamPtrHigh[%x]",
115 : sqe->tail.aicTaskParamPtrLow, sqe->tail.aicTaskParamPtrHigh, sqe->tail.aivTaskParamPtrLow,
116 : sqe->tail.aivTaskParamPtrHigh);
117 3 : }
118 :
119 1 : void KfcDumpPrintf::PrintSqeCloudV5(uint8_t* sqeIn)
120 : {
121 1 : rtDavidStarsAicAivSqeCloudV5* sqe = reinterpret_cast<rtDavidStarsAicAivSqeCloudV5*>(sqeIn);
122 1 : IDE_LOGI(
123 : "Header: type[%u] lock[%u] unlock[%u] ie[%u] preP[%u] postP[%u] wrCqe[%u]", sqe->header.type, sqe->header.lock,
124 : sqe->header.unlock, sqe->header.ie, sqe->header.preP, sqe->header.postP, sqe->header.wrCqe);
125 1 : IDE_LOGI(
126 : "ptrMode[%u] rttMode[%u] headUpdate[%u] blockDim[%u] rtStreamId[%u] taskId[%u]", sqe->header.ptrMode,
127 : sqe->header.rttMode, sqe->header.headUpdate, sqe->header.blockDim, sqe->header.rtStreamId, sqe->header.taskId);
128 1 : IDE_LOGI(
129 : "SQE: groupDim[%u] groupBlockdim[%u] featureFlag[%u] kernelCredit[%u] "
130 : "dieFriendly[%u] mix[%u] loose[%u] ost[%u] sqeLength[%u]",
131 : sqe->groupDim, sqe->groupBlockdim, sqe->featureFlag, sqe->kernelCredit, sqe->dieFriendly, sqe->mix, sqe->loose,
132 : sqe->ost, sqe->sqeLength);
133 1 : IDE_LOGI(
134 : "aicMtePortArOstd[%u] aicMtePortAwOstd[%u] aivMtePortArOstd[%u] aivMtePortAwOstd[%u]", sqe->aicMtePortArOstd,
135 : sqe->aicMtePortAwOstd, sqe->aivMtePortArOstd, sqe->aivMtePortAwOstd);
136 1 : IDE_LOGI(
137 : "aivDcachePrefetchCnt[%u] aicDcachePrefetchCnt[%u] aivIcachePrefetchCnt[%u] "
138 : "aicIcachePrefetchCnt[%u]",
139 : sqe->aivDcachePrefetchCnt, sqe->aicDcachePrefetchCnt, sqe->aivIcachePrefetchCnt, sqe->aicIcachePrefetchCnt);
140 1 : IDE_LOGI(
141 : "aicPmg[%u] aicNs[%u] aicPartId[%u] piMix[%u] aicQos[%u] aicWrrRd[%u] aicWrrWr[%u] "
142 : "getNxtTaskMode[%u] aicPreAllocateDisable[%u] aivPreAllocateDisable[%u]",
143 : sqe->aicPmg, sqe->aicNs, sqe->aicPartId, sqe->piMix, sqe->aicQos, sqe->aicWrrRd, sqe->aicWrrWr,
144 : sqe->getNxtTaskMode, sqe->aicPreAllocateDisable, sqe->aivPreAllocateDisable);
145 1 : IDE_LOGI(
146 : "aivPmg[%u] aivNs[%u] aivPartId[%u] aivQos[%u] aivWrrRd[%u] aivWrrWr[%u] schem[%u] ratio[%u]", sqe->tail.aivPmg,
147 : sqe->tail.aivNs, sqe->tail.aivPartId, sqe->tail.aivQos, sqe->tail.aivWrrRd, sqe->tail.aivWrrWr, sqe->tail.schem,
148 : sqe->tail.ratio);
149 1 : IDE_LOGI(
150 : "aicStartPcLow[0x%x] aivStartPcLow[0x%x] aicStartPcHigh[0x%x] aivStartPcHigh[0x%x] "
151 : "aivSimtDcuSmSize[%u]",
152 : sqe->tail.aicStartPcLow, sqe->tail.aivStartPcLow, sqe->tail.aicStartPcHigh, sqe->tail.aivStartPcHigh,
153 : sqe->tail.aivSimtDcuSmSize);
154 1 : IDE_LOGI(
155 : "aicTaskParamPtrLow[0x%x] aicTaskParamPtrHigh[0x%x] aivTaskParamPtrLow[0x%x] aivTaskParamPtrHigh[0x%x]",
156 : sqe->tail.aicTaskParamPtrLow, sqe->tail.aicTaskParamPtrHigh, sqe->tail.aivTaskParamPtrLow,
157 : sqe->tail.aivTaskParamPtrHigh);
158 1 : }
159 :
160 871 : void KfcDumpPrintf::PrintMsg(KfcDumpStatsMsg& msg)
161 : {
162 871 : IDE_LOGI(
163 : "[KfcDumpStatsMsg] msgType[%u] dataType[%u] dataCount[%lu] dataAddr[0x%lx] dumpStatClass[%lu] "
164 : "outputAddr[0x%lx] outputAddrSize[%lu] valid[%u] result[%u]",
165 : msg.msgType, msg.dataType, msg.dataCount, msg.dataAddr, msg.dumpStatClass, msg.outputAddr, msg.outputAddrSize,
166 : msg.valid, msg.result);
167 871 : }
168 :
169 32 : void KfcDumpPrintf::PrintDumpContext(KfcDumpContext* dumpContext)
170 : {
171 32 : IDE_LOGI(
172 : "[KfcDumpContext] msgQ[0x%lx] workspace[0x%lx] workspaceSize[%lu] workspaceSizeAddr[0x%lx] "
173 : "aiCoreNum[%lu] aiCoreNumAddr[0x%lx] ubSize[%lu] ubSizeAddr[0x%lx] syncSpace[0x%lx]",
174 : dumpContext->msgQ, dumpContext->workspace, dumpContext->workspaceSize, dumpContext->workspaceSizeAddr,
175 : dumpContext->aiCoreNum, dumpContext->aiCoreNumAddr, dumpContext->ubSize, dumpContext->ubSizeAddr,
176 : dumpContext->syncSpace);
177 32 : }
178 : } // namespace kfc_dump_stats
|