SaturationFlagMode#

产品支持情况#

  • Ascend 950PR&950DT系列产品:支持

  • Atlas A3系列产品:不支持

  • Atlas A2系列产品:不支持

功能说明#

SaturationFlagMode定义了pypto_pro.language.set_saturation_flag和pypto_pro.language.get_saturation_flag操作的饱和模式类别,用于控制CTRL寄存器中不同计算场景的饱和行为。

每个模式对应CTRL寄存器中的一个特定位:

枚举值

CTRL寄存器位

控制范围

极性

FLOAT

bit 48

浮点数计算和浮点数精度转换

反转(bit=0为饱和开启)

FLOAT8

bit 50

浮点8计算

反转(bit=0为饱和开启)

INT

bit 53

整数计算

正常(bit=1为饱和开启)

CAST

bit 59

浮点转整数或整数转整数的精度转换

反转(bit=0为饱和开启)

原型定义#

class SaturationFlagMode(enum.Enum):
    FLOAT = ...    # 浮点数计算和浮点数精度转换(CTRL bit 48)
    FLOAT8 = ...   # 浮点8计算(CTRL bit 50)
    INT = ...      # 整数计算(CTRL bit 53)
    CAST = ...     # 浮点转整数/整数转整数精度转换(CTRL bit 59)

约束说明#

  • 与vf.astype的SaturateMode参数配合使用时,当CTRL[60]=0时为单指令模式(由saturate参数控制),当CTRL[60]=1时为全局模式(由本枚举控制的CTRL位生效)。

调用示例#

import pypto_pro.language as pl

@pl.jit()
def kernel():
    # 在VF计算前设置CAST类别的饱和模式为全局开启
    pl.set_saturation_flag(mode=pl.SaturationFlagMode.CAST, enable=True)
    # ... 执行VF计算 ...
    # 恢复
    pl.set_saturation_flag(mode=pl.SaturationFlagMode.CAST, enable=False)