Skip to main content

NPU Operators

This section summarizes neural network operators supported by the SyNAP VS6x0/SL16x0 class of NPUs and accompanying software stack. For each operator type, the supported tensor types and execution engines are also documented. Designing networks that maximize the use of operators executed in the NN core will provide the best performance.

Execution Engines

AcronymDescription
NNNeural Network Engine
PPUParallel Processing Unit
TPTensor Processor

Tensor Types

AcronymDescription
asym-u8asymmetric affine uint8
asym-i8asymmetric affine int8
pc-sym-i8per channel symmetric int8
fp32floating point 32 bits
fp16floating point 16 bits
hhalf
int16int16
int32int32
note

int16 dynamic fixed point convolution is supported by the NN Engine in their multiplication. Other layers follow the tables; if asym-u8 is not available in the NN column, int16 is also not available.

Basic Operations

OperatorInputKernelOutputNNTPPPU
CONV2Dasym-u8asym-u8asym-u8
asym-i8pc-sym-i8asym-i8
fp32fp32fp32
fp16fp16fp16
CONV1Dasym-u8asym-u8asym-u8
asym-i8pc-sym-i8asym-i8
fp32fp32fp32
fp16fp16fp16
DECONVOLUTIONasym-u8asym-u8asym-u8
asym-i8pc-sym-i8asym-i8
fp32fp32fp32
fp16fp16fp16
DECONVOLUTION1Dasym-u8asym-u8asym-u8
asym-i8pc-sym-i8asym-i8
fp32fp32fp32
fp16fp16fp16
GROUPED_CONV2Dasym-u8asym-u8asym-u8
asym-i8pc-sym-i8asym-i8
fp32fp32fp32
fp16fp16fp16
FULLY_CONNECTEDasym-u8asym-u8asym-u8
asym-i8pc-sym-i8asym-i8
fp32fp32fp32
note

Convolutions are executed in the NN engine only if they satisfy the following conditions: **stride == 1**, **kernel_size <= 15x15**, **dilation size + kernel size <= 15x15**. If any of these conditions are not satisfied, the convolution will require support of the TP core and will run considerably slower.

Activation Operations

OperatorInputOutputNNTPPPU
ELUasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
HARD_SIGMOIDasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
SWISHasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
LEAKY_RELUasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
PRELUasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
RELUasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
RELUNasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
RSQRTasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
SIGMOIDasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
SOFTRELUasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
SQRTasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
TANHasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
ABSasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
CLIPasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
EXPasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
LOGasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
NEGasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
MISHasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
SOFTMAXasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
LOG_SOFTMAXasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
SQUAREasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
SINasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
LINEARasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
ERFasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
GELUasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16

Elementwise Operations

OperatorInputOutputNNTPPPU
ADDasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
SUBTRACTasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
MULTIPLYasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
DIVIDEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
MAXIMUMasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
MINIMUMasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
POWasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
FLOORDIVasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
MATRIXMULasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
RELATIONAL_OPSasym-u8bool8
asym-i8bool8
fp32bool8
fp16bool8
bool8bool8
LOGICAL_OPSbool8bool8
LOGICAL_NOTbool8bool8
SELECTasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
bool8bool8
ADDNasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16

Normalization Operations

OperatorInputOutputNNTPPPU
BATCH_NORMasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
LRN2asym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
L2_NORMALIZEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
LAYER_NORMasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
INSTANCE_NORMasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
BATCHNORM_SINGLEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
MOMENTSasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
GROUP_NORMasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16

Reshape Operations

OperatorInputOutputNNTPPPU
EXPAND_BROADCASTasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
SLICEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
SPLITasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
CONCATasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
STACKasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
UNSTACKasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
RESHAPEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
SQUEEZEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
PERMUTEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
REORGasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
SPACE2DEPTHasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
DEPTH2SPACEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
bool8bool8
BATCH2SPACEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
SPACE2BATCHasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
PADasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
REVERSEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
STRIDED_SLICEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
REDUCEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
ARGMAXasym-u8asym-u8 / int16 / int32
asym-i8asym-u8 / int16 / int32
fp32int32
fp16asym-u8 / int16 / int32
ARGMINasym-u8asym-u8 / int16 / int32
asym-i8asym-u8 / int16 / int32
fp32int32
fp16asym-u8 / int16 / int32
SHUFFLECHANNELasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16

RNN Operations

OperatorInputKernelOutputNNTPPPU
LSTMUNIT_OVXLIBasym-u8asym-u8asym-u8
asym-i8pc-sym-i8asym-i8
fp32fp32fp32
fp16fp16fp16
CONV2D_LSTMasym-u8asym-u8asym-u8
asym-i8pc-sym-i8asym-i8
fp32fp32fp32
fp16fp16fp16
CONV2D_LSTM_CELLasym-u8asym-u8asym-u8
asym-i8pc-sym-i8asym-i8
fp32fp32fp32
fp16fp16fp16
LSTM_OVXLIBasym-u8asym-u8asym-u8
asym-i8pc-sym-i8asym-i8
fp32fp32fp32
fp16fp16fp16
GRUCELL_OVXLIBasym-u8asym-u8asym-u8
asym-i8pc-sym-i8asym-i8
fp32fp32fp32
fp16fp16fp16
GRU_OVXLIBasym-u8asym-u8asym-u8
asym-i8pc-sym-i8asym-i8
fp32fp32fp32
fp16fp16fp16
SVDFasym-u8asym-u8asym-u8
asym-i8pc-sym-i8asym-i8
fp32fp32fp32
fp16fp16fp16

Pooling Operations

OperatorInputOutputNNTPPPU
POOLasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
ROI_POOLasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
POOLWITHARGMAXasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
UPSAMPLEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16

Miscellaneous Operations

OperatorInputOutputNNTPPPU
PROPOSALasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
VARIABLEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
DROPOUTasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
RESIZEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
DATACONVERTasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
FLOORasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
EMBEDDING_LOOKUPasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
GATHERasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
GATHER_NDasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
SCATTER_NDasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
GATHER_ND_UPDATEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
TILEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
ELTWISEMAXasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
SIGNAL_FRAMEasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
CONCATSHIFTasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
UPSAMPLESCALEasym-u8asym-u8
asym-i8asym-i8
fp16fp16
ROUNDasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
CEILasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
SEQUENCE_MASKasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
REPEATasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
ONE_HOTasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16
CASTasym-u8asym-u8
asym-i8asym-i8
fp32fp32
fp16fp16