Line data Source code
1 : /**
2 : * Copyright (c) 2025 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 :
11 : #include "op_unfold_cache.h"
12 :
13 : #include "aicpu_hccl_sqcq.h"
14 : #include "aicpu_hccl_sqcqv1.h"
15 : #include "aicpu_hccl_sqcqv2.h"
16 : #include "config_plf_log.h"
17 : #include "log.h"
18 :
19 : namespace hccl {
20 :
21 : constexpr size_t OP_UNFOLD_CACHE_CAPACITY = 500; // Cache entry数目的上限
22 :
23 11 : OpUnfoldCache::OpUnfoldCache() {
24 11 : HCCL_INFO("[OpUnfoldCache][OpUnfoldCache] create a cache at 0x%016llx for operator unfolding", this);
25 11 : }
26 :
27 11 : OpUnfoldCache::~OpUnfoldCache() {
28 11 : HCCL_INFO("[OpUnfoldCache][~OpUnfoldCache] release dynamically allocated entries from the cache at 0x%016llx", this);
29 :
30 11 : for (CacheHashMap::const_iterator constIter = cacheHashMap_.cbegin(); constIter != cacheHashMap_.cend(); ++constIter) {
31 0 : OpUnfoldCacheEntry *entryPtr = constIter->second;
32 :
33 : // 不能使用CHK_PTR_NULL,因为会return HcclResult
34 0 : if (UNLIKELY(entryPtr == nullptr)) {
35 0 : HCCL_ERROR("[OpUnfoldCache][OpUnfoldCache] entryPtr is nullptr");
36 0 : continue;
37 : }
38 :
39 : // 释放当前cache entry
40 0 : delete entryPtr;
41 0 : entryPtr = nullptr;
42 : }
43 11 : }
44 :
45 0 : bool OpUnfoldCache::IsCacheFull() const {
46 0 : const size_t curSize = cacheHashMap_.size();
47 0 : if (curSize >= OP_UNFOLD_CACHE_CAPACITY) {
48 0 : HCCL_INFO("[OpUnfoldCache][IsCacheFull] cacheHashMap_.size[%u] >= capacity[%u]", cacheHashMap_.size(), OP_UNFOLD_CACHE_CAPACITY);
49 0 : return true;
50 : }
51 0 : return false;
52 : }
53 :
54 0 : HcclResult OpUnfoldCache::FindEntry(const OpUnfoldKey& key, OpUnfoldCacheEntry **entryPtrPtr) const {
55 : // 检查入参
56 0 : CHK_PTRPTR_NULL(entryPtrPtr); // 检查指针, entryPtrPtr不应该是null, 但*entryPtrPtr应该是null
57 :
58 0 : CacheHashMap::const_iterator constIter = cacheHashMap_.find(key);
59 0 : if (constIter != cacheHashMap_.cend()) {
60 : // 检查cache entry pointer
61 0 : *entryPtrPtr = constIter->second;
62 0 : CHK_PTR_NULL(*entryPtrPtr);
63 :
64 0 : HCCL_INFO("[OpUnfoldCache][FindEntry] find cache entry for key[%s]", key.GetKeyString().c_str());
65 : } else {
66 0 : *entryPtrPtr = nullptr;
67 :
68 0 : HCCL_INFO("[OpUnfoldCache][FindEntry] not find cache entry for key[%s]", key.GetKeyString().c_str());
69 : }
70 :
71 0 : return HCCL_SUCCESS;
72 : }
73 :
74 0 : HcclResult OpUnfoldCache::AddEntry(const OpUnfoldKey& key, const std::vector<OpUnfoldMemRange>& userInputMemRanges, const std::vector<OpUnfoldMemRange>& userOutputMemRanges, OpUnfoldCacheEntry **entryPtrPtr) {
75 : // 检查入参
76 0 : CHK_PTRPTR_NULL(entryPtrPtr); // 检查指针, entryPtrPtr不应该是null, 但*entryPtrPtr应该是null
77 :
78 0 : CacheHashMap::iterator iter = cacheHashMap_.find(key);
79 :
80 : // key不应该存在
81 0 : CHK_PRT_RET(iter != cacheHashMap_.end(), HCCL_ERROR("[OpUnfoldCache][AddEntry] cache entry for key[%s] exists at 0x%016llx", key.GetKeyString().c_str(), this), HCCL_E_INTERNAL);
82 :
83 : // 创建一个新的cache entry
84 0 : OpUnfoldCacheEntry *newCacheEntryPtr = (new (std::nothrow) OpUnfoldCacheEntry(userInputMemRanges, userOutputMemRanges));
85 0 : CHK_PTR_NULL(newCacheEntryPtr);
86 :
87 : // 插入新的cache entry
88 0 : std::pair<CacheHashMap::iterator, bool> insertResult = cacheHashMap_.emplace(key, newCacheEntryPtr);
89 0 : if (UNLIKELY(!(insertResult.second))) {
90 0 : HCCL_ERROR("[OpUnfoldCache][AddEntry] fail to insert a new cache entry for key[%s]", key.GetKeyString().c_str());
91 :
92 0 : delete newCacheEntryPtr;
93 0 : newCacheEntryPtr = nullptr;
94 :
95 0 : return HCCL_E_INTERNAL;
96 : } else {
97 0 : HCCL_INFO("[OpUnfoldCache][AddEntry] add a new cache entry for key[%s] cacheHashMap_.size[%u]", key.GetKeyString().c_str(), cacheHashMap_.size());
98 :
99 0 : iter = insertResult.first;
100 0 : *entryPtrPtr = iter->second;
101 0 : CHK_PTR_NULL(*entryPtrPtr);
102 : }
103 :
104 0 : return HCCL_SUCCESS;
105 : }
106 :
107 0 : HcclResult OpUnfoldCache::ClearEntry(const OpUnfoldKey& key) {
108 0 : CacheHashMap::iterator iter = cacheHashMap_.find(key);
109 0 : if (iter != cacheHashMap_.end()) { // cache entry存在
110 0 : HCCL_INFO("[OpUnfoldCache][ClearEntry] clear cache entry for key[%s]", key.GetKeyString().c_str());
111 :
112 : // 释放cache entry对应的内存
113 0 : OpUnfoldCacheEntry *entryPtr = iter->second;
114 0 : CHK_PTR_NULL(entryPtr);
115 0 : delete entryPtr;
116 0 : entryPtr = nullptr;
117 0 : iter->second = nullptr;
118 :
119 : // 清理cache entry
120 0 : cacheHashMap_.erase(iter);
121 : } else { // cache entry不存在
122 0 : HCCL_INFO("[OpUnfoldCache][ClearEntry] not find cache entry for key [%s]", key.GetKeyString().c_str());
123 : }
124 :
125 0 : return HCCL_SUCCESS;
126 : }
127 :
128 0 : HcclResult OpUnfoldCache::ClearEntryForAlltoallv() {
129 : // 清理所有与alltoallv类算子相关的cache entry
130 0 : for (CacheHashMap::iterator iter = cacheHashMap_.begin(); iter != cacheHashMap_.end();) {
131 : // 先备份iter的下一个位置 (使用std::next避免修改iter本身)
132 0 : CacheHashMap::iterator nextIter = std::next(iter);
133 :
134 : // 清理alltoallv类算子的cache entry
135 0 : const HcclCMDType opType = iter->first.opType;
136 0 : if (opType == HcclCMDType::HCCL_CMD_ALLTOALLV || opType == HcclCMDType::HCCL_CMD_ALLTOALLVC) {
137 0 : CHK_RET(ClearEntry(iter->first));
138 : }
139 :
140 : // 注意: ClearEntry后不能再访问iter (已经从cacheHashMap_中被erase了)
141 :
142 : // 推进iter到下一个位置
143 0 : iter = nextIter;
144 : }
145 :
146 0 : return HCCL_SUCCESS;
147 : }
148 :
149 12 : HcclResult OpUnfoldCache::DumpSqeContent(const uint8_t *sqePtr, const uint8_t sqeType) {
150 : // 根据sqe type打印debug信息
151 : // 设置HCCL_DEBUG_CONFIG="task", 或者设置ASCEND_GLOBAL_LOG_LEVEL=0
152 12 : if ((UNLIKELY(GetExternalInputDebugConfig() & PLF_TASK)) || UNLIKELY(HcclCheckLogLevel(HCCL_LOG_DEBUG))) {
153 12 : CHK_PTR_NULL(sqePtr);
154 :
155 12 : switch(sqeType) {
156 0 : case SqeType::NOTIFY_SQE: {
157 0 : const rtStarsNotifySqeV1_t *notifySqePtr = reinterpret_cast<const rtStarsNotifySqeV1_t *>(sqePtr);
158 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsNotifySqeV1_t sqeType[%u]", sqeType);
159 0 : CHK_RET(DumpSqeHeader(notifySqePtr->header));
160 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] notify_id[%u] res2[%u] res3[%u] kernel_credit[%u] res4[%u] timeout[%u]",
161 : notifySqePtr->notify_id, notifySqePtr->res2, notifySqePtr->res3, notifySqePtr->kernel_credit, notifySqePtr->res4, notifySqePtr->timeout);
162 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res5[0][%u] res5[1][%u] res5[2][%u] res5[3][%u] res5[4][%u] res5[5][%u]",
163 : notifySqePtr->res5[0], notifySqePtr->res5[1], notifySqePtr->res5[2], notifySqePtr->res5[3], notifySqePtr->res5[4], notifySqePtr->res5[5]);
164 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res5[6][%u] res5[7][%u] res5[8][%u] res5[9][%u] res5[10][%u]",
165 : notifySqePtr->res5[6], notifySqePtr->res5[7], notifySqePtr->res5[8], notifySqePtr->res5[9], notifySqePtr->res5[10]);
166 0 : break;
167 : }
168 0 : case SqeType::WRITE_VALUE_SQE:
169 : case SqeType::RDMA_DB_SEND_SQE: {
170 0 : const rtStarsWriteValueSqe_t *writeValueSqePtr = reinterpret_cast<const rtStarsWriteValueSqe_t *>(sqePtr);
171 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsWriteValueSqe_t sqeType[%u]", sqeType);
172 0 : CHK_RET(DumpSqeHeader(writeValueSqePtr->header));
173 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res3[%u] res4[%u] kernel_credit[%u] res5[%u] write_addr_low[0x%08x] write_addr_high[0x%08x]",
174 : writeValueSqePtr->res3, writeValueSqePtr->res4, writeValueSqePtr->kernel_credit, writeValueSqePtr->res5, writeValueSqePtr->write_addr_low, writeValueSqePtr->write_addr_high);
175 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res6[%u] awsize[%u] snoop[%u] awcache[%u] awprot[%u] va[%u] res7[%u]",
176 : writeValueSqePtr->res6, writeValueSqePtr->awsize, writeValueSqePtr->snoop, writeValueSqePtr->awcache, writeValueSqePtr->awprot, writeValueSqePtr->va, writeValueSqePtr->res7);
177 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] sub_type[%u] write_value_part0[%u] write_value_part1[%u] rdmaWrLenth[%u] rdmaType[%u]",
178 : writeValueSqePtr->sub_type, writeValueSqePtr->write_value_part0, writeValueSqePtr->write_value_part1, writeValueSqePtr->rdmaWrLenth, writeValueSqePtr->rdmaType);
179 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] write_value_part4[%u] write_value_part5[%u] write_value_part6[%u] write_value_part7[%u]",
180 : writeValueSqePtr->write_value_part4, writeValueSqePtr->write_value_part5, writeValueSqePtr->write_value_part6, writeValueSqePtr->write_value_part7);
181 0 : break;
182 : }
183 0 : case SqeType::EVENT_SQE: {
184 0 : const rtStarsEventSqe_t *eventSqePtr = reinterpret_cast<const rtStarsEventSqe_t *>(sqePtr);
185 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsEventSqe_t sqeType[%u]", sqeType);
186 0 : CHK_RET(DumpSqeHeader(eventSqePtr->header));
187 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] eventId[%u] res2[%u] res3[%u] kernel_credit[%u] res4[%u] exe_result[%u] timeout[%u]",
188 : eventSqePtr->eventId, eventSqePtr->res2, eventSqePtr->res3, eventSqePtr->kernel_credit, eventSqePtr->res4, eventSqePtr->exe_result, eventSqePtr->timeout);
189 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res5[0][%u] res5[1][%u] res5[2][%u] res5[3][%u] res5[4][%u]",
190 : eventSqePtr->res5[0], eventSqePtr->res5[1], eventSqePtr->res5[2], eventSqePtr->res5[3], eventSqePtr->res5[4]);
191 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res5[5][%u] res5[6][%u] res5[7][%u] res5[8][%u] res5[9][%u]",
192 : eventSqePtr->res5[5], eventSqePtr->res5[6], eventSqePtr->res5[7], eventSqePtr->res5[8], eventSqePtr->res5[9]);
193 0 : break;
194 : }
195 0 : case SqeType::MEMCPY_ASYNC_SQE: {
196 0 : const rtStarsMemcpyAsyncSqe_t *memcpyAsyncSqePtr = reinterpret_cast<const rtStarsMemcpyAsyncSqe_t *>(sqePtr);
197 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsMemcpyAsyncSqe_t sqeType[%u]", sqeType);
198 0 : CHK_RET(DumpSqeHeader(memcpyAsyncSqePtr->header));
199 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res3[%u] res4[%u] kernel_credit[%u] ptr_mode[%u] res5[%u] opcode[%u] ie2[%u]",
200 : memcpyAsyncSqePtr->res3, memcpyAsyncSqePtr->res4, memcpyAsyncSqePtr->kernel_credit, memcpyAsyncSqePtr->ptr_mode, memcpyAsyncSqePtr->res5, memcpyAsyncSqePtr->opcode, memcpyAsyncSqePtr->ie2);
201 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] sssv[%u] dssv[%u] sns[%u] dns[%u] qos[%u] sro[%u] dro[%u] partid[%u] mpam[%u]",
202 : memcpyAsyncSqePtr->sssv, memcpyAsyncSqePtr->dssv, memcpyAsyncSqePtr->sns, memcpyAsyncSqePtr->dns, memcpyAsyncSqePtr->qos, memcpyAsyncSqePtr->sro, memcpyAsyncSqePtr->dro, memcpyAsyncSqePtr->partid, memcpyAsyncSqePtr->mpam);
203 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res6[%u] src_streamid[%u] src_sub_streamid[%u] dst_streamid[%u] dst_sub_streamid[%u]",
204 : memcpyAsyncSqePtr->res6, memcpyAsyncSqePtr->src_streamid, memcpyAsyncSqePtr->src_sub_streamid, memcpyAsyncSqePtr->dst_streamid, memcpyAsyncSqePtr->dst_sub_streamid);
205 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] length[%u] src_addr_low[0x%08x] src_addr_high[0x%08x] dst_addr_low[0x%08x] dst_addr_high[0x%08x]",
206 : memcpyAsyncSqePtr->length, memcpyAsyncSqePtr->src_addr_low, memcpyAsyncSqePtr->src_addr_high, memcpyAsyncSqePtr->dst_addr_low, memcpyAsyncSqePtr->dst_addr_high);
207 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] linkType[%u] resvered[0][%u] resvered[1][%u] resvered[2][%u] reslast[0][%u] reslast[1][%u] reslast[2][%u]",
208 : memcpyAsyncSqePtr->linkType, memcpyAsyncSqePtr->resvered[0], memcpyAsyncSqePtr->resvered[1], memcpyAsyncSqePtr->resvered[2], memcpyAsyncSqePtr->reslast[0], memcpyAsyncSqePtr->reslast[1], memcpyAsyncSqePtr->reslast[2]);
209 0 : break;
210 : }
211 0 : case SqeType::CCORE_WAIT_START_SQE: {
212 0 : const rtStarsCcoreWaitStartSqe_t *ccoreWaitStartSqePtr = reinterpret_cast<const rtStarsCcoreWaitStartSqe_t *>(sqePtr);
213 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsCcoreWaitStartSqe_t sqeType[%u]", sqeType);
214 0 : CHK_RET(DumpSqeHeader(ccoreWaitStartSqePtr->sqeHeader));
215 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] reserved0[%u] reserved1[%u] kernel_credit[%u] reserved2[%u] csc[%u]",
216 : ccoreWaitStartSqePtr->reserved0, ccoreWaitStartSqePtr->reserved1, ccoreWaitStartSqePtr->kernel_credit, ccoreWaitStartSqePtr->reserved2, ccoreWaitStartSqePtr->csc);
217 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] ldrImm1: opCode[%u] rd[%u] reserved[%u] func3[%u] immdAddrHigh[0x%08x] immdAddrLow[0x%08x]",
218 : ccoreWaitStartSqePtr->ldrImm1.opCode, ccoreWaitStartSqePtr->ldrImm1.rd, ccoreWaitStartSqePtr->ldrImm1.reserved, ccoreWaitStartSqePtr->ldrImm1.func3, ccoreWaitStartSqePtr->ldrImm1.immdAddrHigh, ccoreWaitStartSqePtr->ldrImm1.immdAddrLow);
219 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] ldrImm2: opCode[%u] rd[%u] reserved[%u] func3[%u] immdAddrHigh[0x%08x] immdAddrLow[0x%08x]",
220 : ccoreWaitStartSqePtr->ldrImm2.opCode, ccoreWaitStartSqePtr->ldrImm2.rd, ccoreWaitStartSqePtr->ldrImm2.reserved, ccoreWaitStartSqePtr->ldrImm2.func3, ccoreWaitStartSqePtr->ldrImm2.immdAddrHigh, ccoreWaitStartSqePtr->ldrImm2.immdAddrLow);
221 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] beq: opCode[%u] jumpInstrOffset[%u] rsvd[%u] func3[%u] rs1[%u] rsvd1[%u] rs2[%u] rsvd2[%u] rsvd3[%u]",
222 : ccoreWaitStartSqePtr->beq.opCode, ccoreWaitStartSqePtr->beq.jumpInstrOffset, ccoreWaitStartSqePtr->beq.rsvd, ccoreWaitStartSqePtr->beq.func3, ccoreWaitStartSqePtr->beq.rs1, ccoreWaitStartSqePtr->beq.rsvd1, ccoreWaitStartSqePtr->beq.rs2, ccoreWaitStartSqePtr->beq.rsvd2, ccoreWaitStartSqePtr->beq.rsvd3);
223 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] clear.llwi1: opCode[%u] rd[%u] reserved0[%u] func3[%u] immdHigh[%u] immdLow[%u]",
224 : ccoreWaitStartSqePtr->clear.llwi1.opCode, ccoreWaitStartSqePtr->clear.llwi1.rd, ccoreWaitStartSqePtr->clear.llwi1.reserved0, ccoreWaitStartSqePtr->clear.llwi1.func3, ccoreWaitStartSqePtr->clear.llwi1.immdHigh, ccoreWaitStartSqePtr->clear.llwi1.immdLow);
225 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] clear.lhwi1: opCode[%u] rd[%u] reserved0[%u] func3[%u] reserved1[%u] immd[%u]",
226 : ccoreWaitStartSqePtr->clear.lhwi1.opCode, ccoreWaitStartSqePtr->clear.lhwi1.rd, ccoreWaitStartSqePtr->clear.lhwi1.reserved0, ccoreWaitStartSqePtr->clear.lhwi1.func3, ccoreWaitStartSqePtr->clear.lhwi1.reserved1, ccoreWaitStartSqePtr->clear.lhwi1.immd);
227 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] clear.sw: opCode[%u] immdLow[%u] func3[%u] rs1[%u] reserved1[%u] rs2[%u] reserved2[%u] immdHigh[%u]",
228 : ccoreWaitStartSqePtr->clear.sw.opCode, ccoreWaitStartSqePtr->clear.sw.immdLow, ccoreWaitStartSqePtr->clear.sw.func3, ccoreWaitStartSqePtr->clear.sw.rs1, ccoreWaitStartSqePtr->clear.sw.reserved1, ccoreWaitStartSqePtr->clear.sw.rs2, ccoreWaitStartSqePtr->clear.sw.reserved2, ccoreWaitStartSqePtr->clear.sw.immdHigh);
229 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] clear.nop[0]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] reserved1[%u] immd[%u]",
230 : ccoreWaitStartSqePtr->clear.nop[0].opCode, ccoreWaitStartSqePtr->clear.nop[0].rd, ccoreWaitStartSqePtr->clear.nop[0].reserved0, ccoreWaitStartSqePtr->clear.nop[0].func3, ccoreWaitStartSqePtr->clear.nop[0].rs1, ccoreWaitStartSqePtr->clear.nop[0].reserved1, ccoreWaitStartSqePtr->clear.nop[0].immd);
231 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] clear.nop[1]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] reserved1[%u] immd[%u]",
232 : ccoreWaitStartSqePtr->clear.nop[1].opCode, ccoreWaitStartSqePtr->clear.nop[1].rd, ccoreWaitStartSqePtr->clear.nop[1].reserved0, ccoreWaitStartSqePtr->clear.nop[1].func3, ccoreWaitStartSqePtr->clear.nop[1].rs1, ccoreWaitStartSqePtr->clear.nop[1].reserved1, ccoreWaitStartSqePtr->clear.nop[1].immd);
233 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] clear.nop[2]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] reserved1[%u] immd[%u]",
234 : ccoreWaitStartSqePtr->clear.nop[2].opCode, ccoreWaitStartSqePtr->clear.nop[2].rd, ccoreWaitStartSqePtr->clear.nop[2].reserved0, ccoreWaitStartSqePtr->clear.nop[2].func3, ccoreWaitStartSqePtr->clear.nop[2].rs1, ccoreWaitStartSqePtr->clear.nop[2].reserved1, ccoreWaitStartSqePtr->clear.nop[2].immd);
235 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] nop[0]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] reserved1[%u] immd[%u]",
236 : ccoreWaitStartSqePtr->nop[0].opCode, ccoreWaitStartSqePtr->nop[0].rd, ccoreWaitStartSqePtr->nop[0].reserved0, ccoreWaitStartSqePtr->nop[0].func3, ccoreWaitStartSqePtr->nop[0].rs1, ccoreWaitStartSqePtr->nop[0].reserved1, ccoreWaitStartSqePtr->nop[0].immd);
237 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] nop[1]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] reserved1[%u] immd[%u]",
238 : ccoreWaitStartSqePtr->nop[1].opCode, ccoreWaitStartSqePtr->nop[1].rd, ccoreWaitStartSqePtr->nop[1].reserved0, ccoreWaitStartSqePtr->nop[1].func3, ccoreWaitStartSqePtr->nop[1].rs1, ccoreWaitStartSqePtr->nop[1].reserved1, ccoreWaitStartSqePtr->nop[1].immd);
239 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] nop[2]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] reserved1[%u] immd[%u]",
240 : ccoreWaitStartSqePtr->nop[2].opCode, ccoreWaitStartSqePtr->nop[2].rd, ccoreWaitStartSqePtr->nop[2].reserved0, ccoreWaitStartSqePtr->nop[2].func3, ccoreWaitStartSqePtr->nop[2].rs1, ccoreWaitStartSqePtr->nop[2].reserved1, ccoreWaitStartSqePtr->nop[2].immd);
241 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] nop[3]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] reserved1[%u] immd[%u]",
242 : ccoreWaitStartSqePtr->nop[3].opCode, ccoreWaitStartSqePtr->nop[3].rd, ccoreWaitStartSqePtr->nop[3].reserved0, ccoreWaitStartSqePtr->nop[3].func3, ccoreWaitStartSqePtr->nop[3].rs1, ccoreWaitStartSqePtr->nop[3].reserved1, ccoreWaitStartSqePtr->nop[3].immd);
243 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] nop[4]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] reserved1[%u] immd[%u]",
244 : ccoreWaitStartSqePtr->nop[4].opCode, ccoreWaitStartSqePtr->nop[4].rd, ccoreWaitStartSqePtr->nop[4].reserved0, ccoreWaitStartSqePtr->nop[4].func3, ccoreWaitStartSqePtr->nop[4].rs1, ccoreWaitStartSqePtr->nop[4].reserved1, ccoreWaitStartSqePtr->nop[4].immd);
245 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] nop[5]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] reserved1[%u] immd[%u]",
246 : ccoreWaitStartSqePtr->nop[5].opCode, ccoreWaitStartSqePtr->nop[5].rd, ccoreWaitStartSqePtr->nop[5].reserved0, ccoreWaitStartSqePtr->nop[5].func3, ccoreWaitStartSqePtr->nop[5].rs1, ccoreWaitStartSqePtr->nop[5].reserved1, ccoreWaitStartSqePtr->nop[5].immd);
247 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] nop[6]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] reserved1[%u] immd[%u]",
248 : ccoreWaitStartSqePtr->nop[6].opCode, ccoreWaitStartSqePtr->nop[6].rd, ccoreWaitStartSqePtr->nop[6].reserved0, ccoreWaitStartSqePtr->nop[6].func3, ccoreWaitStartSqePtr->nop[6].rs1, ccoreWaitStartSqePtr->nop[6].reserved1, ccoreWaitStartSqePtr->nop[6].immd);
249 0 : break;
250 : }
251 0 : case SqeType::CCORE_WRITE_VALUE_SQE: {
252 0 : const rtStarsCcoreWriteValueSqe_t *ccoreWriteValueSqePtr = reinterpret_cast<const rtStarsCcoreWriteValueSqe_t *>(sqePtr);
253 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsCcoreWriteValueSqe_t sqeType[%u]", sqeType);
254 0 : CHK_RET(DumpSqeHeader(ccoreWriteValueSqePtr->sqeHeader));
255 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] reserved0[%u] reserved1[%u] kernel_credit[%u] reserved2[%u] csc[%u]",
256 : ccoreWriteValueSqePtr->reserved0, ccoreWriteValueSqePtr->reserved1, ccoreWriteValueSqePtr->kernel_credit, ccoreWriteValueSqePtr->reserved2, ccoreWriteValueSqePtr->csc);
257 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] ldrImm: opCode[%u] rd[%u] reserved[%u] func3[%u] immdAddrHigh[0x%08x] immdAddrLow[0x%08x]",
258 : ccoreWriteValueSqePtr->ldrImm.opCode, ccoreWriteValueSqePtr->ldrImm.rd, ccoreWriteValueSqePtr->ldrImm.reserved, ccoreWriteValueSqePtr->ldrImm.func3, ccoreWriteValueSqePtr->ldrImm.immdAddrHigh, ccoreWriteValueSqePtr->ldrImm.immdAddrLow);
259 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] llwi1: opCode[%u] rd[%u] reserved0[%u] func3[%u] immdHigh[%u] immdLow[%u]",
260 : ccoreWriteValueSqePtr->llwi1.opCode, ccoreWriteValueSqePtr->llwi1.rd, ccoreWriteValueSqePtr->llwi1.reserved0, ccoreWriteValueSqePtr->llwi1.func3, ccoreWriteValueSqePtr->llwi1.immdHigh, ccoreWriteValueSqePtr->llwi1.immdLow);
261 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] lhwi1: opCode[%u] rd[%u] reserved0[%u] func3[%u] reserved1[%u] immd[%u]",
262 : ccoreWriteValueSqePtr->lhwi1.opCode, ccoreWriteValueSqePtr->lhwi1.rd, ccoreWriteValueSqePtr->lhwi1.reserved0, ccoreWriteValueSqePtr->lhwi1.func3, ccoreWriteValueSqePtr->lhwi1.reserved1, ccoreWriteValueSqePtr->lhwi1.immd);
263 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] sw: opCode[%u] immdLow[%u] func3[%u] rs1[%u] reserved1[%u] rs2[%u] reserved2[%u] immdHigh[%u]",
264 : ccoreWriteValueSqePtr->sw.opCode, ccoreWriteValueSqePtr->sw.immdLow, ccoreWriteValueSqePtr->sw.func3, ccoreWriteValueSqePtr->sw.rs1, ccoreWriteValueSqePtr->sw.reserved1, ccoreWriteValueSqePtr->sw.rs2, ccoreWriteValueSqePtr->sw.reserved2, ccoreWriteValueSqePtr->sw.immdHigh);
265 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] nop[0]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] reserved1[%u] immd[%u]",
266 : ccoreWriteValueSqePtr->nop[0].opCode, ccoreWriteValueSqePtr->nop[0].rd, ccoreWriteValueSqePtr->nop[0].reserved0, ccoreWriteValueSqePtr->nop[0].func3, ccoreWriteValueSqePtr->nop[0].rs1, ccoreWriteValueSqePtr->nop[0].reserved1, ccoreWriteValueSqePtr->nop[0].immd);
267 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] nop[1]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] reserved1[%u] immd[%u]",
268 : ccoreWriteValueSqePtr->nop[1].opCode, ccoreWriteValueSqePtr->nop[1].rd, ccoreWriteValueSqePtr->nop[1].reserved0, ccoreWriteValueSqePtr->nop[1].func3, ccoreWriteValueSqePtr->nop[1].rs1, ccoreWriteValueSqePtr->nop[1].reserved1, ccoreWriteValueSqePtr->nop[1].immd);
269 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] nop[2]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] reserved1[%u] immd[%u]",
270 : ccoreWriteValueSqePtr->nop[2].opCode, ccoreWriteValueSqePtr->nop[2].rd, ccoreWriteValueSqePtr->nop[2].reserved0, ccoreWriteValueSqePtr->nop[2].func3, ccoreWriteValueSqePtr->nop[2].rs1, ccoreWriteValueSqePtr->nop[2].reserved1, ccoreWriteValueSqePtr->nop[2].immd);
271 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] nop[3]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] reserved1[%u] immd[%u]",
272 : ccoreWriteValueSqePtr->nop[3].opCode, ccoreWriteValueSqePtr->nop[3].rd, ccoreWriteValueSqePtr->nop[3].reserved0, ccoreWriteValueSqePtr->nop[3].func3, ccoreWriteValueSqePtr->nop[3].rs1, ccoreWriteValueSqePtr->nop[3].reserved1, ccoreWriteValueSqePtr->nop[3].immd);
273 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] nop[4]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] reserved1[%u] immd[%u]",
274 : ccoreWriteValueSqePtr->nop[4].opCode, ccoreWriteValueSqePtr->nop[4].rd, ccoreWriteValueSqePtr->nop[4].reserved0, ccoreWriteValueSqePtr->nop[4].func3, ccoreWriteValueSqePtr->nop[4].rs1, ccoreWriteValueSqePtr->nop[4].reserved1, ccoreWriteValueSqePtr->nop[4].immd);
275 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] nop[5]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] reserved1[%u] immd[%u]",
276 : ccoreWriteValueSqePtr->nop[5].opCode, ccoreWriteValueSqePtr->nop[5].rd, ccoreWriteValueSqePtr->nop[5].reserved0, ccoreWriteValueSqePtr->nop[5].func3, ccoreWriteValueSqePtr->nop[5].rs1, ccoreWriteValueSqePtr->nop[5].reserved1, ccoreWriteValueSqePtr->nop[5].immd);
277 0 : break;
278 : }
279 0 : case SqeType::NOTIFY_SQE_V2: {
280 0 : const rtStarsNotifySqeV2_t *notifyV2SqePtr = reinterpret_cast<const rtStarsNotifySqeV2_t *>(sqePtr);
281 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsNotifySqeV2_t sqeType[%u]", sqeType);
282 0 : CHK_RET(DumpSqeHeader(notifyV2SqePtr->header));
283 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] notify_id[%u] res2[%u] res3[%u] kernel_credit[%u] res4[%u]",
284 : notifyV2SqePtr->notify_id, notifyV2SqePtr->res2, notifyV2SqePtr->res3, notifyV2SqePtr->kernel_credit, notifyV2SqePtr->res);
285 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res[0][%u] res[1][%u] res[2][%u] res[3][%u] res[4][%u] res[5][%u]",
286 : notifyV2SqePtr->res[0], notifyV2SqePtr->res[1], notifyV2SqePtr->res[2], notifyV2SqePtr->res[3], notifyV2SqePtr->res[4], notifyV2SqePtr->res[5]);
287 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res[6][%u] res[7][%u] res[8][%u] res[9][%u] res[10][%u] res[11][%u]",
288 : notifyV2SqePtr->res[6], notifyV2SqePtr->res[7], notifyV2SqePtr->res[8], notifyV2SqePtr->res[9], notifyV2SqePtr->res[10], notifyV2SqePtr->res[11]);
289 0 : break;
290 : }
291 0 : case SqeType::WRITE_VALUE_SQE_V2: {
292 0 : const rtStarsWriteValueSqeV2_t *writeValueV2SqePtr = reinterpret_cast<const rtStarsWriteValueSqeV2_t *>(sqePtr);
293 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsWriteValueSqeV2_t sqeType[%u]", sqeType);
294 0 : CHK_RET(DumpSqeHeader(writeValueV2SqePtr->header));
295 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] reg_addr_low[0x%08x] reg_addr_high[0x%08x] awsize[%u] snoop[%u] res2[%u] awcache[%u] awprot[%u] VA[%u]",
296 : writeValueV2SqePtr->reg_addr_low, writeValueV2SqePtr->reg_addr_high, writeValueV2SqePtr->awsize, writeValueV2SqePtr->snoop, writeValueV2SqePtr->res2, writeValueV2SqePtr->awcache, writeValueV2SqePtr->awprot, writeValueV2SqePtr->VA);
297 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] write_val[0][%u] write_val[1][%u] write_val[2][%u] write_val[3][%u] write_val[4][%u] write_val[5][%u] write_val[6][%u] write_val[7][%u]",
298 : writeValueV2SqePtr->write_val[0], writeValueV2SqePtr->write_val[1], writeValueV2SqePtr->write_val[2], writeValueV2SqePtr->write_val[3], writeValueV2SqePtr->write_val[4], writeValueV2SqePtr->write_val[5], writeValueV2SqePtr->write_val[6], writeValueV2SqePtr->write_val[7]);
299 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res[0][%u] res[1][%u] res[2][%u] res[3][%u]",
300 : writeValueV2SqePtr->res[0], writeValueV2SqePtr->res[1], writeValueV2SqePtr->res[2], writeValueV2SqePtr->res[3]);
301 0 : break;
302 : }
303 0 : case SqeType::EVENT_SQE_V2: {
304 0 : const rtStarsEventSqeV2_t *eventV2SqePtr = reinterpret_cast<const rtStarsEventSqeV2_t *>(sqePtr);
305 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsEventSqeV2_t sqeType[%u]", sqeType);
306 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] type[%u] ie[%u] pre_p[%u] post_p[%u] wr_cqe[%u] res0[%u] flag[%u] rt_stream_id[%u] task_id[%u] event_id[%u]",
307 : eventV2SqePtr->type, eventV2SqePtr->ie, eventV2SqePtr->pre_p, eventV2SqePtr->post_p, eventV2SqePtr->wr_cqe, eventV2SqePtr->res0, eventV2SqePtr->flag, eventV2SqePtr->rt_stream_id, eventV2SqePtr->task_id, eventV2SqePtr->event_id);
308 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res2[%u] res3[%u] kernel_credit[%u] res4[%u] offset[%u]",
309 : eventV2SqePtr->res2, eventV2SqePtr->res3, eventV2SqePtr->kernel_credit, eventV2SqePtr->res4, eventV2SqePtr->offset);
310 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res6[0][%u] res6[1][%u] res6[2][%u] res6[3][%u] res6[4][%u] res6[5][%u] res6[6][%u] res6[7][%u] res6[8][%u] res6[9][%u] res6[10][%u] res6[11][%u]",
311 : eventV2SqePtr->res6[0], eventV2SqePtr->res6[1], eventV2SqePtr->res6[2], eventV2SqePtr->res6[3], eventV2SqePtr->res6[4], eventV2SqePtr->res6[5], eventV2SqePtr->res6[6], eventV2SqePtr->res6[7], eventV2SqePtr->res6[8], eventV2SqePtr->res6[9], eventV2SqePtr->res6[10], eventV2SqePtr->res6[11]);
312 0 : break;
313 : }
314 0 : case SqeType::MEMCPY_ASYNC_SQE_V2: {
315 0 : const rtStarsMemcpyAsyncSqeV2_t *memcpyAsyncV2SqePtr = reinterpret_cast<const rtStarsMemcpyAsyncSqeV2_t *>(sqePtr);
316 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsMemcpyAsyncSqeV2_t sqeType[%u]", sqeType);
317 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] type[%u] ie[%u] pre_p[%u] post_p[%u] wr_cqe[%u] res0[%u] l2_lock[%u] l2_unlock[%u] res1[%u] rt_stream_id[%u] task_id[%u]",
318 : memcpyAsyncV2SqePtr->type, memcpyAsyncV2SqePtr->ie, memcpyAsyncV2SqePtr->pre_p, memcpyAsyncV2SqePtr->post_p, memcpyAsyncV2SqePtr->wr_cqe, memcpyAsyncV2SqePtr->res0, memcpyAsyncV2SqePtr->l2_lock, memcpyAsyncV2SqePtr->l2_unlock, memcpyAsyncV2SqePtr->res1, memcpyAsyncV2SqePtr->rt_stream_id, memcpyAsyncV2SqePtr->task_id);
319 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res2[%u] res3[%u] kernel_credit[%u] res4[%u] opcode[%u] ie_dma[%u] sssv[%u] dssv[%u] sns[%u] dns[%u] qos[%u] sro[%u] dro[%u] overflow_en[%u] res5[%u]",
320 : memcpyAsyncV2SqePtr->res2, memcpyAsyncV2SqePtr->res3, memcpyAsyncV2SqePtr->kernel_credit, memcpyAsyncV2SqePtr->res4, memcpyAsyncV2SqePtr->opcode, memcpyAsyncV2SqePtr->ie_dma, memcpyAsyncV2SqePtr->sssv, memcpyAsyncV2SqePtr->dssv, memcpyAsyncV2SqePtr->sns, memcpyAsyncV2SqePtr->dns, memcpyAsyncV2SqePtr->qos, memcpyAsyncV2SqePtr->sro, memcpyAsyncV2SqePtr->dro, memcpyAsyncV2SqePtr->overflow_en, memcpyAsyncV2SqePtr->res5);
321 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] src_streamid[%u] src_substreamid[%u] dst_streamid[%u] dst_substreamid[%u] length[%u]",
322 : memcpyAsyncV2SqePtr->src_streamid, memcpyAsyncV2SqePtr->src_substreamid, memcpyAsyncV2SqePtr->dst_streamid, memcpyAsyncV2SqePtr->dst_substreamid, memcpyAsyncV2SqePtr->length);
323 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] src_addr_low[0x%08x] src_addr_high[0x%08x] dst_addr_low[0x%08x] dst_addr_high[0x%08x] overflow_addr_low[0x%08x] overflow_addr_high[0x%08x]",
324 : memcpyAsyncV2SqePtr->src_addr_low, memcpyAsyncV2SqePtr->src_addr_high, memcpyAsyncV2SqePtr->dst_addr_low, memcpyAsyncV2SqePtr->dst_addr_high, memcpyAsyncV2SqePtr->overflow_addr_low, memcpyAsyncV2SqePtr->overflow_addr_high);
325 0 : break;
326 : }
327 0 : case SqeType::FLIP_PLACEHOLDER_SQE: {
328 0 : const rtStarsPlaceHolderSqe_t *placeholderSqePtr = reinterpret_cast<const rtStarsPlaceHolderSqe_t *>(sqePtr);
329 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsPlaceHolderSqe_t sqeType[%u]", sqeType);
330 0 : CHK_RET(DumpSqeHeader(placeholderSqePtr->header));
331 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res1[%u] res2[%u] kernel_credit[%u] res3[%u]",
332 : placeholderSqePtr->res1, placeholderSqePtr->res2, placeholderSqePtr->kernel_credit, placeholderSqePtr->res3);
333 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] u.flip_task_info: flipNumReport[%u]",
334 : placeholderSqePtr->u.flip_task_info.flipNumReport);
335 : // 注意: 无需打印u.flip_task_info中的reserved数组
336 : // 注意: 无需打印union中的resv数组
337 0 : break;
338 : }
339 0 : case SqeType::CACHE_MEMCPY_PLACEHOLDER_SQE: {
340 0 : const rtStarsPlaceHolderSqe_t *placeholderSqePtr = reinterpret_cast<const rtStarsPlaceHolderSqe_t *>(sqePtr);
341 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsPlaceHolderSqe_t sqeType[%u]", sqeType);
342 0 : CHK_RET(DumpSqeHeader(placeholderSqePtr->header));
343 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res1[%u] res2[%u] kernel_credit[%u] res3[%u]",
344 : placeholderSqePtr->res1, placeholderSqePtr->res2, placeholderSqePtr->kernel_credit, placeholderSqePtr->res3);
345 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] u.cache_memcpy_task_info: src_addr_low[0x%08x] src_addr_high[0x%08x] dst_addr_low[0x%08x] dst_addr_high[0x%08x]",
346 : placeholderSqePtr->u.cache_memcpy_task_info.src_addr_low, placeholderSqePtr->u.cache_memcpy_task_info.src_addr_high, placeholderSqePtr->u.cache_memcpy_task_info.dst_addr_low, placeholderSqePtr->u.cache_memcpy_task_info.dst_addr_high);
347 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] u.cache_memcpy_task_info: kernel_credit[%u] linkType[%u]",
348 : placeholderSqePtr->u.cache_memcpy_task_info.kernel_credit,
349 : placeholderSqePtr->u.cache_memcpy_task_info.linkType);
350 : // 注意: 无需打印u.cache_memcpy_task_info中的reserved数组
351 : // 注意: 无需打印union中的resv数组
352 0 : break;
353 : }
354 0 : case SqeType::CACHE_NOTIFY_PLACEHOLDER_SQE: {
355 0 : const rtStarsPlaceHolderSqe_t *placeholderSqePtr = reinterpret_cast<const rtStarsPlaceHolderSqe_t *>(sqePtr);
356 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsPlaceHolderSqe_t sqeType[%u]", sqeType);
357 0 : CHK_RET(DumpSqeHeader(placeholderSqePtr->header));
358 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res1[%u] res2[%u] kernel_credit[%u] res3[%u]",
359 : placeholderSqePtr->res1, placeholderSqePtr->res2, placeholderSqePtr->kernel_credit, placeholderSqePtr->res3);
360 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] u.cache_notify_task_info: is_wait[%u] kernel_credit[%u] timeout[%u] notify_id[%u]",
361 : placeholderSqePtr->u.cache_notify_task_info.is_wait,
362 : placeholderSqePtr->u.cache_notify_task_info.kernel_credit,
363 : placeholderSqePtr->u.cache_notify_task_info.timeout,
364 : placeholderSqePtr->u.cache_notify_task_info.notify_id);
365 : // 注意: 无需打印u.cache_notify_task_info中的reserved数组
366 : // 注意: 无需打印union中的resv数组
367 0 : break;
368 : }
369 0 : case SqeType::CACHE_WRITE_VALUE_PLACEHOLDER_SQE: {
370 0 : const rtStarsPlaceHolderSqe_t *placeholderSqePtr = reinterpret_cast<const rtStarsPlaceHolderSqe_t *>(sqePtr);
371 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsPlaceHolderSqe_t sqeType[%u]", sqeType);
372 0 : CHK_RET(DumpSqeHeader(placeholderSqePtr->header));
373 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res1[%u] res2[%u] kernel_credit[%u] res3[%u]",
374 : placeholderSqePtr->res1, placeholderSqePtr->res2, placeholderSqePtr->kernel_credit, placeholderSqePtr->res3);
375 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] u.cache_write_value_task_info: write_addr_low[0x%08x] write_addr_high[0x%08x]",
376 : placeholderSqePtr->u.cache_write_value_task_info.write_addr_low,
377 : placeholderSqePtr->u.cache_write_value_task_info.write_addr_high);
378 : // 注意: 无需打印u.cache_write_value_task_info中的reserved数组
379 : // 注意: 无需打印union中的resv数组
380 0 : break;
381 : }
382 0 : case SqeType::CACHE_MEMCPY_RECORD_PLACEHOLDER_SQE: {
383 0 : const rtStarsPlaceHolderSqe_t *placeholderSqePtr = reinterpret_cast<const rtStarsPlaceHolderSqe_t *>(sqePtr);
384 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsPlaceHolderSqe_t sqeType[%u]", sqeType);
385 0 : CHK_RET(DumpSqeHeader(placeholderSqePtr->header));
386 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res1[%u] res2[%u] kernel_credit[%u] res3[%u]",
387 : placeholderSqePtr->res1, placeholderSqePtr->res2, placeholderSqePtr->kernel_credit, placeholderSqePtr->res3);
388 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] u.cache_memcpy_record_task_info: length[%u]"\
389 : "src_addr_low[0x%08x] src_addr_high[0x%08x] dst_addr_low[0x%08x] dst_addr_high[0x%08x]",
390 : placeholderSqePtr->u.cache_memcpy_record_task_info.length,
391 : placeholderSqePtr->u.cache_memcpy_record_task_info.src_addr_low,
392 : placeholderSqePtr->u.cache_memcpy_record_task_info.src_addr_high,
393 : placeholderSqePtr->u.cache_memcpy_record_task_info.dst_addr_low,
394 : placeholderSqePtr->u.cache_memcpy_record_task_info.dst_addr_high);
395 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] u.cache_memcpy_record_task_info: opcode[%u]"\
396 : "partid[%u] kernel_credit[%u] linkType[%u]",
397 : placeholderSqePtr->u.cache_memcpy_record_task_info.opcode,
398 : placeholderSqePtr->u.cache_memcpy_record_task_info.partid,
399 : placeholderSqePtr->u.cache_memcpy_record_task_info.kernel_credit,
400 : placeholderSqePtr->u.cache_memcpy_record_task_info.linkType);
401 : // 注意: 无需打印u.cache_memcpy_record_task_info中的reserved数组
402 : // 注意: 无需打印union中的resv数组
403 0 : break;
404 : }
405 12 : default: {
406 12 : HCCL_WARNING("[OpUnfoldCache][DumpSqeContent] sqeType %u is unsupported", sqeType);
407 12 : break; // This function only for debug, no need to return HCCL_E_NOT_SUPPORT (否则LLT会失败)
408 : }
409 : }
410 : }
411 :
412 12 : return HCCL_SUCCESS;
413 : }
414 :
415 0 : HcclResult OpUnfoldCache::DumpSqeHeader(const rtStarsSqeHeader_t& sqeHeader) {
416 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeHeader] SQE header: type[%u] l1Lock[%u] l1Unlock[%u] ie[%u] preP[%u] postP[%u] wrCqe[%u]",
417 : sqeHeader.type, sqeHeader.l1Lock, sqeHeader.l1Unlock, sqeHeader.ie, sqeHeader.preP, sqeHeader.postP, sqeHeader.wrCqe);
418 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeHeader] SQE header: reserved[%u] numBlocks[%u] rtStreamId[%u] taskId[%u]",
419 : sqeHeader.reserved, sqeHeader.blockDim, sqeHeader.rtStreamId, sqeHeader.taskId);
420 :
421 0 : return HCCL_SUCCESS;
422 : }
423 :
424 0 : HcclResult OpUnfoldCache::DumpSqeHeader(const rtStarsSqeHeaderV2_t& sqeHeader) {
425 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeHeader] SQE header V2: type[%u] graph_lock[%u] graph_unlock[%u] ie[%u] pre_p[%u] post_p[%u] wr_cqe[%u]",
426 : sqeHeader.type, sqeHeader.graph_lock, sqeHeader.graph_unlock, sqeHeader.ie, sqeHeader.pre_p, sqeHeader.post_p, sqeHeader.wr_cqe);
427 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeHeader] SQE header V2: res0[%u] l2_lock[%u] l2_unlock[%u] res1[%u] rt_stream_id[%u] task_id[%u]",
428 : sqeHeader.res0, sqeHeader.l2_lock, sqeHeader.l2_unlock, sqeHeader.res1, sqeHeader.rt_stream_id, sqeHeader.task_id);
429 :
430 0 : return HCCL_SUCCESS;
431 : }
432 : } // namespace hccl
|