
    `i                        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dS )    )contextmanager)AnycastN)Timerfilenamereturnc                    d}d}d g }t          |           5 }|                                                    |          }t          |          D ]\  }}|dk    r|                    |          }|dk    r(|d |         }	||dz
                                           d         fd|	                    d          D             }
|                    d	                    |
                     	 d d d            n# 1 swxY w Y   |S )
Nz<GRAPH_EXPORT>z</GRAPH_EXPORT>r      c                 >    g | ]}|t                    d          S N)len).0xpfxs     o/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torch/utils/jit/log_extract.py
<listcomp>zextract_ir.<locals>.<listcomp>   s'    GGGaQs3xxyy\GGG    T)keepends )openreadsplit	enumeratefind
splitlinesappendjoin)r   BEGINENDgraphsf
split_strsi	split_strend_locslinesr   s              @r   
extract_irr)   	   sQ   E
C
CF	h *1VVXX^^E**
%j11 		* 		*LAyAvvnnS))G"}}(7(#AQU#..004CGGGG1<<<+F+FGGGEMM"''%..))))		** * * * * * * * * * * * * * * Ms   CC==DDinp_typec                     |                                  }|                                 }|                                 }|                                 }|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_typer4      s    >>DF__FNNEDeTTTTr   irc                    t           j                            | d          }|                                 g }|                                D ]}t          |                                t           j        j                  r)|                    t          j
        dd                     ]t          |                                t           j        j                  r)|                    t          j        dd                     t          |                                t           j        j                  rUt          t           j        j        |                                          }|                    t          |                     =t          |                                t           j        j                  r.|                    t          j        dd          dk               t#          d|                                           t           j                            d|          }t           j                            |j                   ||fS )	NT)parse_tensor_constantsg?d   r   r   z,A default value is not implemented for type forward)r2   _Cparse_irmakeMultiOutputIntoTupleinputs
isinstancetype	FloatTyper   randomuniformIntTyperandint
TensorTyper   r4   BoolTypeNotImplementedError_create_function_from_graph!_jit_pass_erase_shape_informationgraph)r5   rJ   r=   inp
tensorTypefuncs         r   load_graph_and_inputsrN   )   s   Hb>>E	""$$$F||~~ c cchhjj%("455 
	cMM&.S112222

EH$455 	cMM&.C001111

EH$788 	ceh1388::>>JMM/
;;<<<<

EH$566 	cMM&.A..!34444%&aUXU]U]U_U_&a&abbb8//	5AAD	H..tz:::&>r   c                 f    t          d| |d          }|                                }|j        dz  S )Nzfn(*inputs))fnr=   )stmtglobals  )r   blocked_autorangemedian)rP   r=   	test_runsttimess        r   	time_cudarY   >   s:    =*G*GHHHA!!E<$r   c                     t          j                    }t          |          D ]} | |  t          j                    }||z
  |z  dz  S )NrS   )timeperf_counterrange)rP   r=   rV   r'   _es         r   time_cpur`   C   sV    A9  
FAEY%%r   
      )warmup_runsrV   c                   t          |           \  }}t          |          D ]} ||  d }|D ].}t          |t          j                  r|j        j        dk    } n/|J |rt          |||          nt          |||          }|S )Ncpu)	rN   r]   r>   r2   Tensorr.   r?   r`   rY   )	r5   r=   rc   rV   rJ   r^   is_cpuinputouts	            r   run_testrj   J   s    $R((HE1;  vF  eU\** 	\&%/FE	 06
_(5&)
,
,
,IeVU^<_<_CJr   c               /      K   t           j                            d          }	 d V  t           j                            |           d S # t           j                            |           w xY w)NF)r2   r:   _get_graph_executor_optimize)argskwargsold_optimizes      r   no_fuserrp   Y   sa      888??L<--l;;;;;--l;;;;s   A !A)c                 r    t                      5  t          | |          cd d d            S # 1 swxY w Y   d S r   )rp   rj   r5   r=   s     r   run_baseline_no_fusionrs   a   s}    	 $ $F##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   ,00c                    	 |rdgndg}t           j                            |          }t           j                            d          5  t	          | |          cd d d            t           j                            |           S # 1 swxY w Y   	 t           j                            |           d S # t           j                            |           w xY w)N)DYNAMICra   )STATICra   fuser1)r2   jitset_fusion_strategyfuserrj   )r5   r=   dynamicstrat	old_strats        r   run_nncr~   f   s   1%,B!!>2BI11%88	Y__X&& 	( 	(B''	( 	( 	( 	( 	( 	( 	( 		%%i0000	( 	( 	( 	( 	( 	( 	( 	( 	( 		%%i00000	%%i0000s0   AB1 BB1 BB1 BB1 1!Cc                     t           j                            d          5  t          | |          cd d d            S # 1 swxY w Y   d S )Nfuser2)r2   rx   rz   rj   rr   s     r   run_nvfuserr   o   s    		"	" $ $F##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   =AA)
contextlibr   typingr   r   rA   r2   r[   torch.utils.benchmarkr   strlistr)   r:   rE   r4   tuplerN   rY   r`   floatrj   rp   rs   r~   r    r   r   <module>r      s   % % % % % %            ' ' ' ' ' ' c    *	UEH$7 	U 	U 	U 	Uc eCcN&;    *  
& & & )+b   U     < < <$% $ $ $ $
1E 1 1 1 1$u $ $ $ $ $ $r   