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✔