
    9i1                         S SK r S SKJr  S SKJrJr  SSKJr  SSKJ	r	J
r
Jr  SSKJrJrJr  SS	KJr  SS
KJr  SSKJr  SSKJrJr  S r " S S\5      rg)    N)deepcopy)DictList   )logging)get_default_deviceparse_deviceset_env_for_device_type)DISABLE_DEVICE_FALLBACKENABLE_MKLDNN_BYDEFAULTUSE_PIR_TRT   )is_mkldnn_available)MKLDNN_BLOCKLIST)NEWIR_BLOCKLIST)TRT_CFG_SETTINGTRT_PRECISION_MAPc                 l    U (       d  gUS:w  a  g[         (       a  [        5       (       a  U [        ;  a  gg)Npaddlecpumkldnn)r   r   r   )
model_namedevice_types     a/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/paddlex/inference/utils/pp_option.pyget_default_run_moder      s1    e!!..    c                   d  ^  \ rS rSrSrSrSrU 4S jrS rS r	S r
S	 rS
 r\S 5       r\R                  S\4S j5       r\S 5       r\R                  S 5       r\S 5       r\R                  S 5       r\S 5       r\R                  S 5       r\S 5       r\R                  S 5       r\S 5       r\R                  S\4S j5       r\S 5       r\R                  S\4S j5       r\S 5       r\R                  S\4S j5       r\S 5       r\R                  S  5       r\S! 5       r\R                  S" 5       r\S# 5       r\R                  S$ 5       r\S% 5       r\R                  S&\\\\\      4   4S' j5       r\S( 5       r \ R                  S)\\\\!   4   4S* j5       r \S+ 5       r"\"R                  S,\4S- j5       r"\S. 5       r#\#R                  S/ 5       r#\S0 5       r$\$R                  S1\4S2 j5       r$\S3 5       r%\%R                  S4 5       r%S5\4S6 jr&S7 r'S8 r(S9 r)S: r*S; r+S< r,S= r-S>r.U =r/$ )?PaddlePredictorOption+   zPaddle Inference Engine Option)r   paddle_fp32paddle_fp16trt_fp32trt_fp16trt_int8r   mkldnn_bf16)	gpur   npuxpumludcugcuiluvatar_gpu	metax_gpuc                 T   > [         TU ]  5         0 U l        U R                  " S0 UD6  g )N )super__init___cfg_init_option)selfkwargs	__class__s     r   r1   PaddlePredictorOption.__init__E   s&    	#F#r   c                     [        U 5      " 5       n[        U R                  5      Ul        [        U S5      (       a  U R                  Ul        U$ Ntrt_cfg_setting)typer   r2   hasattrr:   r4   objs     r   copyPaddlePredictorOption.copyJ   s>    4jlDII&4*++"&"6"6C
r   c                     UR                  5        HE  u  p#U R                  U5      (       a  [        XU5        M)  [        U SU R	                  5        35      e   g )Nz3 is not supported to set! The supported option is: )items_has_settersetattr	Exception_get_settable_attributes)r4   r5   kvs       r   r3   "PaddlePredictorOption._init_optionQ   sU    LLNDA""#cLTMjMjMlLmn 	 #r   c                    U R                  U5      R                  5        H   u  p#U R                  R                  X#5        M"     U R                  S:X  a  SS KnUR                  R                  5       (       a(  UR                  R                  R                  5       S:  dK  [        (       a  [        S5      e[        R                  " S5        SU l        [        US5      U l        S U l        U R                  S;   aK  ["        U   n[$        (       a  [&        U R                     US'   O[&        U R                     US   S'   XPl        g g )	Nr&   r   zDevice fallback is disabled and the specified device (GPU) is not available. To fall back to CPU instead, unset the PADDLE_PDX_DISABLE_DEVICE_FALLBACK environment variable.zFThe specified device (GPU) is not available! Switching to CPU instead.r   )r$   r"   r#   precision_modeenable_tensorrt_engine)_get_default_configrB   r2   
setdefaultr   r   deviceis_compiled_with_cudacudadevice_countr   RuntimeErrorr   warningr   run_mode	device_idr   r   r   r:   )r4   r   rG   rH   r   r:   s         r   setdefault_by_model_name.PaddlePredictorOption.setdefault_by_model_nameZ   s    ,,Z8>>@DAII  & A u$ 3355MM&&3359**&z 
 OO` $)  4Z G!% ==@@-j9O{4Edmm4T 01 &dmm4   89:JK $3  Ar   c                    U R                   c   [        [        5       5      u  p#Uc  SOUS   nOU R                   U R                  pB0 S[	        X5      _SU_SU_SS_S/ _S	U[
        ;  a  S
OS_SS_S0 _SS
_SS
_SS_SS_SS_SS_SS
_SS_nU$ )zget default configNr   rU   r   rV   cpu_threads
   delete_passenable_new_irTFenable_cinnr:   trt_use_dynamic_shapestrt_collect_shape_range_info#trt_discard_cached_shape_range_infotrt_dynamic_shapestrt_dynamic_shape_input_datatrt_shape_range_info_pathtrt_allow_rebuild_at_runtimemkldnn_cache_capacity)r   r	   r   rV   r   r   )r4   r   r   
device_idsrV   default_configs         r   rM   )PaddlePredictorOption._get_default_config}   s   #&23E3G&H#K * 2
1I%)%5%5t~~
,ZE
;
 
 2	

 2
 Z%FTE
 5
 r
 %d
 +D
 25
 !$
 +D
 (
 +D
  $R!
$ r   c                      X R                   U'   g N)r2   r4   rG   rH   s      r   _updatePaddlePredictorOption._update   s    		!r   c                 8    U R                   R                  S5      $ )NrU   r2   getr4   s    r   rU   PaddlePredictorOption.run_mode   s    yy}}Z((r   rU   c                    XR                   ;  a6  SR                  U R                   5      n[        SU S[        U5       S35      eUR	                  S5      (       a  [        5       (       d  [        S5      eU R                  SU5        g)	set run mode, z`run_mode` must be , but received .r   zMKL-DNN is not availablerU   N)SUPPORT_RUN_MODEjoin
ValueErrorrepr
startswithr   rm   )r4   rU   support_run_mode_strs      r   rU   rs      s     000#'99T-B-B#C %&:%;?4PX>JZZ[\  x((1D1F1F788Z*r   c                 8    U R                   R                  S5      $ )Nr   rp   rr   s    r   r   !PaddlePredictorOption.device_type       yy}}]++r   c                     XR                   ;  a6  SR                  U R                   5      n[        SU S[        U5       S35      eU R	                  SU5        [        U5        US;   a  S[        R                  S'   g g )	Nrv   zThe device type must be one of rw   rx   r   )r&   r   1FLAGS_enable_pir_api)SUPPORT_DEVICErz   r{   r|   rm   r
   osenviron)r4   r   r~   s      r   r   r      s    111#'99T-@-@#A 12F1GW[\gWhViijk  	]K0,.(14BJJ-. )r   c                 8    U R                   R                  S5      $ NrV   rp   rr   s    r   rV   PaddlePredictorOption.device_id   s    yy}}[))r   c                 (    U R                  SU5        g r   rm   )r4   rV   s     r   rV   r      s    [),r   c                 8    U R                   R                  S5      $ )NrZ   rp   rr   s    r   rZ   !PaddlePredictorOption.cpu_threads   r   r   c                 r    [        U[        5      (       a  US:  a
  [        5       eU R                  SU5        g)zset cpu threadsr   rZ   N)
isinstanceintrE   rm   )r4   rZ   s     r   rZ   r      s-     +s++{Q+]K0r   c                 8    U R                   R                  S5      $ Nr\   rp   rr   s    r   r\   !PaddlePredictorOption.delete_pass   r   r   c                 (    U R                  SU5        g r   r   )r4   r\   s     r   r\   r      s    ]K0r   c                 8    U R                   R                  S5      $ )Nr]   rp   rr   s    r   r]   #PaddlePredictorOption.enable_new_ir   s    yy}}_--r   r]   c                 (    U R                  SU5        g)ru   r]   Nr   )r4   r]   s     r   r]   r      s     	_m4r   c                 8    U R                   R                  S5      $ )Nr^   rp   rr   s    r   r^   !PaddlePredictorOption.enable_cinn   r   r   r^   c                 (    U R                  SU5        g)ru   r^   Nr   )r4   r^   s     r   r^   r      s     	]K0r   c                 8    U R                   R                  S5      $ r9   rp   rr   s    r   r:   %PaddlePredictorOption.trt_cfg_setting   s    yy}}.//r   configc                     [        U[        [        S5      45      (       d   S[        U5       S35       eU R                  SU5        g)zset trt configNz7The trt_cfg_setting must be `dict` type, but received `z` type!r:   )r   dictr;   rm   )r4   r   s     r   r:   r      sR     T4:&
 
 	[DT&\NRYZ	[ 
 	&/r   c                 8    U R                   R                  S5      $ Nr_   rp   rr   s    r   r_   ,PaddlePredictorOption.trt_use_dynamic_shapes   s    yy}}566r   c                 (    U R                  SU5        g r   r   )r4   r_   s     r   r_   r      s    -/EFr   c                 8    U R                   R                  S5      $ Nr`   rp   rr   s    r   r`   2PaddlePredictorOption.trt_collect_shape_range_info       yy}};<<r   c                 (    U R                  SU5        g r   r   )r4   r`   s     r   r`   r         35QRr   c                 8    U R                   R                  S5      $ Nra   rp   rr   s    r   ra   9PaddlePredictorOption.trt_discard_cached_shape_range_info  s    yy}}BCCr   c                 (    U R                  SU5        g r   r   )r4   ra   s     r   ra   r     s    13V	
r   c                 8    U R                   R                  S5      $ Nrb   rp   rr   s    r   rb   (PaddlePredictorOption.trt_dynamic_shapes  s    yy}}122r   rb   c                     [        U[        5      (       d   eU H  n[        X   [        5      (       a  M   e   U R                  SU5        g r   )r   r   listrm   )r4   rb   input_ks      r   rb   r     sG    ,d3333)G094@@@@ *)+=>r   c                 8    U R                   R                  S5      $ Nrc   rp   rr   s    r   rc   2PaddlePredictorOption.trt_dynamic_shape_input_data  r   r   rc   c                 (    U R                  SU5        g r   r   )r4   rc   s     r   rc   r   !  s     	35QRr   c                 8    U R                   R                  S5      $ )Nrd   rp   rr   s    r   rd   /PaddlePredictorOption.trt_shape_range_info_path'  s    yy}}899r   rd   c                 (    U R                  SU5        g)zset shape info filenamerd   Nr   )r4   rd   s     r   rd   r   +  s     	02KLr   c                 8    U R                   R                  S5      $ Nre   rp   rr   s    r   re   2PaddlePredictorOption.trt_allow_rebuild_at_runtime0  r   r   c                 (    U R                  SU5        g r   r   )r4   re   s     r   re   r   4  r   r   c                 8    U R                   R                  S5      $ Nrf   rp   rr   s    r   rf   +PaddlePredictorOption.mkldnn_cache_capacity8  s    yy}}455r   capacityc                 (    U R                  SU5        g r   r   )r4   r   s     r   rf   r   <  s    ,h7r   c                     U R                   $ rk   rd   rr   s    r   shape_info_filename)PaddlePredictorOption.shape_info_filenameB  s    ---r   c                     Xl         g rk   r   )r4   r   s     r   r   r   F  s    )<&r   rO   c                     U(       d  g[        U5      u  p#X l        Ub  US   OSnX@l        Ub  [        U5      S:  a  [        R
                  " SU S35        gg)z
set deviceNr   r   zThe device ID has been set to rx   )r	   r   rV   lenr   debug)r4   rO   r   rg   rV   s        r   
set_device PaddlePredictorOption.set_deviceJ  s\    ".v"6&%/%;JqM	"Z1!4MM:9+QGH "5r   c                     U R                   $ )zget supported run mode)ry   rr   s    r   get_support_run_mode*PaddlePredictorOption.get_support_run_modeU  s    $$$r   c                     U R                   $ )zget supported device)r   rr   s    r   get_support_device(PaddlePredictorOption.get_support_deviceY  s    """r   c           	          SR                  U R                  R                  5        VVs/ s H  u  pU SU 3PM     snn5      $ s  snnf )Nz,  z: )rz   r2   rB   rl   s      r   __str__PaddlePredictorOption.__str__]  s<    zz499??3DE3D41aS1#;3DEFFEs   A
c                     XR                   ;  a  [        SU SU R                    35      eU R                   R                  U5      $ )Nz	The key (z) is not found in cfg: 
 )r2   rE   rq   )r4   keys     r   __getattr__!PaddlePredictorOption.__getattr__`  s<    iiiu,FtyykRSSyy}}S!!r   c                 `    [        U[        5      (       a  UR                  U R                  :H  $ g)NF)r   r   r2   r=   s     r   __eq__PaddlePredictorOption.__eq__e  s&    c01188tyy((r   c                 z    [        U R                  US 5      n[        U[        5      =(       a    UR                  S L$ rk   )getattrr6   r   propertyfset)r4   attrprops      r   rC   !PaddlePredictorOption._has_setterj  s/    t~~tT2$)Cdiit.CCr   c                     [        U R                  5      R                  5        VVs/ s H-  u  p[        U[        5      (       d  M  UR
                  c  M+  UPM/     snn$ s  snnf rk   )varsr6   rB   r   r   r   )r4   namer   s      r   rF   .PaddlePredictorOption._get_settable_attributesn  sS     #4>>288:
:
$) .2ii :
 	
 
s   AAA)r2   rV   r   rU   r:   rd   )0__name__
__module____qualname____firstlineno____doc__ry   r   r1   r?   r3   rW   rM   rm   r   rU   setterstrr   rV   rZ   r\   r]   boolr^   r:   r   r_   r`   ra   rb   r   r   rc   floatrd   re   rf   r   r   r   r   r   r   r   rC   rF   __static_attributes____classcell__)r6   s   @r   r   r   +   s   (	
N$
!3F8 ) ) __+ + + , , 
5 
5 * * - - , , 1 1 , , 1 1 . . 54 5 5 , , 1t 1 1 0 0 0d 0 0 7 7 ""G #G = = "((S )S D D )//
 0

 3 3 ?T#tDI:N5O ? ? = = "((S,0d5k1A,BS )S
 : : %%M3 M &M = = "((S )S 6 6 !!8c 8 "8
 . . =  =	I 	I%#G"

D
 
r   r   )r   r?   r   typingr   r   utilsr   utils.devicer   r	   r
   utils.flagsr   r   r   miscr   mkldnn_blocklistr   new_ir_blocklistr   
trt_configr   r   r   objectr   r/   r   r   <module>r      s>    
    U U X X % . - :H
F H
r   