o
    * iM                     @   s   d dl Z d dlmZmZ dd Zdd ZG dd dZG d	d
 d
ZG dd dZG dd dZ	dd Z
de jjfddZdddZdS )    N)bind_datatypebind_vartypec                   C   s   t   dtjjj_tjddi tj  tj	  tjj
tj_
tjjjtj_tjjjtj_tjjjtj_tjj
tj_
tjjjtj_tjjjtj_tjjjtj_d S )NTFLAGS_enable_pir_in_executor)r   paddlebase	framework
global_var_use_pir_api_	set_flagspirZregister_paddle_dialectZregister_dist_dialectProgramcoreprogram_guarddefault_main_programdefault_startup_programstatic r   r   \/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/paddle/pir_utils.py_switch_to_pir_   s   


r   c                   C   s   t   dtjjj_tjddi tjjjtj_tjjjtj_tjjj	tj_	tjjj
tj_
tjjjtj_tjjjtj_tjjj	tj_	tjjj
tj_
d S )NFr   )r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   _switch_to_old_ir_*   s   
r   c                   @   ,   e Zd Zdd Zdd Zdd Zdd Zd	S )
IrGuardc                 C   sb   t jj | _t jjdd | _| jrt   | js/t jddi dt jjj	_
|   d S d S NFLAGS_enable_pir_apiT)r   r   r   in_dygraph_modein_dygraph_outside	get_flagsold_flagenable_staticr
   r   r	   _switch_to_pirselfr   r   r   	__enter__B   s   zIrGuard.__enter__c                 C   s@   | j rt  | jstjddi dtjjj_| 	  d S d S Nr   F)
r   r   disable_staticr   r   r
   r   r   r	   _switch_to_old_irr!   exc_typeexc_valexc_tbr   r   r   __exit__N   s   zIrGuard.__exit__c                 C       t jjdd rt  d S d S Nr   r   r   r   r   r   r    r   r   r   r   V   
   
zIrGuard._switch_to_pirc                 C   $   t jjdd st  d S tdNr   zIrGuard._switch_to_old_ir only work when paddle.framework.in_pir_mode() is false,                 please set FLAGS_enable_pir_api = falser   r   r   r   r   RuntimeErrorr    r   r   r   r%   \      
zIrGuard._switch_to_old_irN__name__
__module____qualname__r"   r*   r   r%   r   r   r   r   r   A   s
    r   c                   @      e Zd Zdd Zdd ZdS )
OldIrGuardc                 C   sT   t jj | _t jjdd | _| jrt   | jr(t jddi t	  d S d S r#   )
r   r   r   r   r   r   r   r   r
   r   r    r   r   r   r"   i   s   
zOldIrGuard.__enter__c                 C   s2   | j rt  | jrtjddi t  d S d S r   )r   r   r$   r   r   r
   r   r&   r   r   r   r*   t   s   
zOldIrGuard.__exit__Nr5   r6   r7   r"   r*   r   r   r   r   r9   h   s    r9   c                   @   r   )
DygraphPirGuardc                 C   s:   t jjdd | _| jst jddi |   d S d S r   )r   r   r   r   r   r
   r   r    r   r   r   r"   }   s   zDygraphPirGuard.__enter__c                 C   s&   | j stjddi |   d S d S r#   )r   r   r   r
   r%   r&   r   r   r   r*      s   zDygraphPirGuard.__exit__c                 C   r+   r,   r-   r    r   r   r   r      r.   zDygraphPirGuard._switch_to_pirc                 C   r/   r0   r1   r    r   r   r   r%      r3   z!DygraphPirGuard._switch_to_old_irNr4   r   r   r   r   r;   |   s
    r;   c                   @   r8   )DygraphOldIrGuardc                 C   s8   t jjdd | _| jrt jddi t  d S d S r#   )r   r   r   r   r   r
   r   r    r   r   r   r"      s   
zDygraphOldIrGuard.__enter__c                 C   s$   | j rtjddi t  d S d S r   )r   r   r   r
   r   r&   r   r   r   r*      s   
zDygraphOldIrGuard.__exit__Nr:   r   r   r   r   r<      s    r<   c                 C   sp   ddl m} |  }|jd|jd|jd|jd|jd|jd|j	d|j
d|jd|jd|jdi}||  j }|| S )Nr   )DataType            )Zpaddle.base.corer=   numelZBOOLZINT8ZINT16ZINT32ZINT64ZUINT8ZUINT16ZUINT32ZUINT64ZFLOAT32ZFLOAT64typedtype)valuer=   rB   mappingrD   r   r   r   
get_memory   s    rG   programc                 C   s`   d}|   jD ] }| D ]}| }|t|7 }q| D ]}|t|7 }qq|d d d S )Ng        i   )Zglobal_blockopsZoperandssourcerG   results)rH   Ztotal_ioopoperandrE   r   r   r   analysis_io   s   rN   c                 C   s^   |d u r| S ddi}| ||}d}|rd|f}ttj|}|dkr'|| dS || g|R  S )NZ
hard_swishZ	hardswishr   	use_cudnnZsoftmax)getgetattrr   Z_C_ops)inputZactrO   Zact_name_mappingattrsZact_opr   r   r   append_activation_in_pir   s   
rU   )NN)r   Zpaddle.framework.dtyper   r   r   r   r   r9   r;   r<   rG   r   r   rN   rU   r   r   r   r   <module>   s   ' 