
    sg                     
   d dl mZ d dlmZmZ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ListTuplecastN)Timerfilenamereturnc           	         d}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currentgraphsf
split_strsi	split_strend_locsxliness                 N/var/www/html/venv/lib/python3.12/site-packages/torch/utils/jit/log_extract.py
extract_irr'   	   s    E
C
CG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                         }|J |J |J |J t	        j
                  ||||      S )N)sizestridedevicedtype)sizesstridesr,   r-   torchempty_strided)r(   r*   r+   r,   r-   s        r&   make_tensor_from_typer2      s{    >>DF__FNNE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)r0   _Cparse_irmakeMultiOutputIntoTupleinputs
isinstancetype	FloatTyper   randomuniformIntTyperandint
TensorTyper   r2   BoolTypeNotImplementedError_create_function_from_graph!_jit_pass_erase_shape_informationgraph)r4   rI   r<   inp
tensorTypefuncs         r&   load_graph_and_inputsrM   *   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:&>r3   c                 `    t        d| |d      }|j                         }|j                  dz  S )Nzfn(*inputs))fnr<   )stmtglobals  )r   blocked_autorangemedian)rO   r<   	test_runsttimess        r&   	time_cudarX   ?   s0    =*GHA!E<<$r3   c                     t        j                         }t        |      D ]  } | |  	 t        j                         }||z
  |z  dz  S )NrR   )timeperf_counterrange)rO   r<   rU   r#   _es         r&   time_cpur_   D   sM    A9 
FAEY%%r3   
      )warmup_runsrU   c                   t        |       \  }}t        |      D ]  } ||  	 d }|D ]7  }t        |t        j                        s|j
                  j                  dk(  } n |J |rt        |||      }|S t        |||      }|S )Ncpu)	rM   r\   r=   r0   Tensorr,   r>   r_   rX   )	r4   r<   rb   rU   rI   r]   is_cpuinputouts	            r&   run_testri   K   s    $R(HE1; v F eU\\*\\&&%/F 06(5&)
,CJ =FeVU^<_CJr3   c               /      K   t         j                  j                  d      }	 d  t         j                  j                  |       y # t         j                  j                  |       w xY ww)NF)r0   r9   _get_graph_executor_optimize)argskwargsold_optimizes      r&   no_fuserro   Z   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)ro   ri   r4   r<   s     r&   run_baseline_no_fusionrr   b   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)r0   jitset_fusion_strategyfuserri   )r4   r<   dynamicstrat	old_strats        r&   run_nncr}   g   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)r0   rw   ry   ri   rq   s     r&   run_nvfuserr   p   s1    		" $F#$ $ $s   6?)
contextlibr   typingr   r   r   r   r@   r0   rZ   torch.utils.benchmarkr   strr'   r9   rD   r2   rM   rX   r_   floatri   ro   rr   r}   r    r3   r&   <module>r      s    % ) )    ' c ,	UEHH$7$7 	Uc eCcN&; *
& )+b U  < <$% $
1E 1$u $r3   