矢量计算
BilinearInterpolation
双线性插值操作,分为垂直迭代和水平迭代。
GetCmpMask
获取Compare(结果存入寄存器)指令的比较结果。
GetAccVal
获取ReduceSum(针对tensor前n个数据计算)接口的计算结果。
GetReduceMaxMinCount
获取ReduceMax、ReduceMin连续场景下的最大/最小值以及相应的索引值。
ProposalConcat
将连续元素合入Region Proposal内对应位置,每次迭代会将16个连续元素合入到16个Region Proposals的对应位置里。
ProposalExtract
与ProposalConcat功能相反,从Region Proposals内将相应位置的单个元素抽取后重排,每次迭代处理16个Region Proposals,抽取16个元素后连续排列。
RpSort16
根据Region Proposals中的score域对其进行排序(score大的排前面),每次排16个Region Proposals。
MrgSort4
将已经排好序的最多4 条region proposals队列,排列并合并成1条队列,结果按照score域由大到小排序。
Sort32
排序函数,一次迭代可以完成32个数的排序。
MrgSort
将已经排好序的最多4 条队列,合并排列成 1 条队列,结果按照score域由大到小排序。
GetMrgSortResult
获取MrgSort或MrgSort4已经处理过的队列里的Region Proposal个数,并依次存储在四个List入参中。
Gatherb
给定一个输入的张量和一个地址偏移张量,Gatherb指令根据偏移地址将输入张量收集到结果张量中。
Scatter
给定一个连续的输入张量和一个目的地址偏移张量,Scatter指令根据偏移地址生成新的结果张量后将输入张量分散到结果张量中。
矩阵计算
InitConstValue
初始化LocalTensor(TPosition为A1/A2/B1/B2)为某一个具体的数值。
LoadData
LoadData包括Load2D和Load3D数据加载功能。
LoadDataWithTranspose
该接口实现带转置的2D格式数据从A1/B1到A2/B2的加载。
SetAippFunctions
设置图片预处理(AIPP,AI core pre-process)相关参数。
LoadImageToLocal
将图像数据从GM搬运到A1/B1。 搬运过程中可以完成图像预处理操作:包括图像翻转,改变图像尺寸(抠图,裁边,缩放,伸展),以及色域转换,类型转换等。
LoadUnZipIndex
加载GM上的压缩索引表到内部寄存器。
LoadDataUnzip
将GM上的数据解压并搬运到A1/B1/B2上。
LoadDataWithSparse
用于搬运存放在B1里的512B的稠密权重矩阵到B2里,同时读取128B的索引矩阵用于稠密矩阵的稀疏化。
SetFmatrix
用于调用Load3Dv1/Load3Dv2时设置FeatureMap的属性描述。
SetLoadDataBoundary
设置Load3D时A1/B1边界值。
SetLoadDataRepeat
用于设置Load3Dv2接口的repeat参数。设置repeat参数后,可以通过调用一次Load3Dv2接口完成多个迭代的数据搬运。
SetLoadDataPaddingValue
设置padValue,用于Load3Dv1/Load3Dv2。
Mmad
完成矩阵乘加操作。
MmadWithSparse
完成矩阵乘加操作,传入的左矩阵A为稀疏矩阵, 右矩阵B为稠密矩阵 。
Fixpipe
矩阵计算完成后,对结果进行处理,例如对计算结果进行量化操作,并把数据从CO1搬迁到Global Memory中。
SetFixPipeConfig
在Fixpipe的流程中,会涉及到relu (通过将FixpipeParams.reluEn设置为true)和quant(FixpipeParams.QuantParams设置为非NoQuant)的流程,分别用于relu和quant计算。通过该接口设置relu和quant的源操作数。
SetFixpipeNz2ndFlag
在Fixpipe的流程中,会涉及到nz2nd的流程(FixpipeParams.Nz2NdParams.nz2ndEn设置为true)该接口用于设置FixpipeNz2nd相关的配置。
SetFixpipePreQuantFlag
在Fixpipe的流程中,会涉及到quant量化流程,该接口用于设置量化流程中deq scalar(量化参数)。
SetHF32Mode
此接口同SetHF32TransMode与SetMMLayoutTransform一样,都用于设置寄存器的值。SetHF32Mode接口用于设置MMAD的HF32模式。
SetHF32TransMode
此接口同SetHF32Mode与SetMMLayoutTransform一样,都用于设置寄存器的值。SetHF32TransMode用于设置MMAD的HF32取整模式,仅在MMAD的HF32模式生效时有效。
SetMMLayoutTransform
此接口同SetHF32Mode与SetHF32TransMode一样,都用于设置寄存器的值,其中SetMMLayoutTransform接口用于设置MMAD的M/N方向。
CheckLocalMemoryIA
监视设定范围内的UB读写行为,如果监视到有设定范围的读写行为则会出现EXCEPTION报错,未监视到设定范围的读写行为则不会报错。
Conv2D
计算给定输入张量和权重张量的2-D卷积,输出结果张量。Conv2d卷积层多用于图像识别,使用过滤器提取图像中的特征。
Gemm
根据输入的切分规则,将给定的两个输入张量做矩阵乘,输出至结果张量。将A和B两个输入矩阵乘法在一起,得到一个输出矩阵C。
数据搬运
DataCopyPad
该接口提供数据非对齐搬运的功能。
SetPadValue
设置DataCopyPad接口填充的数值。
同步控制
SetFlag/WaitFlag
同一核内不同流水线之间的同步指令。具有数据依赖的不同流水指令之间需要插此同步。
PipeBarrier
阻塞相同流水,具有数据依赖的相同流水之间需要插此同步。
DataSyncBarrier
用于阻塞后续的指令执行,直到所有之前的内存访问指令(需要等待的内存位置可通过参数控制)执行结束。
CrossCoreSetFlag
针对分离架构,AI Core上的Cube核(AIC)与Vector核(AIV)之间的同步设置指令。
CrossCoreWaitFlag
针对分离架构,AI Core上的Cube核(AIC)与Vector核(AIV)之间的同步等待指令。
缓存处理
ICachePreLoad
从指令所在DDR地址预加载指令到ICache中。
GetICachePreloadStatus
获取ICACHE的PreLoad的状态。
系统变量访问
GetProgramCounter
获取程序计数器的指针,程序计数器用于记录当前程序执行的位置。
GetSubBlockNum
获取AI Core上Vector核的数量。
GetSubBlockIdx
获取AI Core上Vector核的ID。
GetSystemCycle
获取当前系统cycle数,若换算成时间需要按照50MHz的频率,时间单位为us,换算公式为:time = (cycle数/50) us 。
原子操作
SetAtomicMax
原子操作函数,设置后续从VECOUT传输到GM的数据是否执行原子比较,将待拷贝的内容和GM已有内容进行比较,将最大值写入GM。
SetAtomicMin
原子操作函数,设置后续从VECOUT传输到GM的数据是否执行原子比较,将待拷贝的内容和GM已有内容进行比较,将最小值写入GM。
SetStoreAtomicConfig
设置原子操作使能位与原子操作类型。
GetStoreAtomicConfig
获取原子操作使能位与原子操作类型的值。