
    ΅ib                        S SK Jr  S SKJrJr  S SKrS SKrS SKrS SKJ	r	  S\
S\\
   4S jrS\R                  R                  4S	 jrS
\
S\\\\   4   4S jrS rS rSSS.S\4S jjr\S 5       rS\4S jrS\4S jrS\4S jrg)    )contextmanager)AnycastN)Timerfilenamereturnc           	         SnSnS n/ n[        U 5       nUR                  5       R                  U5      n[        U5       H  u  pxUS:X  a  M  UR	                  U5      n	U	S:X  a  M&  US U	 n
XgS-
     R                  5       S   nU
R                  SS9 Vs/ s H  o[        U5      S  PM     nnUR                  SR                  U5      5        M     S S S 5        U$ s  snf ! , (       d  f       U$ = f)	Nz<GRAPH_EXPORT>z</GRAPH_EXPORT>r      T)keepends )	openreadsplit	enumeratefind
splitlineslenappendjoin)r   BEGINENDpfxgraphsf
split_strsi	split_strend_locsxliness                U/home/james-whalen/.local/lib/python3.13/site-packages/torch/utils/jit/log_extract.py
extract_irr$   	   s    E
C
CF	h1VVX^^E*
%j1LAAvnnS)G"}(7#AU#..04C+,<<<+FG+Fas3xy\+FEGMM"''%.) 2 
 M H 
 Ms   A?CC*&CC
C.inp_typec                    U R                  5       nU R                  5       nU R                  5       nU R                  5       nUc  [	        S5      eUc  [	        S5      eUc  [	        S5      eUc  [	        S5      e[
        R                  " XX4S9$ )NzFmake_tensor_from_type: 'size' is None (inp_type.sizes() returned None)zJmake_tensor_from_type: 'stride' is None (inp_type.strides() returned None)zImake_tensor_from_type: 'device' is None (inp_type.device() returned None)zGmake_tensor_from_type: 'dtype' is None (inp_type.dtype() returned None))sizestridedevicedtype)sizesstridesr)   r*   AssertionErrortorchempty_strided)r%   r'   r(   r)   r*   s        r#   make_tensor_from_typer0      s    >>DF__FNNE|eff~ijj~hii}fggDTT    irc                    [         R                  R                  U SS9nUR                  5         / nUR	                  5        GH  n[        UR                  5       [         R                  R                  5      (       a(  UR                  [        R                  " SS5      5        Mc  [        UR                  5       [         R                  R                  5      (       a(  UR                  [        R                  " SS5      5        M  [        UR                  5       [         R                  R                  5      (       aO  [        [         R                  R                  UR                  5       5      nUR                  [        U5      5        GMH  [        UR                  5       [         R                  R                   5      (       a,  UR                  [        R                  " SS5      S:H  5        GM  [#        SUR                  5        35      e   [         R                  R%                  SU5      n[         R                  R'                  UR(                  5        XR4$ )	NT)parse_tensor_constantsg?d   r   r   z,A default value is not implemented for type forward)r.   _Cparse_irmakeMultiOutputIntoTupleinputs
isinstancetype	FloatTyper   randomuniformIntTyperandint
TensorTyper   r0   BoolTypeNotImplementedError_create_function_from_graph!_jit_pass_erase_shape_informationgraph)r2   rG   r:   inp
tensorTypefuncs         r#   load_graph_and_inputsrK   -   s|   HHb>E	""$F||~chhj%(("4"455MM&..S12
EHH$4$455MM&..C01
EHH$7$788ehh11388:>JMM/
;<
EHH$5$566MM&..A.!34%(TUXU]U]U_T`&abb  88//	5AD	HH..tzz:>r1   c                 X    [        SXS.S9nUR                  5       nUR                  S-  $ )Nzfn(*inputs))fnr:   )stmtglobals  )r   blocked_autorangemedian)rM   r:   	test_runsttimess        r#   	time_cudarV   B   s.    =*GHA!E<<$r1   c                     [         R                  " 5       n[        U5       H  nU " U6   M
     [         R                  " 5       nXS-
  U-  S-  $ )NrP   )timeperf_counterrange)rM   r:   rS   r    _es         r#   time_cpur]   G   sF    A9
F AEY%%r1   
      )warmup_runsrS   c                6   [        U 5      u  pE[        U5       H  nU" U6   M
     S nU H=  n[        U[        R                  5      (       d  M$  UR
                  R                  S:H  n  O   Uc  [        S5      eU(       a  [        XAU5      nU$ [        XAU5      nU$ )NcpuzNo tensor found in inputs)
rK   rZ   r;   r.   Tensorr)   r<   r-   r]   rV   )	r2   r:   r`   rS   rG   r[   is_cpuinputouts	            r#   run_testrg   N   s    $R(HE;v   FeU\\**\\&&%/F  ~89906(5)
,CJ =FeU^<_CJr1   c               /      #    [         R                  R                  S5      n S v   [         R                  R                  U5        g ! [         R                  R                  U5        f = f7f)NF)r.   r7   _get_graph_executor_optimize)argskwargsold_optimizes      r#   no_fuserrm   ^   sE     8888?L<--l;--l;s    A+A  A+!A((A+c                 b    [        5          [        X5      sS S S 5        $ ! , (       d  f       g = f)N)rm   rg   r2   r:   s     r#   run_baseline_no_fusionrp   f   s    	# 
s    
.c                     U(       a  S/OS/n[         R                  R                  U5      n[         R                  R                  S5         [	        X5      sS S S 5        [         R                  R                  U5        $ ! , (       d  f       O= f [         R                  R                  U5        g ! [         R                  R                  W5        f = f)N)DYNAMICr^   )STATICr^   fuser1)r.   jitset_fusion_strategyfuserrg   )r2   r:   dynamicstrat	old_strats        r#   run_nncr{   k   s    1%,!>2BII11%8	YY__X&B' '& 			%%i0 '&& 			%%i0		%%i0s$   AB3 B	B3 
BB3 3!Cc                     [         R                  R                  S5         [        X5      sS S S 5        $ ! , (       d  f       g = f)Nfuser2)r.   ru   rw   rg   ro   s     r#   run_nvfuserr~   t   s&    		"# 
#	"	"s	   5
A)
contextlibr   typingr   r   r>   r.   rX   torch.utils.benchmarkr   strlistr$   r7   rB   r0   tuplerK   rV   r]   floatrg   rm   rp   r{   r~    r1   r#   <module>r      s    %     ' c *UEHH$7$7 Uc eCcN&; *
& )+b U   < <$% $
1E 1$u $r1   