o
    0j[!                     @   s  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d Z"edde dedeee!ee#ef f ede#f f fd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                  C   s@   t jjtddd} t| W  d    S 1 sw   Y  d S )Nzhpi_model_info_collection.jsonzutf-8)encoding)	importlib	resources	open_text__package__jsonload)f r   m/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddlex/inference/models/runners/hpi/backend.py_get_hpi_model_info_collection#   s   $r    zultra-infer
hpi_configmodel_pathsreturnc                 C   s8  ddl m}m}m}m} d|v }| jrt r|pd|v }g }d|v r'|d | r6|r6| jdkr6|d | rE|rE| jdv rE|d | rT|rT| jd	krT|d
 | red|v re| jdkre|d |sidS | j	d ur~| j	|vr~d dt
| j	 dfS t }|d d dkrtd| d}d|d d   krdkrn n(|d d u r|d dkrd|d  |d  }nd|d  |d  |d  }nd | dfS | jdkrt }	|	j }
|
dkrd}n*d t
|
 dfS | jd	krt }|sd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sU|d d  D ]}|d!rS|| qFtrltjd
rltjd"rl| jd	ks|d d  D ]}|d#r|| qrg }tt }|D ]/}|drd}n|d
rd
}n|}|d ur||vrq|| || | q|sd$S | j	d ur| j	|vrd t
| j	 d%fS | j	}n|d }|| }| j!d urd }|dkr
d&| j!v r
| j!d& d'rd!}n| j!d& d(r
d#}|r|D ]}||r nqd)S |d }i }|dkrr|d*v s1J ||dkr>|"d&di nN|d+krK|"d&d+i nA|d!krX|"d&d'i n4|d#kre|"d&d,i n'|d-krq|"d&d.i n|d
kr|d/v sJ ||d0kr|"d1d2i | j!d ur|"| j! ||fS )3Nr   )is_built_with_omis_built_with_openvinois_built_with_ortis_built_with_trtZonnxpaddlecpuZopenvino)r)   gpuZonnxruntimer*   tensorrtomZ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_64Zcpu_x64z! is not a supported architecture.)NzNo CUDA version was found.Zgpu_cudaz  is not a supported device type.)Nz#No prior knowledge can be utilized.z is not a known model.paddle_mkldnnZnvinferpaddle_tensorrt)Nz%No inference backend can be selected.z& is not a supported inference backend.Zrun_modeZmkldnnZtrt)Nz"Unsupported backend configuration.)r(   paddle_fp16r/   r0   paddle_tensorrt_fp16r1   Ztrt_fp32r2   Ztrt_fp16)r+   tensorrt_fp16r3   	precisionZfp16)#Zultra_inferr$   r%   r&   r'   Zauto_paddle2onnxr   appendZdevice_typebackendreprr   r	   debugplatformunamemachinelowerr   r    Zpdx_model_namecopyr   
startswithremover   r   util	find_specctypesZfind_libraryr   listZbackend_configupdate)r!   r"   r$   r%   r&   r'   Zis_onnx_model_availableZavailable_backendsZpaddle_versionr:   archkeyZcuda_versionZhpi_model_info_collectionZ!hpi_model_info_collection_for_envZsupported_pseudo_backendsZpbZsupported_backendsZbackend_to_pseudo_backendsr6   Zsuggested_backendZpseudo_backendsZrequested_base_pseudo_backendZpseudo_backendZsuggested_backend_configr   r   r   $suggest_inference_backend_and_config+   s$  







,
















rG   )%__doc__Zctypes.utilrB   importlib.resourcesr   importlib.utilr   r9   collectionsr   	functoolsr   typingr   r   r   r   utilsr	   Z
utils.depsr
   r   Z	utils.envr   r   Zutils.flagsr   Z
utils.miscr   Zutils.model_pathsr   configr   r   r    strrG   r   r   r   r   <module>   s4   
"