LCOV - code coverage report
Current view: top level - adump/impl - dump_datatype.cpp (source / functions) Coverage Total Hit
Test: coverage.info Lines: 77.1 % 35 27
Test Date: 2026-08-31 10:09:28 Functions: 71.4 % 7 5

            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 "dump_datatype.h"
      12              : #include <map>
      13              : #include "log/adx_log.h"
      14              : #include "proto/dump_task.pb.h"
      15              : namespace Adx {
      16              : namespace {
      17              : static constexpr uint32_t K_BIT_NUM_OF_ONE_BYTE = 8U;
      18              : const std::map<GeDataType, ProtoDataType> GE_DT_TO_PROTO_DT = {
      19              :     {GeDataType::DT_FLOAT, ProtoDataType::DT_FLOAT},
      20              :     {GeDataType::DT_FLOAT16, ProtoDataType::DT_FLOAT16},
      21              :     {GeDataType::DT_INT8, ProtoDataType::DT_INT8},
      22              :     {GeDataType::DT_INT16, ProtoDataType::DT_INT16},
      23              :     {GeDataType::DT_UINT16, ProtoDataType::DT_UINT16},
      24              :     {GeDataType::DT_UINT8, ProtoDataType::DT_UINT8},
      25              :     {GeDataType::DT_INT32, ProtoDataType::DT_INT32},
      26              :     {GeDataType::DT_INT64, ProtoDataType::DT_INT64},
      27              :     {GeDataType::DT_UINT32, ProtoDataType::DT_UINT32},
      28              :     {GeDataType::DT_UINT64, ProtoDataType::DT_UINT64},
      29              :     {GeDataType::DT_BOOL, ProtoDataType::DT_BOOL},
      30              :     {GeDataType::DT_DOUBLE, ProtoDataType::DT_DOUBLE},
      31              :     {GeDataType::DT_STRING, ProtoDataType::DT_STRING},
      32              :     {GeDataType::DT_DUAL_SUB_INT8, ProtoDataType::DT_DUAL_SUB_INT8},
      33              :     {GeDataType::DT_DUAL_SUB_UINT8, ProtoDataType::DT_DUAL_SUB_UINT8},
      34              :     {GeDataType::DT_COMPLEX64, ProtoDataType::DT_COMPLEX64},
      35              :     {GeDataType::DT_COMPLEX128, ProtoDataType::DT_COMPLEX128},
      36              :     {GeDataType::DT_QINT8, ProtoDataType::DT_QINT8},
      37              :     {GeDataType::DT_QINT16, ProtoDataType::DT_QINT16},
      38              :     {GeDataType::DT_QINT32, ProtoDataType::DT_QINT32},
      39              :     {GeDataType::DT_QUINT8, ProtoDataType::DT_QUINT8},
      40              :     {GeDataType::DT_QUINT16, ProtoDataType::DT_QUINT16},
      41              :     {GeDataType::DT_RESOURCE, ProtoDataType::DT_RESOURCE},
      42              :     {GeDataType::DT_STRING_REF, ProtoDataType::DT_STRING_REF},
      43              :     {GeDataType::DT_DUAL, ProtoDataType::DT_DUAL},
      44              :     {GeDataType::DT_VARIANT, ProtoDataType::DT_VARIANT},
      45              :     {GeDataType::DT_BF16, ProtoDataType::DT_BF16},
      46              :     {GeDataType::DT_UNDEFINED, ProtoDataType::DT_UNDEFINED},
      47              :     {GeDataType::DT_INT4, ProtoDataType::DT_INT4},
      48              :     {GeDataType::DT_UINT1, ProtoDataType::DT_UINT1},
      49              :     {GeDataType::DT_INT2, ProtoDataType::DT_INT2},
      50              :     {GeDataType::DT_UINT2, ProtoDataType::DT_UINT2},
      51              :     {GeDataType::DT_COMPLEX32, ProtoDataType::DT_COMPLEX32},
      52              :     {GeDataType::DT_HIFLOAT8, ProtoDataType::DT_HIFLOAT8},
      53              :     {GeDataType::DT_FLOAT8_E5M2, ProtoDataType::DT_FLOAT8_E5M2},
      54              :     {GeDataType::DT_FLOAT8_E4M3FN, ProtoDataType::DT_FLOAT8_E4M3FN},
      55              :     {GeDataType::DT_FLOAT8_E8M0, ProtoDataType::DT_FLOAT8_E8M0},
      56              :     {GeDataType::DT_FLOAT6_E3M2, ProtoDataType::DT_FLOAT6_E3M2},
      57              :     {GeDataType::DT_FLOAT6_E2M3, ProtoDataType::DT_FLOAT6_E2M3},
      58              :     {GeDataType::DT_FLOAT4_E2M1, ProtoDataType::DT_FLOAT4_E2M1},
      59              :     {GeDataType::DT_FLOAT4_E1M2, ProtoDataType::DT_FLOAT4_E1M2},
      60              :     {GeDataType::DT_HIFLOAT4, ProtoDataType::DT_HIFLOAT4},
      61              :     {GeDataType::DT_HIFLOAT4_SCALE, ProtoDataType::DT_HIFLOAT4_SCALE},
      62              : };
      63              : 
      64              : static const std::map<toolkit::dump::OutputDataType, std::string> DT_STRING_MAPS = {
      65              :     {toolkit::dump::DT_UNDEFINED, "DT_UNDEFINED"},
      66              :     {toolkit::dump::DT_FLOAT, "DT_FLOAT"},
      67              :     {toolkit::dump::DT_FLOAT16, "DT_FLOAT16"},
      68              :     {toolkit::dump::DT_INT8, "DT_INT8"},
      69              :     {toolkit::dump::DT_UINT8, "DT_UINT8"},
      70              :     {toolkit::dump::DT_INT16, "DT_INT16"},
      71              :     {toolkit::dump::DT_UINT16, "DT_UINT16"},
      72              :     {toolkit::dump::DT_INT32, "DT_INT32"},
      73              :     {toolkit::dump::DT_INT64, "DT_INT64"},
      74              :     {toolkit::dump::DT_UINT32, "DT_UINT32"},
      75              :     {toolkit::dump::DT_UINT64, "DT_UINT64"},
      76              :     {toolkit::dump::DT_BOOL, "DT_BOOL"},
      77              :     {toolkit::dump::DT_DOUBLE, "DT_DOUBLE"},
      78              :     {toolkit::dump::DT_STRING, "DT_STRING"},
      79              :     {toolkit::dump::DT_DUAL_SUB_INT8, "DT_DUAL_SUB_INT8"},
      80              :     {toolkit::dump::DT_DUAL_SUB_UINT8, "DT_DUAL_SUB_UINT8"},
      81              :     {toolkit::dump::DT_COMPLEX64, "DT_COMPLEX64"},
      82              :     {toolkit::dump::DT_COMPLEX128, "DT_COMPLEX128"},
      83              :     {toolkit::dump::DT_QINT8, "DT_QINT8"},
      84              :     {toolkit::dump::DT_QINT16, "DT_QINT16"},
      85              :     {toolkit::dump::DT_QINT32, "DT_QINT32"},
      86              :     {toolkit::dump::DT_QUINT8, "DT_QUINT8"},
      87              :     {toolkit::dump::DT_QUINT16, "DT_QUINT16"},
      88              :     {toolkit::dump::DT_RESOURCE, "DT_RESOURCE"},
      89              :     {toolkit::dump::DT_STRING_REF, "DT_STRING_REF"},
      90              :     {toolkit::dump::DT_DUAL, "DT_DUAL"},
      91              :     {toolkit::dump::DT_VARIANT, "DT_VARIANT"},
      92              :     {toolkit::dump::DT_BF16, "DT_BF16"},
      93              :     {toolkit::dump::DT_INT4, "DT_INT4"},
      94              :     {toolkit::dump::DT_UINT1, "DT_UINT1"},
      95              :     {toolkit::dump::DT_INT2, "DT_INT2"},
      96              :     {toolkit::dump::DT_UINT2, "DT_UINT2"},
      97              :     {toolkit::dump::DT_HIFLOAT8, "DT_HIFLOAT8"},
      98              :     {toolkit::dump::DT_FLOAT8_E5M2, "DT_FLOAT8_E5M2"},
      99              :     {toolkit::dump::DT_FLOAT8_E4M3FN, "DT_FLOAT8_E4M3FN"},
     100              :     {toolkit::dump::DT_FLOAT8_E8M0, "DT_FLOAT8_E8M0"},
     101              :     {toolkit::dump::DT_FLOAT6_E3M2, "DT_FLOAT6_E3M2"},
     102              :     {toolkit::dump::DT_FLOAT6_E2M3, "DT_FLOAT6_E2M3"},
     103              :     {toolkit::dump::DT_FLOAT4_E2M1, "DT_FLOAT4_E2M1"},
     104              :     {toolkit::dump::DT_FLOAT4_E1M2, "DT_FLOAT4_E1M2"},
     105              :     {toolkit::dump::DT_HIFLOAT4, "DT_HIFLOAT4"},
     106              :     {toolkit::dump::DT_HIFLOAT4_SCALE, "DT_HIFLOAT4_SCALE"},
     107              : };
     108              : 
     109              : static const std::map<toolkit::dump::OutputFormat, std::string> FORMAT_STRING_MAPS = {
     110              :     {toolkit::dump::FORMAT_NCHW, "NCHW"},
     111              :     {toolkit::dump::FORMAT_NHWC, "NHWC"},
     112              :     {toolkit::dump::FORMAT_ND, "ND"},
     113              :     {toolkit::dump::FORMAT_NC1HWC0, "NC1HWC0"},
     114              :     {toolkit::dump::FORMAT_FRACTAL_Z, "FRACTAL_Z"},
     115              :     {toolkit::dump::FORMAT_NC1C0HWPAD, "NC1C0HWPAD"},
     116              :     {toolkit::dump::FORMAT_NHWC1C0, "NHWC1C0"},
     117              :     {toolkit::dump::FORMAT_FSR_NCHW, "FSR_NCHW"},
     118              :     {toolkit::dump::FORMAT_FRACTAL_DECONV, "FRACTAL_DECONV"},
     119              :     {toolkit::dump::FORMAT_C1HWNC0, "C1HWNC0"},
     120              :     {toolkit::dump::FORMAT_FRACTAL_DECONV_TRANSPOSE, "FRACTAL_DECONV_TRANSPOSE"},
     121              :     {toolkit::dump::FORMAT_FRACTAL_DECONV_SP_STRIDE_TRANS, "FRACTAL_DECONV_SP_STRIDE_TRANS"},
     122              :     {toolkit::dump::FORMAT_NC1HWC0_C04, "NC1HWC0_C04"},
     123              :     {toolkit::dump::FORMAT_FRACTAL_Z_C04, "FRACTAL_Z_C04"},
     124              :     {toolkit::dump::FORMAT_CHWN, "CHWN"},
     125              :     {toolkit::dump::FORMAT_FRACTAL_DECONV_SP_STRIDE8_TRANS, "FRACTAL_DECONV_SP_STRIDE8_TRANS"},
     126              :     {toolkit::dump::FORMAT_HWCN, "HWCN"},
     127              :     {toolkit::dump::FORMAT_NC1KHKWHWC0, "NC1KHKWHWC0"},
     128              :     {toolkit::dump::FORMAT_BN_WEIGHT, "BN_WEIGHT"},
     129              :     {toolkit::dump::FORMAT_FILTER_HWCK, "FILTER_HWCK"},
     130              :     {toolkit::dump::FORMAT_HASHTABLE_LOOKUP_LOOKUPS, "HASHTABLE_LOOKUP_LOOKUPS"},
     131              :     {toolkit::dump::FORMAT_HASHTABLE_LOOKUP_KEYS, "HASHTABLE_LOOKUP_KEYS"},
     132              :     {toolkit::dump::FORMAT_HASHTABLE_LOOKUP_VALUE, "HASHTABLE_LOOKUP_VALUE"},
     133              :     {toolkit::dump::FORMAT_HASHTABLE_LOOKUP_OUTPUT, "HASHTABLE_LOOKUP_OUTPUT"},
     134              :     {toolkit::dump::FORMAT_HASHTABLE_LOOKUP_HITS, "HASHTABLE_LOOKUP_HITS"},
     135              :     {toolkit::dump::FORMAT_C1HWNCoC0, "C1HWNCoC0"},
     136              :     {toolkit::dump::FORMAT_MD, "MD"},
     137              :     {toolkit::dump::FORMAT_NDHWC, "NDHWC"},
     138              :     {toolkit::dump::FORMAT_FRACTAL_ZZ, "FRACTAL_ZZ"},
     139              :     {toolkit::dump::FORMAT_FRACTAL_NZ, "FRACTAL_NZ"},
     140              :     {toolkit::dump::FORMAT_NCDHW, "NCDHW"},
     141              :     {toolkit::dump::FORMAT_DHWCH, "DHWCH"},
     142              :     {toolkit::dump::FORMAT_NDC1HWC0, "NDC1HWC0"},
     143              :     {toolkit::dump::FORMAT_FRACTAL_Z_3D, "FRACTAL_Z_3D"},
     144              :     {toolkit::dump::FORMAT_CN, "CN"},
     145              :     {toolkit::dump::FORMAT_NC, "NC"},
     146              :     {toolkit::dump::FORMAT_DHWNC, "DHWNC"},
     147              :     {toolkit::dump::FORMAT_FRACTAL_Z_3D_TRANSPOSE, "FRACTAL_Z_3D_TRANSPOSE"},
     148              :     {toolkit::dump::FORMAT_FRACTAL_ZN_LSTM, "FRACTAL_ZN_LSTM"},
     149              :     {toolkit::dump::FORMAT_FRACTAL_Z_G, "FRACTAL_Z_G"},
     150              :     {toolkit::dump::FORMAT_RESERVED, "RESERVED"},
     151              :     {toolkit::dump::FORMAT_ALL, "ALL"},
     152              :     {toolkit::dump::FORMAT_NULL, "NULL"},
     153              :     {toolkit::dump::FORMAT_ND_RNN_BIAS, "ND_RNN_BIAS"},
     154              :     {toolkit::dump::FORMAT_FRACTAL_ZN_RNN, "FRACTAL_ZN_RNN"},
     155              :     {toolkit::dump::FORMAT_NYUV, "NYUV"},
     156              :     {toolkit::dump::FORMAT_NYUV_A, "NYUV_A"},
     157              :     {toolkit::dump::FORMAT_NCL, "NCL"},
     158              :     {toolkit::dump::FORMAT_FRACTAL_Z_WINO, "FRACTAL_Z_WINO"},
     159              :     {toolkit::dump::FORMAT_C1HWC0, "C1HWC0"}};
     160              : } // namespace
     161              : 
     162            0 : inline int32_t GetPrimaryFormat(int32_t format) { return static_cast<int32_t>(static_cast<uint32_t>(format) & 0xffU); }
     163              : 
     164            0 : inline int32_t GetSubFormat(int32_t format)
     165              : {
     166            0 :     return static_cast<int32_t>((static_cast<uint32_t>(format) & 0xffff00U) >> K_BIT_NUM_OF_ONE_BYTE);
     167              : }
     168              : 
     169           34 : inline bool HasSubFormat(int32_t format) { return GetSubFormat(format) > 0; }
     170              : 
     171          130 : int32_t DumpDataType::GetIrDataType(GeDataType dataType)
     172              : {
     173          130 :     auto it = GE_DT_TO_PROTO_DT.find(dataType);
     174          130 :     int32_t protoDataType = it != GE_DT_TO_PROTO_DT.cend() ? static_cast<int32_t>(it->second) :
     175          130 :                                                              static_cast<int32_t>(ProtoDataType::DT_UNDEFINED);
     176          130 :     IDE_LOGI("Dump dataType conversion: input=%d, output=%d", static_cast<int32_t>(dataType), protoDataType);
     177          130 :     return protoDataType;
     178              : }
     179              : 
     180           34 : std::string DumpDataType::FormatToSerialString(const int32_t format)
     181              : {
     182           34 :     const auto it = FORMAT_STRING_MAPS.find(static_cast<toolkit::dump::OutputFormat>(GetPrimaryFormat(format)));
     183           34 :     if (it != FORMAT_STRING_MAPS.end()) {
     184           34 :         if (HasSubFormat(format)) {
     185            6 :             return std::string(it->second + ":" + std::to_string(GetSubFormat(format))).c_str();
     186              :         }
     187           56 :         return it->second.c_str();
     188              :     } else {
     189            0 :         IDE_LOGE("[Check][Param] Format not support %d", format);
     190            0 :         return "RESERVED";
     191              :     }
     192              : }
     193              : 
     194           34 : std::string DumpDataType::DataTypeToSerialString(const int32_t dataType)
     195              : {
     196           34 :     const auto it = DT_STRING_MAPS.find(static_cast<toolkit::dump::OutputDataType>(dataType));
     197           34 :     if (it != DT_STRING_MAPS.end()) {
     198           62 :         return it->second.c_str();
     199              :     } else {
     200            3 :         IDE_LOGE("DataTypeToSerialString: datatype not support %d", dataType);
     201            6 :         return "UNDEFINED";
     202              :     }
     203              : }
     204              : 
     205           23 : std::string DumpDataType::TensorTypeToSerialString(const TensorType tensorType)
     206              : {
     207           23 :     switch (tensorType) {
     208           15 :         case TensorType::INPUT:
     209           30 :             return "input";
     210            4 :         case TensorType::OUTPUT:
     211            8 :             return "output";
     212            4 :         case TensorType::WORKSPACE:
     213            8 :             return "workspace";
     214            0 :         default:
     215            0 :             IDE_LOGE("TensorTypeToSerialString: tensor type not support %d", static_cast<int32_t>(tensorType));
     216            0 :             return "unknown";
     217              :     }
     218              : }
     219              : } // namespace Adx
        

Generated by: LCOV version 2.0-1