
    Phs,                     &   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 Z2de3fdZ4d Z5d Z6d Z7de3fdZ8d6de	jr                  ddfdZ:dee'   fdZ; G d d      Z< G d d      Z= G d d      Z>de3fd Z?de3fd!Z@de3fd"ZAd7d#ZBd$ej                  fd%ZDd8d&ZEej                  d'd fd(eeG   d)eeG   d*ej                  d+ee3ej                  f   d,eGf
d-ZJd. ZKdd/d0ZLd1 ZMd2 ZNd3 ZOd4 ZPd9d5ZQy# 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    `C:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/_dynamo/testing.pyclone_mer    (   s.    y88:,,Q__==    c                 B     t        j                          fd       }|S )Nc                  b    dt         j                  v rt        j                  d       | i |S )NPYTEST_CURRENT_TESTzdoes not work under pytest)osenvironunittestSkipTest)argskwargsfns     r   wrappedzskip_if_pytest.<locals>.wrapped/   s1     BJJ.##$@AA4"6""r!   	functoolswraps)r+   r,   s   ` r   skip_if_pytestr0   .   s%    __R# #
 Nr!   c                 f    t        | t        j                        sJ | j                  j                  S r   )
isinstancer   OptimizedModule	_orig_modnamed_parametersmods    r   %named_parameters_for_optimized_moduler8   8   s(    c:55666==)))r!   c                 f    t        | t        j                        sJ | j                  j                  S r   )r2   r   r3   r4   named_buffersr6   s    r   "named_buffers_for_optimized_moduler;   =   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_prefixrB   B   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dictr5   r2   r   r3   rB   gradtorch
zeros_liker:   tuplelistTensor)model
predictionlossexample_inputsresultsgradsparamsrA   param
param_copyrF   buffersbufferexampleinps                  r   collect_resultsrY   F   so   GNN:NN4 FEVF--/eeZ7781$7D
zz::##E*D $dWn!t 0 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>r   s     5A$Q'   FDon't know how to reduce)
r2   rG   rK   r   rJ   rI   anyintNotImplementedErrortype)outs    r   r\   r\   n   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SquashedNormalr`   )r2   rG   rK   sumnumelrJ   rI   reduce_to_scalar_losslenrd   __name__logitsmeanrE   valueskeysrc   )re   r   values      r   rm   rm   z   s   #u||$wwy399;&&	C$	'c:c)!,c:;c#hFF	c		   

 %SZZ00	c		/	/xx||~	C	cjjlKlU)%0l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)r%   pathjoindirname__file__existsmkdir)rv   s    r   	debug_dirr|      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


)	openr%   rv   rw   r|   writedisBytecodeinfo)rA   r}   extrafds       r   
debug_dumpr      st    	bggll9;-s	3r
||D!&&()cll4.@.D.D.F-GtE7RTU	
 
4	3	3s   ABB"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}   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!   gmrO   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   rO   nodes       r   __call__zCompileCounter.__call__   sK    AHHNND " # zzr!   c                      d| _         d| _        y r   r   r   s    r   clearzCompileCounter.clear   r   r!   N)ro   
__module____qualname__r   rG   r	   GraphModuler   rK   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   rO   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   rD   r   )r   r   rO   r   r   s        r   r   z"CompileCounterWithBackend.__call__   sn    5AHHNND " # 	2+~dll+B??r!   N
ro   r   r   r   rG   r	   r   r   rK   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   rO   c                 <    | j                   j                  |       |S r   )r   rD   )r   r   rO   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>   )strr?   r@   )r}   s    r   strip_commentr      s    t9D66"B--r!   c                     dj                  | j                  d      D cg c]  }|j                          c}      S c c}w )Nr   )rw   splitrstrip)r}   lines     r   remove_trailing_spacer      s4    99

40@A0@dkkm0@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                  d       || j                  |j                  |       y y c c}w c c}w )N
   r   )r   assume_static_by_defaultr   rangerG   randnr   r   
assertTruer   assertEqualr   r   )r   r+   nargsexpected_opsexpected_ops_dynamicactualr   args1args2correct1correct2opt_fnval1aval2aval1bval2bs                   r   standard_testr      s>   **/C/O+F*/,7,QU[[R ,E7*/,7,QU[[R ,E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   rO   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   )r]   shaper   s      r   r^   zrand_strided.<locals>.<genexpr>%  s      H6G]UFUQY& 6Gr_   r   )r   r   )r   r   r   )rk   zipis_floating_pointrG   r   zeros
as_strided)r   r   r   r   r   needed_sizerV   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)r)   r*   stackmoduleattrvalr+   patchess         r   _fnz"_make_fn_with_patches.<locals>._fn1  sX    !!#u%,!c##ELLs$CD &- t&v&	 $##s   9AA"r-   )r+   r
  r  s   `` r   _make_fn_with_patchesr  0  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_)rd   ro   	__bases__r   dir
startswithgetattrcallablesetattrr  hasattrr'   expectedFailure)
cls
cls_prefix	fn_suffixr  r
  DummyTestClassrA   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'   skipr+   s    r   skipIfNotPy311r%  T  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,  b      +/B(Ir!   c                     d| _         | S r'  )!_expected_failure_dynamic_wrapperr$  s    r   expectedFailureDynamicWrapperr0  h  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   )rG   manual_seedrandomseedr   torch_xla.core.xla_modelcore	xla_modelset_rng_stater   
xla_device)use_xlaxms     r   reset_rng_stater<  m  sX    	d
KK	
		t--
s2==?34 r!   )r>   )NN)Tg?)F)Rr  r   r.   loggingos.pathr%   r3  r?   r!  typesr'   typingr   r   r   r   unittest.mockr   r   
ModuleType__annotations__numpyModuleNotFoundErrorrG   r	   torch._dynamo.output_graphr
   r>   r   r   r   r   bytecode_transformationr   r   r   r   guardsr   r   utilsr   unsupportedthree	getLoggerro   logr    r0   r8   r;   r   rB   rY   r\   rm   r|   CodeTyper   r   r   r   r   r   r   r   r   r   r   r   float32rb   r   r   r   r  r  r%  r)  r,  r0  r<  r   r!   r   <module>rP     s    
     	 
   2 2 !%HU %   2 8 8  6 $$	g!>*
'
.C .%P	EE,3 
5>> 
 
Ch{6K C8 "@ @( .3 .
C3 C8C 884 , ',2
3-2SM2 ;;2 #u||#$	2
 2&	 QU 0
5y
  	Bs   F FF