互推导关系

推导规则

当一个API(如aclnnAdd、aclnnMul等)输入的Tensor数据类型不一致时,API内部会推导出一个数据类型,将输入数据转换成该数据类型进行计算。

类型推导的规则如表1表2所示。

  • 为方便描述,表格中使用的数据类型是简写形式,代表的含义:ACL_FLOAT(f32)、ACL_FLOAT16(f16)、ACL_DOUBLE(f64)、ACL_INT8(s8)、ACL_UINT8(u8)、ACL_INT16(s16)、ACL_UINT16(u16)、ACL_INT32(s32)、ACL_UINT32(u32)、ACL_INT64(s64)、ACL_UINT64(u64)、ACL_BOOL(bool)、ACL_COMPLEX64(c64)、ACL_COMPLEX128(c128)。
  • 表格中表头和表最左侧一列分别表示待推导的两个输入数据类型,表格中对应位置表示推导出的数据类型。
  • NA表示这两种类型不能进行推导计算。
表1 常见数据类型推导关系

数据类型

f32

f16

f64

s8

u8

s16

s32

s64

bool

c64

c128

f32

f32

f32

f64

f32

f32

f32

f32

f32

f32

c64

c128

f16

f32

f16

f64

f16

f16

f16

f16

f16

f16

c64

c128

f64

f64

f64

f64

f64

f64

f64

f64

f64

f64

c64

c128

s8

f32

f16

f64

s8

s16

s16

s32

s64

s8

c64

c128

u8

f32

f16

f64

s16

u8

s16

s32

s64

u8

c64

c128

s16

f32

f16

f64

s16

s16

s16

s32

s64

s16

c64

c128

s32

f32

f16

f64

s32

s32

s32

s32

s64

s32

c64

c128

s64

f32

f16

f64

s64

s64

s64

s64

s64

s64

c64

c128

bool

f32

f16

f64

s8

u8

s16

s32

s64

bool

c64

c128

c64

c64

c64

c64

c64

c64

c64

c64

c64

c64

c64

c128

c128

c128

c128

c128

c128

c128

c128

c128

c128

c128

c128

c128

表2 特殊数据类型推导关系

数据类型

f32

f16

f64

s8

u8

s16

s32

s64

bool

c64

c128

u16

NA

NA

NA

NA

NA

NA

NA

NA

NA

NA

NA

u32

NA

NA

NA

NA

NA

NA

NA

NA

NA

NA

NA

u64

NA

NA

NA

NA

NA

NA

NA

NA

NA

NA

NA

说明:

  • 当输入数据类型为u16与u16,其推导出的数据类型仍为u16。
  • 当输入数据类型为u32与u32,其推导出的数据类型仍为u32。
  • 当输入数据类型为u64与u64,其推导出的数据类型仍为u64。

推导示例