
    Χg                        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dS )    )contextmanager)AnyListTuplecastN)Timerfilenamereturnc                    d}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     W/var/www/html/ai-engine/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currentgraphsf
split_strsi	split_strend_locslinesr   s               @r   
extract_irr,   	   sV   E
C
CG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stridesr1   r2   torchempty_strided)r-   r/   r0   r1   r2   s        r   make_tensor_from_typer7      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)r5   _Cparse_irmakeMultiOutputIntoTupleinputs
isinstancetype	FloatTyper   randomuniformIntTyperandint
TensorTyper   r7   BoolTypeNotImplementedError_create_function_from_graph!_jit_pass_erase_shape_informationgraph)r8   rM   r@   inp
tensorTypefuncs         r   load_graph_and_inputsrQ   *   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)rS   r@   	test_runsttimess        r   	time_cudar\   ?   s:    =*G*GHHHA!!E<$r   c                     t          j                    }t          |          D ]} | |  t          j                    }||z
  |z  dz  S )NrV   )timeperf_counterrange)rS   r@   rY   r*   _es         r   time_cpurc   D   sV    A9  
FAEY%%r   
      )warmup_runsrY   c                   t          |           \  }}t          |          D ]} ||  d }|D ].}t          |t          j                  r|j        j        dk    } n/|J |rt          |||          nt          |||          }|S )Ncpu)	rQ   r`   rA   r5   Tensorr1   rB   rc   r\   )	r8   r@   rf   rY   rM   ra   is_cpuinputouts	            r   run_testrm   K   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)r5   r=   _get_graph_executor_optimize)argskwargsold_optimizes      r   no_fuserrs   Z   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   )rs   rm   r8   r@   s     r   run_baseline_no_fusionrv   b   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)DYNAMICrd   )STATICrd   fuser1)r5   jitset_fusion_strategyfuserrm   )r8   r@   dynamicstrat	old_strats        r   run_nncr   g   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)r5   r{   r}   rm   ru   s     r   run_nvfuserr   p   s    		"	" $ $F##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   =AA)
contextlibr   typingr   r   r   r   rD   r5   r^   torch.utils.benchmarkr   strr,   r=   rH   r7   rQ   r\   rc   floatrm   rs   rv   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   