
    x-j3!                    x   d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlZd dlmZ d dlmZ d	d
lm
Z dgZd Z	 	 	 	 	 	 d+dZe	 G d d                      Z G d d          Ze	 G d d                      Zed             Zd Zd Zd Zd,dZd,d Zd-d"Zd-d#Z d-d$Z!d.d'Z"d-d(Z#d) Z$d* Z%dS )/    annotationsN)OrderedDict)contextmanager)	dataclass)Callable)apy_to_axpr_json)	InputSpec   )typingcompilec                    t          |           }i }t          |          D ]/}t          d |D                       }t          | |g|R i |||<   0t	          t          |                    S )Nc              3  $   K   | ]}|j         V  d S Ndtype).0
input_specs     [/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/paddle/incubate/cc/compiler.py	<genexpr>zcompile.<locals>.<genexpr><   s%      FFJz'FFFFFF    )_get_input_annotations_get_input_spec_liststuple_compileOverloadedFuncFuncOverloadCtx)funcargskwargsr   dtypes2funcinput_specsdtypess          r   r   r   8   s    (..KK,[99 K KFF+FFFFF&t[J4JJJ6JJF/+66777r   F /tmp/paddle/apcudapaddlePCCc                   |J t           j                            t          j                   d} t          j        |          |           |r
J d            t          j        |d           t          j        	                                }	|dv sJ t          ||          5  t          j                            | ||	d|          }
|s|
                                 n|
                                  |
j        |d|
                                i\  }}|
                                |_        |r|j        j        }n|j        j        }|cd d d            S # 1 swxY w Y   d S )Nz/apyzonly support inference nowT)exist_ok)CINNr(   )r   build_strategy
full_graphbackendis_train)ospathdirnamer'   __file__r	   PyToAxprmakedirsstaticBuildStrategy_ap_envsjit	to_staticevaltrainget_concrete_program_is_train_modetrainingtrain_programforward_programinfer_program)r   r"   r<   ap_pathap_workspace_dirbackend_devicetarget_frameworkcompile_engineap_root_pathr,   	static_fnconcrete_programpartial_program_layer_s                 r   r   r   A   s    goofo66<<<L+l++L999222229K 40000]0022N_,,,,	'+	,	, % %J((")" ) 
 
	  	NNOO*I*'0'?'?'A'A  	0/
 *3)A)A)C)C& 	D%3CAA%3CA$/% % % % % % % % % % % % % % % % % %s   $B'EEEc                      e Zd ZU ded<   dS )r   z"dict[list[paddle.dtype], Callable]r!   N__name__
__module____qualname____annotations__ r   r   r   r   l   s         333333r   r   c                  "    e Zd ZddZd Zd ZdS )r   func_overload_ctxr   c                    || _         d S r   )rU   )selfrU   s     r   __init__zOverloadedFunc.__init__r   s    !2r   c                    t          d |D                       }| j        j                            |d           }|J |                     |                       |g |          S )Nc              3  $   K   | ]}|j         V  d S r   r   )r   tensors     r   r   z*OverloadedFunc.__call__.<locals>.<genexpr>v   s$      77v|777777r   )inputs)r   rU   r!   getmismatched_debug_info)rW   r   r#   r   s       r   __call__zOverloadedFunc.__call__u   sr    77$77777%155fdCC!;!;F!C!Ct7T7####r   c                    d                     d t          | j        j                                                  D                       }d| d| S )Nz; c              3  B   K   | ]\  }}|d          }d|dz    d| V  dS )r   [r   z] NrS   )r   idxpairr#   s       r   r   z7OverloadedFunc.mismatched_debug_info.<locals>.<genexpr>|   sY       %
 %
T  7	 $a##6##%
 %
 %
 %
 %
 %
r   zinput signature z# mismatched, valid signatures are: )join	enumeraterU   r!   items)rW   r#   valid_signaturess      r   r^   z$OverloadedFunc.mismatched_debug_info{   sk    99 %
 %
&&288:: %
 %
 %
 
 
 `&__M]___r   N)rU   r   )rO   rP   rQ   rX   r_   r^   rS   r   r   r   r   q   sK        3 3 3 3$ $ $` ` ` ` `r   r   c                  $    e Zd ZU ded<   ded<   dS )InputSpecMakeCtxzdict[str, int]name2dtype_num_candidatesname2dtype_candidate_idxNrN   rS   r   r   rj   rj      s*         ----,,,,,,r   rj   c              #    K   t           j                            t          j                   d}t           j                            t          j                   d}t           j                            d          }t           j                            d          }| d|  d| d||nd t           j        d<   |t           j        d<   t          j        dg          }t          |          }d|d<   t          j	        |           d V  ||t           j        d<   nt           j        d= ||t           j        d<   nt           j        d= t          j	        |           d S )	Nz/apy/sysz/apy/matmul_passAP_PATHAP_WORKSPACE_DIR:r$   FLAGS_enable_apT)
r0   r1   r2   r'   r3   environr]   	get_flagsdict	set_flags)rC   rD   ap_sys_pathmatmul_pathold_ap_pathold_ap_workspace_dir	old_flagsflagss           r   r8   r8      sK     W__V_55???KW__V_55GGGK*..++K:>>*<==aaaa;aa@W]_aa Jy &6BJ!" "3!455IOOE#E

U	EEE +
9Jy!')=
%&&J)*
Yr   c                R    t          j        |           fdj        D             S )Nc                .    g | ]}j         |         }|S rS   r   )r   arg_namepct_typefull_arg_specs      r   
<listcomp>z*_get_input_annotations.<locals>.<listcomp>   s6       &28<H 	  r   )inspectgetfullargspecr   )r   r   s    @r   r   r      sA    *400M   %*   r   c              #    K   t          |           }t          |j                  dk    sJ d |j                                        D             }d |j                                        D             }t	          d |D                       }|D ]9}t          |          D ]\  }}||j        ||         <   t          | |          V  :d S )Nr   c                    g | ]
}|d          S r   rS   r   rd   s     r   r   z)_get_input_spec_lists.<locals>.<listcomp>   s)       Q  r   c                    g | ]
}|d          S )r   rS   r   s     r   r   z)_get_input_spec_lists.<locals>.<listcomp>   s)       Q  r   c                ,    g | ]}t          |          S rS   )range)r   num_candidatess     r   r   z)_get_input_spec_lists.<locals>.<listcomp>   s     JJJ>~		JJJr   )!_create_empty_input_spec_make_ctxlenrk   rg   _cartesian_productrf   rl   _get_input_specs)r   ctxdtype_var_namesdtype_num_candidates dtype_candidate_idx_compositionsidx_compositionarg_idxcandidate_idxs           r   r   r      s     
+K
8
8Cs,--1111 9??AA  O 9??AA   (:JJ5IJJJ( ($ < 1 1&/&@&@ 	 	"G] ()ABB {C0000001 1r   c                v    t          t                      t                                }t          | |           |S r   )rj   r   _init_empty_input_spec_make_ctxr   r   s     r   r   r      s.    
;==+--
8
8C#K555Jr   mut_ctxc                0    | D ]}t          ||           d S r   )3_init_input_spec_make_ctx_name2dtype_num_candidates)r   r   r   s      r   r   r      s2     O O;HgNNNNO Or   c                H   t          | j        t          j                  s J dt	          | j                   d            | j        j        }||j        v r,|j        |         t          | j        j                  k    sJ d S t          | j        j                  |j        |<   d S )Nz)pct_type.dtype should be a DTypeVar, but z were given.)	
isinstancer   pctDTypeVartypenamerk   r   
candidates)r   r   r   s      r   r   r      s     hncl33  VD4H4HVVV 3 >Dw00006#N%;
 ;
 
 
 
 
 
 
 36hn6O2P2P)$///r   r   c                     fd| D             S )Nc                0    g | ]}t          |          S rS   )_get_input_spec)r   r   r   s     r   r   z$_get_input_specs.<locals>.<listcomp>   s#    GGGxOHc**GGGr   rS   r   s    `r   r   r      s    GGGG;GGGGr   c                    t          | t          j                  sJ t          t	          | |          t          | |                    S )N)shaper   )r   r   Tensorr
   _get_input_spec_shape_get_input_spec_dtyper   r   s     r   r   r      sK    h
+++++#Hc22#Hc22   r   c                $    d | j         D             S )Nc                ,    g | ]}t          |          S rS   )_get_input_spec_shape_dim)r   dim_vars     r   r   z)_get_input_spec_shape.<locals>.<listcomp>   s!    MMM7%g..MMMr   )r   r   s     r   r   r      s    MMhnMMMMr   r   
pct.DimVarc                    t          | t                    r| S t          | t          j                  sJ t          | j        t                    r| j        S d S r   )r   intr   DimVarname_or_value)r   s    r   r   r      sT    '3 gsz*****''-- %$$4r   c                    t          | j        t          j                  sJ | j        j        }|j        |         }| j        j        |         S r   )r   r   r   r   r   rl   r   )r   r   r   r   s       r   r   r      sC    hncl33333>D06M>$]33r   c                N    t          |           dk    sJ t          dg|           S )Nr   rS   r   _cartesian_product_impl)
lst_of_lsts    r   r   r      s+    z??Q"B4444r   c                z    t                    dk    r| S fd| D             } t          | dd                    S )Nr   c                4    g | ]}d          D ]	}g ||R 
S r   rS   )r   xyr   s      r   r   z+_cartesian_product_impl.<locals>.<listcomp>  s4    GGGqAGGA7Q777GGGGr   r   r   )collect_lstr   s    `r   r   r     sK    
:!GGGGKGGGK";
122???r   )Fr$   r%   r&   r'   r(   )r   rj   )r   rj   )r   r   )&
__future__r   r   r0   collectionsr   
contextlibr   dataclassesr   r   r   r'   paddle.incubate.cc.toolsr	   paddle.staticr
   r$   r   __all__r   r   r   r   rj   r8   r   r   r   r   r   r   r   r   r   r   r   r   rS   r   r   <module>r      s   # " " " " "  				 # # # # # # % % % % % % ! ! ! ! ! !        5 5 5 5 5 5 # # # # # #      +48 8 8 %(% (% (% (%V 4 4 4 4 4 4 4 4` ` ` ` ` ` ` `* - - - - - - - -
      2  1 1 1(  O O O O
Q Q Q QH H H H   N N N N   4 4 4 45 5 5
@ @ @ @ @r   