
    Vh                        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                K/home/dcms/DCMS/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                         }|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_typer/      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)r-   _Cparse_irmakeMultiOutputIntoTupleinputs
isinstancetype	FloatTyper   randomuniformIntTyperandint
TensorTyper   r/   BoolTypeNotImplementedError_create_function_from_graph!_jit_pass_erase_shape_informationgraph)r1   rF   r9   inp
tensorTypefuncs         r#   load_graph_and_inputsrJ   )   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:&>r0   c                 `    t        d| |d      }|j                         }|j                  dz  S )Nzfn(*inputs))fnr9   )stmtglobals  )r   blocked_autorangemedian)rL   r9   	test_runsttimess        r#   	time_cudarU   >   s0    =*GHA!E<<$r0   c                     t        j                         }t        |      D ]  } | |  	 t        j                         }||z
  |z  dz  S )NrO   )timeperf_counterrange)rL   r9   rR   r    _es         r#   time_cpur\   C   sM    A9 
FAEY%%r0   
      )warmup_runsrR   c                   t        |       \  }}t        |      D ]  } ||  	 d }|D ]7  }t        |t        j                        s|j
                  j                  dk(  } n |J |rt        |||      }|S t        |||      }|S )Ncpu)	rJ   rY   r:   r-   Tensorr)   r;   r\   rU   )	r1   r9   r_   rR   rF   rZ   is_cpuinputouts	            r#   run_testrf   J   s    $R(HE1; v F eU\\*\\&&%/F 06(5&)
,CJ =FeVU^<_CJr0   c               /      K   t         j                  j                  d      }	 d  t         j                  j                  |       y # t         j                  j                  |       w xY ww)NF)r-   r6   _get_graph_executor_optimize)argskwargsold_optimizes      r#   no_fuserrl   Y   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)rl   rf   r1   r9   s     r#   run_baseline_no_fusionro   a   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fuserrf   )r1   r9   dynamicstrat	old_strats        r#   run_nncrz   f   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-   rt   rv   rf   rn   s     r#   run_nvfuserr}   o   s1    		" $F#$ $ $s   6?)
contextlibr   typingr   r   r=   r-   rW   torch.utils.benchmarkr   strlistr$   r6   rA   r/   tuplerJ   rU   r\   floatrf   rl   ro   rz   r}    r0   r#   <module>r      s    %     ' c *	UEHH$7$7 	Uc eCcN&; *
& )+b U  < <$% $
1E 1$u $r0   