LCOV - code coverage report
Current view: top level - legacy/ascend910/platform/common/unfold_cache - op_unfold_cache.cc (source / functions) Coverage Total Hit
Test: coverage.info Lines: 6.7 % 223 15
Test Date: 2026-08-04 10:52:23 Functions: 30.0 % 10 3

            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
        

Generated by: LCOV version 2.0-1