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 : {
25 11 : HCCL_INFO("[OpUnfoldCache][OpUnfoldCache] create a cache at 0x%016llx for operator unfolding", this);
26 11 : }
27 :
28 11 : OpUnfoldCache::~OpUnfoldCache()
29 : {
30 11 : HCCL_INFO(
31 : "[OpUnfoldCache][~OpUnfoldCache] release dynamically allocated entries from the cache at 0x%016llx", this);
32 :
33 11 : for (CacheHashMap::const_iterator constIter = cacheHashMap_.cbegin(); constIter != cacheHashMap_.cend();
34 0 : ++constIter) {
35 0 : OpUnfoldCacheEntry* entryPtr = constIter->second;
36 :
37 : // 不能使用CHK_PTR_NULL,因为会return HcclResult
38 0 : if (UNLIKELY(entryPtr == nullptr)) {
39 0 : HCCL_ERROR("[OpUnfoldCache][OpUnfoldCache] entryPtr is nullptr");
40 0 : continue;
41 : }
42 :
43 : // 释放当前cache entry
44 0 : delete entryPtr;
45 0 : entryPtr = nullptr;
46 : }
47 11 : }
48 :
49 0 : bool OpUnfoldCache::IsCacheFull() const
50 : {
51 0 : const size_t curSize = cacheHashMap_.size();
52 0 : if (curSize >= OP_UNFOLD_CACHE_CAPACITY) {
53 0 : HCCL_INFO(
54 : "[OpUnfoldCache][IsCacheFull] cacheHashMap_.size[%u] >= capacity[%u]", cacheHashMap_.size(),
55 : OP_UNFOLD_CACHE_CAPACITY);
56 0 : return true;
57 : }
58 0 : return false;
59 : }
60 :
61 0 : HcclResult OpUnfoldCache::FindEntry(const OpUnfoldKey& key, OpUnfoldCacheEntry** entryPtrPtr) const
62 : {
63 : // 检查入参
64 0 : CHK_PTRPTR_NULL(entryPtrPtr); // 检查指针, entryPtrPtr不应该是null, 但*entryPtrPtr应该是null
65 :
66 0 : CacheHashMap::const_iterator constIter = cacheHashMap_.find(key);
67 0 : if (constIter != cacheHashMap_.cend()) {
68 : // 检查cache entry pointer
69 0 : *entryPtrPtr = constIter->second;
70 0 : CHK_PTR_NULL(*entryPtrPtr);
71 :
72 0 : HCCL_INFO("[OpUnfoldCache][FindEntry] find cache entry for key[%s]", key.GetKeyString().c_str());
73 : } else {
74 0 : *entryPtrPtr = nullptr;
75 :
76 0 : HCCL_INFO("[OpUnfoldCache][FindEntry] not find cache entry for key[%s]", key.GetKeyString().c_str());
77 : }
78 :
79 0 : return HCCL_SUCCESS;
80 : }
81 :
82 0 : HcclResult OpUnfoldCache::AddEntry(
83 : const OpUnfoldKey& key, const std::vector<OpUnfoldMemRange>& userInputMemRanges,
84 : const std::vector<OpUnfoldMemRange>& userOutputMemRanges, OpUnfoldCacheEntry** entryPtrPtr)
85 : {
86 : // 检查入参
87 0 : CHK_PTRPTR_NULL(entryPtrPtr); // 检查指针, entryPtrPtr不应该是null, 但*entryPtrPtr应该是null
88 :
89 0 : CacheHashMap::iterator iter = cacheHashMap_.find(key);
90 :
91 : // key不应该存在
92 0 : CHK_PRT_RET(
93 : iter != cacheHashMap_.end(),
94 : HCCL_ERROR(
95 : "[OpUnfoldCache][AddEntry] cache entry for key[%s] exists at 0x%016llx", key.GetKeyString().c_str(), this),
96 : HCCL_E_INTERNAL);
97 :
98 : // 创建一个新的cache entry
99 : OpUnfoldCacheEntry* newCacheEntryPtr
100 0 : = (new (std::nothrow) OpUnfoldCacheEntry(userInputMemRanges, userOutputMemRanges));
101 0 : CHK_PTR_NULL(newCacheEntryPtr);
102 :
103 : // 插入新的cache entry
104 0 : std::pair<CacheHashMap::iterator, bool> insertResult = cacheHashMap_.emplace(key, newCacheEntryPtr);
105 0 : if (UNLIKELY(!(insertResult.second))) {
106 0 : HCCL_ERROR(
107 : "[OpUnfoldCache][AddEntry] fail to insert a new cache entry for key[%s]", key.GetKeyString().c_str());
108 :
109 0 : delete newCacheEntryPtr;
110 0 : newCacheEntryPtr = nullptr;
111 :
112 0 : return HCCL_E_INTERNAL;
113 : } else {
114 0 : HCCL_INFO(
115 : "[OpUnfoldCache][AddEntry] add a new cache entry for key[%s] cacheHashMap_.size[%u]",
116 : key.GetKeyString().c_str(), cacheHashMap_.size());
117 :
118 0 : iter = insertResult.first;
119 0 : *entryPtrPtr = iter->second;
120 0 : CHK_PTR_NULL(*entryPtrPtr);
121 : }
122 :
123 0 : return HCCL_SUCCESS;
124 : }
125 :
126 0 : HcclResult OpUnfoldCache::ClearEntry(const OpUnfoldKey& key)
127 : {
128 0 : CacheHashMap::iterator iter = cacheHashMap_.find(key);
129 0 : if (iter != cacheHashMap_.end()) { // cache entry存在
130 0 : HCCL_INFO("[OpUnfoldCache][ClearEntry] clear cache entry for key[%s]", key.GetKeyString().c_str());
131 :
132 : // 释放cache entry对应的内存
133 0 : OpUnfoldCacheEntry* entryPtr = iter->second;
134 0 : CHK_PTR_NULL(entryPtr);
135 0 : delete entryPtr;
136 0 : entryPtr = nullptr;
137 0 : iter->second = nullptr;
138 :
139 : // 清理cache entry
140 0 : cacheHashMap_.erase(iter);
141 : } else { // cache entry不存在
142 0 : HCCL_INFO("[OpUnfoldCache][ClearEntry] not find cache entry for key [%s]", key.GetKeyString().c_str());
143 : }
144 :
145 0 : return HCCL_SUCCESS;
146 : }
147 :
148 0 : HcclResult OpUnfoldCache::ClearEntryForAlltoallv()
149 : {
150 : // 清理所有与alltoallv类算子相关的cache entry
151 0 : for (CacheHashMap::iterator iter = cacheHashMap_.begin(); iter != cacheHashMap_.end();) {
152 : // 先备份iter的下一个位置 (使用std::next避免修改iter本身)
153 0 : CacheHashMap::iterator nextIter = std::next(iter);
154 :
155 : // 清理alltoallv类算子的cache entry
156 0 : const HcclCMDType opType = iter->first.opType;
157 0 : if (opType == HcclCMDType::HCCL_CMD_ALLTOALLV || opType == HcclCMDType::HCCL_CMD_ALLTOALLVC) {
158 0 : CHK_RET(ClearEntry(iter->first));
159 : }
160 :
161 : // 注意: ClearEntry后不能再访问iter (已经从cacheHashMap_中被erase了)
162 :
163 : // 推进iter到下一个位置
164 0 : iter = nextIter;
165 : }
166 :
167 0 : return HCCL_SUCCESS;
168 : }
169 :
170 12 : HcclResult OpUnfoldCache::DumpSqeContent(const uint8_t* sqePtr, const uint8_t sqeType)
171 : {
172 : // 根据sqe type打印debug信息
173 : // 设置HCCL_DEBUG_CONFIG="task", 或者设置ASCEND_GLOBAL_LOG_LEVEL=0
174 12 : if ((UNLIKELY(GetExternalInputDebugConfig() & PLF_TASK)) || UNLIKELY(HcclCheckLogLevel(HCCL_LOG_DEBUG))) {
175 12 : CHK_PTR_NULL(sqePtr);
176 :
177 12 : switch (sqeType) {
178 0 : case SqeType::NOTIFY_SQE: {
179 0 : const rtStarsNotifySqeV1_t* notifySqePtr = reinterpret_cast<const rtStarsNotifySqeV1_t*>(sqePtr);
180 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsNotifySqeV1_t sqeType[%u]", sqeType);
181 0 : CHK_RET(DumpSqeHeader(notifySqePtr->header));
182 0 : PLF_CONFIG_DEBUG(
183 : PLF_TASK,
184 : "[OpUnfoldCache][DumpSqeContent] notify_id[%u] res2[%u] res3[%u] kernel_credit[%u] res4[%u] "
185 : "timeout[%u]",
186 : notifySqePtr->notify_id, notifySqePtr->res2, notifySqePtr->res3, notifySqePtr->kernel_credit,
187 : notifySqePtr->res4, notifySqePtr->timeout);
188 0 : PLF_CONFIG_DEBUG(
189 : PLF_TASK,
190 : "[OpUnfoldCache][DumpSqeContent] res5[0][%u] res5[1][%u] res5[2][%u] res5[3][%u] res5[4][%u] "
191 : "res5[5][%u]",
192 : notifySqePtr->res5[0], notifySqePtr->res5[1], notifySqePtr->res5[2], notifySqePtr->res5[3],
193 : notifySqePtr->res5[4], notifySqePtr->res5[5]);
194 0 : PLF_CONFIG_DEBUG(
195 : PLF_TASK,
196 : "[OpUnfoldCache][DumpSqeContent] res5[6][%u] res5[7][%u] res5[8][%u] res5[9][%u] res5[10][%u]",
197 : notifySqePtr->res5[6], notifySqePtr->res5[7], notifySqePtr->res5[8], notifySqePtr->res5[9],
198 : notifySqePtr->res5[10]);
199 0 : break;
200 : }
201 0 : case SqeType::WRITE_VALUE_SQE:
202 : case SqeType::RDMA_DB_SEND_SQE: {
203 0 : const rtStarsWriteValueSqe_t* writeValueSqePtr
204 : = reinterpret_cast<const rtStarsWriteValueSqe_t*>(sqePtr);
205 0 : PLF_CONFIG_DEBUG(
206 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsWriteValueSqe_t sqeType[%u]", sqeType);
207 0 : CHK_RET(DumpSqeHeader(writeValueSqePtr->header));
208 0 : PLF_CONFIG_DEBUG(
209 : PLF_TASK,
210 : "[OpUnfoldCache][DumpSqeContent] res3[%u] res4[%u] kernel_credit[%u] res5[%u] "
211 : "write_addr_low[0x%08x] write_addr_high[0x%08x]",
212 : writeValueSqePtr->res3, writeValueSqePtr->res4, writeValueSqePtr->kernel_credit,
213 : writeValueSqePtr->res5, writeValueSqePtr->write_addr_low, writeValueSqePtr->write_addr_high);
214 0 : PLF_CONFIG_DEBUG(
215 : PLF_TASK,
216 : "[OpUnfoldCache][DumpSqeContent] res6[%u] awsize[%u] snoop[%u] awcache[%u] awprot[%u] va[%u] "
217 : "res7[%u]",
218 : writeValueSqePtr->res6, writeValueSqePtr->awsize, writeValueSqePtr->snoop,
219 : writeValueSqePtr->awcache, writeValueSqePtr->awprot, writeValueSqePtr->va, writeValueSqePtr->res7);
220 0 : PLF_CONFIG_DEBUG(
221 : PLF_TASK,
222 : "[OpUnfoldCache][DumpSqeContent] sub_type[%u] write_value_part0[%u] write_value_part1[%u] "
223 : "rdmaWrLenth[%u] rdmaType[%u]",
224 : writeValueSqePtr->sub_type, writeValueSqePtr->write_value_part0,
225 : writeValueSqePtr->write_value_part1, writeValueSqePtr->rdmaWrLenth, writeValueSqePtr->rdmaType);
226 0 : PLF_CONFIG_DEBUG(
227 : PLF_TASK,
228 : "[OpUnfoldCache][DumpSqeContent] write_value_part4[%u] write_value_part5[%u] write_value_part6[%u] "
229 : "write_value_part7[%u]",
230 : writeValueSqePtr->write_value_part4, writeValueSqePtr->write_value_part5,
231 : writeValueSqePtr->write_value_part6, writeValueSqePtr->write_value_part7);
232 0 : break;
233 : }
234 0 : case SqeType::EVENT_SQE: {
235 0 : const rtStarsEventSqe_t* eventSqePtr = reinterpret_cast<const rtStarsEventSqe_t*>(sqePtr);
236 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsEventSqe_t sqeType[%u]", sqeType);
237 0 : CHK_RET(DumpSqeHeader(eventSqePtr->header));
238 0 : PLF_CONFIG_DEBUG(
239 : PLF_TASK,
240 : "[OpUnfoldCache][DumpSqeContent] eventId[%u] res2[%u] res3[%u] kernel_credit[%u] res4[%u] "
241 : "exe_result[%u] timeout[%u]",
242 : eventSqePtr->eventId, eventSqePtr->res2, eventSqePtr->res3, eventSqePtr->kernel_credit,
243 : eventSqePtr->res4, eventSqePtr->exe_result, eventSqePtr->timeout);
244 0 : PLF_CONFIG_DEBUG(
245 : PLF_TASK,
246 : "[OpUnfoldCache][DumpSqeContent] res5[0][%u] res5[1][%u] res5[2][%u] res5[3][%u] res5[4][%u]",
247 : eventSqePtr->res5[0], eventSqePtr->res5[1], eventSqePtr->res5[2], eventSqePtr->res5[3],
248 : eventSqePtr->res5[4]);
249 0 : PLF_CONFIG_DEBUG(
250 : PLF_TASK,
251 : "[OpUnfoldCache][DumpSqeContent] res5[5][%u] res5[6][%u] res5[7][%u] res5[8][%u] res5[9][%u]",
252 : eventSqePtr->res5[5], eventSqePtr->res5[6], eventSqePtr->res5[7], eventSqePtr->res5[8],
253 : eventSqePtr->res5[9]);
254 0 : break;
255 : }
256 0 : case SqeType::MEMCPY_ASYNC_SQE: {
257 0 : const rtStarsMemcpyAsyncSqe_t* memcpyAsyncSqePtr
258 : = reinterpret_cast<const rtStarsMemcpyAsyncSqe_t*>(sqePtr);
259 0 : PLF_CONFIG_DEBUG(
260 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsMemcpyAsyncSqe_t sqeType[%u]", sqeType);
261 0 : CHK_RET(DumpSqeHeader(memcpyAsyncSqePtr->header));
262 0 : PLF_CONFIG_DEBUG(
263 : PLF_TASK,
264 : "[OpUnfoldCache][DumpSqeContent] res3[%u] res4[%u] kernel_credit[%u] ptr_mode[%u] res5[%u] "
265 : "opcode[%u] ie2[%u]",
266 : memcpyAsyncSqePtr->res3, memcpyAsyncSqePtr->res4, memcpyAsyncSqePtr->kernel_credit,
267 : memcpyAsyncSqePtr->ptr_mode, memcpyAsyncSqePtr->res5, memcpyAsyncSqePtr->opcode,
268 : memcpyAsyncSqePtr->ie2);
269 0 : PLF_CONFIG_DEBUG(
270 : PLF_TASK,
271 : "[OpUnfoldCache][DumpSqeContent] sssv[%u] dssv[%u] sns[%u] dns[%u] qos[%u] sro[%u] dro[%u] "
272 : "partid[%u] mpam[%u]",
273 : memcpyAsyncSqePtr->sssv, memcpyAsyncSqePtr->dssv, memcpyAsyncSqePtr->sns, memcpyAsyncSqePtr->dns,
274 : memcpyAsyncSqePtr->qos, memcpyAsyncSqePtr->sro, memcpyAsyncSqePtr->dro, memcpyAsyncSqePtr->partid,
275 : memcpyAsyncSqePtr->mpam);
276 0 : PLF_CONFIG_DEBUG(
277 : PLF_TASK,
278 : "[OpUnfoldCache][DumpSqeContent] res6[%u] src_streamid[%u] src_sub_streamid[%u] dst_streamid[%u] "
279 : "dst_sub_streamid[%u]",
280 : memcpyAsyncSqePtr->res6, memcpyAsyncSqePtr->src_streamid, memcpyAsyncSqePtr->src_sub_streamid,
281 : memcpyAsyncSqePtr->dst_streamid, memcpyAsyncSqePtr->dst_sub_streamid);
282 0 : PLF_CONFIG_DEBUG(
283 : PLF_TASK,
284 : "[OpUnfoldCache][DumpSqeContent] length[%u] src_addr_low[0x%08x] src_addr_high[0x%08x] "
285 : "dst_addr_low[0x%08x] dst_addr_high[0x%08x]",
286 : memcpyAsyncSqePtr->length, memcpyAsyncSqePtr->src_addr_low, memcpyAsyncSqePtr->src_addr_high,
287 : memcpyAsyncSqePtr->dst_addr_low, memcpyAsyncSqePtr->dst_addr_high);
288 0 : PLF_CONFIG_DEBUG(
289 : PLF_TASK,
290 : "[OpUnfoldCache][DumpSqeContent] linkType[%u] resvered[0][%u] resvered[1][%u] resvered[2][%u] "
291 : "reslast[0][%u] reslast[1][%u] reslast[2][%u]",
292 : memcpyAsyncSqePtr->linkType, memcpyAsyncSqePtr->resvered[0], memcpyAsyncSqePtr->resvered[1],
293 : memcpyAsyncSqePtr->resvered[2], memcpyAsyncSqePtr->reslast[0], memcpyAsyncSqePtr->reslast[1],
294 : memcpyAsyncSqePtr->reslast[2]);
295 0 : break;
296 : }
297 0 : case SqeType::CCORE_WAIT_START_SQE: {
298 0 : const rtStarsCcoreWaitStartSqe_t* ccoreWaitStartSqePtr
299 : = reinterpret_cast<const rtStarsCcoreWaitStartSqe_t*>(sqePtr);
300 0 : PLF_CONFIG_DEBUG(
301 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsCcoreWaitStartSqe_t sqeType[%u]", sqeType);
302 0 : CHK_RET(DumpSqeHeader(ccoreWaitStartSqePtr->sqeHeader));
303 0 : PLF_CONFIG_DEBUG(
304 : PLF_TASK,
305 : "[OpUnfoldCache][DumpSqeContent] reserved0[%u] reserved1[%u] kernel_credit[%u] reserved2[%u] "
306 : "csc[%u]",
307 : ccoreWaitStartSqePtr->reserved0, ccoreWaitStartSqePtr->reserved1,
308 : ccoreWaitStartSqePtr->kernel_credit, ccoreWaitStartSqePtr->reserved2, ccoreWaitStartSqePtr->csc);
309 0 : PLF_CONFIG_DEBUG(
310 : PLF_TASK,
311 : "[OpUnfoldCache][DumpSqeContent] ldrImm1: opCode[%u] rd[%u] reserved[%u] func3[%u] "
312 : "immdAddrHigh[0x%08x] immdAddrLow[0x%08x]",
313 : ccoreWaitStartSqePtr->ldrImm1.opCode, ccoreWaitStartSqePtr->ldrImm1.rd,
314 : ccoreWaitStartSqePtr->ldrImm1.reserved, ccoreWaitStartSqePtr->ldrImm1.func3,
315 : ccoreWaitStartSqePtr->ldrImm1.immdAddrHigh, ccoreWaitStartSqePtr->ldrImm1.immdAddrLow);
316 0 : PLF_CONFIG_DEBUG(
317 : PLF_TASK,
318 : "[OpUnfoldCache][DumpSqeContent] ldrImm2: opCode[%u] rd[%u] reserved[%u] func3[%u] "
319 : "immdAddrHigh[0x%08x] immdAddrLow[0x%08x]",
320 : ccoreWaitStartSqePtr->ldrImm2.opCode, ccoreWaitStartSqePtr->ldrImm2.rd,
321 : ccoreWaitStartSqePtr->ldrImm2.reserved, ccoreWaitStartSqePtr->ldrImm2.func3,
322 : ccoreWaitStartSqePtr->ldrImm2.immdAddrHigh, ccoreWaitStartSqePtr->ldrImm2.immdAddrLow);
323 0 : PLF_CONFIG_DEBUG(
324 : PLF_TASK,
325 : "[OpUnfoldCache][DumpSqeContent] beq: opCode[%u] jumpInstrOffset[%u] rsvd[%u] func3[%u] rs1[%u] "
326 : "rsvd1[%u] rs2[%u] rsvd2[%u] rsvd3[%u]",
327 : ccoreWaitStartSqePtr->beq.opCode, ccoreWaitStartSqePtr->beq.jumpInstrOffset,
328 : ccoreWaitStartSqePtr->beq.rsvd, ccoreWaitStartSqePtr->beq.func3, ccoreWaitStartSqePtr->beq.rs1,
329 : ccoreWaitStartSqePtr->beq.rsvd1, ccoreWaitStartSqePtr->beq.rs2, ccoreWaitStartSqePtr->beq.rsvd2,
330 : ccoreWaitStartSqePtr->beq.rsvd3);
331 0 : PLF_CONFIG_DEBUG(
332 : PLF_TASK,
333 : "[OpUnfoldCache][DumpSqeContent] clear.llwi1: opCode[%u] rd[%u] reserved0[%u] func3[%u] "
334 : "immdHigh[%u] immdLow[%u]",
335 : ccoreWaitStartSqePtr->clear.llwi1.opCode, ccoreWaitStartSqePtr->clear.llwi1.rd,
336 : ccoreWaitStartSqePtr->clear.llwi1.reserved0, ccoreWaitStartSqePtr->clear.llwi1.func3,
337 : ccoreWaitStartSqePtr->clear.llwi1.immdHigh, ccoreWaitStartSqePtr->clear.llwi1.immdLow);
338 0 : PLF_CONFIG_DEBUG(
339 : PLF_TASK,
340 : "[OpUnfoldCache][DumpSqeContent] clear.lhwi1: opCode[%u] rd[%u] reserved0[%u] func3[%u] "
341 : "reserved1[%u] immd[%u]",
342 : ccoreWaitStartSqePtr->clear.lhwi1.opCode, ccoreWaitStartSqePtr->clear.lhwi1.rd,
343 : ccoreWaitStartSqePtr->clear.lhwi1.reserved0, ccoreWaitStartSqePtr->clear.lhwi1.func3,
344 : ccoreWaitStartSqePtr->clear.lhwi1.reserved1, ccoreWaitStartSqePtr->clear.lhwi1.immd);
345 0 : PLF_CONFIG_DEBUG(
346 : PLF_TASK,
347 : "[OpUnfoldCache][DumpSqeContent] clear.sw: opCode[%u] immdLow[%u] func3[%u] rs1[%u] reserved1[%u] "
348 : "rs2[%u] reserved2[%u] immdHigh[%u]",
349 : ccoreWaitStartSqePtr->clear.sw.opCode, ccoreWaitStartSqePtr->clear.sw.immdLow,
350 : ccoreWaitStartSqePtr->clear.sw.func3, ccoreWaitStartSqePtr->clear.sw.rs1,
351 : ccoreWaitStartSqePtr->clear.sw.reserved1, ccoreWaitStartSqePtr->clear.sw.rs2,
352 : ccoreWaitStartSqePtr->clear.sw.reserved2, ccoreWaitStartSqePtr->clear.sw.immdHigh);
353 0 : PLF_CONFIG_DEBUG(
354 : PLF_TASK,
355 : "[OpUnfoldCache][DumpSqeContent] clear.nop[0]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] "
356 : "reserved1[%u] immd[%u]",
357 : ccoreWaitStartSqePtr->clear.nop[0].opCode, ccoreWaitStartSqePtr->clear.nop[0].rd,
358 : ccoreWaitStartSqePtr->clear.nop[0].reserved0, ccoreWaitStartSqePtr->clear.nop[0].func3,
359 : ccoreWaitStartSqePtr->clear.nop[0].rs1, ccoreWaitStartSqePtr->clear.nop[0].reserved1,
360 : ccoreWaitStartSqePtr->clear.nop[0].immd);
361 0 : PLF_CONFIG_DEBUG(
362 : PLF_TASK,
363 : "[OpUnfoldCache][DumpSqeContent] clear.nop[1]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] "
364 : "reserved1[%u] immd[%u]",
365 : ccoreWaitStartSqePtr->clear.nop[1].opCode, ccoreWaitStartSqePtr->clear.nop[1].rd,
366 : ccoreWaitStartSqePtr->clear.nop[1].reserved0, ccoreWaitStartSqePtr->clear.nop[1].func3,
367 : ccoreWaitStartSqePtr->clear.nop[1].rs1, ccoreWaitStartSqePtr->clear.nop[1].reserved1,
368 : ccoreWaitStartSqePtr->clear.nop[1].immd);
369 0 : PLF_CONFIG_DEBUG(
370 : PLF_TASK,
371 : "[OpUnfoldCache][DumpSqeContent] clear.nop[2]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] "
372 : "reserved1[%u] immd[%u]",
373 : ccoreWaitStartSqePtr->clear.nop[2].opCode, ccoreWaitStartSqePtr->clear.nop[2].rd,
374 : ccoreWaitStartSqePtr->clear.nop[2].reserved0, ccoreWaitStartSqePtr->clear.nop[2].func3,
375 : ccoreWaitStartSqePtr->clear.nop[2].rs1, ccoreWaitStartSqePtr->clear.nop[2].reserved1,
376 : ccoreWaitStartSqePtr->clear.nop[2].immd);
377 0 : PLF_CONFIG_DEBUG(
378 : PLF_TASK,
379 : "[OpUnfoldCache][DumpSqeContent] nop[0]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] "
380 : "reserved1[%u] immd[%u]",
381 : ccoreWaitStartSqePtr->nop[0].opCode, ccoreWaitStartSqePtr->nop[0].rd,
382 : ccoreWaitStartSqePtr->nop[0].reserved0, ccoreWaitStartSqePtr->nop[0].func3,
383 : ccoreWaitStartSqePtr->nop[0].rs1, ccoreWaitStartSqePtr->nop[0].reserved1,
384 : ccoreWaitStartSqePtr->nop[0].immd);
385 0 : PLF_CONFIG_DEBUG(
386 : PLF_TASK,
387 : "[OpUnfoldCache][DumpSqeContent] nop[1]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] "
388 : "reserved1[%u] immd[%u]",
389 : ccoreWaitStartSqePtr->nop[1].opCode, ccoreWaitStartSqePtr->nop[1].rd,
390 : ccoreWaitStartSqePtr->nop[1].reserved0, ccoreWaitStartSqePtr->nop[1].func3,
391 : ccoreWaitStartSqePtr->nop[1].rs1, ccoreWaitStartSqePtr->nop[1].reserved1,
392 : ccoreWaitStartSqePtr->nop[1].immd);
393 0 : PLF_CONFIG_DEBUG(
394 : PLF_TASK,
395 : "[OpUnfoldCache][DumpSqeContent] nop[2]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] "
396 : "reserved1[%u] immd[%u]",
397 : ccoreWaitStartSqePtr->nop[2].opCode, ccoreWaitStartSqePtr->nop[2].rd,
398 : ccoreWaitStartSqePtr->nop[2].reserved0, ccoreWaitStartSqePtr->nop[2].func3,
399 : ccoreWaitStartSqePtr->nop[2].rs1, ccoreWaitStartSqePtr->nop[2].reserved1,
400 : ccoreWaitStartSqePtr->nop[2].immd);
401 0 : PLF_CONFIG_DEBUG(
402 : PLF_TASK,
403 : "[OpUnfoldCache][DumpSqeContent] nop[3]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] "
404 : "reserved1[%u] immd[%u]",
405 : ccoreWaitStartSqePtr->nop[3].opCode, ccoreWaitStartSqePtr->nop[3].rd,
406 : ccoreWaitStartSqePtr->nop[3].reserved0, ccoreWaitStartSqePtr->nop[3].func3,
407 : ccoreWaitStartSqePtr->nop[3].rs1, ccoreWaitStartSqePtr->nop[3].reserved1,
408 : ccoreWaitStartSqePtr->nop[3].immd);
409 0 : PLF_CONFIG_DEBUG(
410 : PLF_TASK,
411 : "[OpUnfoldCache][DumpSqeContent] nop[4]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] "
412 : "reserved1[%u] immd[%u]",
413 : ccoreWaitStartSqePtr->nop[4].opCode, ccoreWaitStartSqePtr->nop[4].rd,
414 : ccoreWaitStartSqePtr->nop[4].reserved0, ccoreWaitStartSqePtr->nop[4].func3,
415 : ccoreWaitStartSqePtr->nop[4].rs1, ccoreWaitStartSqePtr->nop[4].reserved1,
416 : ccoreWaitStartSqePtr->nop[4].immd);
417 0 : PLF_CONFIG_DEBUG(
418 : PLF_TASK,
419 : "[OpUnfoldCache][DumpSqeContent] nop[5]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] "
420 : "reserved1[%u] immd[%u]",
421 : ccoreWaitStartSqePtr->nop[5].opCode, ccoreWaitStartSqePtr->nop[5].rd,
422 : ccoreWaitStartSqePtr->nop[5].reserved0, ccoreWaitStartSqePtr->nop[5].func3,
423 : ccoreWaitStartSqePtr->nop[5].rs1, ccoreWaitStartSqePtr->nop[5].reserved1,
424 : ccoreWaitStartSqePtr->nop[5].immd);
425 0 : PLF_CONFIG_DEBUG(
426 : PLF_TASK,
427 : "[OpUnfoldCache][DumpSqeContent] nop[6]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] "
428 : "reserved1[%u] immd[%u]",
429 : ccoreWaitStartSqePtr->nop[6].opCode, ccoreWaitStartSqePtr->nop[6].rd,
430 : ccoreWaitStartSqePtr->nop[6].reserved0, ccoreWaitStartSqePtr->nop[6].func3,
431 : ccoreWaitStartSqePtr->nop[6].rs1, ccoreWaitStartSqePtr->nop[6].reserved1,
432 : ccoreWaitStartSqePtr->nop[6].immd);
433 0 : break;
434 : }
435 0 : case SqeType::CCORE_WRITE_VALUE_SQE: {
436 0 : const rtStarsCcoreWriteValueSqe_t* ccoreWriteValueSqePtr
437 : = reinterpret_cast<const rtStarsCcoreWriteValueSqe_t*>(sqePtr);
438 0 : PLF_CONFIG_DEBUG(
439 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsCcoreWriteValueSqe_t sqeType[%u]", sqeType);
440 0 : CHK_RET(DumpSqeHeader(ccoreWriteValueSqePtr->sqeHeader));
441 0 : PLF_CONFIG_DEBUG(
442 : PLF_TASK,
443 : "[OpUnfoldCache][DumpSqeContent] reserved0[%u] reserved1[%u] kernel_credit[%u] reserved2[%u] "
444 : "csc[%u]",
445 : ccoreWriteValueSqePtr->reserved0, ccoreWriteValueSqePtr->reserved1,
446 : ccoreWriteValueSqePtr->kernel_credit, ccoreWriteValueSqePtr->reserved2, ccoreWriteValueSqePtr->csc);
447 0 : PLF_CONFIG_DEBUG(
448 : PLF_TASK,
449 : "[OpUnfoldCache][DumpSqeContent] ldrImm: opCode[%u] rd[%u] reserved[%u] func3[%u] "
450 : "immdAddrHigh[0x%08x] immdAddrLow[0x%08x]",
451 : ccoreWriteValueSqePtr->ldrImm.opCode, ccoreWriteValueSqePtr->ldrImm.rd,
452 : ccoreWriteValueSqePtr->ldrImm.reserved, ccoreWriteValueSqePtr->ldrImm.func3,
453 : ccoreWriteValueSqePtr->ldrImm.immdAddrHigh, ccoreWriteValueSqePtr->ldrImm.immdAddrLow);
454 0 : PLF_CONFIG_DEBUG(
455 : PLF_TASK,
456 : "[OpUnfoldCache][DumpSqeContent] llwi1: opCode[%u] rd[%u] reserved0[%u] func3[%u] immdHigh[%u] "
457 : "immdLow[%u]",
458 : ccoreWriteValueSqePtr->llwi1.opCode, ccoreWriteValueSqePtr->llwi1.rd,
459 : ccoreWriteValueSqePtr->llwi1.reserved0, ccoreWriteValueSqePtr->llwi1.func3,
460 : ccoreWriteValueSqePtr->llwi1.immdHigh, ccoreWriteValueSqePtr->llwi1.immdLow);
461 0 : PLF_CONFIG_DEBUG(
462 : PLF_TASK,
463 : "[OpUnfoldCache][DumpSqeContent] lhwi1: opCode[%u] rd[%u] reserved0[%u] func3[%u] reserved1[%u] "
464 : "immd[%u]",
465 : ccoreWriteValueSqePtr->lhwi1.opCode, ccoreWriteValueSqePtr->lhwi1.rd,
466 : ccoreWriteValueSqePtr->lhwi1.reserved0, ccoreWriteValueSqePtr->lhwi1.func3,
467 : ccoreWriteValueSqePtr->lhwi1.reserved1, ccoreWriteValueSqePtr->lhwi1.immd);
468 0 : PLF_CONFIG_DEBUG(
469 : PLF_TASK,
470 : "[OpUnfoldCache][DumpSqeContent] sw: opCode[%u] immdLow[%u] func3[%u] rs1[%u] reserved1[%u] "
471 : "rs2[%u] reserved2[%u] immdHigh[%u]",
472 : ccoreWriteValueSqePtr->sw.opCode, ccoreWriteValueSqePtr->sw.immdLow,
473 : ccoreWriteValueSqePtr->sw.func3, ccoreWriteValueSqePtr->sw.rs1, ccoreWriteValueSqePtr->sw.reserved1,
474 : ccoreWriteValueSqePtr->sw.rs2, ccoreWriteValueSqePtr->sw.reserved2,
475 : ccoreWriteValueSqePtr->sw.immdHigh);
476 0 : PLF_CONFIG_DEBUG(
477 : PLF_TASK,
478 : "[OpUnfoldCache][DumpSqeContent] nop[0]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] "
479 : "reserved1[%u] immd[%u]",
480 : ccoreWriteValueSqePtr->nop[0].opCode, ccoreWriteValueSqePtr->nop[0].rd,
481 : ccoreWriteValueSqePtr->nop[0].reserved0, ccoreWriteValueSqePtr->nop[0].func3,
482 : ccoreWriteValueSqePtr->nop[0].rs1, ccoreWriteValueSqePtr->nop[0].reserved1,
483 : ccoreWriteValueSqePtr->nop[0].immd);
484 0 : PLF_CONFIG_DEBUG(
485 : PLF_TASK,
486 : "[OpUnfoldCache][DumpSqeContent] nop[1]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] "
487 : "reserved1[%u] immd[%u]",
488 : ccoreWriteValueSqePtr->nop[1].opCode, ccoreWriteValueSqePtr->nop[1].rd,
489 : ccoreWriteValueSqePtr->nop[1].reserved0, ccoreWriteValueSqePtr->nop[1].func3,
490 : ccoreWriteValueSqePtr->nop[1].rs1, ccoreWriteValueSqePtr->nop[1].reserved1,
491 : ccoreWriteValueSqePtr->nop[1].immd);
492 0 : PLF_CONFIG_DEBUG(
493 : PLF_TASK,
494 : "[OpUnfoldCache][DumpSqeContent] nop[2]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] "
495 : "reserved1[%u] immd[%u]",
496 : ccoreWriteValueSqePtr->nop[2].opCode, ccoreWriteValueSqePtr->nop[2].rd,
497 : ccoreWriteValueSqePtr->nop[2].reserved0, ccoreWriteValueSqePtr->nop[2].func3,
498 : ccoreWriteValueSqePtr->nop[2].rs1, ccoreWriteValueSqePtr->nop[2].reserved1,
499 : ccoreWriteValueSqePtr->nop[2].immd);
500 0 : PLF_CONFIG_DEBUG(
501 : PLF_TASK,
502 : "[OpUnfoldCache][DumpSqeContent] nop[3]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] "
503 : "reserved1[%u] immd[%u]",
504 : ccoreWriteValueSqePtr->nop[3].opCode, ccoreWriteValueSqePtr->nop[3].rd,
505 : ccoreWriteValueSqePtr->nop[3].reserved0, ccoreWriteValueSqePtr->nop[3].func3,
506 : ccoreWriteValueSqePtr->nop[3].rs1, ccoreWriteValueSqePtr->nop[3].reserved1,
507 : ccoreWriteValueSqePtr->nop[3].immd);
508 0 : PLF_CONFIG_DEBUG(
509 : PLF_TASK,
510 : "[OpUnfoldCache][DumpSqeContent] nop[4]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] "
511 : "reserved1[%u] immd[%u]",
512 : ccoreWriteValueSqePtr->nop[4].opCode, ccoreWriteValueSqePtr->nop[4].rd,
513 : ccoreWriteValueSqePtr->nop[4].reserved0, ccoreWriteValueSqePtr->nop[4].func3,
514 : ccoreWriteValueSqePtr->nop[4].rs1, ccoreWriteValueSqePtr->nop[4].reserved1,
515 : ccoreWriteValueSqePtr->nop[4].immd);
516 0 : PLF_CONFIG_DEBUG(
517 : PLF_TASK,
518 : "[OpUnfoldCache][DumpSqeContent] nop[5]: opCode[%u] rd[%u] reserved0[%u] func3[%u] rs1[%u] "
519 : "reserved1[%u] immd[%u]",
520 : ccoreWriteValueSqePtr->nop[5].opCode, ccoreWriteValueSqePtr->nop[5].rd,
521 : ccoreWriteValueSqePtr->nop[5].reserved0, ccoreWriteValueSqePtr->nop[5].func3,
522 : ccoreWriteValueSqePtr->nop[5].rs1, ccoreWriteValueSqePtr->nop[5].reserved1,
523 : ccoreWriteValueSqePtr->nop[5].immd);
524 0 : break;
525 : }
526 0 : case SqeType::NOTIFY_SQE_V2: {
527 0 : const rtStarsNotifySqeV2_t* notifyV2SqePtr = reinterpret_cast<const rtStarsNotifySqeV2_t*>(sqePtr);
528 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsNotifySqeV2_t sqeType[%u]", sqeType);
529 0 : CHK_RET(DumpSqeHeader(notifyV2SqePtr->header));
530 0 : PLF_CONFIG_DEBUG(
531 : PLF_TASK,
532 : "[OpUnfoldCache][DumpSqeContent] notify_id[%u] res2[%u] res3[%u] kernel_credit[%u] res4[%u]",
533 : notifyV2SqePtr->notify_id, notifyV2SqePtr->res2, notifyV2SqePtr->res3,
534 : notifyV2SqePtr->kernel_credit, notifyV2SqePtr->res);
535 0 : PLF_CONFIG_DEBUG(
536 : PLF_TASK,
537 : "[OpUnfoldCache][DumpSqeContent] res[0][%u] res[1][%u] res[2][%u] res[3][%u] res[4][%u] res[5][%u]",
538 : notifyV2SqePtr->res[0], notifyV2SqePtr->res[1], notifyV2SqePtr->res[2], notifyV2SqePtr->res[3],
539 : notifyV2SqePtr->res[4], notifyV2SqePtr->res[5]);
540 0 : PLF_CONFIG_DEBUG(
541 : PLF_TASK,
542 : "[OpUnfoldCache][DumpSqeContent] res[6][%u] res[7][%u] res[8][%u] res[9][%u] res[10][%u] "
543 : "res[11][%u]",
544 : notifyV2SqePtr->res[6], notifyV2SqePtr->res[7], notifyV2SqePtr->res[8], notifyV2SqePtr->res[9],
545 : notifyV2SqePtr->res[10], notifyV2SqePtr->res[11]);
546 0 : break;
547 : }
548 0 : case SqeType::WRITE_VALUE_SQE_V2: {
549 0 : const rtStarsWriteValueSqeV2_t* writeValueV2SqePtr
550 : = reinterpret_cast<const rtStarsWriteValueSqeV2_t*>(sqePtr);
551 0 : PLF_CONFIG_DEBUG(
552 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsWriteValueSqeV2_t sqeType[%u]", sqeType);
553 0 : CHK_RET(DumpSqeHeader(writeValueV2SqePtr->header));
554 0 : PLF_CONFIG_DEBUG(
555 : PLF_TASK,
556 : "[OpUnfoldCache][DumpSqeContent] reg_addr_low[0x%08x] reg_addr_high[0x%08x] awsize[%u] snoop[%u] "
557 : "res2[%u] awcache[%u] awprot[%u] VA[%u]",
558 : writeValueV2SqePtr->reg_addr_low, writeValueV2SqePtr->reg_addr_high, writeValueV2SqePtr->awsize,
559 : writeValueV2SqePtr->snoop, writeValueV2SqePtr->res2, writeValueV2SqePtr->awcache,
560 : writeValueV2SqePtr->awprot, writeValueV2SqePtr->VA);
561 0 : PLF_CONFIG_DEBUG(
562 : PLF_TASK,
563 : "[OpUnfoldCache][DumpSqeContent] write_val[0][%u] write_val[1][%u] write_val[2][%u] "
564 : "write_val[3][%u] write_val[4][%u] write_val[5][%u] write_val[6][%u] write_val[7][%u]",
565 : writeValueV2SqePtr->write_val[0], writeValueV2SqePtr->write_val[1],
566 : writeValueV2SqePtr->write_val[2], writeValueV2SqePtr->write_val[3],
567 : writeValueV2SqePtr->write_val[4], writeValueV2SqePtr->write_val[5],
568 : writeValueV2SqePtr->write_val[6], writeValueV2SqePtr->write_val[7]);
569 0 : PLF_CONFIG_DEBUG(
570 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res[0][%u] res[1][%u] res[2][%u] res[3][%u]",
571 : writeValueV2SqePtr->res[0], writeValueV2SqePtr->res[1], writeValueV2SqePtr->res[2],
572 : writeValueV2SqePtr->res[3]);
573 0 : break;
574 : }
575 0 : case SqeType::EVENT_SQE_V2: {
576 0 : const rtStarsEventSqeV2_t* eventV2SqePtr = reinterpret_cast<const rtStarsEventSqeV2_t*>(sqePtr);
577 0 : PLF_CONFIG_DEBUG(PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsEventSqeV2_t sqeType[%u]", sqeType);
578 0 : PLF_CONFIG_DEBUG(
579 : PLF_TASK,
580 : "[OpUnfoldCache][DumpSqeContent] type[%u] ie[%u] pre_p[%u] post_p[%u] wr_cqe[%u] res0[%u] flag[%u] "
581 : "rt_stream_id[%u] task_id[%u] event_id[%u]",
582 : eventV2SqePtr->type, eventV2SqePtr->ie, eventV2SqePtr->pre_p, eventV2SqePtr->post_p,
583 : eventV2SqePtr->wr_cqe, eventV2SqePtr->res0, eventV2SqePtr->flag, eventV2SqePtr->rt_stream_id,
584 : eventV2SqePtr->task_id, eventV2SqePtr->event_id);
585 0 : PLF_CONFIG_DEBUG(
586 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res2[%u] res3[%u] kernel_credit[%u] res4[%u] offset[%u]",
587 : eventV2SqePtr->res2, eventV2SqePtr->res3, eventV2SqePtr->kernel_credit, eventV2SqePtr->res4,
588 : eventV2SqePtr->offset);
589 0 : PLF_CONFIG_DEBUG(
590 : PLF_TASK,
591 : "[OpUnfoldCache][DumpSqeContent] res6[0][%u] res6[1][%u] res6[2][%u] res6[3][%u] res6[4][%u] "
592 : "res6[5][%u] res6[6][%u] res6[7][%u] res6[8][%u] res6[9][%u] res6[10][%u] res6[11][%u]",
593 : eventV2SqePtr->res6[0], eventV2SqePtr->res6[1], eventV2SqePtr->res6[2], eventV2SqePtr->res6[3],
594 : eventV2SqePtr->res6[4], eventV2SqePtr->res6[5], eventV2SqePtr->res6[6], eventV2SqePtr->res6[7],
595 : eventV2SqePtr->res6[8], eventV2SqePtr->res6[9], eventV2SqePtr->res6[10], eventV2SqePtr->res6[11]);
596 0 : break;
597 : }
598 0 : case SqeType::MEMCPY_ASYNC_SQE_V2: {
599 0 : const rtStarsMemcpyAsyncSqeV2_t* memcpyAsyncV2SqePtr
600 : = reinterpret_cast<const rtStarsMemcpyAsyncSqeV2_t*>(sqePtr);
601 0 : PLF_CONFIG_DEBUG(
602 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsMemcpyAsyncSqeV2_t sqeType[%u]", sqeType);
603 0 : PLF_CONFIG_DEBUG(
604 : PLF_TASK,
605 : "[OpUnfoldCache][DumpSqeContent] type[%u] ie[%u] pre_p[%u] post_p[%u] wr_cqe[%u] res0[%u] "
606 : "l2_lock[%u] l2_unlock[%u] res1[%u] rt_stream_id[%u] task_id[%u]",
607 : memcpyAsyncV2SqePtr->type, memcpyAsyncV2SqePtr->ie, memcpyAsyncV2SqePtr->pre_p,
608 : memcpyAsyncV2SqePtr->post_p, memcpyAsyncV2SqePtr->wr_cqe, memcpyAsyncV2SqePtr->res0,
609 : memcpyAsyncV2SqePtr->l2_lock, memcpyAsyncV2SqePtr->l2_unlock, memcpyAsyncV2SqePtr->res1,
610 : memcpyAsyncV2SqePtr->rt_stream_id, memcpyAsyncV2SqePtr->task_id);
611 0 : PLF_CONFIG_DEBUG(
612 : PLF_TASK,
613 : "[OpUnfoldCache][DumpSqeContent] res2[%u] res3[%u] kernel_credit[%u] res4[%u] opcode[%u] "
614 : "ie_dma[%u] sssv[%u] dssv[%u] sns[%u] dns[%u] qos[%u] sro[%u] dro[%u] overflow_en[%u] res5[%u]",
615 : memcpyAsyncV2SqePtr->res2, memcpyAsyncV2SqePtr->res3, memcpyAsyncV2SqePtr->kernel_credit,
616 : memcpyAsyncV2SqePtr->res4, memcpyAsyncV2SqePtr->opcode, memcpyAsyncV2SqePtr->ie_dma,
617 : memcpyAsyncV2SqePtr->sssv, memcpyAsyncV2SqePtr->dssv, memcpyAsyncV2SqePtr->sns,
618 : memcpyAsyncV2SqePtr->dns, memcpyAsyncV2SqePtr->qos, memcpyAsyncV2SqePtr->sro,
619 : memcpyAsyncV2SqePtr->dro, memcpyAsyncV2SqePtr->overflow_en, memcpyAsyncV2SqePtr->res5);
620 0 : PLF_CONFIG_DEBUG(
621 : PLF_TASK,
622 : "[OpUnfoldCache][DumpSqeContent] src_streamid[%u] src_substreamid[%u] dst_streamid[%u] "
623 : "dst_substreamid[%u] length[%u]",
624 : memcpyAsyncV2SqePtr->src_streamid, memcpyAsyncV2SqePtr->src_substreamid,
625 : memcpyAsyncV2SqePtr->dst_streamid, memcpyAsyncV2SqePtr->dst_substreamid,
626 : memcpyAsyncV2SqePtr->length);
627 0 : PLF_CONFIG_DEBUG(
628 : PLF_TASK,
629 : "[OpUnfoldCache][DumpSqeContent] src_addr_low[0x%08x] src_addr_high[0x%08x] dst_addr_low[0x%08x] "
630 : "dst_addr_high[0x%08x] overflow_addr_low[0x%08x] overflow_addr_high[0x%08x]",
631 : memcpyAsyncV2SqePtr->src_addr_low, memcpyAsyncV2SqePtr->src_addr_high,
632 : memcpyAsyncV2SqePtr->dst_addr_low, memcpyAsyncV2SqePtr->dst_addr_high,
633 : memcpyAsyncV2SqePtr->overflow_addr_low, memcpyAsyncV2SqePtr->overflow_addr_high);
634 0 : break;
635 : }
636 0 : case SqeType::FLIP_PLACEHOLDER_SQE: {
637 0 : const rtStarsPlaceHolderSqe_t* placeholderSqePtr
638 : = reinterpret_cast<const rtStarsPlaceHolderSqe_t*>(sqePtr);
639 0 : PLF_CONFIG_DEBUG(
640 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsPlaceHolderSqe_t sqeType[%u]", sqeType);
641 0 : CHK_RET(DumpSqeHeader(placeholderSqePtr->header));
642 0 : PLF_CONFIG_DEBUG(
643 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res1[%u] res2[%u] kernel_credit[%u] res3[%u]",
644 : placeholderSqePtr->res1, placeholderSqePtr->res2, placeholderSqePtr->kernel_credit,
645 : placeholderSqePtr->res3);
646 0 : PLF_CONFIG_DEBUG(
647 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] u.flip_task_info: flipNumReport[%u]",
648 : placeholderSqePtr->u.flip_task_info.flipNumReport);
649 : // 注意: 无需打印u.flip_task_info中的reserved数组
650 : // 注意: 无需打印union中的resv数组
651 0 : break;
652 : }
653 0 : case SqeType::CACHE_MEMCPY_PLACEHOLDER_SQE: {
654 0 : const rtStarsPlaceHolderSqe_t* placeholderSqePtr
655 : = reinterpret_cast<const rtStarsPlaceHolderSqe_t*>(sqePtr);
656 0 : PLF_CONFIG_DEBUG(
657 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsPlaceHolderSqe_t sqeType[%u]", sqeType);
658 0 : CHK_RET(DumpSqeHeader(placeholderSqePtr->header));
659 0 : PLF_CONFIG_DEBUG(
660 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res1[%u] res2[%u] kernel_credit[%u] res3[%u]",
661 : placeholderSqePtr->res1, placeholderSqePtr->res2, placeholderSqePtr->kernel_credit,
662 : placeholderSqePtr->res3);
663 0 : PLF_CONFIG_DEBUG(
664 : PLF_TASK,
665 : "[OpUnfoldCache][DumpSqeContent] u.cache_memcpy_task_info: src_addr_low[0x%08x] "
666 : "src_addr_high[0x%08x] dst_addr_low[0x%08x] dst_addr_high[0x%08x]",
667 : placeholderSqePtr->u.cache_memcpy_task_info.src_addr_low,
668 : placeholderSqePtr->u.cache_memcpy_task_info.src_addr_high,
669 : placeholderSqePtr->u.cache_memcpy_task_info.dst_addr_low,
670 : placeholderSqePtr->u.cache_memcpy_task_info.dst_addr_high);
671 0 : PLF_CONFIG_DEBUG(
672 : PLF_TASK,
673 : "[OpUnfoldCache][DumpSqeContent] u.cache_memcpy_task_info: kernel_credit[%u] linkType[%u]",
674 : placeholderSqePtr->u.cache_memcpy_task_info.kernel_credit,
675 : placeholderSqePtr->u.cache_memcpy_task_info.linkType);
676 : // 注意: 无需打印u.cache_memcpy_task_info中的reserved数组
677 : // 注意: 无需打印union中的resv数组
678 0 : break;
679 : }
680 0 : case SqeType::CACHE_NOTIFY_PLACEHOLDER_SQE: {
681 0 : const rtStarsPlaceHolderSqe_t* placeholderSqePtr
682 : = reinterpret_cast<const rtStarsPlaceHolderSqe_t*>(sqePtr);
683 0 : PLF_CONFIG_DEBUG(
684 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsPlaceHolderSqe_t sqeType[%u]", sqeType);
685 0 : CHK_RET(DumpSqeHeader(placeholderSqePtr->header));
686 0 : PLF_CONFIG_DEBUG(
687 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res1[%u] res2[%u] kernel_credit[%u] res3[%u]",
688 : placeholderSqePtr->res1, placeholderSqePtr->res2, placeholderSqePtr->kernel_credit,
689 : placeholderSqePtr->res3);
690 0 : PLF_CONFIG_DEBUG(
691 : PLF_TASK,
692 : "[OpUnfoldCache][DumpSqeContent] u.cache_notify_task_info: is_wait[%u] kernel_credit[%u] "
693 : "timeout[%u] notify_id[%u]",
694 : placeholderSqePtr->u.cache_notify_task_info.is_wait,
695 : placeholderSqePtr->u.cache_notify_task_info.kernel_credit,
696 : placeholderSqePtr->u.cache_notify_task_info.timeout,
697 : placeholderSqePtr->u.cache_notify_task_info.notify_id);
698 : // 注意: 无需打印u.cache_notify_task_info中的reserved数组
699 : // 注意: 无需打印union中的resv数组
700 0 : break;
701 : }
702 0 : case SqeType::CACHE_WRITE_VALUE_PLACEHOLDER_SQE: {
703 0 : const rtStarsPlaceHolderSqe_t* placeholderSqePtr
704 : = reinterpret_cast<const rtStarsPlaceHolderSqe_t*>(sqePtr);
705 0 : PLF_CONFIG_DEBUG(
706 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsPlaceHolderSqe_t sqeType[%u]", sqeType);
707 0 : CHK_RET(DumpSqeHeader(placeholderSqePtr->header));
708 0 : PLF_CONFIG_DEBUG(
709 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res1[%u] res2[%u] kernel_credit[%u] res3[%u]",
710 : placeholderSqePtr->res1, placeholderSqePtr->res2, placeholderSqePtr->kernel_credit,
711 : placeholderSqePtr->res3);
712 0 : PLF_CONFIG_DEBUG(
713 : PLF_TASK,
714 : "[OpUnfoldCache][DumpSqeContent] u.cache_write_value_task_info: write_addr_low[0x%08x] "
715 : "write_addr_high[0x%08x]",
716 : placeholderSqePtr->u.cache_write_value_task_info.write_addr_low,
717 : placeholderSqePtr->u.cache_write_value_task_info.write_addr_high);
718 : // 注意: 无需打印u.cache_write_value_task_info中的reserved数组
719 : // 注意: 无需打印union中的resv数组
720 0 : break;
721 : }
722 0 : case SqeType::CACHE_MEMCPY_RECORD_PLACEHOLDER_SQE: {
723 0 : const rtStarsPlaceHolderSqe_t* placeholderSqePtr
724 : = reinterpret_cast<const rtStarsPlaceHolderSqe_t*>(sqePtr);
725 0 : PLF_CONFIG_DEBUG(
726 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] rtStarsPlaceHolderSqe_t sqeType[%u]", sqeType);
727 0 : CHK_RET(DumpSqeHeader(placeholderSqePtr->header));
728 0 : PLF_CONFIG_DEBUG(
729 : PLF_TASK, "[OpUnfoldCache][DumpSqeContent] res1[%u] res2[%u] kernel_credit[%u] res3[%u]",
730 : placeholderSqePtr->res1, placeholderSqePtr->res2, placeholderSqePtr->kernel_credit,
731 : placeholderSqePtr->res3);
732 0 : PLF_CONFIG_DEBUG(
733 : PLF_TASK,
734 : "[OpUnfoldCache][DumpSqeContent] u.cache_memcpy_record_task_info: length[%u]"
735 : "src_addr_low[0x%08x] src_addr_high[0x%08x] dst_addr_low[0x%08x] dst_addr_high[0x%08x]",
736 : placeholderSqePtr->u.cache_memcpy_record_task_info.length,
737 : placeholderSqePtr->u.cache_memcpy_record_task_info.src_addr_low,
738 : placeholderSqePtr->u.cache_memcpy_record_task_info.src_addr_high,
739 : placeholderSqePtr->u.cache_memcpy_record_task_info.dst_addr_low,
740 : placeholderSqePtr->u.cache_memcpy_record_task_info.dst_addr_high);
741 0 : PLF_CONFIG_DEBUG(
742 : PLF_TASK,
743 : "[OpUnfoldCache][DumpSqeContent] u.cache_memcpy_record_task_info: opcode[%u]"
744 : "partid[%u] kernel_credit[%u] linkType[%u]",
745 : placeholderSqePtr->u.cache_memcpy_record_task_info.opcode,
746 : placeholderSqePtr->u.cache_memcpy_record_task_info.partid,
747 : placeholderSqePtr->u.cache_memcpy_record_task_info.kernel_credit,
748 : placeholderSqePtr->u.cache_memcpy_record_task_info.linkType);
749 : // 注意: 无需打印u.cache_memcpy_record_task_info中的reserved数组
750 : // 注意: 无需打印union中的resv数组
751 0 : break;
752 : }
753 12 : default: {
754 12 : HCCL_WARNING("[OpUnfoldCache][DumpSqeContent] sqeType %u is unsupported", sqeType);
755 12 : break; // This function only for debug, no need to return HCCL_E_NOT_SUPPORT (否则LLT会失败)
756 : }
757 : }
758 : }
759 :
760 12 : return HCCL_SUCCESS;
761 : }
762 :
763 0 : HcclResult OpUnfoldCache::DumpSqeHeader(const rtStarsSqeHeader_t& sqeHeader)
764 : {
765 0 : PLF_CONFIG_DEBUG(
766 : PLF_TASK,
767 : "[OpUnfoldCache][DumpSqeHeader] SQE header: type[%u] l1Lock[%u] l1Unlock[%u] ie[%u] preP[%u] postP[%u] "
768 : "wrCqe[%u]",
769 : sqeHeader.type, sqeHeader.l1Lock, sqeHeader.l1Unlock, sqeHeader.ie, sqeHeader.preP, sqeHeader.postP,
770 : sqeHeader.wrCqe);
771 0 : PLF_CONFIG_DEBUG(
772 : PLF_TASK, "[OpUnfoldCache][DumpSqeHeader] SQE header: reserved[%u] numBlocks[%u] rtStreamId[%u] taskId[%u]",
773 : sqeHeader.reserved, sqeHeader.blockDim, sqeHeader.rtStreamId, sqeHeader.taskId);
774 :
775 0 : return HCCL_SUCCESS;
776 : }
777 :
778 0 : HcclResult OpUnfoldCache::DumpSqeHeader(const rtStarsSqeHeaderV2_t& sqeHeader)
779 : {
780 0 : PLF_CONFIG_DEBUG(
781 : PLF_TASK,
782 : "[OpUnfoldCache][DumpSqeHeader] SQE header V2: type[%u] graph_lock[%u] graph_unlock[%u] ie[%u] pre_p[%u] "
783 : "post_p[%u] wr_cqe[%u]",
784 : sqeHeader.type, sqeHeader.graph_lock, sqeHeader.graph_unlock, sqeHeader.ie, sqeHeader.pre_p, sqeHeader.post_p,
785 : sqeHeader.wr_cqe);
786 0 : PLF_CONFIG_DEBUG(
787 : PLF_TASK,
788 : "[OpUnfoldCache][DumpSqeHeader] SQE header V2: res0[%u] l2_lock[%u] l2_unlock[%u] res1[%u] rt_stream_id[%u] "
789 : "task_id[%u]",
790 : sqeHeader.res0, sqeHeader.l2_lock, sqeHeader.l2_unlock, sqeHeader.res1, sqeHeader.rt_stream_id,
791 : sqeHeader.task_id);
792 :
793 0 : return HCCL_SUCCESS;
794 : }
795 : } // namespace hccl
|