支持算子
当前Paddle-Lite共计支持算子204个,其中基础算子78个,附加算子127个。
基础算子
默认编译的算子,共计78个。 Host端Kernel是算子在任意CPU上纯C/C++的具体实现,具有可移植性强的特点,因此,它一般作为各特定平台算子实现的补充。 举例PaddleLite在ARM上部署模型,如果模型中某个算子没有ARM端Kernel,但是有Host端Kerenel,那么模型优化阶段该算子会选择Host端Kerenel,该模型还是可以顺利部署。
OP Name | Host | X86 | CUDA | ARM | OpenCL | FPGA | 华为NPU | 百度XPU | 瑞芯微NPU | 联发科APU | 颖脉NNA | 英特尔FPGA |
---|---|---|---|---|---|---|---|---|---|---|---|---|
affine_channel | Y | |||||||||||
affine_grid | Y | |||||||||||
arg_max | Y | |||||||||||
assign_value | Y | Y | ||||||||||
batch_norm | Y | Y | Y | Y | Y | |||||||
bilinear_interp | Y | Y | Y | Y | ||||||||
box_coder | Y | Y | ||||||||||
calib | Y | Y | Y | |||||||||
cast | Y | Y | Y | |||||||||
concat | Y | Y | Y | Y | Y | Y | Y | |||||
conv2d | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |
conv2d_transpose | Y | Y | Y | |||||||||
density_prior_box | Y | |||||||||||
depthwise_conv2d | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |
depthwise_conv2d_transpose | ||||||||||||
dropout | Y | Y | Y | Y | Y | Y | Y | |||||
elementwise_add | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||
elementwise_div | Y | Y | Y | |||||||||
elementwise_max | Y | |||||||||||
elementwise_mod | Y | |||||||||||
elementwise_mul | Y | Y | Y | Y | Y | Y | Y | Y | ||||
elementwise_pow | ||||||||||||
elementwise_sub | Y | Y | Y | Y | Y | Y | ||||||
elu | Y | |||||||||||
expand | Y | Y | Y | |||||||||
expand_as | Y | |||||||||||
fc | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||
feed | Y | Y | Y | |||||||||
fetch | Y | Y | ||||||||||
fill_constant | Y | |||||||||||
fill_constant_batch_size_like | Y | Y | ||||||||||
flatten | Y | Y | Y | |||||||||
flatten2 | Y | Y | Y | |||||||||
fusion_elementwise_add_activation | Y | Y | Y | Y | Y | Y | ||||||
fusion_elementwise_div_activation | Y | Y | ||||||||||
fusion_elementwise_max_activation | Y | |||||||||||
fusion_elementwise_mul_activation | Y | Y | Y | |||||||||
fusion_elementwise_sub_activation | Y | Y | Y | Y | ||||||||
grid_sampler | Y | Y | ||||||||||
instance_norm | Y | Y | Y | |||||||||
io_copy | Y | Y | Y | |||||||||
io_copy_once | Y | Y | Y | |||||||||
layout | Y | Y | Y | Y | ||||||||
leaky_relu | Y | Y | Y | Y | Y | |||||||
matmul | Y | Y | Y | Y | Y | |||||||
mul | Y | Y | Y | Y | Y | |||||||
multiclass_nms | Y | Y | ||||||||||
multiclass_nms2 | Y | |||||||||||
nearest_interp | Y | Y | Y | Y | ||||||||
pad2d | Y | Y | Y | Y | ||||||||
pool2d | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||
prelu | Y | |||||||||||
prior_box | Y | Y | ||||||||||
range | Y | |||||||||||
reduce_mean | Y | Y | ||||||||||
relu | Y | Y | Y | Y | Y | Y | Y | Y | ||||
relu6 | Y | Y | Y | Y | ||||||||
reshape | Y | Y | Y | Y | Y | |||||||
reshape2 | Y | Y | Y | Y | Y | Y | ||||||
scale | Y | Y | Y | Y | Y | Y | Y | Y | ||||
search_fc | Y | Y | ||||||||||
sequence_topk_avg_pooling | Y | Y | ||||||||||
shuffle_channel | Y | Y | ||||||||||
sigmoid | Y | Y | Y | Y | Y | Y | ||||||
slice | Y | Y | Y | Y | ||||||||
softmax | Y | Y | Y | Y | Y | Y | Y | |||||
split | Y | Y | ||||||||||
squeeze | Y | |||||||||||
squeeze2 | Y | |||||||||||
stack | Y | Y | Y | |||||||||
subgraph | Y | Y | Y | Y | ||||||||
tanh | Y | Y | Y | Y | Y | Y | ||||||
thresholded_relu | Y | Y | ||||||||||
transpose | Y | Y | Y | Y | Y | Y | ||||||
transpose2 | Y | Y | Y | Y | Y | Y | Y | |||||
unsqueeze | Y | Y | ||||||||||
unsqueeze2 | Y | Y | ||||||||||
yolo_box | Y | Y | Y |
附加算子
附加算子共计127个,需要在编译时打开--build_extra=ON
开关才会编译,具体请参考参数详情。
OP Name | Host | X86 | CUDA | ARM | OpenCL | FPGA | 华为NPU | 百度XPU | 瑞芯微NPU | 联发科APU | 英特尔FPGA |
---|---|---|---|---|---|---|---|---|---|---|---|
abs | Y | Y | |||||||||
anchor_generator | Y | ||||||||||
assign | Y | ||||||||||
attention_padding_mask | |||||||||||
axpy | Y | ||||||||||
beam_search_decode | Y | ||||||||||
beam_search_decode | Y | ||||||||||
box_clip | Y | ||||||||||
calib_once | Y | Y | Y | ||||||||
clip | Y | ||||||||||
collect_fpn_proposals | Y | ||||||||||
conditional_block | Y | ||||||||||
crf_decoding | Y | ||||||||||
crop | Y | ||||||||||
ctc_align | Y | ||||||||||
decode_bboxes | Y | ||||||||||
deformable_conv | Y | ||||||||||
distribute_fpn_proposals | Y | ||||||||||
equal | Y | ||||||||||
exp | Y | Y | |||||||||
fake_channel_wise_dequantize_max_abs | |||||||||||
fake_dequantize_max_abs | |||||||||||
fake_quantize_abs_max | |||||||||||
fake_quantize_dequantize_abs_max | |||||||||||
fake_quantize_dequantize_moving_average_abs_max | |||||||||||
fake_quantize_moving_average_abs_max | |||||||||||
fake_quantize_range_abs_max | |||||||||||
floor | Y | ||||||||||
gather | Y | Y | Y | ||||||||
gelu | Y | ||||||||||
generate_proposals | Y | ||||||||||
greater_equal | Y | ||||||||||
greater_than | Y | ||||||||||
group_norm | Y | ||||||||||
gru | Y | Y | Y | Y | |||||||
gru_unit | Y | ||||||||||
hard_sigmoid | Y | Y | Y | ||||||||
hard_swish | Y | ||||||||||
im2sequence | Y | ||||||||||
increment | Y | Y | |||||||||
is_empty | Y | ||||||||||
layer_norm | Y | Y | Y | Y | |||||||
layout_once | Y | Y | Y | ||||||||
less_equal | Y | ||||||||||
less_than | Y | Y | |||||||||
lod_reset | Y | ||||||||||
log | Y | Y | |||||||||
logical_and | Y | ||||||||||
logical_not | Y | ||||||||||
logical_or | Y | ||||||||||
logical_xor | Y | ||||||||||
lookup_table | Y | Y | Y | Y | |||||||
lookup_table_dequant | Y | ||||||||||
lookup_table_v2 | Y | Y | Y | ||||||||
lrn | Y | Y | |||||||||
lstm | Y | ||||||||||
match_matrix_tensor | Y | Y | |||||||||
max_pool2d_with_index | |||||||||||
mean | Y | ||||||||||
merge_lod_tensor | Y | ||||||||||
negative | Y | ||||||||||
norm | Y | Y | |||||||||
not_equal | Y | ||||||||||
one_hot | Y | ||||||||||
pixel_shuffle | Y | Y | Y | ||||||||
pow | Y | ||||||||||
Y | |||||||||||
read_from_array | Y | ||||||||||
reciprocal | Y | ||||||||||
reduce_max | Y | ||||||||||
reduce_prod | Y | ||||||||||
reduce_sum | Y | Y | |||||||||
relu_clipped | Y | Y | |||||||||
retinanet_detection_output | Y | ||||||||||
roi_align | Y | ||||||||||
rsqrt | Y | ||||||||||
search_aligned_mat_mul | Y | Y | |||||||||
search_attention_padding_mask | Y | Y | |||||||||
search_grnn | Y | Y | |||||||||
search_group_padding | Y | Y | |||||||||
search_seq_arithmetic | Y | Y | |||||||||
search_seq_depadding | Y | Y | |||||||||
search_seq_fc | Y | Y | |||||||||
search_seq_softmax | Y | Y | |||||||||
sequence_arithmetic | Y | Y | |||||||||
sequence_concat | Y | Y | |||||||||
sequence_conv | Y | Y | |||||||||
sequence_expand | Y | ||||||||||
sequence_expand_as | Y | ||||||||||
sequence_mask | Y | ||||||||||
sequence_pad | Y | ||||||||||
sequence_pool | Y | Y | Y | ||||||||
sequence_pool_concat | Y | ||||||||||
sequence_reshape | Y | ||||||||||
sequence_reverse | Y | Y | |||||||||
sequence_reverse_embedding | Y | ||||||||||
sequence_softmax | Y | ||||||||||
sequence_unpad | Y | Y | |||||||||
shape | Y | Y | |||||||||
sign | |||||||||||
softsign | Y | Y | |||||||||
split_lod_tensor | Y | ||||||||||
sqrt | Y | ||||||||||
square | Y | Y | Y | ||||||||
swish | Y | Y | |||||||||
top_k | Y | ||||||||||
topk_pooling | Y | ||||||||||
uniform_random | |||||||||||
var_conv_2d | Y | Y | |||||||||
where_index | Y | ||||||||||
while | Y | ||||||||||
write_to_array | Y | ||||||||||
xpuconv2d | Y | ||||||||||
xpuembedding_with_eltwise_add | Y | ||||||||||
xpufc | Y | ||||||||||
xpummdnn_bid_emb_att | Y | ||||||||||
xpummdnn_bid_emb_grnn_att | Y | ||||||||||
xpummdnn_bid_emb_grnn_att2 | Y | ||||||||||
xpummdnn_match_conv_topk | Y | ||||||||||
xpummdnn_merge_all | Y | ||||||||||
xpummdnn_search_attention | Y | ||||||||||
xpumulti_encoder | Y | ||||||||||
xpuresnet_cbam | Y | ||||||||||
xpuresnet50 | Y | ||||||||||
xpusfa_head | Y | ||||||||||
matrix_nms | Y |