You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
graphengine/third_party/fwkacllib/inc/runtime/config.h

192 lines
4.4 KiB

/**
* Copyright 2019-2020 Huawei Technologies Co., Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __CCE_RUNTIME_CONFIG_H__
#define __CCE_RUNTIME_CONFIG_H__
#include "base.h"
#ifdef __cplusplus
extern "C" {
#endif
#define PLAT_COMBINE(arch, chip, ver) ((arch << 16) | (chip << 8) | (ver))
#define PLAT_GET_ARCH(type) ((type >> 16) & 0xffff)
#define PLAT_GET_CHIP(type) ((type >> 8) & 0xff)
#define PLAT_GET_VER(type) (type & 0xff)
typedef enum tagRtArchType {
ARCH_BEGIN = 0,
ARCH_V100 = ARCH_BEGIN,
ARCH_V200,
ARCH_END,
} rtArchType_t;
typedef enum tagRtChipType {
CHIP_BEGIN = 0,
CHIP_MINI = CHIP_BEGIN,
CHIP_CLOUD,
CHIP_MDC,
CHIP_LHISI,
CHIP_DC,
CHIP_END,
} rtChipType_t;
typedef enum tagRtVersion {
VER_BEGIN = 0,
VER_NA = VER_BEGIN,
VER_ES,
VER_CS,
VER_END,
} rtVersion_t;
/* match rtChipType_t */
typedef enum tagRtPlatformType {
PLATFORM_BEGIN = 0,
PLATFORM_MINI_V1 = PLATFORM_BEGIN,
PLATFORM_CLOUD_V1,
PLATFORM_MINI_V2,
PLATFORM_LHISI_ES,
PLATFORM_LHISI_CS,
PLATFORM_END,
} rtPlatformType_t;
typedef enum tagRtCubeFracMKNFp16 {
RT_CUBE_MKN_FP16_2_16_16 = 0,
RT_CUBE_MKN_FP16_4_16_16,
RT_CUBE_MKN_FP16_16_16_16,
RT_CUBE_MKN_FP16_Default,
} rtCubeFracMKNFp16_t;
typedef enum tagRtCubeFracMKNInt8 {
RT_CUBE_MKN_INT8_2_32_16 = 0,
RT_CUBE_MKN_INT8_4_32_4,
RT_CUBE_MKN_INT8_4_32_16,
RT_CUBE_MKN_INT8_16_32_16,
RT_CUBE_MKN_INT8_Default,
} rtCubeFracMKNInt8_t;
typedef enum tagRtVecFracVmulMKNFp16 {
RT_VEC_VMUL_MKN_FP16_1_16_16 = 0,
RT_VEC_VMUL_MKN_FP16_Default,
} rtVecFracVmulMKNFp16_t;
typedef enum tagRtVecFracVmulMKNInt8 {
RT_VEC_VMUL_MKN_INT8_1_32_16 = 0,
RT_VEC_VMUL_MKN_INT8_Default,
} rtVecFracVmulMKNInt8_t;
typedef struct tagRtAiCoreSpec {
uint32_t cubeFreq;
uint32_t cubeMSize;
uint32_t cubeKSize;
uint32_t cubeNSize;
rtCubeFracMKNFp16_t cubeFracMKNFp16;
rtCubeFracMKNInt8_t cubeFracMKNInt8;
rtVecFracVmulMKNFp16_t vecFracVmulMKNFp16;
rtVecFracVmulMKNInt8_t vecFracVmulMKNInt8;
} rtAiCoreSpec_t;
typedef struct tagRtAiCoreRatesPara {
uint32_t ddrRate;
uint32_t l2Rate;
uint32_t l2ReadRate;
uint32_t l2WriteRate;
uint32_t l1ToL0ARate;
uint32_t l1ToL0BRate;
uint32_t l0CToUBRate;
uint32_t ubToL2;
uint32_t ubToDDR;
uint32_t ubToL1;
} rtAiCoreMemoryRates_t;
typedef struct tagRtMemoryConfig {
uint32_t flowtableSize;
uint32_t compilerSize;
} rtMemoryConfig_t;
typedef struct tagRtPlatformConfig { uint32_t platformConfig; } rtPlatformConfig_t;
/**
* @ingroup
* @brief get platform
* @param [in] platForm
* @return platForm
*/
RTS_API rtError_t rtGetPlatformConfig(rtPlatformConfig_t *platForm);
/**
* @ingroup
* @brief get AI core count
* @param [in] aiCoreCnt
* @return aiCoreCnt
*/
RTS_API rtError_t rtGetAiCoreCount(uint32_t *aiCoreCnt);
/**
* @ingroup
* @brief get AI cpu count
* @param [in] aiCpuCnt
* @return aiCpuCnt
*/
RTS_API rtError_t rtGetAiCpuCount(uint32_t *aiCpuCnt);
/**
* @ingroup
* @brief get AI core frequency
* @param [in] aiCoreSpec
* @return aiCoreSpec
*/
RTS_API rtError_t rtGetAiCoreSpec(rtAiCoreSpec_t *aiCoreSpec);
/**
* @ingroup
* @brief AI get core band Info
* @param [in] aiCoreMemoryRates
* @return aiCoreMemoryRates
*/
RTS_API rtError_t rtGetAiCoreMemoryRates(rtAiCoreMemoryRates_t *aiCoreMemoryRates);
/**
* @ingroup
* @brief AI get core buffer Info,FlowTable Size,Compiler Size
* @param [in] memoryConfig
* @return memoryConfig
*/
RTS_API rtError_t rtGetMemoryConfig(rtMemoryConfig_t *memoryConfig);
/**
* @ingroup
* @brief set platform in gen ctx
* @param [in] platForm
* @return RT_ERROR_NONE for ok, errno for failed
*/
RTS_API rtError_t rtSetPlatformType(rtPlatformType_t platformType);
/**
* @ingroup
* @brief get l2 buffer Info,virtual baseaddr,Size
* @param [in] stream
* @return RT_ERROR_NONE for ok, errno for failed
*/
RTS_API rtError_t rtMemGetL2Info(rtStream_t stream, void **ptr, uint32_t *size);
#ifdef __cplusplus
}
#endif
#endif // __CCE_RUNTIME_STREAM_H__