* This file is part of the MindStudio project.
* Copyright (c) 2025 Huawei Technologies Co.,Ltd.
*
* MindStudio is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
* ------------------------------------------------------------------------- */
#ifndef __CORE_PLATFORM_CONFIG_H__
#define __CORE_PLATFORM_CONFIG_H__
#include <cstdint>
#include <string>
#include <unordered_map>
* 所有工具复用此文件中的枚举
*/
constexpr int RADIX = 8;
enum class DeviceType : uint32_t {
ASCEND_910_PREMIUM_A = 0U,
ASCEND_910B_START,
ASCEND_910B1,
ASCEND_910B2,
ASCEND_910B3,
ASCEND_910B4,
ASCEND_910B_END,
ASCEND_310P,
ASCEND_950_START = 10,
ASCEND_950DT_950x,
ASCEND_950DT_950y,
ASCEND_950DT_9571,
ASCEND_950DT_9572,
ASCEND_950DT_9573,
ASCEND_950DT_9574,
ASCEND_950DT_9575,
ASCEND_950DT_9576,
ASCEND_950DT_9577,
ASCEND_950DT_9578,
ASCEND_950DT_9581,
ASCEND_950DT_9582,
ASCEND_950DT_9583,
ASCEND_950DT_9584,
ASCEND_950DT_9585,
ASCEND_950DT_9586,
ASCEND_950DT_9587,
ASCEND_950DT_9588,
ASCEND_950DT_9591,
ASCEND_950DT_9592,
ASCEND_950DT_9595,
ASCEND_950DT_9596,
ASCEND_950DT_95A1,
ASCEND_950DT_95A2,
ASCEND_950PR_950z,
ASCEND_950PR_9579,
ASCEND_950PR_957b,
ASCEND_950PR_957c,
ASCEND_950PR_957d,
ASCEND_950PR_9589,
ASCEND_950PR_958b,
ASCEND_950PR_9599,
ASCEND_950_END,
INVALID = 0xFFFFFFFFU,
};
enum class KernelType : uint8_t {
AICPU = 0,
AIVEC,
AICUBE,
MIX,
INVALID,
};
enum class ChipProductType : uint32_t {
ALL_PRODUCT_TYPE = 0,
UNKNOWN_PRODUCT_TYPE = 1,
ASCEND310P_SERIES = 1 << RADIX,
ASCEND310P1,
ASCEND310P2,
ASCEND310P3,
ASCEND310P4,
ASCEND310P5,
ASCEND310P7,
ASCEND310B_SERIES = 2 << RADIX,
ASCEND310B1,
ASCEND310B2,
ASCEND310B3,
ASCEND310B4,
ASCEND910B_SERIES = 3 << RADIX,
ASCEND910B1,
ASCEND910B2,
ASCEND910B3,
ASCEND910B4,
ASCEND910B2C,
ASCEND910B4_1,
ASCEND910_93_SERIES = 4 << RADIX,
ASCEND910_9391,
ASCEND910_9392,
ASCEND910_9381,
ASCEND910_9382,
ASCEND910_9372,
ASCEND910_9362,
ASCEND310_SERIES = 5 << RADIX,
ASCEND310,
ASCEND910A_SERIES = 6 << RADIX,
ASCEND910A,
ASCEND910B,
ASCEND910PROA,
ASCEND910PROB,
ASCEND910PREMIUMA,
ASCEND610_SERIES = 7 << RADIX,
ASCEND615_SERIES = 8 << RADIX,
ASCEND950_SERIES = 9 << RADIX,
ASCEND950DT_950X,
ASCEND950DT_950Y,
ASCEND950DT_9571,
ASCEND950DT_9572,
ASCEND950DT_9573,
ASCEND950DT_9574,
ASCEND950DT_9575,
ASCEND950DT_9576,
ASCEND950DT_9577,
ASCEND950DT_9578,
ASCEND950DT_9581,
ASCEND950DT_9582,
ASCEND950DT_9583,
ASCEND950DT_9584,
ASCEND950DT_9585,
ASCEND950DT_9586,
ASCEND950DT_9587,
ASCEND950DT_9588,
ASCEND950DT_9591,
ASCEND950DT_9592,
ASCEND950DT_9595,
ASCEND950DT_9596,
ASCEND950DT_95A1,
ASCEND950DT_95A2,
ASCEND950PR_950Z,
ASCEND950PR_9579,
ASCEND950PR_957B,
ASCEND950PR_957C,
ASCEND950PR_957D,
ASCEND950PR_9589,
ASCEND950PR_958B,
ASCEND950PR_9599,
};
const std::unordered_map<std::string, ChipProductType> SOC_STRING_TO_CHIP_PRODUCT{
{"Ascend910B1", ChipProductType::ASCEND910B1},
{"Ascend910B2", ChipProductType::ASCEND910B2},
{"Ascend910B3", ChipProductType::ASCEND910B3},
{"Ascend910B4", ChipProductType::ASCEND910B4},
{"Ascend910B2C", ChipProductType::ASCEND910B2C},
{"Ascend910B4-1", ChipProductType::ASCEND910B4_1},
{"Ascend910_9391", ChipProductType::ASCEND910_9391},
{"Ascend910_9392", ChipProductType::ASCEND910_9392},
{"Ascend910_9381", ChipProductType::ASCEND910_9381},
{"Ascend910_9382", ChipProductType::ASCEND910_9382},
{"Ascend910_9372", ChipProductType::ASCEND910_9372},
{"Ascend910_9362", ChipProductType::ASCEND910_9362},
{"Ascend310B1", ChipProductType::ASCEND310B1},
{"Ascend310B2", ChipProductType::ASCEND310B2},
{"Ascend310B3", ChipProductType::ASCEND310B3},
{"Ascend310B4", ChipProductType::ASCEND310B4},
{"Ascend310P1", ChipProductType::ASCEND310P1},
{"Ascend310P2", ChipProductType::ASCEND310P2},
{"Ascend310P3", ChipProductType::ASCEND310P3},
{"Ascend310P4", ChipProductType::ASCEND310P4},
{"Ascend310P5", ChipProductType::ASCEND310P5},
{"Ascend310P7", ChipProductType::ASCEND310P7},
{"Ascend310", ChipProductType::ASCEND310},
{"Ascend910A", ChipProductType::ASCEND910A},
{"Ascend910B", ChipProductType::ASCEND910B},
{"Ascend910ProA", ChipProductType::ASCEND910PROA},
{"Ascend910ProB", ChipProductType::ASCEND910PROB},
{"AscendPremiumA", ChipProductType::ASCEND910PREMIUMA},
{"Ascend950DT_950x", ChipProductType::ASCEND950DT_950X},
{"Ascend950DT_950y", ChipProductType::ASCEND950DT_950Y},
{"Ascend950DT_9571", ChipProductType::ASCEND950DT_9571},
{"Ascend950DT_9572", ChipProductType::ASCEND950DT_9572},
{"Ascend950DT_9573", ChipProductType::ASCEND950DT_9573},
{"Ascend950DT_9574", ChipProductType::ASCEND950DT_9574},
{"Ascend950DT_9575", ChipProductType::ASCEND950DT_9575},
{"Ascend950DT_9576", ChipProductType::ASCEND950DT_9576},
{"Ascend950DT_9577", ChipProductType::ASCEND950DT_9577},
{"Ascend950DT_9578", ChipProductType::ASCEND950DT_9578},
{"Ascend950DT_9581", ChipProductType::ASCEND950DT_9581},
{"Ascend950DT_9582", ChipProductType::ASCEND950DT_9582},
{"Ascend950DT_9583", ChipProductType::ASCEND950DT_9583},
{"Ascend950DT_9584", ChipProductType::ASCEND950DT_9584},
{"Ascend950DT_9585", ChipProductType::ASCEND950DT_9585},
{"Ascend950DT_9586", ChipProductType::ASCEND950DT_9586},
{"Ascend950DT_9587", ChipProductType::ASCEND950DT_9587},
{"Ascend950DT_9588", ChipProductType::ASCEND950DT_9588},
{"Ascend950DT_9591", ChipProductType::ASCEND950DT_9591},
{"Ascend950DT_9592", ChipProductType::ASCEND950DT_9592},
{"Ascend950DT_9595", ChipProductType::ASCEND950DT_9595},
{"Ascend950DT_9596", ChipProductType::ASCEND950DT_9596},
{"Ascend950DT_95A1", ChipProductType::ASCEND950DT_95A1},
{"Ascend950DT_95A2", ChipProductType::ASCEND950DT_95A2},
{"Ascend950PR_950z", ChipProductType::ASCEND950PR_950Z},
{"Ascend950PR_9579", ChipProductType::ASCEND950PR_9579},
{"Ascend950PR_957b", ChipProductType::ASCEND950PR_957B},
{"Ascend950PR_957c", ChipProductType::ASCEND950PR_957C},
{"Ascend950PR_957d", ChipProductType::ASCEND950PR_957D},
{"Ascend950PR_9589", ChipProductType::ASCEND950PR_9589},
{"Ascend950PR_958b", ChipProductType::ASCEND950PR_958B},
{"Ascend950PR_9599", ChipProductType::ASCEND950PR_9599},
};
const std::unordered_map<ChipProductType, DeviceType> CHIP_PRODUCT_TO_DEVICE_TYPE = {
{ChipProductType::ASCEND910PREMIUMA, DeviceType::ASCEND_910_PREMIUM_A},
{ChipProductType::ASCEND910B1, DeviceType::ASCEND_910B1},
{ChipProductType::ASCEND910B2, DeviceType::ASCEND_910B2},
{ChipProductType::ASCEND910B2C, DeviceType::ASCEND_910B2},
{ChipProductType::ASCEND910B3, DeviceType::ASCEND_910B3},
{ChipProductType::ASCEND910B4, DeviceType::ASCEND_910B4},
{ChipProductType::ASCEND910B4_1, DeviceType::ASCEND_910B4},
{ChipProductType::ASCEND910_9391, DeviceType::ASCEND_910B1},
{ChipProductType::ASCEND910_9392, DeviceType::ASCEND_910B1},
{ChipProductType::ASCEND910_9381, DeviceType::ASCEND_910B2},
{ChipProductType::ASCEND910_9382, DeviceType::ASCEND_910B2},
{ChipProductType::ASCEND910_9372, DeviceType::ASCEND_910B3},
{ChipProductType::ASCEND910_9362, DeviceType::ASCEND_910B4},
{ChipProductType::ASCEND310P1, DeviceType::ASCEND_310P},
{ChipProductType::ASCEND310P3, DeviceType::ASCEND_310P},
{ChipProductType::ASCEND310P5, DeviceType::ASCEND_310P},
{ChipProductType::ASCEND310P7, DeviceType::ASCEND_310P},
{ChipProductType::ASCEND950DT_950X, DeviceType::ASCEND_950DT_950x},
{ChipProductType::ASCEND950DT_950Y, DeviceType::ASCEND_950DT_950y},
{ChipProductType::ASCEND950DT_9571, DeviceType::ASCEND_950DT_9571},
{ChipProductType::ASCEND950DT_9572, DeviceType::ASCEND_950DT_9572},
{ChipProductType::ASCEND950DT_9573, DeviceType::ASCEND_950DT_9573},
{ChipProductType::ASCEND950DT_9574, DeviceType::ASCEND_950DT_9574},
{ChipProductType::ASCEND950DT_9575, DeviceType::ASCEND_950DT_9575},
{ChipProductType::ASCEND950DT_9576, DeviceType::ASCEND_950DT_9576},
{ChipProductType::ASCEND950DT_9577, DeviceType::ASCEND_950DT_9577},
{ChipProductType::ASCEND950DT_9578, DeviceType::ASCEND_950DT_9578},
{ChipProductType::ASCEND950DT_9581, DeviceType::ASCEND_950DT_9581},
{ChipProductType::ASCEND950DT_9582, DeviceType::ASCEND_950DT_9582},
{ChipProductType::ASCEND950DT_9583, DeviceType::ASCEND_950DT_9583},
{ChipProductType::ASCEND950DT_9584, DeviceType::ASCEND_950DT_9584},
{ChipProductType::ASCEND950DT_9585, DeviceType::ASCEND_950DT_9585},
{ChipProductType::ASCEND950DT_9586, DeviceType::ASCEND_950DT_9586},
{ChipProductType::ASCEND950DT_9587, DeviceType::ASCEND_950DT_9587},
{ChipProductType::ASCEND950DT_9588, DeviceType::ASCEND_950DT_9588},
{ChipProductType::ASCEND950DT_9591, DeviceType::ASCEND_950DT_9591},
{ChipProductType::ASCEND950DT_9592, DeviceType::ASCEND_950DT_9592},
{ChipProductType::ASCEND950DT_9595, DeviceType::ASCEND_950DT_9595},
{ChipProductType::ASCEND950DT_9596, DeviceType::ASCEND_950DT_9596},
{ChipProductType::ASCEND950DT_95A1, DeviceType::ASCEND_950DT_95A1},
{ChipProductType::ASCEND950DT_95A2, DeviceType::ASCEND_950DT_95A2},
{ChipProductType::ASCEND950PR_950Z, DeviceType::ASCEND_950PR_950z},
{ChipProductType::ASCEND950PR_9579, DeviceType::ASCEND_950PR_9579},
{ChipProductType::ASCEND950PR_957B, DeviceType::ASCEND_950PR_957b},
{ChipProductType::ASCEND950PR_957C, DeviceType::ASCEND_950PR_957c},
{ChipProductType::ASCEND950PR_957D, DeviceType::ASCEND_950PR_957d},
{ChipProductType::ASCEND950PR_9589, DeviceType::ASCEND_950PR_9589},
{ChipProductType::ASCEND950PR_958B, DeviceType::ASCEND_950PR_958b},
{ChipProductType::ASCEND950PR_9599, DeviceType::ASCEND_950PR_9599},
};
inline ChipProductType GetProductSeriesType(const ChipProductType& chipProductType)
{
return static_cast<ChipProductType>((static_cast<uint32_t>(chipProductType) >> RADIX) << RADIX);
}
inline bool IsChipSeriesTypeValid(const ChipProductType& inputType, const ChipProductType& requiredType)
{
if (requiredType == ChipProductType::ALL_PRODUCT_TYPE) {
return true;
}
return GetProductSeriesType(inputType) == requiredType;
}
inline ChipProductType GetProductTypeBySocVersion(const std::string &socVersion)
{
auto it = SOC_STRING_TO_CHIP_PRODUCT.find(socVersion);
ChipProductType chipType = it == SOC_STRING_TO_CHIP_PRODUCT.end() ? ChipProductType::UNKNOWN_PRODUCT_TYPE : it->second;
return chipType;
}
inline ChipProductType GetProductSeriesType(const std::string &socVersion)
{
ChipProductType chipProductType = GetProductTypeBySocVersion(socVersion);
if (chipProductType == ChipProductType::UNKNOWN_PRODUCT_TYPE) {
return chipProductType;
}
return GetProductSeriesType(chipProductType);
}
inline DeviceType GetDeviceTypeBySocVersion(const std::string &socVersion)
{
auto it = SOC_STRING_TO_CHIP_PRODUCT.find(socVersion);
ChipProductType chipType = it == SOC_STRING_TO_CHIP_PRODUCT.end() ? ChipProductType::UNKNOWN_PRODUCT_TYPE : it->second;
auto it2 = CHIP_PRODUCT_TO_DEVICE_TYPE.find(chipType);
DeviceType deviceType = it2 == CHIP_PRODUCT_TO_DEVICE_TYPE.end() ? DeviceType::INVALID : it2->second;
return deviceType;
}
constexpr uint8_t C220_VEC_SUB_BLOCKDIM = 2;
constexpr uint8_t C220_CUBE_SUB_BLOCKDIM = 1;
constexpr uint8_t C220_MIX_SUB_BLOCKDIM = C220_VEC_SUB_BLOCKDIM + C220_CUBE_SUB_BLOCKDIM;
constexpr uint64_t MB_TO_BYTES = 1024 * 1024UL;
constexpr uint16_t MAX_RECORD_BUF_SIZE_EACH_BLOCK = 8 * 1024;
constexpr uint16_t MAX_RECORD_BUF_SIZE_ALL_BLOCK = 24 * 1024;
constexpr uint16_t SINGLE_CHECK_OTHER_BLOCK_CACHE_SIZE = 1;
#endif