支持算子
当前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 |
---|---|---|---|---|---|---|---|---|---|---|---|
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 | |
conv2d_transpose | Y | Y | Y | ||||||||
density_prior_box | Y | ||||||||||
depthwise_conv2d | 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 |
---|---|---|---|---|---|---|---|---|---|---|
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 |