
    yjM                         d dl Z d dlmZmZ d Zd Z G d d          Z G d d          Z G d	 d
          Z G d d          Z	d Z
de j        j        fdZddZdS )    N)bind_datatypebind_vartypec                  N   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pirregister_paddle_dialectregister_dist_dialectProgramcoreprogram_guarddefault_main_programdefault_startup_programstatic     `/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/paddle/pir_utils.py_switch_to_pir_r      s    OOO59FK$2
 >EFFF
J&&(((
J$$&&& *,FK &
 =FK'-z'KFK$
/ K' #J.FM"(*/"?FM)/)MFM&
/ M)))r   c                     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   _switch_to_old_ir_r   *   s    NNN5:FK$2
 >FGGG +/7FK & 5 CFK2 K$ 	5 K' #K19FM"(+"7"EFM2 M& 	5 M)))r   c                   &    e Zd Zd Zd Zd Zd ZdS )IrGuardc                    t           j        j                                        | _        t           j        j                            d          d         | _        | j        rt          j                     | j        sRt           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selfs    r   	__enter__zIrGuard.__enter__B   s    "(+"7"G"G"I"I-778NOO"
 " 	# """} 	"&&(>'EFFF=AFK!,:!!!!!	" 	"r   c                     | j         rt          j                     | j        sRt          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_tbs       r   __exit__zIrGuard.__exit__N   su    " 	$!###} 	%&&(>'FGGG=BFK!,:""$$$$$	% 	%r   c                 z    t           j        j                            d          d         rt	                       d S d S Nr    r   r   r	   r#   r   r'   s    r   r&   zIrGuard._switch_to_pirV   D    ; **+ABB"
 	 	 	r   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'   s    r   r-   zIrGuard._switch_to_old_ir\   Q    {$../EFF"
 	      9  r   N__name__
__module____qualname__r)   r2   r&   r-   r   r   r   r   r   A   sP        
" 
" 
"% % %  	 	 	 	 	r   r   c                       e Zd Zd Zd ZdS )
OldIrGuardc                 X   t           j        j                                        | _        t           j        j                            d          d         | _        | j        rt          j                     | j        r1t           j                            ddi           t                       d S d S r+   )
r   r   r	   r!   r"   r#   r$   r%   r   r   r'   s    r   r)   zOldIrGuard.__enter__i   s    "(+"7"G"G"I"I-778NOO"
 " 	# """= 	!&&(>'FGGG     	! 	!r   c                     | j         rt          j                     | j        r1t          j                            ddi           t                       d S d S r   )r"   r   r,   r$   r	   r   r   r.   s       r   r2   zOldIrGuard.__exit__t   s_    " 	$!###= 	&&(>'EFFF	 	r   Nr=   r>   r?   r)   r2   r   r   r   rA   rA   h   s2        	! 	! 	!    r   rA   c                   &    e Zd Zd Zd Zd Zd ZdS )DygraphPirGuardc                     t           j        j                            d          d         | _        | j        s7t           j                            ddi           |                                  d S d S r   )r   r   r	   r#   r$   r   r&   r'   s    r   r)   zDygraphPirGuard.__enter__}   sp    -778NOO"
 } 	"&&(>'EFFF!!!!!	" 	"r   c                     | j         s7t          j                            ddi           |                                  d S d S r+   )r$   r   r	   r   r-   r.   s       r   r2   zDygraphPirGuard.__exit__   sK    } 	%&&(>'FGGG""$$$$$	% 	%r   c                 z    t           j        j                            d          d         rt	                       d S d S r4   r5   r'   s    r   r&   zDygraphPirGuard._switch_to_pir   r6   r   c                     t           j        j                            d          d         st	                       d S t          d          r8   r9   r'   s    r   r-   z!DygraphPirGuard._switch_to_old_ir   r;   r   Nr<   r   r   r   rF   rF   |   sP        " " "% % %
  	 	 	 	 	r   rF   c                       e Zd Zd Zd ZdS )DygraphOldIrGuardc                     t           j        j                            d          d         | _        | j        r1t           j                            ddi           t                       d S d S r+   )r   r   r	   r#   r$   r   r   r'   s    r   r)   zDygraphOldIrGuard.__enter__   sj    -778NOO"
 = 	!&&(>'FGGG     	! 	!r   c                 v    | j         r1t          j                            ddi           t	                       d S d S r   )r$   r   r	   r   r   r.   s       r   r2   zDygraphOldIrGuard.__exit__   sE    = 	&&(>'EFFF	 	r   NrD   r   r   r   rL   rL      s2        ! ! !    r   rL   c                    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                 }||z  S )Nr   )DataType            )paddle.base.corerP   numelBOOLINT8INT16INT32INT64UINT8UINT16UINT32UINT64FLOAT32FLOAT64typedtype)valuerP   rV   mappingrc   s        r   
get_memoryrf      s    ))))))KKMMEqq!!G EJJLL&'E5=r   programc                     d}|                                  j        D ]h}|                                D ](}|                                }|t	          |          z  })|                                D ]}|t	          |          z  }i|dz  dz  dz  S )Ng        i   )global_blockopsoperandssourcerf   results)rg   total_ioopoperandrd   s        r   analysis_iorq      s     H""$$( * *{{}} 	* 	*GNN$$E
5)))HHZZ\\ 	* 	*E
5)))HH	* d?T!D((r   c                     || S ddi}|                     ||          }d}|rd|f}t          t          j        |          }|dk    r || d          S  || g|R  S )N
hard_swish	hardswishr   	use_cudnnsoftmax)getgetattrr   _C_ops)inputactru   act_name_mappingattrsact_ops         r   append_activation_in_pirr      s    
{ 	k 

sC
(
(CE )i(V]C((F
iveR   6% %    r   )NN)r   paddle.framework.dtyper   r   r   r   r   rA   rF   rL   rf   r   r   rq   r   r   r   r   <module>r      s5     > > > > > > > >  ,  .$ $ $ $ $ $ $ $N       (       @         *)+ ) ) ) ) ! ! ! ! ! !r   