模板参数定义
函数原型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
// ParamStruct是存放用户设置的模板参数ASCENDC_TPL_ARGS_DECL和模板参数组合ASCENDC_TPL_ARGS_SEL的结构体,用作后续的Tilingkey与模板参数之间的编解码,用户无需关注 struct ParamStruct { const char* name; uint32_t paramType; uint8_t bitWidth; std::vector<uint64_t> vals; const char* macroType; ParamStruct(const char* inName, uint32_t inParamType, uint8_t inBitWidth, std::vector<uint64_t> inVals, const char* inMacroType): name(inName), paramType(inParamType), bitWidth(inBitWidth), vals(std::move(inVals)), macroType(inMacroType) {} }; using TilingDeclareParams = std::vector<ParamStruct>; using TilingSelectParams = std::vector<std::vector<ParamStruct>>; // 模板参数定义相关接口 #define ASCENDC_TPL_DTYPE_DECL(x, ...) ParamStruct{#x, ASCENDC_TPL_DTYPE, ASCENDC_TPL_8_BW, {__VA_ARGS__}, "DECL"} #define ASCENDC_TPL_FORMAT_DECL(x, ...) ParamStruct{#x, ASCENDC_TPL_FORMAT, ASCENDC_TPL_8_BW, {__VA_ARGS__}, "DECL"} #define ASCENDC_TPL_UINT_DECL(x, bw, ...) ParamStruct{#x, ASCENDC_TPL_UINT, bw, {__VA_ARGS__}, "DECL"} #define ASCENDC_TPL_BOOL_DECL(x, ...) ParamStruct{#x, ASCENDC_TPL_BOOL, ASCENDC_TPL_1_BW, {__VA_ARGS__}, "DECL"} #define ASCENDC_TPL_DTYPE_SEL(x, ...) ParamStruct{#x, ASCENDC_TPL_DTYPE, ASCENDC_TPL_8_BW, {__VA_ARGS__}, "SEL"} #define ASCENDC_TPL_FORMAT_SEL(x, ...) ParamStruct{#x, ASCENDC_TPL_FORMAT, ASCENDC_TPL_8_BW, {__VA_ARGS__}, "SEL"} #define ASCENDC_TPL_UINT_SEL(x, ...) ParamStruct{#x, ASCENDC_TPL_UINT, 0, {__VA_ARGS__}, "SEL"} #define ASCENDC_TPL_BOOL_SEL(x, ...) ParamStruct{#x, ASCENDC_TPL_BOOL, ASCENDC_TPL_1_BW, {__VA_ARGS__}, "SEL"} #define ASCENDC_TPL_ARGS_DECL(x, ...) static TilingDeclareParams g_tilingDeclareParams{ __VA_ARGS__ } #define ASCENDC_TPL_ARGS_SEL(...) { __VA_ARGS__} #define ASCENDC_TPL_SEL(...) static TilingSelectParams g_tilingSelectParams{ __VA_ARGS__ } |
参数说明
宏 |
功能描述 |
参数解释 |
---|---|---|
ASCENDC_TPL_SEL(...) |
算子的模板参数整体组合。 |
包含多个算子的模板参数组合。 |
ASCENDC_TPL_ARGS_DSEL(...) |
算子的模板参数组合。 |
一个算子的模板参数组合。 |
ASCENDC_TPL_DTYPE_SEL(args0, ...) |
DataType类型的模板参数组合。 |
|
ASCENDC_TPL_FORMAT_SEL(args0, ...) |
Format类型的模板参数组合。 |
|
ASCENDC_TPL_UINT_SEL(args0, args1, args2, ...) |
UINT类型的模板参数组合。 |
模式和参数的配置方式参考ASCENDC_TPL_UINT_DECL(args0, args1, args2, ...)。 |
ASCENDC_TPL_BOOL_SEL(args0, ...) |
bool类型的模板参数组合。 |
args0:表示参数名。 args1-args2 :后续若干个参数为ASCENDC_TPL_BOOL_DECL定义的参数范围子集。 |
返回值说明
无。
约束说明
对模板参数定义的取值进行修改或新增后,需要重新编译自定义算子包,不能再继续使用之前的算子二进制。
父主题: Tiling数据结构注册