§
    Ì²Åj%  ã                   ó  — 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 Š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     €úLC:\Projects\Historical\venv\Lib\site-packages\torch/utils/jit/log_extract.pyú
<listcomp>zextract_ir.<locals>.<listcomp>   s'   ø€ ÐGÐGÐG a�Q•s˜3‘x”x�y�y”\Ð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Ø—V’V‘X”X—^’^ EÑ*Ô*ˆ
Ý% jÑ1Ô1ð 		*ð 		*‰LˆAˆyØ�AŠvˆvØØ—n’n SÑ)Ô)ˆGØ˜"Š}ˆ}ØØ˜(˜7˜(Ô#ˆAØ˜Q ™UÔ#×.Ò.Ñ0Ô0°Ô4ˆCØGÐGÐGÐG¨1¯<ª<À¨<Ñ+FÔ+FÐGÑGÔGˆEØ�MŠM˜"Ÿ'š' %™.œ.Ñ)Ô)Ð)Ð)ð		*ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð €Ms   ™CC=Ã=DÄDÚinp_typec                 óò   — |                       ¦   «         }|                      ¦   «         }|                      ¦   «         }|                      ¦   «         }|€J ‚|€J ‚|€J ‚|€J ‚t	          j        ||||¬¦  «        S )N)ÚsizeÚstrideÚdeviceÚdtype)ÚsizesÚstridesr0   r1   ÚtorchÚempty_strided)r,   r.   r/   r0   r1   s        r   Úmake_tensor_from_typer6      sŠ   € Ø�>Š>ÑÔ€DØ×ÒÑÔ€FØ�_Š_ÑÔ€FØ�NŠNÑÔ€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)r4   Ú_CÚparse_irÚmakeMultiOutputIntoTupleÚinputsÚ
isinstanceÚtypeÚ	FloatTyper   ÚrandomÚuniformÚIntTypeÚrandintÚ
TensorTyper   r6   ÚBoolTypeÚNotImplementedErrorÚ_create_function_from_graphÚ!_jit_pass_erase_shape_informationÚgraph)r7   rL   r?   ÚinpÚ
tensorTypeÚfuncs         r   Úload_graph_and_inputsrP   )   sË  € ÝŒH×Ò˜b¸ÐÑ>Ô>€EØ	×"Ò"Ñ$Ô$Ð$Ø€FØ�|Š|‰~Œ~ð cñ cˆÝ�c—h’h‘j”j¥%¤(Ô"4Ñ5Ô5ð 
	cØ�MŠM�&œ.¨¨SÑ1Ô1Ñ2Ô2Ð2Ð2Ý˜Ÿš™
œ
¥E¤HÔ$4Ñ5Ô5ð 	cØ�MŠM�&œ.¨¨CÑ0Ô0Ñ1Ô1Ð1Ð1Ý˜Ÿš™
œ
¥E¤HÔ$7Ñ8Ô8ð 	cÝ�eœhÔ1°3·8²8±:´:Ñ>Ô>ˆJØ�MŠMÕ/°
Ñ;Ô;Ñ<Ô<Ð<Ñ<Ý˜Ÿš™
œ
¥E¤HÔ$5Ñ6Ô6ð 	cØ�MŠM�&œ.¨¨AÑ.Ô.°!Ò3Ñ4Ô4Ð4Ñ4å%Ð&aÐUX×U]ÒU]ÑU_ÔU_Ð&aÐ&aÑbÔbÐbåŒ8×/Ò/°	¸5ÑAÔA€DÝ	„H×.Ò.¨t¬zÑ:Ô:Ð:Ø�&ˆ>Ðr   c                 óf   — t          d| |dœ¬¦  «        }|                     ¦   «         }|j        dz  S )Nzfn(*inputs))Úfnr?   )ÚstmtÚglobalséè  )r   Úblocked_autorangeÚmedian)rR   r?   Ú	test_runsÚtÚtimess        r   Ú	time_cudar[   >   s:   € Ý�=°ÀÐ*GÐ*GÐHÑHÔH€AØ×ÒÑ!Ô!€EØŒ<˜$ÑÐr   c                 ó’   — t          j        ¦   «         }t          |¦  «        D ]} | |Ž  Œt          j        ¦   «         }||z
  |z  dz  S )NrU   )ÚtimeÚperf_counterÚrange)rR   r?   rX   r)   Ú_Úes         r   Útime_cpurb   C   sV   € ÝÔÑÔ€AÝ�9ÑÔð ð ˆØ
ˆˆFˆˆˆÝÔÑÔ€AØ�‰E�YÑ Ñ%Ð%r   é
   é   )Úwarmup_runsrX   c                ó  — t          | ¦  «        \  }}t          |¦  «        D ]} ||Ž  Œd }|D ].}t          |t          j        ¦  «        r|j        j        dk    } nŒ/|€J ‚|rt          |||¦  «        nt          |||¦  «        }|S )NÚcpu)	rP   r_   r@   r4   ÚTensorr0   rA   rb   r[   )	r7   r?   re   rX   rL   r`   Úis_cpuÚinputÚouts	            r   Úrun_testrl   J   s³   € Ý$ RÑ(Ô(�H€Eˆ1Ý�;ÑÔð ð ˆØˆˆvˆˆˆà€FØð ð ˆÝ�e�Uœ\Ñ*Ô*ð 	Ø”\Ô&¨%Ò/ˆFØˆEð	ð ÐÐÐà06Ð
_�(�5˜& )Ñ
,Ô
,Ð
,½IÀeÈVÐU^Ñ<_Ô<_€CØ€Jr   c               /   óØ   K  — t           j                             d¦  «        }	 d V — t           j                             |¦  «         d S # t           j                             |¦  «         w xY w)NF)r4   r<   Ú_get_graph_executor_optimize)ÚargsÚkwargsÚold_optimizes      r   Úno_fuserrr   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   )rr   rl   ©r7   r?   s     r   Úrun_baseline_no_fusionru   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)ÚDYNAMICrc   )ÚSTATICrc   Úfuser1)r4   ÚjitÚset_fusion_strategyÚfuserrl   )r7   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Ð0øøøs0   ‚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)r4   rz   r|   rl   rt   s     r   Úrun_nvfuserrƒ   o   s‡   € Ý	Œ�Š˜Ñ	"Ô	"ð $ð $Ý˜˜FÑ#Ô#ð$ð $ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $s    =½AÁA)Ú
contextlibr   Útypingr   r   r   r   rC   r4   r]   Útorch.utils.benchmarkr   Ústrr+   r<   rG   r6   rP   r[   rb   Úfloatrl   rr   ru   r€   rƒ   © r   r   ú<module>rŠ      s¢  ðà %Ð %Ð %Ð %Ð %Ð %Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø €€€Ø €€€Ø €€€Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ð˜ð   c¤ð ð ð ð ð*	U E¤HÔ$7ð 	Uð 	Uð 	Uð 	Uð˜cð  e¨C°°c´¨NÔ&;ð ð ð ð ð*ð ð ð
&ð &ð &ð )+°bð ð ð ¸Uð ð ð ð ð ð<ð <ñ „ð<ð$¨%ð $ð $ð $ð $ð
1 Eð 1ð 1ð 1ð 1ð$˜uð $ð $ð $ð $ð $ð $r   