
    {-j[!                     `   d 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	 ddl
mZ ddlmZmZmZmZ ddlmZ ddlmZmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZ ddlm Z m!Z!  ed          d             Z" ed          de dedeee!ee#ef         f         ede#f         f         fd            Z$dS )z9HPI backend selection and config for ultra_infer Runtime.    N)defaultdict)	lru_cache)AnyDictTupleUnion   )logging)function_requires_depsis_paddle2onnx_plugin_available)get_paddle_cuda_versionget_paddle_version)USE_PIR_TRT   )is_mkldnn_available   )
ModelPaths   )	HPIConfigInferenceBackendc                      t           j                            t          dd          5 } t	          j        |           cd d d            S # 1 swxY w Y   d S )Nzhpi_model_info_collection.jsonzutf-8)encoding)	importlib	resources	open_text__package__jsonload)fs    l/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/paddlex/inference/models/runners/hpi/backend.py_get_hpi_model_info_collectionr!   #   s    			&	&5 
' 
 
 	
y||                 s   A		AAzultra-infer
hpi_configmodel_pathsreturnc                    ddl m}m}m}m} d|v }| j        rt                      r|pd|v }g }d|v r|                    d            |            r"|r | j        dk    r|                    d            |            r |r| j        dv r|                    d            |            r"|r | j        d	k    r|                    d
            |            r$d|v r | j        dk    r|                    d           |sdS | j	        #| j	        |vrd dt          | j	                   dfS t                      }|d d         dk    rt          j        d|           d}d|d d         cxk    rdk    rGn nD|d         <|d         dk    rd|d          |d          }n#d|d          |d          |d          }nd | dfS | j        dk    rIt          j                    }	|	j                                        }
|
dk    rd}nXd t          |
           dfS | j        d	k    r t%                      }|sdS |d         }d| }nd t          | j                   dfS t'                      }||vrdS ||         |         }| j        |vrd t          | j                   d fS || j                                                 }t-                      r| j        dk    s7|d d          D ],}|                    d!          r|                    |           -t2          rIt4          j                            d
          r*t:          j                            d"          r| j        d	k    s7|d d          D ],}|                    d#          r|                    |           -g }t?          t@                    }|D ]k}|                    d          rd}n|                    d
          rd
}n|}|||vr;|                    |           ||                             |           l|sd$S | j	        *| j	        |vrd t          | j	                   d%fS | j	        }n|d         }||         }| j!        vd }|dk    rNd&| j!        v rE| j!        d&                             d'          rd!}n"| j!        d&                             d(          rd#}|r|D ]}|                    |          r nd)S |d         }i }|dk    r|d*v s
J |            |dk    r|"                    d&di           n|d+k    r|"                    d&d+i           n|d!k    r|"                    d&d'i           nm|d#k    r|"                    d&d,i           nO|d-k    r|"                    d&d.i           n1|d
k    r+|d/v s
J |            |d0k    r|"                    d1d2i           | j!        |"                    | j!                   ||fS )3Nr   )is_built_with_omis_built_with_openvinois_built_with_ortis_built_with_trtonnxpaddlecpuopenvino)r,   gpuonnxruntimer.   tensorrtomnpu)Nz$No inference backends are available.zInference backend z is unavailable.r   )r   r   r   zYPaddle version %s is not supported yet. The prior knowledge of Paddle 3.1.1 will be used.)r   r   r   N)r   r      )r   r   r   z# is not a supported Paddle version.x86_64cpu_x64z! is not a supported architecture.)NzNo CUDA version was found.gpu_cudaz  is not a supported device type.)Nz#No prior knowledge can be utilized.z is not a known model.paddle_mkldnnnvinferpaddle_tensorrt)Nz%No inference backend can be selected.z& is not a supported inference backend.run_modemkldnntrt)Nz"Unsupported backend configuration.)r+   paddle_fp16r7   r9   paddle_tensorrt_fp16r=   trt_fp32r>   trt_fp16)r0   tensorrt_fp16rA   	precisionfp16)#ultra_inferr&   r'   r(   r)   auto_paddle2onnxr   appenddevice_typebackendreprr   r
   debugplatformunamemachinelowerr   r!   pdx_model_namecopyr   
startswithremover   r   util	find_specctypesfind_libraryr   listbackend_configupdate)r"   r#   r&   r'   r(   r)   is_onnx_model_availableavailable_backendspaddle_versionrL   archkeycuda_versionhpi_model_info_collection!hpi_model_info_collection_for_envsupported_pseudo_backendspbsupported_backendsbackend_to_pseudo_backendsrH   suggested_backendpseudo_backendsrequested_base_pseudo_backendpseudo_backendsuggested_backend_configs                            r    $suggest_inference_backend_and_configrk   +   s'   
            %3" U'F'H'H U"9"TX=T;!!(+++  .#. "e++!!*---1#1 "n44!!-000.#. "e++!!*--- (dk11j6LPU6U6U!!$''' <;;%**<DV*V*VT$z/A*B*BTTTTT'))NbqbY&&g	
 	
 	
 )#----v-----.2C2K!!!LnQ&7L9JLLNN S*RN1,=R~a?PRR N
 BBB
 	

 &&  }""$$8CCDJJIIIII		5	(	(.00 	655#A'''Z344VVVVV > @ @
+++::(A#(F~(V% (IIIZ677OOOOO A!!
dff   !! 5j&<&E&E+AAA. 	5 	5B}}_-- 5)00444 	5N$$Z005 K$$Y//5 "e+++AAA. 	5 	5B}}.// 5)00444!,T!2!2' 
7 
7=="" 	GG]]:&& 	 GGG)g=O.O.O!!'***"7+2226666 =<<%%777
*++SSS  '..q101BCO ,(,%((Z666,Z8CCHMM F4C11.z:EEeLL F4E1( 	B% B B==!>?? E BA$Q'N!H$$ "
 
 
 
 
 
 
 X%%$++Z,BCCCC},,$++Z,GHHHH..$++Z,BCCCC000$++Z,DEEEE555$++Z,DEEE	j	(	(!>>>>>>>_,,$++[&,ABBB , ''
(ABBB666    )%__doc__ctypes.utilrU   importlib.resourcesr   importlib.utilr   rK   collectionsr   	functoolsr   typingr   r   r   r   utilsr
   
utils.depsr   r   	utils.envr   r   utils.flagsr   
utils.miscr   utils.model_pathsr   configr   r   r!   strrk    rl   r    <module>r}      s   @ ?               # # # # # #       * * * * * * * * * * * *       S S S S S S S S F F F F F F F F ( ( ( ( ( ( . . . . . . + + + + + + / / / / / / / / 1   &&s7s7s7 5!4S>12E$)4DDEs7 s7 s7 '&s7 s7 s7rl   