
    #h:                     
   U d dl Z d dlZd dlZd dlZd dl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mZmZmZmZmZmZmZmZ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dlmZm Z m!Z!m"Z" dd	l#m$Z$m%Z%m&Z&m'Z' dd
l(m)Z)m*Z*m+Z+ ddl	m,Z, ddl-m.Z. dZ/ee	j`                     e1d<   	 d dl2Z/e jh                  Z4dZ5 ejl                  e7      Z8deejr                     deejr                     fdZ:de;de;fdZ<d Z=dej|                  j~                  dedededee   f
dZ@dedeAfdZBedejr                  dejr                  fd       ZCedeee   eedf   eeef   f   deDfd       ZCdedeejr                  eDf   fdZCde;fd ZEdcde;d!e	j                  d"e;ddfd#ZGd d$d%e,d&eHd'ed(ed)eHdee+   fd*ZI G d+ d,      ZJ G d- d.      ZK G d/ d0      ZL G d1 d2      ZMd!e;de;fd3ZNd!e;de;fd4ZOd5e;de;fd6ZPd!e;de;fd7ZQ	 	 	 ddd8ed9edef   d:eHd;eeH   d<eeH   d=eHddfd>ZRd?ej                  deejr                     dedef   fd@ZT	 	 dedAeDdBeDdCeAdDeDde;f
dEZUej                  dFd fdGeeH   dHeeH   dIej                  dJee;ej                  f   dKeHdejr                  fdLZY edM      ZZdeAfdNZ[d9edeZf   dOededeZf   fdPZ\ddQ dRdSe]dTe;dUe;dOedVee;   dWeedef   gedef   f   de]fdXZ^d9edef   dedef   fdYZ_d9edef   dedef   fdZZ`d9edef   dedef   fd[Zad9edef   dedef   fd\Zbd9edef   dedef   fd]Zcd9edef   dedef   fd^Zdd9edef   dedef   fd_Zed9edef   dedef   fd`ZfdfdaeAddfdbZgy# e3$ r dZ/Y w xY w)g    N)
AnyCallableDictListOptionaloverloadSequenceTupleTypeVarUnion)patch)fx)	aot_eager)OutputGraph   )config
eval_frameoptimize_assertreset)create_instructiondebug_checksis_generatortransform_code_object)CheckFunctionManager	CompileIdGuardedCode)DynamoFrameType)samenp   xreturnc                 v    | y | j                         j                         j                  | j                        S N)detachclonerequires_grad_requires_gradr!   s    R/var/www/html/sandstorm/venv/lib/python3.12/site-packages/torch/_dynamo/testing.pyclone_mer+   7   s.    y88:,,Q__==    namec                 0    t        j                  dd|       S )Nz^_orig_mod[.] resub)r-   s    r*   remove_optimized_module_prefixr3   =       66"B--r,   c                     ddl m d d fd}  t        j                  |d      |       |i | j                  fS )Nr   )InstructionTranslatorc                 T    | j                         j                  j                  | S r$   )
current_txoutputregion_tracker)_gmargskwargsr6   gmr:   s      r*   extract_graph_backendz8extract_graph_and_tracker.<locals>.extract_graph_backendG   s)     .99;BBQQ
r,   T)backend	fullgraph)torch._dynamo.symbolic_convertr6   torchcompilegraph)fnr<   r=   r?   r6   r>   r:   s       @@@r*   extract_graph_and_trackerrG   A   sJ    D	BN E@EMM/4@DdUfU88^##r,   model
predictionlossexample_inputsc                    g }|j                  |       |j                  |       i }i }| j                         D ]f  \  }}t        | t        j                        rt        |      }|}	|j                  }
|j                  t        j                  |      }
|
||dz   <   |	||<   h |j                  |       |j                  |       i }| j                         D ]/  \  }}t        | t        j                        rt        |      }|||<   1 |j                  |       |D ]g  }t        |t        t        f      r|j                  d |D               2t        |t        j                        sM|j                  |j                         i |S )Nz.gradc              3   j   K   | ]+  }t        |t        j                        s|j                   - y wr$   )
isinstancerC   Tensorgrad).0inps     r*   	<genexpr>z"collect_results.<locals>.<genexpr>s   s!     X*S%,,:W388Xs   33)appendnamed_parametersrN   r   OptimizedModuler3   rP   rC   
zeros_likenamed_bufferstuplelistextendrO   )rH   rI   rJ   rK   resultsgradsparamsr-   param
param_copyrP   buffersbufferexamples                 r*   collect_resultsrd   R   sb    GNN:NN4 EF--/ 	"eeZ7781$7D
zz::##E*D $dWn!t	" NN5NN6G++- feZ7781$7D NN7! -gt}-NNXwXX'5<<0w||,- Nr,   outc                     t        | t        j                        r| j                  S t        | t        t
        f      rt        d | D              S | yt        | t              ryt        dt        |             )Nc              3   2   K   | ]  }t        |        y wr$   )requires_bwd_passrQ   r!   s     r*   rS   z$requires_bwd_pass.<locals>.<genexpr>~   s     5A$Q'5   FDon't know how to reduce)
rN   rC   rO   r(   rZ   rY   anyintNotImplementedErrortypere   s    r*   rh   rh   z   sb    #u||$   	C$	'5555		C	
8$s)
DDr,   c                      y r$    rp   s    r*   reduce_to_scalar_lossrs      s    r,   .c                      y r$   rr   rp   s    r*   rs   rs      s     r,   c                 Z   t        | t        j                        r!| j                         | j	                         z  S t        | t
        t        f      rt        d | D              t        |       z  S t        |       j                  dv rt        | j                        S t        |       j                  dk(  r| j                  j                         S t        | t              r:t        d | j                         D              t        | j                               z  S t!        dt        |             )z/Reduce the output of a model to get scalar lossc              3   2   K   | ]  }t        |        y wr$   rs   ri   s     r*   rS   z(reduce_to_scalar_loss.<locals>.<genexpr>   s     9(+9rj   )MaskedLMOutputSeq2SeqLMOutput!CausalLMOutputWithCrossAttentionsSquashedNormalc              3   2   K   | ]  }t        |        y wr$   rw   )rQ   values     r*   rS   z(reduce_to_scalar_loss.<locals>.<genexpr>   s     JE(/Jrj   rk   )rN   rC   rO   sumnumelrZ   rY   lenro   __name__rs   logitsmeandictvalueskeysrn   rp   s    r*   rs   rs      s    #u||$wwy399;&&	C$	'9S99CHDD	c		   

 %SZZ00	c		/	/xx||~	C	JSZZ\JJSHHJN
 
 	
 8$s)
DDr,   c                      t         j                  j                  t         j                  j                  t              d      } t         j                  j                  |       st        j                  |        | S )Nz../debug)ospathjoindirname__file__existsmkdir)r   s    r*   	debug_dirr      sC    77<<1:>D77>>$
Kr,   codeextrac           	      J   t        t        j                  j                  t	               |       d      5 }|j                  t        j                  |      j                          dt        j                  |      j                          d| d       d d d        y # 1 sw Y   y xY w)Nwz


)	openr   r   r   r   writedisBytecodeinfo)r-   r   r   fds       r*   
debug_dumpr      s}    	bggll9;-s	3 
r
||D!&&()cll4.@.D.D.F-GtE7RTU	

 
 
s   ABB")skipframe
cache_sizehooks_r   c                l   dt         t           dt        ddfd}t        | j                        ryt	        | j                         t        | j                  |      }t        i ddddddit               t               | j                  g 	
      }t        |t        |      j                  t        dd            S )
zused to debug jump updatesinstructionscode_optionsr"   Nc                 p    | j                  dt        d             | j                  dt        d             y )Nr   NOP)insertr   )r   r   s     r*   insert_nopsz&debug_insert_nops.<locals>.insert_nops   s.    A1%89A1%89r,   F_idr   )
r   compiler_fnroot_txexportexport_constraintsframe_statelocal_scopeglobal_scopef_codetorch_function_mode_stack)r   r   r   r   r   r   r   localsglobalsr   r   guard_managerr   )r   r   r   r   r   r   r   rE   s           r*   debug_insert_nopsr      s    
:$s) :3 :4 : ELL! {;DAJHY||"$E t1%8FF	RSUVXXr,   c                   |    e Zd Zd	dZdej
                  j                  deej                     de	de
f   fdZd	dZy)
CompileCounterr"   Nc                      d| _         d| _        y Nr   frame_countop_countselfs    r*   __init__zCompileCounter.__init__       r,   r>   rK   .c                     | xj                   dz  c_         |j                  j                  D ]&  }d|j                  v s| xj                  dz  c_        ( |j
                  S )Nr   call)r   rE   nodesopr   forward)r   r>   rK   nodes       r*   __call__zCompileCounter.__call__   sR     	AHHNN 	#D "	# zzr,   c                      d| _         d| _        y r   r   r   s    r*   clearzCompileCounter.clear   r   r,   r"   N)r   
__module____qualname__r   rC   r   GraphModuler   rO   r   r   r   r   rr   r,   r*   r   r      sE    ((&&8<U\\8J	#s(	r,   r   c                   |    e Zd ZdeddfdZdej                  j                  deej                     de
def   fdZy)	CompileCounterWithBackendr@   r"   Nc                 <    d| _         d| _        || _        g | _        y r   )r   r   r@   graphs)r   r@   s     r*   r   z"CompileCounterWithBackend.__init__   s    24r,   r>   rK   .c                    ddl m} | xj                  dz  c_        |j                  j                  D ]&  }d|j
                  v s| xj                  dz  c_        ( | j                  j                  |         || j                        ||      S )Nr   )lookup_backendr   )
backends.registryr   r   rE   r   r   r   r   rT   r@   )r   r>   rK   r   r   s        r*   r   z"CompileCounterWithBackend.__call__   su     	6AHHNN 	#D "	# 	2+~dll+B??r,   )r   r   r   strr   rC   r   r   r   rO   r   r   r   rr   r,   r*   r   r      sR    5 5 5
@((&&
@8<U\\8J
@	#s(	
@r,   r   c                   t    e Zd ZddZdej
                  j                  deej                     de	de
f   fdZy)	EagerAndRecordGraphsr"   Nc                     g | _         y r$   )r   r   s    r*   r   zEagerAndRecordGraphs.__init__   s	    24r,   r>   rK   .c                 P    | j                   j                  |       |j                  S r$   )r   rT   r   )r   r>   rK   s      r*   r   zEagerAndRecordGraphs.__call__  s      	2zzr,   r   r   r   r   r   rC   r   r   r   rO   r   r   r   rr   r,   r*   r   r      s@    5((&&8<U\\8J	#s(	r,   r   c                   t    e Zd ZddZdej
                  j                  deej                     de	de
f   fdZy)	AotEagerAndRecordGraphsr"   Nc                 .    g | _         g | _        g | _        y r$   )r   	fw_graphs	bw_graphsr   s    r*   r   z AotEagerAndRecordGraphs.__init__
  s    245757r,   r>   rK   .c                 p     j                   j                  |       dt        j                  j                  dt
        t        j                     dt        dt        f   f fd}dt        j                  j                  dt
        t        j                     dt        dt        f   f fd}t        ||||      S )Nr>   rK   r"   .c                 R    j                   j                  |        | j                  S r$   )r   rT   r   r>   rK   r   s     r*   fw_compilerz5AotEagerAndRecordGraphs.__call__.<locals>.fw_compiler  !     NN!!"%::r,   c                 R    j                   j                  |        | j                  S r$   )r   rT   r   r   s     r*   bw_compilerz5AotEagerAndRecordGraphs.__call__.<locals>.bw_compiler  r   r,   )r   r   )
r   rT   rC   r   r   r   rO   r   r   r   )r   r>   rK   r   r   s   `    r*   r   z AotEagerAndRecordGraphs.__call__  s     	2	$$	6:5<<6H	c3h		$$	6:5<<6H	c3h	 ##	
 	
r,   r   r   rr   r,   r*   r   r   	  s@    8

((&&
8<U\\8J
	#s(	
r,   r   c                 0    t        j                  dd|       S )Nz(?m)^ *#.*\n?r/   r0   )r   s    r*   strip_commentr   (  r4   r,   c                     dj                  | j                  d      D cg c]  }|j                          c}      S c c}w )Nr   )r   splitrstrip)r   lines     r*   remove_trailing_spacer   ,  s.    99

40@AdkkmABBAs   =gm_strc                 *    t        t        |             S r$   )r   r   )r   s    r*   normalize_gmr   0  s     !v!677r,   c                 4    t        j                  dd|       }|S )z-
    Normalize code: remove empty lines.
    z[\r\n]+r   r0   )r   normal_codes     r*   empty_line_normalizerr   6  s     &&T40Kr,   r   rF   nargsexpected_opsexpected_ops_dynamicexpected_frame_countc                    t         j                  s||}t               }t        |      D cg c]  }t	        j
                  dd       }}t        |      D cg c]  }t	        j
                  dd       }	} || }
 ||	 }t                 t        |      |      } || } ||	 } || } ||	 }t                | j                  t        ||
             | j                  t        ||
             | j                  t        ||             | j                  t        ||             | j                  |j                  |       || j                  |j                  |       y y c c}w c c}w )N
   )r   assume_static_by_defaultr   rangerC   randnr   r   
assertTruer   assertEqualr   r   )r   rF   r   r   r   r   actualr   args1args2correct1correct2opt_fnval1aval2aval1bval2bs                    r*   standard_testr	  >  s?    **/C/O+F*/,7QU[[R 7E7*/,7QU[[R 7E75zH5zH	G$_V$R(FENEENEENEENE	GOOD)*OOD)*OOD)*OOD)*V'')=>,7  ! 87s   E"E'r>   c                     | j                   S r$   )r   )r>   rK   s     r*   dummy_fx_compiler  _  s     ::r,   speeduppvalue
is_correctpvalue_thresholdc                 0    |sy||kD  r| ddS | dd|dS )NERRORz.3fzx SAMEzx p=z.2frr   )r  r  r  r  s       r*   format_speedupr  e  s7       #f%%c]$vcl++r,   cpusizestridedtypedevice
extra_sizec                 ~   t        d t        | |      D              dz   |z   }|j                  r`|j                  dk(  r8	 t	        j
                  |t        j                  |      j                  |      }n2t	        j
                  |||      }nt	        j                  |g||      }t	        j                  || |      S )Nc              3   2   K   | ]  \  }}|d z
  |z    yw)r   Nrr   )rQ   shaper  s      r*   rS   zrand_strided.<locals>.<genexpr>z  s     H]UFUQY& Hrj   r   )r  r  )r  )r  r  r  )
r~   zipis_floating_pointitemsizerC   r   float16tozeros
as_strided)r  r  r  r  r  needed_sizerb   s          r*   rand_stridedr$  r  s     	Hc$6GHH
	
	 
 >>Q [[EMM&QTT U F [[E&IF;-uVLFD&11r,   _Tc                  $    t         j                   S r$   )r   r   rr   r,   r*   check_dynamic_shape_capturer'    s    ....r,   patchesc                 l     t        j                         dt        dt        dt        f fd       }|S )Nr<   r=   r"   c            	          t        j                         5 }D ],  \  }}}|j                  t        j                  |||             .  | i |cd d d        S # 1 sw Y   y xY wr$   )
contextlib	ExitStackenter_contextr   object)r<   r=   stackmoduleattrvalrF   r(  s         r*   _fnz"_make_fn_with_patches.<locals>._fn  sh    !!# 	'u%, E!c##ELLs$CDE t&v&		' 	' 	's   9AA")	functoolswrapsr   r%  )rF   r(  r3  s   `` r*   _make_fn_with_patchesr6    s:    __R'3 '# '" ' ' Jr,   c                     | S r$   rr   r)   s    r*   <lambda>r8    s    a r,   )
xfail_prop	decoratorcls
cls_prefix	fn_suffixr9  r:  c          	         t        | | j                   | j                  i       }|j                  |_        t	        |       D ]  }|j                  d      rt        | |      }t        |      st        ||t        | |             C| | }	t        |g| }
|	|
_        |!t        ||      rt        j                  |
      }
t        ||	 ||
             t        ||      rt        ||t        | |              |S )Ntest_)ro   r   	__bases__r   dir
startswithgetattrcallablesetattrr6  hasattrunittestexpectedFailure)r;  r<  r=  r9  r:  r(  DummyTestClassr-   rF   new_namenew_fns              r*   make_test_cls_with_patchesrL    s     ZL7KN"0"9"9NC >??7#d#BB<gc4.@A	{+H*288F&FO%'"j*A!11&9NHi.?@.ND'#t*<=>  r,   c                 V    t         j                  dk\  r| S t        j                  |       S )N)r       sysversion_inforG  r   rF   s    r*   skipIfNotPy311rS    s$    
7"	==r,   c                 b    t         j                  dk\  r| S  t        j                  d      |       S )Nr       zRequires Python 3.12+rO  rR  s    r*   skipIfNotPy312rW    s,    
7"	18==01"55r,   c                 V    t         j                  dk\  rt        j                  |       S | S )NrU  )rP  rQ  rG  rH  rR  s    r*   xfailIfPy312rY    s&    
7"''++Ir,   c                 b    t         j                  dk\  r t        j                  d      |       S | S )NrU  zNot supported in Python 3.12+rO  rR  s    r*   skipIfPy312r[    s,    
7"=x}}<=bAAIr,   c                 b    t         j                  dk\  r| S  t        j                  d      |       S )N)r    r   zRequires Python 3.10+rO  rR  s    r*   requiresPy310r]    s,    
7"	5x}}45b99r,   c                     d| _         | S NT)_expected_failure_dynamicrR  s    r*   expectedFailureDynamicra    s    #'B Ir,   c                     d| _         | S r_  )!_expected_failure_codegen_dynamicrR  s    r*   expectedFailureCodegenDynamicrd        +/B(Ir,   c                     d| _         | S r_  )!_expected_failure_dynamic_wrapperrR  s    r*   expectedFailureDynamicWrapperrh    re  r,   use_xlac                    t        j                  d       t        j                  d       t        rt        j                  j                  d       | r3dd lmc m} |j                  dt        |j                                      y y )Ni9  r   )rC   manual_seedrandomseedr   torch_xla.core.xla_modelcore	xla_modelset_rng_stater   
xla_device)ri  xms     r*   reset_rng_statert    sX    	d
KK	
		t--
s2==?34 r,   )r/   )NNr   )Tg?)F)hr+  r   r4  loggingos.pathr   rl  r1   rP  typesrG  typingr   r   r   r   r   r   r	   r
   r   r   unittest.mockr   rC   r    torch._dynamo.backends.debuggingr   torch._dynamo.output_graphr   r/   r   r   r   r   bytecode_transformationr   r   r   r   guardsr   r   r   r   utilsr   r   
ModuleType__annotations__numpyModuleNotFoundErrorunsupportedthree	getLoggerr   logrO   r+   r   r3   rG   nnModulerd   boolrh   rs   floatr   CodeTyper   rm   r   r   r   r   r   r   r   r   r   r	  r   r  r  float32r  r  r$  r%  r'  r6  ro   rL  rS  rW  rY  r[  r]  ra  rd  rh  rt  rr   r,   r*   <module>r     s    
     	 
         6 2 8 8  A @ "  "&HU %
 $$	g!>& >8ELL+A >. . .$"%88??%(+%36%HK%	#Y%P	E3 	E4 	E 
u||   
 
	tCy%S/4S>9	:
 
Es EuU\\5-@'A E,3 
S 
 
s 
D 
 QRYY(+Y47Y<?YJMYkY> &@ @, 
 
>. . .C C C8 8 8   #'*. !8
8c8 8 3-	8
 #3-8 8 
8B
(,U\\(:c3h !	
,
,
, 
, 	
,
 	
,  ',2
3-2SM2 ;;2 #u||#$	2
 2 \\28 T]/T /
	hsBw/ 	3 	8CQSGCT 	" !%DO	  	
  #s(+,hsCx.@@A 
>xS) hsCx.@ 6xS) 6hsCx.@ 6Xc3h' HS#X,> HS#X& 8CH+= :hsCx( :Xc3h-? :xS1 hsCx6H hsCx&8 Xc3h=O hsCx&8 Xc3h=O 
5T 5d 5M  	Bs   !M7 7NN