
    ib                        d dl mZ d dlmZmZ d dlZd dlZd dlZd dlm	Z	 de
dee
   fdZdej                  j                  fd	Zd
e
deeee   f   fdZd Zd ZddddefdZed        ZdefdZdefdZdefdZy)    )contextmanager)AnycastN)Timerfilenamereturnc           	         d}d}d }g }t        |       5 }|j                         j                  |      }t        |      D ]  \  }}|dk(  r|j	                  |      }	|	dk(  r#|d |	 }
||dz
     j                         d   }|
j                  d      D cg c]  }|t        |      d   }}|j                  dj                  |              	 d d d        |S c c}w # 1 sw Y   |S xY w)	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/var/www/html/engine/venv/lib/python3.12/site-packages/torch/utils/jit/log_extract.py
extract_irr$   	   s    E
C
CF	h *1VVX^^E*
%j1 		*LAyAvnnS)G"}(7#AQU#..04C+,<<<+FGaQs3xy\GEGMM"''%.)		** M H* Ms   B CC)$CCC'inp_typec                    | j                         }| j                         }| j                         }| j                         }|t	        d      |t	        d      |t	        d      |t	        d      t        j                  ||||      S )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eTT    irc                 |   t         j                  j                  | d      }|j                          g }|j	                         D ]  }t        |j                         t         j                  j                        r&|j                  t        j                  dd             \t        |j                         t         j                  j                        r&|j                  t        j                  dd             t        |j                         t         j                  j                        rNt        t         j                  j                  |j                               }|j                  t        |             4t        |j                         t         j                  j                         r*|j                  t        j                  dd      dk(         t#        d|j                                 t         j                  j%                  d|      }t         j                  j'                  |j(                         ||fS )	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   -   sy   HHb>E	""$F||~ cchhj%(("4"45MM&..S12
EHH$4$45MM&..C01
EHH$7$78ehh11388:>JMM/
;<
EHH$5$56MM&..A.!34%(TUXU]U]U_T`&abbc 88//	5AD	HH..tzz:&>r1   c                 `    t        d| |d      }|j                         }|j                  dz  S )Nzfn(*inputs))fnr:   )stmtglobals  )r   blocked_autorangemedian)rM   r:   	test_runsttimess        r#   	time_cudarV   B   s0    =*GHA!E<<$r1   c                     t        j                         }t        |      D ]  } | |  	 t        j                         }||z
  |z  dz  S )NrP   )timeperf_counterrange)rM   r:   rS   r    _es         r#   time_cpur]   G   sM    A9 
FAEY%%r1   
      )warmup_runsrS   c                   t        |       \  }}t        |      D ]  } ||  	 d }|D ]7  }t        |t        j                        s|j
                  j                  dk(  } n |t        d      |rt        |||      }|S t        |||      }|S )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(HE1; v F eU\\*\\&&%/F ~89906(5&)
,CJ =FeVU^<_CJr1   c               /      K   t         j                  j                  d      }	 d  t         j                  j                  |       y # t         j                  j                  |       w xY ww)NF)r.   r7   _get_graph_executor_optimize)argskwargsold_optimizes      r#   no_fuserrm   ^   sF     8888?L<--l;--l;s    A+A  A+!A((A+c                 Z    t               5  t        | |      cd d d        S # 1 sw Y   y xY w)N)rm   rg   r2   r:   s     r#   run_baseline_no_fusionrp   f   s&    	 $F#$ $ $s   !*c                    	 |rdgndg}t         j                  j                  |      }t         j                  j                  d      5  t	        | |      cd d d        t         j                  j                  |       S # 1 sw Y   nxY w	 t         j                  j                  |       y # t         j                  j                         w xY w)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B* A=	B* =BB* *!Cc                     t         j                  j                  d      5  t        | |      cd d d        S # 1 sw Y   y xY w)Nfuser2)r.   ru   rw   rg   ro   s     r#   run_nvfuserr~   t   s1    		" $F#$ $ $s   6?)
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   