Skip to content

Vector指令理论性能汇总

本节汇总介绍了一些主要的Vector指令的理论性能,以下内容针对如下型号生效:

  • Ascend 950PR/Ascend 950DT
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品

注:

  • 缓存控制、同步控制和原子操作类指令,不涉及理论性能。
  • 对于矢量计算API,若接口调用的传入参数countrepeatTime取值为0,不会执行计算操作,不会对目的操作数进行写入,该接口将被视为NOP(空操作),但相较于不调用会有额外性能耗时。

针对Ascend 950PR/Ascend 950DT:
Memory矢量计算API主要由Reg矢量计算API实现,这类Memory矢量计算API不涉及理论性能。部分数据排布转换类、排序组合类、数据搬运类、标量计算类、工具接口类的指令理论性能汇总请参考表1-表5。

表1 数据排布转换类指令理论性能汇总

接口理论并行度(bytes/cycle)
Transpose256

表2 排序组合类指令理论性能汇总

接口输入数据类型输出数据类型理论并行度(element/cycle)
Sort32halfhalf2
Sort32floatfloat2
MrgSorthalfhalf2
MrgSortfloatfloat2

表3 数据搬运类指令理论性能汇总

接口理论并行度(bytes/cycle)
DataCopy(UB->UB)256

表4 标量计算类指令理论性能汇总

接口输入数据类型输出数据类型理论并行度(cycle/instruction)
GetBitCountuint64_tint64_t1
CountLeadingZerouint64_tint64_t1
GetSFFValueuint64_tint64_t1
CountBitsCntSameAsSignBitint64_tint64_t1
Cast(float转half、int32_t)floathalf/int32_t1
Cast(float转bfloat16_t)--软仿指令,不涉及理论并行度
Cast(多类型转float)--软仿指令,不涉及理论并行度
Nop--软仿指令,不涉及理论并行度

表5 工具接口类指令理论性能汇总

接口理论并行度(cycle/instruction)
InitSocState软仿指令,不涉及理论并行度
Async静态编译,无消耗
GetBlockNum1
GetBlockIdx(AIC)1
GetBlockIdx(AIV)软仿指令,不涉及理论并行度
GetTaskRatio1
GetSubBlockNum1
GetSubBlockIdx1
GetDataBlockSizeInBytes静态编译,无消耗,与直接使用立即数行为一致。
GetSystemCycle1
GetProgramCounter软仿指令,不涉及理论并行度
GetArchVersion软仿指令,不涉及理论并行度
GetUBSizeInBytes静态编译,无消耗,与直接使用立即数行为一致。
GetRuntimeUBSize软仿指令,不涉及理论并行度
NumericLimits类接口软仿指令,不涉及理论并行度

针对如下产品型号:Vector指令理论性能汇总请参考表6-表18。

  • Atlas A3 训练系列产品/Atlas A3 推理系列产品
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品

表6 基础算术类指令理论性能汇总

接口输入/输出数据类型硬件并行度(element/cycle)
Addhalf128
Addint16_t128
Addint32_t64
Addfloat64
Exphalf32
Expfloat32
Lnhalf32
Lnfloat32
Abshalf128
Absfloat64
Reciprocalhalf128
Reciprocalfloat64
Sqrthalf32
Sqrtfloat32
Rsqrthalf128
Rsqrtfloat64
Reluhalf128
Relufloat64
Reluint32_t64
Subhalf128
Subint16_t128
Subint32_t64
Subfloat64
Mulhalf128
Mulint16_t128
Mulint32_t64
Mulfloat64
Divhalf32
Divfloat32
Maxhalf128
Maxint16_t128
Maxint32_t64
Maxfloat64
Minhalf128
Minint16_t128
Minint32_t64
Minfloat64
BilinearInterpolation(ISASI)half软仿指令,不涉及理论并行度
Addshalf128
Addsint16_t128
Addsint32_t64
Addsfloat64
Mulshalf128
Mulsint16_t128
Mulsint32_t64
Mulsfloat64
Maxshalf128
Maxsint16_t128
Maxsint32_t64
Maxsfloat64
Minshalf128
Minsint16_t128
Minsint32_t64
Minsfloat64
LeakyReluhalf128
LeakyRelufloat64

表7 逻辑计算类指令理论性能汇总

接口src数据类型理论并行度(element/cycle)
Notint16_t/uint16_t128
Andint16_t/uint16_t128
Orint16_t/uint16_t128
ShiftLeftint16_t/uint16_t128
ShiftLeftint32_t/uint32_t64
ShiftRightint16_t/uint16_t128
ShiftRightint32_t/uint32_t64

表8 复合计算类指令理论性能汇总

接口src0数据类型scalar/src1数据类型dst数据类型理论并行度(element/cycle)
Axpyhalfhalfhalf128
Axpyfloatfloatfloat64
Axpyhalfhalffloat64
MulAddDsthalfhalfhalf64
MulAddDstfloatfloatfloat32
MulAddDsthalfhalffloat32
MulCasthalfhalfuint8_t128
MulCasthalfhalfint8_t128
AddReluint16_tint16_tint16_t128
AddReluhalfhalfhalf128
AddRelufloatfloatfloat64
AddReluCastfloatfloathalf64
AddReluCasthalfhalfint8_t128
AddReluCastint16_tint16_tint8_t128
SubReluint16_tint16_tint16_t128
SubReluhalfhalfhalf128
SubRelufloatfloatfloat64
SubReluCastfloatfloathalf64
SubReluCasthalfhalfint8_t128
SubReluCastint16_tint16_tint8_t128
FusedMulAddhalfhalfhalf128
FusedMulAddfloatfloatfloat64
MulAddReluhalfhalfhalf128
MulAddRelufloatfloatfloat64
CastDequantint16_tNAint8_t/uint8_t128
CastDequantint32_tNAhalf64
AddDeqRelu---软仿指令,不涉及理论并行度

表9 比较与选择类指令理论性能汇总

接口src0数据类型scalar/src1数据类型dst数据类型理论并行度(element/cycle)
Comparehalfhalfuint8_t、int8_t128
Comparefloatfloatuint8_t、int8_t64
Compareint32_tint32_tuint8_t、int8_t64
Compare(结果存入寄存器)halfhalfuint8_t、int8_t128
Compare(结果存入寄存器)floatfloatuint8_t、int8_t64
Compareshalfhalfuint8_t128
Comparesfloatfloatuint8_t64
Comparesint32_tint32_tuint8_t64
Selecthalfhalfuint8_t128
Selectfloatfloatuint8_t64
GetCmpMask(ISASI)---1
SetCmpMask(ISASI)---1
GatherMaskhalfuint16_thalf64
GatherMaskbfloat16_tuint16_tbfloat16_t64
GatherMaskuint16_tuint16_tuint16_t64
GatherMaskint16_tuint16_tint16_t64
GatherMaskfloatuint32_tfloat32
GatherMaskuint32_tuint32_tuint32_t32
GatherMaskint32_tuint32_tint32_t32

表10 类型转换类指令理论性能汇总

接口src数据类型dst数据类型理论并行度(element/cycle)
Castint4b_thalf128
Castuint8_thalf128
Castint8_thalf128
Castint16_thalf128
Castint16_tfloat64
Casthalfint4b_t/int8_t/uint8_t/int16_t128
Casthalfint32_t/float64
Castbfloat16_tint32_t/float64
Castint32_tint16_t/half64
Castint32_tfloat64
Castint32_tint64_t32
Castfloathalf64
Castfloatint16_t/bfloat16_t/int32_t/float64
Castfloatint64_t32

表11 归约计算类指令理论性能汇总

接口src数据类型dst数据类型理论并行度(element/cycle)
ReduceDataBlockhalfhalf128/7
ReduceDataBlockfloatfloat64
ReduceRepeathalfhalf128/7
ReduceRepeatfloatfloat64/7
ReducePairElemhalfhalf128
ReducePairElemfloatfloat64
ReduceMax/ReduceMin/ReduceSum--软仿指令,不涉及理论并行度

表12 数据排布转换类指令理论性能汇总

接口src数据类型dst数据类型理论并行度(element/cycle)
Transposeint8_t/uint8_tint8_t/uint8_t256
Transposeint16_t/uint16_t/halfint16_t/uint16_t/half128
Transposeint32_t/uint32_t/floatint32_t/uint32_t/float64
TransDataTo5HDint8_t/uint8_tint8_t/uint8_t256
TransDataTo5HDint16_t/uint16_t/halfint16_t/uint16_t/half128
TransDataTo5HDint32_t/uint32_t/floatint32_t/uint32_t/float64

表13 数据填充类指令理论性能汇总

接口src数据类型dst数据类型理论输入并行度(element/cycle)理论输出并行度(element/cycle)
Brcbint16_t/uint16_t/half/bfloat16_tint16_t/uint16_t/half/bfloat16_t8128
Brcbint32_t/uint32_t/floatint32_t/uint32_t/float864
Duplicateint16_t/uint16_t/half/bfloat16_tint16_t/uint16_t/half/bfloat16_t-128
Duplicateint32_t/uint32_t/floatint32_t/uint32_t/float-64
CreateVecIndexint16_t/halfint16_t/half-128
CreateVecIndexint32_t/floatint32_t/float-64

表14 排序组合类指令理论性能汇总

接口dst数据类型理论并行度(element/cycle)
Sort32half2
Sort32float2
MrgSorthalf2
MrgSortfloat2

表15 离散与聚合类指令理论性能汇总

接口src数据类型dst数据类型理论并行度(element/cycle)
Gatherint16_t/uint16_t/half/bfloat16_t/int32_t/uint32_t/floatint16_t/uint16_t/half/bfloat16_t/int32_t/uint32_t/float5
Gatherbuint16_tuint16_t42
Gatherbuint32_tuint32_t21

表16 掩码操作类指令理论性能汇总

接口输入数据类型理论并行度(element/cycle)
SetMaskCount-1
SetMaskNorm-1
SetVectorMaskuint64_t1
SetVectorMaskint32_t1
ResetMask-1

表17 标量计算类指令理论性能汇总

接口输入数据类型输出数据类型理论并行度(cycle/instruction)
GetBitCountuint64_tint64_t1
CountLeadingZerouint64_tint64_t1
GetSFFValueuint64_tint64_t1
CountBitsCntSameAsSignBitint64_tint64_t1
Cast(float转half、int32_t)floathalf/int32_t1
Cast(float转bfloat16_t)--软仿指令,不涉及理论并行度
Cast(bfloat16_t转float)--软仿指令,不涉及理论并行度

表18 工具接口类指令理论性能汇总

接口理论并行度(cycle/instruction)
InitSocState软仿指令,不涉及理论并行度
Async静态编译,无消耗
GetBlockNum1
GetBlockIdx(AIC)1
GetBlockIdx(AIV)软仿指令,不涉及理论并行度
GetTaskRatio1
GetSubBlockNum1
GetSubBlockIdx1
GetDataBlockSizeInBytes静态编译,无消耗,与直接使用立即数行为一致。
GetSystemCycle1
GetProgramCounter软仿指令,不涉及理论并行度
GetArchVersion软仿指令,不涉及理论并行度

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