CANN/cannbot-skills HFusion属性枚举速查

📅 2026/7/11 17:49:12 👁️ 阅读次数 📝 编程学习
CANN/cannbot-skills HFusion属性枚举速查

属性与枚举速查

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

1. 概述

HFusion 方言定义了丰富的枚举和属性,用于控制逐元操作的函数选择、类型转换、舍入模式、原子操作类型等。本文档提供完整的速查表。

源码参考:HFusionEnums.td、HFusionBase.td、HFusionAttrs.td

2. UnaryFn(一元函数枚举)

枚举值整数值说明
relu0ReLU 激活
sqrt1平方根
rsqrt2平方根倒数
rec3倒数
vnot4按位取反
tanh5双曲正切
sin6正弦
cos7余弦
atan8反正切
tan9正切
absi10绝对值
erf11误差函数
log212以 2 为底对数
log1013以 10 为底对数
log1p14log(1+x)
exp2152^x
expm116e^x - 1
ilogb17指数部分

属性语法:unary_fn = <sqrt>

3. BinaryFn(二元函数枚举)

枚举值整数值说明
vor0按位或
vand1按位与
vxor2按位异或
minf3浮点最小值
maxf4浮点最大值
powf5浮点幂
mod6取模
shli7左移
shrsi8算术右移
shrui9逻辑右移
ldexp10ldexp
ceildivsi11有符号向上取整除法
ceildivui12无符号向上取整除法
floordivsi13有符号向下取整除法
powi14整数幂
minnumf15IEEE 浮点最小值
maxnumf16IEEE 浮点最大值
modui17无符号取模
divfhp18高精度除法

属性语法:binary_fn = <vand>

4. CompareFn(比较函数枚举)

枚举值整数值说明
veq0等于
vne1不等于
vle2有符号小于等于
vlt3有符号小于
vge4有符号大于等于
vgt5有符号大于
vule6无符号小于等于
vuge7无符号大于等于
vugt8无符号大于
vult9无符号小于

属性语法:compare_fn = <veq>

5. TernaryFn(三元函数枚举)

枚举值整数值说明
select0条件选择

属性语法:ternary_fn = <select>

6. TypeFn(类型转换函数枚举)

枚举值整数值说明
cast_signed0有符号类型转换
cast_unsigned1无符号类型转换
bitcast2位转换

属性语法:type_fn = <cast_signed>

7. RoundMode(舍入模式枚举)

枚举值整数值助记符说明
RINT0rint四舍五入到偶数(C 语言 rint)
ROUND1round四舍五入远离零(C 语言 round)
FLOOR2floor向负无穷取整(C 语言 floor)
CEIL3ceil向正无穷取整(C 语言 ceil)
TRUNC4trunc向零取整(C 语言 trunc)
ODD5odd向奇数取整(Von Neumann 舍入)
TRUNCWITHOVERFLOW6truncwithoverflow截断并检测溢出

属性语法:round_mode = <RINT>

8. UnsignedMode(无符号转换模式枚举)

枚举值整数值助记符说明
SI2SI0si2si有符号整数到有符号整数
SI2UI1si2ui有符号整数到无符号整数
UI2SI2ui2si无符号整数到有符号整数
UI2UI3ui2ui无符号整数到无符号整数

属性语法:unsigned_mode = <SI2SI>

9. AtomicKind(原子操作类型枚举)

枚举值整数值助记符说明
NONE0none非原子操作
ADD1add原子加
MAX2max原子有符号最大值
MIN3min原子有符号最小值
AND4and原子按位与
OR5or原子按位或
XOR6xor原子按位异或
CAS7cas原子比较并交换
XCHG8xchg原子交换
UMAX9umax原子无符号最大值
UMIN10umin原子无符号最小值

属性语法:atomic_kind = <add>

10. FusionKind(融合类型枚举)

枚举值整数值助记符说明
PureElemwise1PURE_ELEMWISE纯逐元融合
AnyPB2ANY_PB任意 Producer-Consumer 融合
LastAxisPBR3LAST_AXIS_PBR末轴 PBR 融合
AnyPBR4ANY_PBR任意 PBR 融合
SingleCube5SINGLE_CUBE单 Cube 融合
ShallowCV6SHALLOW_CV浅层 Cube-Vector 融合
ShallowVV7SHALLOW_VV浅层 Vector-Vector 融合
MixCV8MIX_CV混合 Cube-Vector 融合
MixC29MIX_C2双 Cube 混合融合
Unknown10UNKNOWN未知融合类型

11. 其他枚举

11.1 FlattenMode

枚举值整数值说明
Greedy1贪心展平模式
Tidy2整洁展平模式(带分析)

11.2 OutputMode

枚举值整数值说明
Multiple1多输出模式
Single2单输出模式
SingleAggressive3激进单输出模式

11.3 ReduceWithIndexKind

枚举值助记符说明
MINmin最小值归约
MAXmax最大值归约

11.4 CastMode

枚举值助记符说明
F32TOI8F32TOI8FP32 转 INT8
F32TOI16F32TOI16FP32 转 INT16
F16TOI8F16TOI8FP16 转 INT8
I64TOI32I64TOI32INT64 转 INT32
I64TOI16I64TOI16INT64 转 INT16
I64TOI8I64TOI8INT64 转 INT8
I32TOI16I32TOI16INT32 转 INT16
I32TOI8I32TOI8INT32 转 INT8
I16TOI8I16TOI8INT16 转 INT8

11.5 TaylerMode

枚举值助记符说明
SINsin正弦泰勒展开
ATANatan反正切泰勒展开

11.6 MmMapMode

枚举值助记符说明
CoreOpcore_op核心操作模式
MacroInstrmacro_instr宏指令模式

12. HFusion 属性列表

属性名助记符说明
FusionKindAttrfusion_kind融合类型
StrideAlignDimsAttrstride_align_dims步长对齐维度
StrideAlignValueInByteAttrstride_align_value_in_byte步长对齐字节数
MultiBufferAttrmulti_buffer多缓冲属性
BindSubBlockAttrbind_sub_block绑定子 Block
ReduceComposeAttrreduce_composed归约组合
ReduceWithIndexOpAttrreduce_with_index_kind带索引归约类型
ReturnOperandNumAttrreturn_operand_num返回操作数编号
PaddingOptionAttr-填充选项(zero/nan)
CacheModifierAttr-缓存修饰符
EvictionPolicyAttr-驱逐策略

12.1 PaddingOption

枚举值整数值助记符说明
PAD_ZERO1zero零填充
PAD_NAN2nanNaN 填充

12.2 CacheModifier

枚举值整数值助记符说明
NONE1none无缓存修饰
CA2ca缓存所有
CG3cg缓存全局
WB4wb写回
CS5cs缓存流
WT6wt写穿透
CV7cv缓存易失

12.3 EvictionPolicy

枚举值整数值助记符说明
NORMAL1evict_normal正常驱逐
EVICT_FIRST2evict_first优先驱逐
EVICT_LAST3evict_last最后驱逐

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考