
    3j0                     ~   % S SK r S SKrS SKrS SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJr  S SKrS SKrS SKJr  SS	KJr  \R&                  " \5      r\ " S
 S5      5       r0 r\\\4   \S'   S\S\S\4   S\\\\/\\\\
4   S-     4   SS4S jrS\S\S\4S jrS\S\
4S jrS\S\S\S\\\\
4   S-     4S jrS\\ \RB                  4   4S jr"S\#\ S4   4S jr$S\%S\RL                  S\\\
4   4S jr'S\%S\\RL                     S\\\
4   4S jr(S\S\
S\\\
4   4S  jr)S\S\\\
4   4S! jr*S\RB                  S\\\
4   4S" jr+S\RX                  S\\\
4   4S# jr-S\R\                  S\\\
4   4S$ jr/SSS%S%S&.S\S\S\S\%S'\S\
4   S(\#\
   S)\\\
4   S*\\\
4   S-  S+\\\
4   S-  S,\%S-\%S\4S. jjr0g)/    N)Callable)	dataclass)Path)Any)mock)is_cpu_device   )	cache_dirc                   Z    \ rS rSr% \S\4   \S'   \\\\/\\\\	4   S-     4   \S'   Sr
g)AOTICompileBackend   .
compile_fnNload_fn )__name__
__module____qualname____firstlineno__r   str__annotations__listdictr   __static_attributes__r       T/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/_inductor/aoti_eager.pyr   r      s9    c""sCotDcNT,A'BBCCr   r   _aoti_compile_backendsdevice_typer   .r   returnc                 &    [        UUS9[        U '   g )N)r   r   )r   r   )r   r   r   s      r   register_aoti_compile_backendr       s    
 +=+;'r   	namespacedevicec                 :    [        [        5       5      S-  U -  U-  $ )N
aoti_eager)r   r
   )r!   r"   s     r   aoti_eager_cache_dirr%   (   s    	|+i7&@@r   op_func_name_with_overloadc                 ~    SSK JnJn  SSKJn  U  S3nU" 5       nU" [
        R                  R                  XT5      US9$ )Nr   )get_lock_dirLOCK_TIMEOUT)FileLockz.lock)timeout)torch._inductor.codecacher(   r)   torch.utils._filelockr*   ospathjoin)r&   r(   r)   r*   op_conf_lock_filelock_dirs         r   aoti_eager_op_conf_lockr3   ,   s7    D.56e<~HBGGLL=|TTr   nsc                 >   [         R                  U5      nU(       a  UR                  XU5      $ [        X5      nXA S3-  nUR	                  5       (       d  / $  [        U5         [        U5       n[        R                  " U5      nU GH  nXHS   -  n	U	R                  5       US'   U	R	                  5       (       d  / s  sS S S 5        sS S S 5        $ US    H  n
U
R                  S5      (       a  [        S5      eSU
;   a  U
S   S:X  a  SU
S	'   S
 H0  nX;   d  M
  [        [        X   R                  S5      S   5      X'   M2     SU
;   a(  [        [        U
S   R                  S5      S   5      U
S'   SU
;   d  M  [        [        U
S   R                  S5      S   5      U
S'   M     GM!     UsS S S 5        sS S S 5        $ ! , (       d  f       O= f S S S 5        g ! , (       d  f       g = f! [         a&  nSU 3n[        R!                  U5        / s S nA$ S nAff = f)N.jsonkernel_path	meta_info
is_dynamic!Only support static shape for nowr   cpudevice_index)dtypedtype_value.layout_valuememory_format_valuez!Failed to load aoti eager cache: )r   getr   r%   existsr3   openjsonloadas_posixNotImplementedErrorgetattrtorchsplit	Exceptionlog	exception)r4   r&   r   backenddevice_kernel_cacheop_conff	json_dataitemkernel_lib_abs_pathmetadata	dtype_keyeerr_msgs                 r   load_aoti_eager_cacher[   6   s    %((5Gr{KK.r?!&B%$HHG>>	)$%?@g! IIaL	%D*=]@S*S'*=*F*F*HD' /5577!	  A@ %)$5#<<55"5 C#  *X5 ( 75 @79H^4)AI(46=$)8+>+D+DS+I"+M7" 3 *B
 *X57> %x'?'E'Ec'J2'N8H^4 1H<>E %x0E'F'L'LS'QRT'U?H%:;) %6 &B !G  A@ A@@J  5aS9g	s{   G, $G0AG ?	G	G, AG AG ;2G -	G6	G,  
G	
GG, 
G)%G, )G, ,
H6HHHc                  ~    [         [        R                  [        [        R                  [        [        R                  0$ N)intrK   int32floatboolr   r   r   #supported_builtin_dtype_torch_dtyperb   n   s!    eU[[$

CCr   c                  H    [        5       n [        U R                  5       5      $ r]   )rb   tuplekeys)type_to_torch_dtypes    r   supported_scalar_typesrg   r   s     =?$))+,,r   dynamicinputc                    0 nXS'   [        U[        R                  5      (       d   eUR                  R                   US'   [        U/5      (       a  SUS'   OUR                  R                  US'   UR                   US'   [        UR                  5       5      US'   [        UR                  5       5      US'   UR                  US'   [        R                  R                  U5      R                  5       US	'   U$ )
Nr9   r   r<   r=   r>   sizesstridesrequires_graddispatch_key_set)
isinstancerK   Tensorr"   typer   indexr>   r   sizestriderm   _C_dispatch_keysraw_repr)rh   ri   rW   s      r   extract_tensor_metadatarx   w   s    !H$\eU\\****!&!2!2 3H]eW#% #(<<#5#5  ;;-HWUZZ\*HWu||~.HY % 3 3H_#(88#:#:5#A#J#J#LH Or   c                     / nU H>  n[        U[        R                  5      (       d   eUR                  [	        X5      5        M@     0 nX$S'   U$ )Ntensor_list)ro   rK   rp   appendrx   )rh   ri   metadata_listrU   rW   s        r   extract_tensor_list_metadatar}      sR     M$----4WCD   "H+]Or   c                     [        U[        5       5      (       d   e0 nSUS'   XS'   U S:X  a  SOSUS'   [        5       nU[        U5          US'   XS	'   U$ )
NFr9   r   r;   r<   r   r=   r>   scalar_value)ro   rg   rb   rq   )r   ri   rW   rf   s       r   extract_scalar_metadatar      so    e356666!H"H\)]%0E%9rqH^=?.tE{;<HW$^Or   c                 @    [        U [        5      (       d   e0 nXS'   U$ )Nstring_value)ro   r   ri   rW   s     r   extract_string_metadatar      s'    eS!!!!!H$^Or   c                 X    [        U [        R                  5      (       d   e0 nU  US'   U$ )Nr?   )ro   rK   r>   r   s     r   extract_dtype_metadatar      s/    eU[[))))!H!&H]Or   c                     [        U [        R                  5      (       d   e0 nU R                   US'   U R                  US'   U$ )Ndevice_type_valuedevice_index_value)ro   rK   r"   rq   rr   r   s     r   extract_device_metadatar      sC    eU\\****!H',zzlH !%*[[H!"Or   c                 X    [        U [        R                  5      (       d   e0 nU  US'   U$ )NrA   )ro   rK   layoutr   s     r   extract_layout_metadatar      s/    eU\\****!H"'H^Or   Fdynamic_shapesoptionsremove_runtime_assertionsdisable_constraint_solverrS   argskwargsr   r   r   r   c                
   [         R                  U5      nU(       a  UR                  U UUUUUUUUU	U
S9$ U(       a   S5       e[        U5      [        UR	                  5       5      -   n[        S U 5       5      (       d%  SU 3n[        R                  U5        [        U5      eU HV  n[        U[        5      (       d  M  [        S U 5       5      (       a  M3  SU 3n[        R                  U5        [        U5      e   [        X5      nUR                  5       (       d  UR                  SS9  US	-  nUR                  5       (       d  UR                  5         [        R                  R                  [         R"                  S
UR%                  5       R'                  5       05          [(        R*                  R-                  UUUUU	U
SS9n[        U[.        5      (       d   e/ n[1        U5       GHa  u  nn[        U[(        R2                  5      (       a  [5        X>5      nGO[        U[        5      (       a%  [        S U 5       5      (       d   e[7        X>5      nO[        U[9        5       5      (       a  [;        X.5      nO[        U[.        5      (       a  [=        U5      nO[        U[(        R>                  5      (       a  [A        U5      nOm[        U[(        RB                  5      (       a  [E        U5      nOB[        U[(        RF                  5      (       a  [I        U5      nO[        S[K        U5       35      eUUS'   URM                  U5        GMd     0 nUUS'   [O        U5      RQ                  U5      R'                  5       US'   / nSnX S3-  nUR                  5       (       a  SOSn[S        U5         [U        UU5       n [V        RX                  " U5      n[        U[        5      (       d   eU H'  n[        U[        5      (       d   eUS   U:X  d  M%  Sn  O   SSS5        U(       a<  URM                  U5        [U        US5       n[V        R\                  " UUSS9  SSS5        SSS5        UsSSS5        $ ! [Z         a    / n Nf = f! , (       d  f       Nv= f! , (       d  f       ND= f! , (       d  f       NM= f! [Z         a/  nSU SU 3n[        R                  U5         SnASSS5        gSnAff = f! , (       d  f       g= f)zG
Compile the given function with persistent cache for AOTI eager mode.
r   r:   c              3      #    U  H`  n[        U[        5       [        R                  [        [
        [        R                  [        R                  [        R                  45      v   Mb     g 7fr]   )	ro   rg   rK   rp   r   r   r>   r"   r   ).0ri   s     r   	<genexpr>5aoti_compile_with_persistent_cache.<locals>.<genexpr>   sU       &E 	&(	
 	
 &s   A(A*zUnsupported input types: c              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fr]   ro   rK   rp   r   rU   s     r   r   r      s!      /
7<tJtU\\**u   ')z<_impl_with_aoti_compile encounters unsupported input types: T)parentslibTORCHINDUCTOR_CACHE_DIRF)r   r   r   same_signaturec              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fr]   r   r   s     r   r   r      s     P%$z$==%r   zUnsupported input type: 	arg_orderr8   r7   r6   rwN   )indentzFailed to compile z:  )/r   rC   r   r   valuesallrN   rO   rI   ro   r%   rD   mkdirr   patchr   r.   environabsoluterH   rK   _exportaot_compiler   	enumeraterp   rx   r}   rg   r   r   r>   r   r"   r   r   r   rq   r{   r   relative_tor3   rE   rF   rG   rM   dump)r4   r&   r   rh   rS   r   r   r   r   r   r   rP   flattened_inputsrZ   ri   persistent_cachepersistent_cache_libkernel_lib_pathkernel_metadata_itemsidxrW   kernel_meta_inforT   update_jsonrR   modeop_conf_filerU   rY   s                                r   "aoti_compile_with_persistent_cacher      s   " %((5G!!&)&?&? " 
 	
 ;;;;DzD$99  &   ..>-?@g!'**!eT""3 /
7</
 ,
 ,
 UUeTfgGMM'"%g.. " ,B<""$$t,+e3&&((""$	


	"$8$A$A$C$L$L$NO
I	#mm77-*C*C  % 8 O os3333$&!'(89
UeU\\226wFHt,,P%PPPPP;GKH'='?@@6{JHs++6u=Hu{{335e<Hu||446u=Hu||446u=H-0He.VWW(+%%,,X6) :, 02,A[)_%112BCLLN ]+ IK&+Gu)MMG!..**3D()CD'4(L'$(IIl$;	 &i6666 ))$5555,0EE*/K! !* ) $$%56gs+|		)\!D ,# E( #S
 
r % '$&	' )(  ,+# ED*  	*+E*FbLGMM'"[
 
T	U
 
s   &S>(HS6R1RQ=:RR,R1R "R1*	S=R		RR	R
RR1 
R.*R11
R?	;S
S;S6)S>6S;;S>>
T)1rF   loggingr.   collections.abcr   dataclassesr   pathlibr   typingr   unittestr   rK   torch._exporttorch._inductor.utilsr   runtime.runtime_utilsr
   	getLoggerr   rN   r   r   r   r   r   r   r    r%   r3   r[   rq   r>   rb   rd   rg   ra   rp   rx   r}   r   r   r   r"   r   r   r   r   r   r   r   <module>r      s     	 $ !      / , ! D D D
 9; S"445 :c" sCotDcNT,A'BBC 
	AC A A AU U U55),5;>5	$sCx.4
 5pDT$2C-D D-dCi 0 -
T %,, 4S> $ 
#s(^
 
S 
T#s(^ 
3 4S> %++ $sCx. 5<< DcN 5<< DcN   -1%)&+&+SS #S S 	S
 SS *S cNS cNT)S #s(^d"S  $S  $S 	Sr   