o
    + i                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 ejejeZejejeejZeejvrAeje d dlmZmZ d dlmZ eeejddZd dlmZmZmZ ejZ e!e"e#e $dZ%d	d
 Z&dd Z'dlddZ(	dmddZ)dd Z*dnddZ+dd Z,dd Z-ej.ddfddZ/ej.dfddZ0	dodd Z1dod!d"Z2dpd#d$Z3dod%d&Z4	dod'ed(ed)efd*d+Z5dqd,d-Z6dod.d/Z7drd0d1Z8dod2d3Z9dod4d5Z:dod6d7Z;dod8d9Z<dod:d;Z=dod<d=Z>dod>d?Z?dod@dAZ@dpdBdCZAdodDdEZBdodFdGZCdodHdIZDdodJdKZE	dodLdMZFdNdO ZGej.dfdPdQZHdRdS ZIdTdU ZJdVdW ZKdXdY ZLdZd[ ZMdod\d]ZNdod^d_ZOdod`daZPdbdc ZQdrdddeZRdfdg ZSdhdi ZTdodjdkZUdS )s    N)TensorRTConfigManagerTensorRTConstantManager)INetworkDefinitionITensor)
get_loggerz&%(asctime)s-%(levelname)s: %(message)s)fmt)get_attrs_map_jsonget_inputs_type_jsonget_outputs_type_json.c                 C   s   t dd | D S )Nc                 s   s    | ]}|d kV  qdS )N ).0sr   r   k/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/paddle/tensorrt/converter_utils.py	<genexpr>1   s    z$has_dynamic_shape.<locals>.<genexpr>)any)shaper   r   r   has_dynamic_shape0   s   r   c                 C   s   |  |}t|jrV| |}| |ftj|ftjd}| |	d|	dg}d|_
|d|	d |d urUt||d dg t||d dg t||d dg n
d| t|j |_|d urit|| |	dS )Ndtyper      input_shape_layerprepend_shape_layerreshape_dim_layerr   )add_shuffler   r   	add_shapeadd_constantnponesint32add_concatenation
get_outputaxis	set_inputset_layer_nametuplereshape_dims)networkinputnameZnum_prepend_oneslayerr   r   r   r   r   r   append_ones4   s,   




r-   c           
      C   sv   t |j}t |j}t|t| | }	|	dkr't| || |g|	}||fS |	dk r7t| || |g|	 }||fS Nr   )r'   r   lenr-   r+   )
r)   aba_nameZb_name	paddle_opZpreset_diffZa_shapeZb_shapediffr   r   r   	broadcastO   s   

r5   Fc                 C   sN   t | tr| f} |rd| vsJ dd}| D ]}|d||rdnd > O }q|S )Nr   z5Can't reduce over batch dimension when it's implicit.r   )
isinstanceint)dimhas_implicit_batch_dimensionaxesdr   r   r   get_axes_for_reduce_op\   s   

r<   c                 C   s,   g }t | D ]\}}|dkr|| q|S )aB  
    This function finds the dynamic dimensions in the given
    shape. A dimension is dynamic if it's -1.

    Args:
        shape (Shape): A sequence of integer that represents
            the shape of a tensor.

    Returns:
        A list of integers contains all the dynamic dimensions
        in the given shape
    r   )	enumerateappend)r   Zdynamic_dimsir   r   r   r   get_dynamic_dimso   s   
r@    c                 C   sR   t  }|| ||}|sJ d|  |j| |d}|d us'J d|  d|S )Nz)Unable to found plugin creator with name )r+   field_collectionzPlugin:z could not be fetched)trtZget_plugin_registryZget_plugin_creatorZcreate_plugin)plugin_namerB   versionZplugin_namespaceZplugin_registryZplugin_creatorpluginr   r   r   get_trt_plugin   s   rG   c                 C   s   | dk r| | S | S r.   r   )r8   Zdim_sizer   r   r   get_positive_dim   s   rH   c                 C   s   ddl m} | d  j}| d  j}|d }|d }t|d tjkr;| ||d }t	|| |
d}t|d tjkrV| ||d }t	|| |
d}t| ||dd|\}	}
| |	|
|}t	|| || | |
dS )Nr   )support_fp32_mix_precisionr   Zinput_tensor_broadcastZweight_tensor_broadcast)paddle.tensorrt.utilrI   operandssourcer   typerC   Weightsr   r&   r#   r5   add_elementwiser+   )r)   r3   inputsop_typerI   Zweight_shapeinput_shapeZweight_tensorinput_tensorZlhs_valZrhs_valr,   r   r   r   add_elementwise_layer   s2   





rT   c                 C   sP   t |ts|g}|rdnt|f}tj||d}| ||}t|| |dS )Nr   r   r   )r6   listr/   r   arrayr   r&   r#   )r)   datar   	is_scalarr+   r   constant_dataconstant_layerr   r   r   add_1D_constant_layer   s   


r[   c                 C   s:   t j||d}t ||}| ||}t|| |dS )Nr   r   )r   rV   resizer   r&   r#   )r)   rW   r   r   r+   rY   rZ   r   r   r   add_constant_layer   s
   

r]   c           	   	   C   sz   |  t|gtjj}t|}|d| |dt| ||dd dg| }|dt| ||dd t|| |	dS )Nr   r   T)rX      F)
Zadd_fillrC   ZDimsZFillOperationZLINSPACEmap_trt_dtyper%   r[   r&   r#   )	r)   shape_tensorZtensor_rankrW   	trt_dtyper+   Z
fill_layerZnp_dtypebetar   r   r   fill_constant_layer   s   


rc   c                 C   sZ  dd }||k r0t | dg||  ||dd}t| |||dd}||g}	t| |	||dd}
n
t| |||dd}
t| ||
||dd	}d
g| }t | |||dd}t | d||dd}t| |
|||dd}t| |
|||dd}t| ||||dd}| ||d
gt| d
gt| }|	d| |	d| |	d| t
|| |d
S )Nc                 S   s   | d ur
| d |gS d S r.   r   )r+   Z
layer_namer   r   r   process_names   s   z!trt_expand.<locals>.process_namesr   one_rank_tensorr+   in_shape_tensorinput_shape_tensornew_input_tensorTr   starts_tensor
one_tensorsizes_tensorinput_sub_tensorstrides_tensorr^      )r[   	trt_shape
trt_concattrt_reshapetrt_maxtrt_subtrt_minZ	add_slicer/   r%   r&   r#   )r)   r*   rankr`   Z
shape_rankr+   rd   re   rg   Zitensorsrh   ri   startrj   rk   rl   rm   rn   Zslice_layerr   r   r   
trt_expand   sr   


rx   c                 C   s.   | j |d}|dkr||_t|| |dS )N)rP   r   )r"   r$   r&   r#   )r)   rP   r$   r+   Zconcat_layerr   r   r   rq   '  s
   

rq   c                 C   s6   |  |}|d| ||d_t|| |dS r.   )add_identityset_output_typer#   r   r&   )r)   r*   r   r+   identity_layerr   r   r   trt_cast/  s
   


r|   r)   r*   returnc                 C   sV   |  |}t|| td dkr&|dur|d dg}t| |dtj|dS |dS )a  
    Add a IShapeLayer to get the shape of `input` ITensor.
    This includes a workaround that casting the shape result(int64) from TRT10 back to int32.
    Many existing paddle op kernels only support input shape tensor as int32
    , to make TRT op more compatible with other paddle op, we cast back to int32.
    NOTE: please remove this workaround when all paddle op supports shape tensor in int64
    r   
   Nr|   rf   )r   r&   version_listr|   r#   rC   r!   )r)   r*   r+   Zshape_layerr   r   r   rp   7  s   



rp   c                 C   sP   |  |}|r|d| n||_|d ur#t|tr t|| n||_|dS Nr   r   )r   r%   r(   r6   rU   r&   r+   r#   )r)   r*   Z	new_shaper+   Zis_shape_tensorreshape_layerr   r   r   rr   M  s   


rr   c                 C   s\   |d u r|S t |jdkr,| |}d}|jD ]}||9 }q|g|_t|| |d}|S r   )r/   r   r   r(   r&   r#   )r)   r`   r+   Zshape_tensor_layerZnumelZeler   r   r   resize_to_1d\  s   




r   c           	      C   s   |dksJ d| |d ur|d dgnd }t | |||d}| j||dd}|d ur4t||d dg t| |d|d}|S )Nr   z5The index should be greater or equal than 0, but got index_tensorrX   r+   )r*   indicesr$   gather_layerrf   )r[   
add_gatherr&   r   r#   )	r)   xindexrX   r+   Zindex_tensor_namer   r   r`   r   r   r   get_shape_tensor_elementl  s   
r   c                 C   &   |  ||tjj}t|| |dS r.   )rO   rC   ElementWiseOperationLESSr&   r#   r)   r0   r1   r+   r,   r   r   r   trt_less{     

r   c                 C   r   r.   )rO   rC   r   SUMr&   r#   r   r   r   r   trt_sum  r   r   c                 C   r   r.   )rO   rC   r   MAXr&   r#   r   r   r   r   rs     r   rs   c                 C   r   r.   )rO   rC   r   SUBr&   r#   r   r   r   r   rt     r   rt   c                 C   r   r.   )rO   rC   r   ZMINr&   r#   r   r   r   r   ru     r   ru   c                 C   r   r.   )rO   rC   r   ZDIVr&   r#   r   r   r   r   trt_div  r   r   c                 C   r   r.   )rO   rC   r   Z	FLOOR_DIVr&   r#   r   r   r   r   trt_floor_div  r   r   c                 C   r   r.   )rO   rC   r   EQUALr&   r#   r   r   r   r   	trt_equal  r   r   c                 C   sH   |d ur
|d dg}t | ||d}| |||}t|| |d}|S )Nr   indices_tensorrf   )r[   r   r&   r#   )r)   r*   r   r$   r+   r   r   resultr   r   r   
trt_gather  s   

r   c                 C   r   r.   )rO   rC   r   PRODr&   r#   r   r   r   r   trt_prod  r   r   c                 C   r   r.   )rO   rC   r   ZPOWr&   r#   r   r   r   r   trt_pow  r   r   c                 C   s*   |  |}|d| t|| |dS r.   )ry   rz   r&   r#   )r)   rS   r   r+   r,   r   r   r   cast_tensor  s   


r   c                 C   s   t j|t jd}|d ur|d dgnd }| |g|}t|| |d}|d ur/|d dgnd }| ||tjj	}	t|	| |	d}	t
| |	tj|d urS|d dgnd d}
| |
|tjj}t|| |d}|S )Nr   r   r   maskmask_intrf   )r   aranger!   r   r&   r#   rO   rC   r   r   r   r   )r)   rv   axis_tensoroffsetr+   r   indices_namer   	mask_namer   r   Zstart_tensorr   r   r   build_start_tensor  s.   







r   c                 C   s  t j|t jd}|d ur|d dgnd }| |g|}t|| |d}|d ur/|d dgnd }	| ||tjj	}
t|
|	 |
d}
t
| |
tj|d urS|d dgnd d}|d ura|d dgnd }| |gt j|gt jd}t|| |d}|d ur|d dgnd }| ||tjj}t|| |d}|d ur|d d	gnd }| ||tjj}t|| |d}|d ur|d d
gnd }| ||tjj}t|| |d}| ||tjj}t|| |d}|S )Nr   r   r   r   r   rf   ones_tensorinverse_masksize_value_broadcastinput_shape_broadcast)r   r   r!   r   r&   r#   rO   rC   r   r   r   r    r   r   r   )r)   rv   r   Z
size_valuerh   r+   r   r   r   r   r   r   Z	ones_namer   Zinverse_mask_namer   Zsize_value_broadcast_namer   Zinput_shape_broadcast_namer   Zsize_tensorr   r   r   build_size_tensor  sb   

















r   c              
   C   sR   t jjtjt jjtjt jjtjt jj	tj
t jjti}| |v r"||  S td|  )NzUnsupported trt_dtype: )rC   DataTypeFLOATr   float32ZHALFfloat16INT32r!   INT8int8ZBOOLbool	TypeError)ra   Z	dtype_mapr   r   r   r_   -  s   



r_   c           	      C   s   t |jdkr	|S d}tt |jD ]}|d|> O }q| j|tjj|dd}|d ur5t||d dg |}t| |	d||d}|S )Nr   r   F)	keep_dimsreduce_layerrf   )
r/   r   range
add_reducerC   ZReduceOperationr   r&   r|   r#   )	r)   Ztensorr   r+   r:   r?   r   Zscalar_nameZscalarr   r   r   trt_reduce_to_scalar<  s   r   c           '      C   s  ddl m}m}m} d }| dks| dkr|\}}n)| dks)| dkrFt|dkr5|\}}}	nt|dkrB|\}}d }	ntd	| d
krR|\}}}}
| d  j	}| d  j	}t|dkrstdt| |d }|d }|d }|d }|
 dddg}|
 dddg}|
 dddg}|
 dd}t|r|d dksJ d|
 dddg}|
 dd}|dkrdgt| }t||}t|d |d }t|d |d }ddg}ddg}t|tjr|}nt }t|dkr#|d |d< |d |d< |d |d< |d |d< n)t|dkrC|d |d< |d |d< |d |d< |d |d< n	tdt| | d
krt }| d   }| dkrn|
 d }n| dkr||
 d } n	td|  ||} t| }!| j|||||!d}"n3| dks| dkr| j||||d d}"n| dks| dkr| j||| ||d d}"t|tjr|"d| ||"_||"_|r|d  |d 8  < |d  |d 8  < |d dk s|d dk r	td||"_||"_|d krtjj|"_tdd}||"_t |"| || |" t! }#|#" rQ| d  }$|$ 
 d }%| }&|&#|%|%|j$ |"%dS )!Nr   )RefitManager	RefitRolerI   zpd_op.conv2dzpd_op.depthwise_conv2dzpd_op.conv2d_transposez pd_op.depthwise_conv2d_transposero   r^   z-Invalid number of inputs for conv2d_transposezpd_op.fused_conv2d_add_actr      z(filter's dims size should be 4, but got paddingsstrides	dilationsgroupsr   z7Channel dim can't be dynamic for transpose convolution.output_paddingpadding_algorithmEXPLICITZVALIDzUnsupported paddings size: zbuiltin.parameterparameter_namebuiltin.constantvaluezUnsupported bias source op: r*   Znum_output_mapsZkernel_shapeZkernelbiasz%The value PostPadding should be >= 0.SAME)&rJ   r   r   rI   r+   r/   
ValueErrorrK   rL   r   attrsgetr   rC   ZDimsHWr6   rN   r   get_defining_opget_constant_valueadd_convolution_ndadd_deconvolution_ndr   r%   	stride_ndpre_paddingpost_padding
num_groupsPaddingMode
SAME_UPPERpadding_modedilation_ndr&   r   get_refit_params_pathset_mappingCONSTANTr#   )'r)   r3   rP   r   r   rI   r   rS   filterZoutput_size_rR   filter_shapen_outputn_inputfilter_hfilter_wr   ZstrideZdilationr   r   r   nv_ksizenv_dilations
nv_stridesZpre_paddingsZpost_paddingsweight_filterconstant_managerZbias_source_opZ	bias_nameZbias_npZbias_weightsr,   trt_managerfilter_paramfilter_namerefit_managerr   r   r   convert_conv2dN  s   







r   c                 C   s  ddl m}m} |\}}| d  j}|d }|d }	|d }
|d }|d }t|tjr2|}nt }|	 
dd}|	 
dg d	}|	 
d
g d	}|	 
dg d}|	 
dd}|	 
dg }t|
||}t|d |d |d }t|d |d |d }t|d |d |d }| dkr| j||||d d}n| dkr| j||	| ||d d}||_||_t|d |d |d }|r
|d  |d 8  < |d  |d 8  < |d  |d 8  < |d dk s|d dk s|d dk r
tdt|tjr|d| ||_||_|dkr'tjj|_||_t|| t }| rR| d  }| 	 d }| }||||j | dS )Nr   )r   r   r   r^   ro   r   r   r   )r   r   r   r   r   )r   r   r   r   r   r   zpd_op.conv3dr   zpd_op.conv3d_transposez;The value in conv3d_transpose's PostPadding should be >= 0.r   r   )!rJ   r   r   rK   rL   r   r6   rC   rN   r   r   ZDims3r+   r   r   r   r   r   r   r%   r   r   r   r   r   r   r&   r   r   r   r   r   r#   )r)   r3   rP   r   r   rS   r   r   r   r   Zfilter_dr   r   r   r   r   r   r   r   r   r   r   r   Znv_pre_paddingsr,   Znv_post_paddingsr   r   r   r   r   r   r   convert_conv3d  s   




r   c                 C   sr   |   |   }t }| dkr|| d  S | dkr*| d S | dkr7| d gS d S )Nr   r   zpd_op.full_int_arrayz
pd_op.full)rK   rL   r   r   r+   r   r   tolist)r3   rP   Zinput_indexZinput_opr   r   r   r   get_input_constant_value@  s   
r   c                 C   s   |d }t ||d}| d  j}| d }| jr$|dks$J dg }t|dkr4ttt|}tt|D ]}	||	 dk rLt|||	  ||	< q:| j	||t
||d}
t|
| |
dj|
d_|
dS )Nr   r   keepdimzCcan't reduce on axis == 0 when network has implicit batch dimensionr:   r   )r   rK   rL   r   r   r9   r/   rU   r   r   r<   r&   	get_inputr   r#   )r)   r3   rP   rQ   rS   r$   rR   r   Zoutput_shaper?   r,   r   r   r   add_reduce_layerO  s0   


r   c                 C   s2  |d }|  |}t|| |dtj tj|d_| d}|	 d 
 j}t|}| d}	t|dkrMd}
t|D ]}|
d|> O }
qCntt|D ]}|| dk rc||  |7  < qSt|}
| j|d||
|	d}t|| |  |d}t|| |dtj tj|d_|dS )Nr   r$   r   r   r   )ry   r&   rz   rC   r!   r#   r   r   r   rK   rL   r   r/   r   r<   r   r   )r)   r3   rP   rQ   rS   Z
cast_layerr$   rR   Z
input_dimsr   r:   r?   r   Z
bool_layerr   r   r   add_cast_reduce_layeri  s>   




r   c                 C   s   t |j}|r|d dgnd }t| dg| |d}|r!|d dgnd }t| dg| |d}|r5|d dgnd }	t| |||	d}
|rG|d dgnd }t| |
||d}|rY|d dgnd }t| |||d}t| |||d}|S )	Nr   zero_tensorrf   minus_one_tensorr   min_indices_zerosignsub)r/   r   r[   ru   rs   r   rt   )r)   rR   r   r+   rv   Zzero_tensor_namer   Zminus_one_tensor_namer   Zmin_indices_zero_namer   Z	sign_namer   Zsub_namer   Zfixed_indicesr   r   r   fix_negative_indices  s&   
r   c              	   C   sf  |r|d dgnd }|  |}t|| |d}t|}ttt|j}t|D ]}|	|t|j q*|r>|d dgnd }	| 
dtjdgtjd}
t|
|	 |
d}
|r_|d dgnd }| ||
g}t|| |d}|rz|d dgnd }| j|| 
t|ftj|tjdddd	}t|| |d}| |}|d| t|| |dS )
Nr   rR   rk   r   r   r   extended_shaper   r$   )r   r&   r#   setrU   r   r/   r   sortedinsertr   r   rV   r!   r"   r   r   r%   )r)   rS   r:   r+   input_shape_namerR   Zaxis_setZ
subscriptsr$   Zone_tensor_namerk   Zextended_shape_namer   Zgather_layer_namer   new_shape_tensorZreshaped_tensorr   r   r   trt_unsqueeze  sB   











r  c                    s4  |r|d dgnd }|  |}t|| |d}|j}ttt|} fdd|D }|r5|d dgnd }|  |}	t|	| |	d}	|rN|d dgnd }
| t|ftj	|tj
d}t||
 |d}|rq|d dgnd }| j|	|dd	}t|| |d}| |}|d
| t|| |dS )Nr   rR   c                    s   g | ]}| vr|qS r   r   )r   r8   r:   r   r   
<listcomp>  s    zsqueeze_trt.<locals>.<listcomp>rh   remaining_dims_tensorr   r  r   r   )r   r&   r#   r   rU   r   r/   r   r   rV   r!   r   r   r%   )r)   rS   r:   r+   r  rR   Zall_dimsZremaining_dimsZinput_shape_tensor_namerh   Zremaining_dims_tensor_namer  Znew_shape_tensor_namer  r   r   r  r   squeeze_trt  s8   












r  c              	   C   s@  ddl m} i dtjjgdtjjgdtjjgdtjjgdtjjgdtjjgd	tjjgd
tjj	gdtjj
gdtjjgdtjjgdtjjgdtjjgdtjjgdtjjgdtjjgdtjjgtjjgtjjgtjjtjjgtjjgtjjgtjjgtjjgd}|d }d }|j}tjjtjtjjtji}t }	|	  }
|tjjtjjfv }|r| !|}|
|j"kr|#dtj$ n|#dtj% t&|| |'d}|( |v r||(  D ]}| )||}t&|| |'d}qn	t*d|(  |r| !|}|#d||  t&|| |'d}|S )Nr   PrecisionModez
pd_op.sqrtzpd_op.sqrt_zpd_op.floorz	pd_op.expz	pd_op.absz
pd_op.abs_z	pd_op.sinz	pd_op.cosz
pd_op.sinhz
pd_op.coshzpd_op.asinhzpd_op.acoshzpd_op.atanhz
pd_op.ceilzpd_op.reciprocalz	pd_op.erfz
pd_op.sign)zpd_op.roundzpd_op.logical_notzpd_op.rsqrtz	pd_op.tanz
pd_op.asinz
pd_op.acosz
pd_op.atanzUnsupported unary operation: )+paddle.tensorrtr	  rC   ZUnaryOperationZSQRTZFLOORZEXPZABSZSINZCOSZSINHZCOSHZASINHZACOSHZATANHZCEILZRECIPZERFZSIGNZROUNDNOTZTANZASINZACOSZATANr   r   r   r   r   r!   r   get_precision_modery   ZFP32rz   r   r   r&   r#   r+   Z	add_unaryNotImplementedError)r)   r3   rP   r	  Zops_type_maprS   r,   Zorg_typeZtrt_type_mappingr   precision_modeZ	need_castr{   Ztrt_opZrestore_layerr   r   r   unary_op_converter  s   








	


















r  c           	      C   sb   |j }|| dkrt| || ||d}|S |r|d dgnd }t| ||d}t| ||||d}|S )Nr   r   dynamic_shaperf   )r   r[   rp   r   )	r)   rS   r$   rX   r+   rR   Zoutput_tensorZ
shape_namer  r   r   r   get_axis_length9  s   	
r  c                  C   s0   ddl m}  t }| }d}|| jkrd}|S )Nr   r  FT)r
  r	  r   r  ZFP16)r	  r   r  Zenable_fp16r   r   r   WithFp16H  s   
r  c              	   C   sF  |durt |tr|\}}n| }d}|dur-t jj D ]\}}|| u r,|} nq |dur|durg }d}| | }durl|j}	d|	v rX|		dd 	dd 
 }
n|	}
||
 |d7 }| | }dusB| dj}d|v r|	dd 	dd 
 }n|}| d| d| d	d
| d}|| _dS dS dS dS )aa  
    Sets standardized names for converter output layers following the format: `<id>_<pd_op>-><layerName>(<inputIds>)`

    Naming Rule:
        Format: <sequence_number>_<paddle_op_name>-><layer_variable_name>(<comma_separated_input_ids>)
        Components:
            - sequence_number: Output tensor's unique ID from layer
            - paddle_op_name: Name of source Paddle operator
            - layer_variable_name: Variable name referencing the layer in code
            - input_ids: Input tensor IDs from preceding layers

    Args:
        layer (ILayer): Target layer to name
        second_param: Context-dependent parameter:
            - For non-public functions: paddle_op (op object)
            - For public functions: [paddle_op_name (str), layer_var_name (str)] list
            - When name=None in public functions: Enables nested handling
    Nr   zUnnamed Layer*r   )r   z->(z, )r6   rU   r+   inspectcurrentframef_backf_localsitemsr   splitstripr>   r#   join)r,   Zsecond_paramop_nameZlayer_var_namevar_nameZvar_valZ	input_idsr?   rS   Z
input_nameZinput_idZoutput_nameZsequence_numberZformatted_namer   r   r   r&   T  sR   




r&   c              
   C   s   |  }|d urt|}nt|}t|}t|}tdtjt|tj	dtj
jtdtjt|tj	dtj
jtdtjt|tj	dtj
jtdtjt|tj	dtj
jg}t|}	d}
d}t|
|	|}| ||}|S )Nr  r   attrs_map_infoZinputs_type_infoZoutputs_type_infoZpir_generic_plugin1)r+   r   r	   r
   rC   ZPluginFieldr   rV   rU   bytes_ZPluginFieldTypeZCHARZPluginFieldCollectionrG   Zadd_plugin_v2)r)   r3   rP   Zextra_attrsr  r   Zinput_type_infoZoutput_type_infoZplugin_fieldsZplugin_field_collectionrD   Zplugin_versionrF   r,   r   r   r   generic_plugin_converter  sF   

r#  )r   )F)rA   )N)r   N)NF)FN)Vr  loggingossysnumpyr   ZtensorrtrC   rJ   r   r   pathdirnameabspath__file__Zcurrent_dirr  pardir
parent_dirr>   r   r   Zpaddle.base.log_helperr   __name__INFOZ_loggerZpaddle.base.libpaddle.pirr   r	   r
   __version__rE   rU   mapr7   r  r   r   r-   r5   r<   r@   rG   rH   rT   r!   r[   r]   rc   rx   rq   r|   rp   rr   r   r   r   r   rs   rt   ru   r   r   r   r   r   r   r   r   r   r_   r   r   r   r   r   r   r   r  r  r  r  r  r&   r#  r   r   r   r   <module>   s   



 




G
	

















!
E W
%

*#
GD