
    '}h^*                     0   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 d dlmZ dZee	j&                     ed<   	 d dlZd dl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' ddl(m)Z) ejT                  Z*dZ+ ejX                  e-      Z.d Z/d Z0d Z1de2fdZ3d Z4d Z5d Z6de2fdZ7d7de	jp                  ddfdZ9d dde:dee'   fdZ; G d d      Z< G d d      Z= G d d       Z>de2fd!Z?de2fd"Z@de2fd#ZA	 	 	 d8d$ZBd%ej                  fd&ZDd9d'ZEej                  d(d fd)ee:   d*ee:   d+ej                  d,ee2ej                  f   d-e:f
d.ZId/ ZJdd0d1ZKd2 ZLd3 ZMd4 ZNd5 ZOd:d6ZPy# e$ r dZY ?w xY w);    N)ListOptionalSequenceUnion)patchnp)fx)OutputGraph   )config
eval_frameoptimize_assertreset)create_instructiondebug_checksis_generatortransform_code_object)CheckFunctionManagerGuardedCode)same   c                 v    | y | j                         j                         j                  | j                        S N)detachclonerequires_grad_requires_grad)xs    T/var/www/html/test/engine/venv/lib/python3.12/site-packages/torch/_dynamo/testing.pyclone_mer    (   s.    y88:,,Q__==    c                 f    t        | t        j                        sJ | j                  j                  S r   )
isinstancer   OptimizedModule	_orig_modnamed_parametersmods    r   %named_parameters_for_optimized_moduler)   .   s(    c:55666==)))r!   c                 f    t        | t        j                        sJ | j                  j                  S r   )r#   r   r$   r%   named_buffersr'   s    r   "named_buffers_for_optimized_moduler,   3   s(    c:55666==&&&r!   returnc                 0    t        j                  dd|       S )Nz^_orig_mod[.] )resub)names    r   remove_optimized_module_prefixr3   8   s    66"B--r!   c                    g }|j                  |       |j                  |       t               }t               }| j                         D ]f  \  }}t        | t        j
                        rt        |      }|}	|j                  }
|j                  t        j                  |      }
|
||dz   <   |	||<   h |j                  |       |j                  |       t               }| j                         D ]/  \  }}t        | t        j
                        rt        |      }|||<   1 |j                  |       |D ]  }t        |t        t        f      r>|D ]8  }t        |t        j                        s|j                  |j                         : Wt        |t        j                        sr|j                  |j                          |S )Nz.grad)appenddictr&   r#   r   r$   r3   gradtorch
zeros_liker+   tuplelistTensor)model
predictionlossexample_inputsresultsgradsparamsr2   param
param_copyr7   buffersbufferexampleinps                  r   collect_resultsrJ   <   s   GNN:NN4 FEVF--/ 	"eeZ7781$7D
zz::##E*D $dWn!t	" NN5NN6fG++- feZ7781$7D NN7! -gt}- -c5<<0NN388,- '5<<0w||,- Nr!   c                     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).0r   s     r   	<genexpr>z$requires_bwd_pass.<locals>.<genexpr>h   s     5A$Q'5   FDon't know how to reduce)
r#   r8   r<   r   r;   r:   anyintNotImplementedErrortype)outs    r   rM   rM   d   sb    #u||$   	C$	'5555		C	
8$s)
DDr!   c                    t        | t        j                        r!| j                         | j	                         z  S t        | t
        t        f      r.t        | D cg c]  }t        |       c}      t        |       z  S t        |       j                  dv rt        | j                        S t        |       j                  dk(  r| j                  j                         S t        | t              rJt        | j                         D cg c]  }t        |       c}      t        | j                               z  S t!        dt        |             c c}w c c}w )z/Reduce the output of a model to get scalar loss)MaskedLMOutputSeq2SeqLMOutput!CausalLMOutputWithCrossAttentionsSquashedNormalrQ   )r#   r8   r<   sumnumelr;   r:   reduce_to_scalar_losslenrU   __name__logitsmeanr6   valueskeysrT   )rV   r   values      r   r^   r^   p   s   #u||$wwy399;&&	C$	'c:)!,:;c#hFF	c		   

 %SZZ00	c		/	/xx||~	C	cjjlKU)%0KLsHHJP
 
 	
 8$s)
DD ; Ls   EE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)rh   s    r   	debug_dirrn      sC    77<<1:>D77>>$
Kr!   codec           	      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


)	openrg   rh   ri   rn   writedisBytecodeinfo)r2   ro   extrafds       r   
debug_dumprz      s}    	bggll9;-s	3 
r
||D!&&()cll4.@.D.D.F-GtE7RTU	

 
 
s   ABB")skipr{   c                (   d }t        | j                        ryt        | j                         t        | j                  |      }t	        i ddddddit               t               | j                  	      }t        |t        |      j                        S )zused to debug jump updatesc                 p    | j                  dt        d             | j                  dt        d             y )Nr   NOP)insertr   )instructionscode_optionss     r   insert_nopsz&debug_insert_nops.<locals>.insert_nops   s.    A1%89A1%89r!   NF_idr   )	r   compiler_fnroot_txexportexport_constraintsframe_statelocal_scopeglobal_scopef_code)
r   r   r   r   r
   localsglobalsr   r   check_fn)frame
cache_sizehooks_r{   r   ro   graphs           r   debug_insert_nopsr      s    
: ELL! {;DAJHY||E t1%8AABBr!   c                   j    e Zd Zd Zdej
                  j                  deej                     fdZ	d Z
y)CompileCounterc                      d| _         d| _        y Nr   frame_countop_countselfs    r   __init__zCompileCounter.__init__       r!   gmr@   c                     | xj                   dz  c_         |j                  j                  D ]&  }d|j                  v s| xj                  dz  c_        ( |j
                  S )Nr   call)r   r   nodesopr   forward)r   r   r@   nodes       r   __call__zCompileCounter.__call__   sP    AHHNN 	#D "	# zzr!   c                      d| _         d| _        y r   r   r   s    r   clearzCompileCounter.clear   r   r!   N)r`   
__module____qualname__r   r8   r	   GraphModuler   r<   r   r    r!   r   r   r      s2    588// ellAS r!   r   c                   d    e Zd Zd Zdej
                  j                  deej                     fdZ	y)CompileCounterWithBackendc                 <    d| _         d| _        || _        g | _        y r   )r   r   backendgraphs)r   r   s     r   r   z"CompileCounterWithBackend.__init__   s    r!   r   r@   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   r   r   r   r   r   r5   r   )r   r   r@   r   r   s        r   r   z"CompileCounterWithBackend.__call__   ss    5AHHNN 	#D "	# 	2+~dll+B??r!   N
r`   r   r   r   r8   r	   r   r   r<   r   r   r!   r   r   r      s0    @588// @ellAS @r!   r   c                   d    e Zd Zd Zdej
                  j                  deej                     fdZ	y)EagerAndRecordGraphsc                     g | _         y r   )r   r   s    r   r   zEagerAndRecordGraphs.__init__   s	    r!   r   r@   c                 <    | j                   j                  |       |S r   )r   r5   )r   r   r@   s      r   r   zEagerAndRecordGraphs.__call__   s    2	r!   Nr   r   r!   r   r   r      s-    588// ellAS r!   r   c                 F    t        |       } t        j                  dd|       S )Nz(?m)^ *#.*\n?r/   )strr0   r1   )ro   s    r   strip_commentr      s    t9D66"B--r!   c                     dj                  | j                  d      D cg c]  }|j                          c}      S c c}w )Nrr   )ri   splitrstrip)ro   lines     r   remove_trailing_spacer      s.    99

40@AdkkmABBAs   =c                 *    t        t        |             S r   )r   r   )gm_strs    r   normalize_gmr      s     !v!677r!   c                    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   ranger8   randnr   r   
assertTruer   assertEqualr   r   )r   fnnargsexpected_opsexpected_ops_dynamicexpected_frame_count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   r@   s     r   dummy_fx_compiler     s    ::r!   c                 0    |sy||kD  r| ddS | dd|dS )NERRORz.3fzx SAMEzx p=z.2fr   )speeduppvalue
is_correctpvalue_thresholds       r   format_speedupr     s5      #f%%c]$vcl++r!   cpusizestridedtypedevice
extra_sizec                     t        d t        | |      D              dz   |z   }|j                  rt        j                  |||      }nt        j
                  |g||      }t        j                  || |      S )Nc              3   2   K   | ]  \  }}|d z
  |z    yw)r   Nr   )rN   shaper   s      r   rO   zrand_strided.<locals>.<genexpr>$  s     H]UFUQY& HrP   r   )r   r   )r   r   r   )r\   zipis_floating_pointr8   r   zeros
as_strided)r   r   r   r   r   needed_sizerG   s          r   rand_stridedr     st     	Hc$6GHH
	
	 
 [fE;-uVLFD&11r!   c                 F     t        j                          fd       }|S )Nc            	          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)argskwargsstackmoduleattrvalr   patchess         r   _fnz"_make_fn_with_patches.<locals>._fn0  sh    !!# 	'u%, E!c##ELLs$CDE t&v&		' 	' 	's   9AA")	functoolswraps)r   r  r  s   `` r   _make_fn_with_patchesr  /  s%    __R' ' Jr!   )
xfail_propc          	         t        | | j                   | j                  i       }|j                  |_        t	        |       D ]  }|j                  d      ryt        | |      }t        |      st        ||t        | |             C| | }t        |g| }	||	_        |!t        ||      rt        j                  |	      }	t        |||	       t        ||      rt        ||t        | |              |S )Ntest_)rU   r`   	__bases__r   dir
startswithgetattrcallablesetattrr  hasattrunittestexpectedFailure)
cls
cls_prefix	fn_suffixr  r  DummyTestClassr2   r   new_namenew_fns
             r   make_test_cls_with_patchesr  ;  s    ZL7KN"0"9"9NC >??7#d#BB<gc4.@A	{+H*288F&FO%'"j*A!11&9NHf5.ND'#t*<=>  r!   c                 V    t         j                  dk\  r| S t        j                  |       S )N)r      )sysversion_infor  r{   r   s    r   skipIfNotPy311r  S  s$    
7"	==r!   c                     d| _         | S NT)_expected_failure_dynamicr  s    r   expectedFailureDynamicr"  [  s    #'B Ir!   c                     d| _         | S r   )!_expected_failure_codegen_dynamicr  s    r   expectedFailureCodegenDynamicr%  a      +/B(Ir!   c                     d| _         | S r   )!_expected_failure_dynamic_wrapperr  s    r   expectedFailureDynamicWrapperr)  g  r&  r!   c                    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   )r8   manual_seedrandomseedr   torch_xla.core.xla_modelcore	xla_modelset_rng_stater   
xla_device)use_xlaxms     r   reset_rng_stater5  l  sX    	d
KK	
		t--
s2==?34 r!   )r/   )NNr   )Tg?)F)Qr   ru   r  loggingos.pathrg   r,  r0   r  typesr  typingr   r   r   r   unittest.mockr   r   
ModuleType__annotations__numpyModuleNotFoundErrorr8   r	   torch._dynamo.output_graphr
   r/   r   r   r   r   bytecode_transformationr   r   r   r   guardsr   r   utilsr   unsupportedthree	getLoggerr`   logr    r)   r,   r   r3   rJ   rM   r^   rn   CodeTyperz   rS   r   r   r   r   r   r   r   r   r   r   r   float32r   r   r   r  r  r  r"  r%  r)  r5  r   r!   r   <module>rI     s	    
     	 
   2 2 !%HU %   2 8 8  6 $$	g!>*
'
.C .%P	EE,3 
5>> 
 
 12C*-CkC< "@ @( .3 .
C3 C8C 8 8B , ',2
3-2SM2 ;;2 #u||#$	2
 2&	 QU 0
5w
  	Bs   F
 
FF