Skip to content

Reg矢量计算接口理论性能汇总

本节汇总介绍了Reg矢量计算接口的理论性能,本节内容仅针对如下型号生效:

Ascend 950PR/Ascend 950DT

本节汇总的理论性能均为单指令理论性能,实际性能还需考虑指令单双发情况,请参考Reg矢量计算接口指令单双发汇总。软仿实现的接口和数据类型不提供理论性能。

表1 RegTensor数据搬入

接口源操作数数据类型目的操作数数据类型理论并行度(element/cycle)
连续对齐搬入(LoadAlign)b8b8256
连续对齐搬入(LoadAlign)b16b16128
连续对齐搬入(LoadAlign)b32b3264
非连续对齐搬入(LoadAlign)b8b8128
非连续对齐搬入(LoadAlign)b16b1664
非连续对齐搬入(LoadAlign)b32b3232
连续非对齐搬入(LoadUnAlign)b8b8256(LoadUnAlign)/32(LoadUnAlignPre)
连续非对齐搬入(LoadUnAlign)b16b16128(LoadUnAlign)/16(LoadUnAlignPre)
连续非对齐搬入(LoadUnAlign)b32b3264(LoadUnAlign)/8(LoadUnAlignPre)
离散搬入(Gather)b8b1664
离散搬入(Gather)b16b1664
离散搬入(Gather)b32b3232
离散搬入(GatherB)b8b8128
离散搬入(GatherB)b16b1664
离散搬入(GatherB)b32b3232
离散搬入(GatherB)b64b6416
Moveb8b8256
Moveb16b16128
Moveb32b3264
Moveb64b6432

表2 RegTensor数据搬出

接口源操作数数据类型目的操作数数据类型理论并行度(element/cycle)
连续对齐搬出(StoreAlign)b8b8256
连续对齐搬出(StoreAlign)b16b16128
连续对齐搬出(StoreAlign)b32b3264
非连续对齐搬出(StoreAlign)b8b8128
非连续对齐搬出(StoreAlign)b16b1664
非连续对齐搬出(StoreAlign)b32b3232
连续非对齐搬出(StoreUnAlign)b8b8256(StoreUnAlign)/32(StoreUnAlignPost)
连续非对齐搬出(StoreUnAlign)b16b16128(StoreUnAlign)/16(StoreUnAlignPost)
连续非对齐搬出(StoreUnAlign)b32b3264(StoreUnAlign)/8(StoreUnAlignPost)
离散搬出(Scatter)b8b8128
离散搬出(Scatter)b16b1664
离散搬出(Scatter)b32b3232

表3 MaskReg数据搬入

接口理论耗时(cycle)
MaskReg搬入(LoadAlign)1
MaskReg搬入(MaskGenWithRegTensor)4

表4 MaskReg数据搬出

接口理论耗时(cycle)
MaskReg搬出(StoreAlign)1
MaskReg非对齐搬出(StoreUnAlign)1

表5 MaskReg计算

接口理论耗时(cycle)
Move1
Interleave1
DeInterleave1
Select1
Pack1
UnPack1
MoveMask1

表6 基础算术

接口源操作数数据类型目的操作数数据类型理论并行度(element/cycle)
Absint8_tint8_t128
Absint16_tint16_t64
Abshalfhalf128
Absint32_tint32_t32
Absfloatfloat64
Exphalfhalf16
Expfloatfloat16
Sqrthalfhalf16
Sqrtfloatfloat16
Lnhalfhalf16
Lnfloatfloat16
Loghalfhalf16
Logfloatfloat16
Negint8_tint8_t128
Negint16_tint16_t64
Neghalfhalf128
Negint32_tint32_t32
Negfloatfloat64
Reluhalfhalf128
Reluint32_tint32_t64
Relufloatfloat64
Preluhalfhalf128
Prelufloatfloat64
LeakyReluhalfhalf128
LeakyRelufloatfloat64
Addint8_tint8_t128
Adduint8_tuint8_t128
Addint16_tint16_t64
Adduint16_tuint16_t64
Addhalfhalf128
Addbfloat16_tbfloat16_t128
Addint32_tint32_t32
Adduint32_tuint32_t32
Addfloatfloat64
AddCint32_tint32_t32
AddCuint32_tuint32_t32
Divhalfhalf16
Divfloatfloat16
Maxint8_tint8_t256
Maxuint8_tuint8_t256
Maxint16_tint16_t128
Maxuint16_tuint16_t128
Maxhalfhalf128
Maxbfloat16_tbfloat16_t128
Maxint32_tint32_t64
Maxuint32_tuint32_t64
Maxfloatfloat64
Minint8_tint8_t256
Minuint8_tuint8_t256
Minint16_tint16_t128
Minuint16_tuint16_t128
Minhalfhalf128
Minbfloat16_tbfloat16_t128
Minint32_tint32_t64
Minuint32_tuint32_t64
Minfloatfloat64
Mulint16_tint16_t64
Muluint16_tuint16_t64
Mulhalfhalf128
Mulint32_tint32_t32
Muluint32_tuint32_t32
Mulfloatfloat64
Mullint32_tint32_t32
Mulluint32_tuint32_t32
Subint8_tint8_t128
Subuint8_tuint8_t128
Subint16_tint16_t64
Subuint16_tuint16_t64
Subhalfhalf128
Subbfloat16_tbfloat16_t128
Subint32_tint32_t32
Subuint32_tuint32_t32
Subfloatfloat64
SubCint32_tint32_t32
SubCuint32_tuint32_t32
Addsint8_tint8_t128
Addsuint8_tuint8_t128
Addsint16_tint16_t64
Addsuint16_tuint16_t64
Addshalfhalf128
Addsbfloat16_tbfloat16_t128
Addsint32_tint32_t32
Addsuint32_tuint32_t32
Addsfloatfloat64
Maxsint8_tint8_t256
Maxsuint8_tuint8_t256
Maxsint16_tint16_t128
Maxsuint16_tuint16_t128
Maxshalfhalf128
Maxsbfloat16_tbfloat16_t128
Maxsint32_tint32_t64
Maxsuint32_tuint32_t64
Maxsfloatfloat64
Minsint8_tint8_t256
Minsuint8_tuint8_t256
Minsint16_tint16_t128
Minsuint16_tuint16_t128
Minshalfhalf128
Minsbfloat16_tbfloat16_t128
Minsint32_tint32_t64
Minsuint32_tuint32_t64
Minsfloatfloat64
Mulsint16_tint16_t64
Mulsuint16_tuint16_t64
Mulshalfhalf128
Mulsint32_tint32_t32
Mulsuint32_tuint32_t32
Mulsfloatfloat64

表7 逻辑计算

接口源操作数数据类型目的操作数数据类型理论并行度(element/cycle)
Notint8_tint8_t256
Notuint8_tuint8_t256
Notint16_tint16_t128
Notuint16_tuint16_t128
Nothalfhalf128
Notint32_tint32_t64
Notuint32_tuint32_t64
Notfloatfloat64
Andint8_tint8_t256
Anduint8_tuint8_t256
Andint16_tint16_t128
Anduint16_tuint16_t128
Andint32_tint32_t64
Anduint32_tuint32_t64
Orint8_tint8_t256
Oruint8_tuint8_t256
Orint16_tint16_t128
Oruint16_tuint16_t128
Orint32_tint32_t64
Oruint32_tuint32_t64
Xorint8_tint8_t256
Xoruint8_tuint8_t256
Xorint16_tint16_t128
Xoruint16_tuint16_t128
Xorint32_tint32_t64
Xoruint32_tuint32_t64
ShiftLeftint8_tint8_t256
ShiftLeftuint8_tuint8_t256
ShiftLeftint16_tint16_t128
ShiftLeftuint16_tuint16_t128
ShiftLeftint32_tint32_t64
ShiftLeftuint32_tuint32_t64
ShiftRightint8_tint8_t256
ShiftRightuint8_tuint8_t256
ShiftRightint16_tint16_t128
ShiftRightuint16_tuint16_t128
ShiftRightint32_tint32_t64
ShiftRightuint32_tuint32_t64
ShiftLeftsint8_tint8_t256
ShiftLeftsuint8_tuint8_t256
ShiftLeftsint16_tint16_t128
ShiftLeftsuint16_tuint16_t128
ShiftLeftsint32_tint32_t64
ShiftLeftsuint32_tuint32_t64
ShiftRightsint8_tint8_t256
ShiftRightsuint8_tuint8_t256
ShiftRightsint16_tint16_t128
ShiftRightsuint16_tuint16_t128
ShiftRightsint32_tint32_t64
ShiftRightsuint32_tuint32_t64

表8 复合计算

接口源操作数数据类型目的操作数数据类型理论并行度(element/cycle)
AbsSubhalfhalf128
AbsSubfloatfloat64
Axpyhalfhalf128
Axpyfloatfloat64
ExpSubhalffloat16
ExpSubfloatfloat16
MulDstAddhalfhalf128
MulDstAddbfloat16_tbfloat16_t128
MulDstAddfloatfloat64
MulAddDstint16_tint16_t64
MulAddDstuint16_tuint16_t64
MulAddDsthalfhalf128
MulAddDstbfloat16_tbfloat16_t128
MulAddDstint32_tint32_t32
MulAddDstuint32_tuint32_t32
MulAddDstfloatfloat64
MulsCastfloathalf64

表9 比较与选择

接口源操作数数据类型目的操作数数据类型理论并行度(element/cycle)
Compareint8_tMaskReg256
Compareuint8_tMaskReg256
Compareint16_tMaskReg128
Compareuint16_tMaskReg128
ComparehalfMaskReg128
Comparebfloat16_tMaskReg128
Compareint32_tMaskReg64
Compareuint32_tMaskReg64
ComparefloatMaskReg64
Comparesint8_tMaskReg256
Comparesuint8_tMaskReg256
Comparesint16_tMaskReg128
Comparesuint16_tMaskReg128
CompareshalfMaskReg128
Comparesbfloat16_tMaskReg128
Comparesint32_tMaskReg64
Comparesuint32_tMaskReg64
ComparesfloatMaskReg64
Selectint8_tMaskReg256
Selectuint8_tMaskReg256
Selectint16_tMaskReg128
Selectuint16_tMaskReg128
SelecthalfMaskReg128
Selectbfloat16_tMaskReg128
Selectint32_tMaskReg64
Selectuint32_tMaskReg64
SelectfloatMaskReg64
Squeezeint8_tint8_t51.2
Squeezeuint8_tuint8_t51.2
Squeezeint16_tint16_t25.6
Squeezeuint16_tuint16_t25.6
Squeezehalfhalf25.6
Squeezeint32_tint32_t12.8
Squeezeuint32_tuint32_t12.8
Squeezefloatfloat12.8

表10 类型转换

接口源操作数数据类型目的操作数数据类型理论并行度(element/cycle)
Castfloatint64_t16
Castfloatint32_t32
Castfloatint16_t32
Casthalfint32_t32
Casthalfint16_t64
Casthalfint8_t64
Castfloathalf64
Castfloatbfloat16_t64
Casthalffloat64
Castbfloat16_tfloat64
Castfloathifloat8_t32
Casthifloat8_tfloat32
Casthalfhifloat8_t64
Casthifloat8_thalf64
Castfloatfp8_e4m3fn_t32
Castfloatfp8_e5m2_t32
Castfp4×2_e1m2_tbfloat16_t64
Castfp4×2_e2m1_tbfloat16_t64
Castbfloat16_tfp4×2_e1m2_t64
Castbfloat16_tfp4×2_e2m1_t64
Castuint8_thalf64
Castint8_thalf64
Castint16_thalf64
Castint16_tfloat32
Castint32_tfloat32
Castint4×2_thalf64
Castint4×2_tint16_t64
Castuint8_tuint16_t64
Castuint8_tuint32_t32
Castint8_tint16_t64
Castint8_tint32_t32
Castuint16_tuint8_t64
Truncatehalfhalf64
Truncatebfloat16_tbfloat16_t64
Truncatefloatfloat32

表11 归约计算

接口源操作数数据类型目的操作数数据类型理论并行度(element/cycle)
Reduce(ReduceType::SUM)halfhalf128
Reduce(ReduceType::SUM)int16_tint32_t64
Reduce(ReduceType::SUM)uint16_tuint32_t64
Reduce(ReduceType::SUM)int32_tint32_t64
Reduce(ReduceType::SUM)uint32_tuint32_t64
Reduce(ReduceType::SUM)floatfloat64
Reduce(ReduceType::MAX)int16_tint16_t128
Reduce(ReduceType::MAX)uint16_tuint16_t128
Reduce(ReduceType::MAX)halfhalf128
Reduce(ReduceType::MAX)int32_tint32_t64
Reduce(ReduceType::MAX)uint32_tuint32_t64
Reduce(ReduceType::MAX)floatfloat64
Reduce(ReduceType::MIN)int16_tint16_t128
Reduce(ReduceType::MIN)uint16_tuint16_t128
Reduce(ReduceType::MIN)halfhalf128
Reduce(ReduceType::MIN)int32_tint32_t64
Reduce(ReduceType::MIN)uint32_tuint32_t64
Reduce(ReduceType::MIN)floatfloat64
ReduceDataBlock(ReduceType::SUM)halfhalf128
ReduceDataBlock(ReduceType::SUM)int32_tint32_t64
ReduceDataBlock(ReduceType::SUM)uint32_tuint32_t64
ReduceDataBlock(ReduceType::SUM)floatfloat64
ReduceDataBlock(ReduceType::MAX)int16_tint16_t128
ReduceDataBlock(ReduceType::MAX)uint16_tuint16_t128
ReduceDataBlock(ReduceType::MAX)halfhalf128
ReduceDataBlock(ReduceType::MAX)int32_tint32_t64
ReduceDataBlock(ReduceType::MAX)uint32_tuint32_t64
ReduceDataBlock(ReduceType::MAX)floatfloat64
ReduceDataBlock(ReduceType::MIN)int16_tint16_t128
ReduceDataBlock(ReduceType::MIN)uint16_tuint16_t128
ReduceDataBlock(ReduceType::MIN)halfhalf128
ReduceDataBlock(ReduceType::MIN)int32_tint32_t64
ReduceDataBlock(ReduceType::MIN)uint32_tuint32_t64
ReduceDataBlock(ReduceType::MIN)floatfloat64
PairReduceElemhalfhalf128
PairReduceElemfloatfloat64

表12 数据填充

接口源操作数数据类型目的操作数数据类型理论并行度(element/cycle)
Duplicateint8_tint8_t256
Duplicateuint8_tuint8_t256
Duplicateint16_tint16_t128
Duplicateuint16_tuint16_t128
Duplicatehalfhalf128
Duplicatebfloat16_tbfloat16_t128
Duplicateint32_tint32_t64
Duplicateuint32_tuint32_t64
Duplicatefloatfloat64

表13 离散操作

接口源操作数数据类型目的操作数数据类型理论并行度(element/cycle)
Gatherb8b864
Gatherb16b1632
Gatherb32b3216

表14 数据重排

接口源操作数数据类型目的操作数数据类型理论并行度(element/cycle)
Interleaveint8_tint8_t256
Interleaveuint8_tuint8_t256
Interleaveint16_tint16_t128
Interleaveuint16_tuint16_t128
Interleavehalfhalf128
Interleavebfloat16_tbfloat16_t128
Interleaveint32_tint32_t64
Interleaveuint32_tuint32_t64
Interleavefloatfloat64
DeInterleaveint8_tint8_t256
DeInterleaveuint8_tuint8_t256
DeInterleaveint16_tint16_t128
DeInterleaveuint16_tuint16_t128
DeInterleavehalfhalf128
DeInterleavebfloat16_tbfloat16_t128
DeInterleaveint32_tint32_t64
DeInterleaveuint32_tuint32_t64
DeInterleavefloatfloat64

表15 数据压缩

接口源操作数数据类型目的操作数数据类型理论并行度(element/cycle)
UnsqueezeMaskRegint8_t64
UnsqueezeMaskReguint8_t64
UnsqueezeMaskRegint16_t32
UnsqueezeMaskReguint16_t32
UnsqueezeMaskRegint32_t16
UnsqueezeMaskReguint32_t16
Packint16_tuint8_t128
Packuint16_tuint8_t128
Packint32_tuint16_t64
Packuint32_tuint16_t64
UnPackint8_tint16_t128
UnPackuint8_tuint16_t128
UnPackint16_tint32_t64
UnPackuint16_tuint32_t64

表16 直方图计算

接口源操作数数据类型目的操作数数据类型理论并行度(element/cycle)
Histogramsuint8_tuint16_t32

表17 索引操作

接口源操作数数据类型目的操作数数据类型理论并行度(element/cycle)
Arangeint8_tint8_t128
Arangeint16_tint16_t64
Arangehalfhalf128
Arangeint32_tint32_t32
Arangefloatfloat64

免责声明:本站内容由 asc-devkit 仓 master 分支自动编译生成,属于持续开发版本,可能存在缺陷,仅供预览与参考。如需稳定及商用资料,请查阅官方 昇腾社区