asc_enable_hf32
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:不支持
- Atlas 推理系列产品AI Core:不支持
- Atlas 推理系列产品Vector Core:不支持
- Atlas 训练系列产品:不支持
功能说明
用于设置Mmad计算开启HF32模式,开启该模式后,Mmad计算FP32数据的性能将得到提升,但会带来一定的精度损失。
是否开启HF32对Mmad计算理论性能的影响见下表:
表1 HF32对Mmad计算理论性能的影响(NPU架构版本2201)
| 接口 | 左矩阵A | 右矩阵B | ||||
|---|---|---|---|---|---|---|
| asc_mmad(不开启HF32) | float | float | 16 | 16 | 4 | 8 |
| asc_mmad(开启HF32) | float | float | 16 | 16 | 8 | 8 |
表2 HF32对Mmad计算理论性能的影响(NPU架构版本3510)
| 接口 | 左矩阵A | 右矩阵B | ||||
|---|---|---|---|---|---|---|
| asc_mmad(不开启HF32) | float | float | 16 | 16 | 1 | 8 |
| asc_mmad(开启HF32) | float | float | 16 | 16 | 8 | 8 |
性能计算公式如下:
关键变量及常量说明:
:mmad入参实际计算的大小。 : 根据分型大小向上对齐后的值。 :硬件真实并行度(单位:elements/cycle)。 :L0 Buffer上最小分型K方向大小。 :头开销cycle数。
开启HF32模式后,L0A Buffer/L0B Buffer中的FP32数据将在参与Mmad计算之前被舍入为HF32格式,舍入模式使用asc_set_hf32_round_mode接口配置,中间计算使用HF32格式,最终的运算结果仍以FP32格式输出,以保证后续处理的兼容性。
FP32与HF32格式的精度对比如下图所示:
图1 FP32与HF32格式精度示意图(NPU架构版本2201)

图2 FP32与HF32格式精度示意图(NPU架构版本3510)

函数原型
C++
__aicore__ inline void asc_enable_hf32()
参数说明
无
返回值说明
无
流水类型
PIPE_S
约束说明
无
调用示例
C++
asc_enable_hf32();