+
    –°³jk;  ã                  ó¦  a € 0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
 ^ RIHt ^ RIHt ^ RIHt ^ RIHt ]'       d   ^ R	IHt ^ R
IHt ^ RIHt ^ s^ s^ s. sR]R&   . tR]R&   ^ s^ s ]P                   ! R R4      4       t!. s"R]R&   ^ s#^ s$^ s%^ s&R]R&   ^ s'^ s(R]R&   ^ s)R]R&   ^ s*R]R&   R R lt+] ! R R4      4       t,R R lt- ! R R 4      t./ t/R!]R"&   ] ! R# R$4      4       t0]0Pc                  R%. RKO4       ]0Pc                  R&. RLO4       ]0Pc                  R'. RMO4       ]0Pc                  R(. RNO4       ]0Pc                  R). ROO4       R* R+ lt2R, R- lt3R. R/ lt4R0 R1 lt5R2 R3 lt6R4 R5 lt7R6 R7 lt8R8 R9 lt9R: R; lt:R< R= lt;R> R? lt<R@ RA lt=]
RB RC l4       t>RD RE lt?RF RG lt@]0Pc                  RH. RPO4       RI RJ ltAR# )Qé    )ÚannotationsN)Ú	dataclass)Ú	lru_cache)ÚTYPE_CHECKING)Úconfig)Úget_benchmark_name)Ú
OrderedSet)ÚCallable)ÚConfig)ÚBaseSchedulerNodez#list[tuple[BaseSchedulerNode, int]]Únodes_num_elemz%list[tuple[BaseSchedulerNode, float]]Únode_runtimesc                  ó0   € ] tR t^+t$ R]R&   ^ tR]R&   RtR# )ÚCppOuterLoopFusedCountÚintÚinner_kernel_numberÚlocal_buffer_number© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__r   Ú__static_attributes__r   ó    ÚX/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_inductor/metrics.pyr   r   +   s   ‡ àÓØ Ð˜× r   r   zlist[CppOuterLoopFusedCount]Ú!cpp_outer_loop_fused_inner_countsr   Únum_auto_chunkingÚcodegen_mix_order_reductionÚ#rejected_mix_order_reduction_fusionÚcodegen_nested_reductionc               ó   € V ^8„  d   QhRR/# ©é   ÚreturnÚNoner   )Úformats   "r   Ú__annotate__r(   C   s   € ÷ ñ ˆtñ r   c                 ó²   € ^ s ^ s^ s\        P	                  4        \
        P	                  4        ^ s^ s\        P	                  4        ^ s	^ s
^ s^ s^ s^ s^ s^ sR# )r   N)Úgenerated_kernel_countÚgenerated_cpp_vec_kernel_countÚnum_bytes_accessedr   Úclearr   Úir_nodes_pre_fusionÚcpp_to_dtype_countr   Únum_comprehensive_paddingÚ)num_matches_for_scatter_upon_const_tensorÚnum_loop_reorderingÚparallel_reduction_countr   r    r!   r   r   r   r   Úresetr4   C   sv   € ð  ÐØ%&Ð"ØÐÜ×ÑÔÜ×ÑÔØÐØÐÜ%×+Ñ+Ô-Ø !ÐØ01Ð-ØÐØ ÐØ"#ÐØ*+Ð'Ø ÐØÒr   c                  óX   € ] tR t^et$ RtR]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R	tR
# )ÚCachedMetricsDeltaszQ
The subset of metrics we want update across cache hits, e.g., the
FxGraphCache.
r   r*   r+   r.   r/   r,   r1   r   N)r   r   r   r   Ú__doc__r   r   r   r   r   r6   r6   e   s-   ‡ ñð
  ÓØ$'Ó'ØÓØÓØÓØ/2×2r   r6   c               ó   € V ^8„  d   QhRR/# )r$   r%   ú	list[str]r   )r'   s   "r   r(   r(   t   s   € ÷ Mñ M˜9ñ Mr   c                 ór   € \         P                  ! \        4       U u. uF  q P                  NK  	  up # u up i ©N)ÚdataclassesÚfieldsr6   Úname)Úfields    r   Úget_metric_fieldsr@   t   s*   € Ü$/×$6Ò$6Ô7JÔ$KÓLÑ$K˜5�JŒJÑ$KÑLÐLùÒLs   �4c                  óH   € ] tR t^xtRtR R ltR R lt]R R l4       tRt	R	# )
ÚCachedMetricsHelperzŸ
A helper class to help calculate and apply counter deltas for those
metrics we want to save with cache entries (e.g., FxGraphCache) and
apply on a cache hit.
c               ó   € V ^8„  d   QhRR/# r#   r   )r'   s   "r   r(   Ú CachedMetricsHelper.__annotate__   s   € ÷ <ñ <˜$ñ <r   c                	ór   € / V n         \        4        F!  p\        4       V,          V P                   V&   K#  	  R # r;   )Úcached_metricsr@   Úglobals)ÚselfÚmetrics   & r   Ú__init__ÚCachedMetricsHelper.__init__   s.   € Ø ˆÔÜ'Ö)ˆFÜ*1«)°FÕ*;ˆD×Ñ Ó'ó *r   c               ó   € V ^8„  d   QhRR/# )r$   r%   r6   r   )r'   s   "r   r(   rD   „   s   € ÷ 4ñ 4Ð/ñ 4r   c                	ó”   € / p\        4        F.  p\        4       V,          V P                  V,          ,
          W&   K0  	  \        R/ VB # )Nr   )r@   rG   rF   r6   )rH   Údelta_metricsrI   s   &  r   Ú
get_deltasÚCachedMetricsHelper.get_deltas„   sC   € ØˆÜ'Ö)ˆFÜ$+£I¨fÕ$5¸×8KÑ8KÈFÕ8SÕ$SˆMÓ!ñ *ô #Ñ3 ]Ñ3Ð3r   c               ó    € V ^8„  d   QhRRRR/# )r$   Údeltar6   r%   r&   r   )r'   s   "r   r(   rD   Œ   s   € ÷ 8ñ 8Ð/ð 8°Dñ 8r   c                	ót   € \        4        F)  p\        4       V;;,          \        W4      ,          uu&   K+  	  R # r;   )r@   rG   Úgetattr)rR   rI   s   & r   Úapply_deltasÚ CachedMetricsHelper.apply_deltas‹   s&   € ä'Ö)ˆFÜ‹I�f×¤¨Ó!7Õ7Õó *r   )rF   N)
r   r   r   r   r7   rJ   rO   ÚstaticmethodrU   r   r   r   r   rB   rB   x   s%   † ñõ<õ
4ð ô8ó ô8r   rB   zdict[str, MetricTable]ÚREGISTERED_METRIC_TABLESc                  ó€   € ] tR t^”t$ R]R&   R]R&   ^ tR]R&   R R ltR	 R
 ltR R ltR R lt	]
R R l4       tRtR# )ÚMetricTableÚstrÚ
table_namer9   Úcolumn_namesr   Únum_rows_addedc               ó    € V ^8„  d   QhRRRR/# )r$   Úrow_fnz+Callable[[], dict[str, str | float | None]]r%   r&   r   )r'   s   "r   r(   ÚMetricTable.__annotate__›   s   € ÷ ñ ÐIð Èdñ r   c                	óÜ  € V P                   \        4       9  d   R # V! 4       p\        V P                  4      \        V4      8w  d-   \	        \        V P                  4       R\        V4       24      h\        V P                  4      \        VP                  4       4      8w  d;   \	        \        V P                  4       R\        VP                  4       4       24      h\        4       pV.V P                   Uu. uF  qBV,          NK  	  up,           p\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   \	        R4      hV P                  V4       R # u upi )Nz v.s. c           	   3  ób   "  € T F%  p\        V\        \        \        R 4      34      x € K'  	  R # 5ir;   )Ú
isinstancer[   ÚfloatÚtype)Ú.0Úis   & r   Ú	<genexpr>Ú&MetricTable.add_row.<locals>.<genexpr>ª   s%   é € ÐHÁC¸q”:˜a¤#¤u¬d°4«jÐ!9×:Ð:ÃCùs   ‚-/FTz1expected all row values to be str, float, or None)
r\   Úenabled_metric_tablesÚlenr]   ÚAssertionErrorr	   Úkeysr   ÚallÚ
_write_row)rH   r`   Úrow_dictÚbnÚcolumn_nameÚrows   &&    r   Úadd_rowÚMetricTable.add_row›   s  € Ø�?‰?Ô"7Ó"9Ô9Ùá“8ˆÜˆt× Ñ Ó!¤S¨£]Ô2Ü ¤C¨×(9Ñ(9Ó$:Ð#;¸6Ä#ÀhÃ-ÀÐ!QÓRÐRÜ�d×'Ñ'Ó(¬J°x·}±}³Ó,GÔGÜ Ü˜d×/Ñ/Ó0Ð1°¼
À8Ç=Á=Ã?Ó8SÐ7TÐUóð ô  Ó!ˆàˆd¸t×?PÒ?PÓQÑ?P°˜{×+Ð+Ñ?PÑQÕQˆß‹sÑHÁCÓH�s�sŠsÑHÁCÓH×HÒHÜ Ð!TÓUÐUØ�‰˜Öùò Rs   Ã7E)c               ó   € V ^8„  d   QhRR/# )r$   r%   r[   r   )r'   s   "r   r(   ra   ®   s   € ÷ 5ñ 5 ñ 5r   c                	ó"   € R V P                    R2# )Úmetric_table_z.csv)r\   )rH   s   &r   Úoutput_filenameÚMetricTable.output_filename®   s   € Ø˜tŸ™Ð/¨tÐ4Ð4r   c               ó   € V ^8„  d   QhRR/# r#   r   )r'   s   "r   r(   ra   ±   s   € ÷ @ñ @˜dñ @r   c                	óþ   € V P                  4       p\        VR 4      ;_uu_ 4       p\        P                  ! VRR7      pVP	                  R.V P
                  ,           4       RRR4       R#   + '       g   i     R# ; i)ÚwÚ
©ÚlineterminatorÚ
model_nameN)rz   ÚopenÚcsvÚwriterÚwriterowr]   )rH   ÚfilenameÚfdr…   s   &   r   Úwrite_headerÚMetricTable.write_header±   sW   € Ø×'Ñ'Ó)ˆÜ�(˜C× Ô  BÜ—Z’Z °4Ô8ˆFØ�O‰O˜\˜N¨T×->Ñ->Õ>Ô?÷ !× × Ò ús   ¥<A+Á+A<	c               ó    € V ^8„  d   QhRRRR/# )r$   rt   zlist[str | float | None]r%   r&   r   )r'   s   "r   r(   ra   ·   s   € ÷ !ñ !Ð6ð !¸4ñ !r   c                	ó  € V P                  4       pV P                  ^ 8X  d6   \        P                  P	                  V4      '       g   V P                  4        V ;P                  ^,          un        \        V4       F-  w  r4\        V\        4      '       d   VR pM	Vf   RpMTpWQV&   K/  	  \        VR4      ;_uu_ 4       p\        P                  ! VRR7      pVP                  V4       RRR4       R#   + '       g   i     R# ; i)r   z.6fNÚ Úar   r€   )rz   r^   ÚosÚpathÚexistsr‰   Ú	enumeraterd   re   rƒ   r„   r…   r†   )rH   rt   r‡   ÚidxÚorig_valÚnew_valrˆ   r…   s   &&      r   rp   ÚMetricTable._write_row·   sÆ   € Ø×'Ñ'Ó)ˆØ×Ñ !Ô#¬B¯G©G¯N©N¸8×,DÒ,DØ×ÑÔà×Ò˜qÕ Õä& sž^‰MˆCÜ˜(¤E×*Ò*Ø% c˜N‘ØÒ!Ø‘à"�Ø�‹Hñ ,ô �(˜C× Ô  BÜ—Z’Z °4Ô8ˆFØ�O‰O˜CÔ ÷ !× × Ò ús   Ã *C4Ã4D	c               ó$   € V ^8„  d   QhRRRRRR/# )r$   r>   r[   r]   r9   r%   r&   r   )r'   s   "r   r(   ra   Ì   s!   € ÷ /ñ /˜Sð /°	ð /¸dñ /r   c                	ó.   € \        W4      pV\        V &   R # r;   )rZ   rX   )r>   r]   Útables   && r   Úregister_tableÚMetricTable.register_tableË   s   € ä˜DÓ/ˆØ).Ô  Ó&r   r   N)r   r   r   r   r   r^   ru   rz   r‰   rp   rW   rš   r   r   r   r   rZ   rZ   ”   s@   ‡ àƒOØÓà€N�CÓõõ&5õ@õ!ð( ô/ó ô/r   rZ   Úslow_fusionÚgraph_statsÚpersistent_red_perfÚ'fusion_failure_due_to_indexing_mismatchÚkernel_metadatac               ó    € V ^8„  d   QhRRRR/# )r$   Úkernel_module_coder[   r%   r   )r'   s   "r   r(   r(   %  s   € ÷ +ñ +¨cð +°cñ +r   c                ó    € ^RI Hp ^RIHp VP	                  V 4      pV! V4      p\
        P                  ! VP                  P                  4      # )z¡
The kernel_module_code is the python module that contains kernel function code.
kernel function is the proper triton kernel function annotated with
@triton.jit
)ÚPyCodeCache)Úget_triton_kernel)Ú	codecacher¤   Úwrapper_benchmarkr¥   ÚloadÚinspectÚ	getsourceÚfn)r¢   r¤   r¥   ÚmodÚkernels   &    r   Ú_parse_kernel_fn_coder®   %  s@   € õ 'Ý4à
×
Ñ
Ð-Ó
.€CÙ˜sÓ#€Fô ×Ò˜VŸY™YŸ\™\Ó*Ð*r   c               ó    € V ^8„  d   QhRRRR/# ©r$   Úproper_kernel_fn_coder[   r%   r   r   )r'   s   "r   r(   r(   5  s   € ÷ 3ñ 3°cð 3¸cñ 3r   c                ó4   € \        V P                  4       4      # )zB
Return the line of code for the kernel excluding the decorators.
)rl   Ú
splitlines)r±   s   &r   Ú_parse_kernel_line_of_coder´   5  s   € ô Ð$×/Ñ/Ó1Ó2Ð2r   c               ó$   € V ^8„  d   QhRRRRRR/# )r$   r¢   r[   Úkernel_categoryr%   ú
str | Noner   )r'   s   "r   r(   r(   <  s!   € ÷ ñ ¨#ð Àð È
ñ r   c                óŠ   € VR 8X  d   R# \         P                  ! RV 4      pV'       g   \        R4      hVP                  ^4      # )ÚforeachNzsize_hints=(\[[0-9, ]*\]),zsize_hints missing!©ÚreÚsearchrm   Úgroup)r¢   r¶   Úms   && r   Ú_parse_size_hintsr¿   <  s<   € Ø˜)Ô#áÜ
�	Š	Ð/Ð1CÓD€AßÜÐ2Ó3Ð3Ø�7‰7�1‹:Ðr   c               ó$   € V ^8„  d   QhRRRRRR/# )r$   r¶   r[   r¢   r%   r·   r   )r'   s   "r   r(   r(   F  s!   € ÷ ñ ¨3ð ÀCð ÈJñ r   c                óŠ   € V R9  d   R# \         P                  ! RV4      pV'       g   \        R4      hVP                  ^4      # )Ú	reductionNz$reduction_hint=ReductionHint\.(\w*),z/reduction_hint not found in kernel source code!)rÂ   Úpersistent_reductionrº   )r¶   r¢   r¾   s   && r   Ú_parse_reduction_hintrÄ   F  s=   € ØÐCÔCÙÜ
�	Š	Ð9Ð;MÓN€AßÜÐNÓOÐOØ�7‰7�1‹:Ðr   c               ó$   € V ^8„  d   QhRRRRRR/# )r$   r±   r[   Úpatternr%   r   r   )r'   s   "r   r(   r(   O  s!   € ÷ 0ñ 0¨#ð 0¸ð 0Àñ 0r   c                ó$   € V P                  V4      # r;   )Úcount)r±   rÆ   s   &&r   Ú_count_patternrÉ   O  s   € Ø ×&Ñ& wÓ/Ð/r   c               ó    € V ^8„  d   QhRRRR/# r°   r   )r'   s   "r   r(   r(   S  s   € ÷ 
ñ 
 sð 
¨sñ 
r   c                ó  € V P                  4       ^ ,          pVP                  R4      '       g   \        RV: 24      hVP                  R4      pVP                  R4      pW^,           V pVP	                  R4      p\        V4      # )r   údef z,expected def line to start with 'def ', got Ú(z):Ú,)r³   Ú
startswithrm   ÚindexÚsplitrl   )r±   Údef_lineÚ	start_idxÚend_idxÚdecl_csvÚcompss   &     r   Ú_count_argsr×   S  s�   € Ø$×/Ñ/Ó1°!Õ4€HØ×Ñ˜v×&Ò&ÜØ:¸8¹,ÐGó
ð 	
ð —‘˜sÓ#€IØ�n‰n˜TÓ"€GØ A�¨Ð0€HØ�N‰N˜3Ó€EÜˆu‹:Ðr   c               ó    € V ^8„  d   QhRRRR/# )r$   Úkernel_fn_coder[   r%   r   )r'   s   "r   r(   r(   `  s   € ÷ &ñ &°ð &¸ñ &r   c                ó,   € V P                  R4      pWR # )z
Skip decorators.
rÌ   N)rÐ   )rÙ   Ú	start_poss   & r   Ú_parse_proper_kernel_fn_coderÜ   `  s   € ð ×$Ñ$ VÓ,€IØ˜*Ð%Ð%r   c               ó$   € V ^8„  d   QhRRRRRR/# )r$   r±   r[   Únumel_arg_namer%   z
int | Noner   )r'   s   "r   r(   r(   h  s!   € ÷ ñ ¨ð ¸Sð ÀZñ r   c                ó~   € \         P                  ! V R 2V 4      pV'       d   \        VP                  ^4      4      # R# )z
 = ([\d]+)N)r»   r¼   r   r½   )r±   rÞ   r¾   s   && r   Ú_parse_numelrà   h  s3   € Ü
�	Š	�^Ð$ KÐ0Ð2GÓH€AßÜ�1—7‘7˜1“:‹Ðár   c               ó$   € V ^8„  d   QhRRRRRR/# )r$   rÙ   r[   r¶   r%   zfloat | Noner   )r'   s   "r   r(   r(   p  s$   € ÷ ñ ØðØ*-ðàñr   c                óz   € \         P                  ! RV 4      pV'       d   \        VP                  ^4      4      #  R# )zu
inductor meta looks like:
    inductor_meta={... 'mutated_arg_names': [], 'no_x_dim': False, 'kernel_num_gb': 2.0},
z.kernel_num_gb.:\s*([0-9.]+)N)r»   r¼   re   r½   )rÙ   r¶   r¾   s   && r   Ú_parse_kernel_args_num_gbrã   p  s5   € ô 	�	Š	Ð1°>ÓB€AßÜ�Q—W‘W˜Q“ZÓ Ð ð	ñ r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r$   Úkernel_namer[   Úkernel_pathr¢   r%   r&   r   )r'   s   "r   r(   r(   …  s,   € ÷ )ñ )Øð)Ø#&ð)Ø<?ð)à	ñ)r   c           
     óî   a aaaaaaa	€ ^RI Hp V! V4      o\        SV4      o\        VS4      o	\	        V4      o\        S4      o\        S4      o\        R4      P                  VVVV VVVV	3R l4       R# )zÔ
A utility to log kernel metadata. We may parse metadata from kernel source code here.

It's fine to parse the generated kernel code here since the logging is
disabled by default. It would hurt compilation time.
)Ú"get_kernel_category_by_source_coder    c            !     óö   <€ R SRSRS RSRSRSR\        SR4      R\        SR	4      R
\        SR4      R\        SR4      R\        S4      R\        SR4      R\        SR4      R\        SR4      R\        SS 4      /# )rå   ræ   r¶   Ú
size_hintsÚreduction_hintÚline_of_codeÚnum_loadztl.loadÚ	num_storeztl.storeÚnum_for_loopzfor Únum_atomic_addztl.atomic_addÚnum_argsÚxnumelÚynumelÚrnumelÚkernel_args_num_gb)rÉ   r×   rà   rã   )r¶   rÙ   Úkernel_line_of_coderå   ræ   r±   rë   rê   s   €€€€€€€€r   Ú<lambda>Ú%log_kernel_metadata.<locals>.<lambda>›  s�   ø€ Ø˜;Ø˜;Ø˜Ø˜*Ø˜nØÐ/ØœÐ'<¸iÓHØœÐ(=¸zÓJØœNÐ+@À&ÓIØœnÐ-BÀOÓTØœÐ$9Ó:Ø”lÐ#8¸(ÓCØ”lÐ#8¸(ÓCØ”lÐ#8¸(ÓCØ Ô";Ø ó#ñ
r   N)	r§   rè   rÄ   r¿   r®   rÜ   r´   Úget_metric_tableru   )
rå   ræ   r¢   rè   r¶   rÙ   rö   r±   rë   rê   s
   ff& @@@@@@r   Úlog_kernel_metadatarú   …  sp   ÿ€ õ Fá8Ð9KÓL€OÜ*¨?Ð<NÓO€NÜ"Ð#5°ÓG€JÜ*Ð+=Ó>€Nä8¸ÓHÐô 5Ð5JÓKÐäÐ&Ó'×/Ñ/÷	
ó 	
ör   c               ó   € V ^8„  d   QhRR/# r#   r   )r'   s   "r   r(   r(   ±  s   € ÷ !ñ !˜Tñ !r   c                 ó  € \         P                  4        Fq  w  rV \        4       9   g   K  VP                  4       p\        P
                  P                  V4      '       d   \        P                  ! V4       VP                  4        Ks  	  R# )z«
Purge the old log file at the beginning when the benchmark script runs.
Should do it in the parent process rather than the child processes running
each individual model.
N)	rX   Úitemsrk   rz   r�   r�   r‘   Úunlinkr‰   )r>   r™   r‡   s      r   Úpurge_old_log_filesrÿ   ±  s^   € ô 0×5Ñ5Ö7‰ˆØÔ(Ó*Ö*Ø×,Ñ,Ó.ˆHÜ�w‰w�~‰~˜h×'Ò'Ü—	’	˜(Ô#à×ÑÖ ó 8r   c               ó   € V ^8„  d   QhRR/# )r$   r%   úOrderedSet[str]r   )r'   s   "r   r(   r(   À  s   € ÷ Dñ D˜ñ Dr   c                 ó4   € \        \        P                  4      # r;   )Úenabled_metric_tables_implr   rk   r   r   r   rk   rk   À  s   € Ü%¤f×&BÑ&BÓCÐCr   c               ó    € V ^8„  d   QhRRRR/# )r$   Ú
config_strr[   r%   r  r   )r'   s   "r   r(   r(   Å  s   € ÷ 	ñ 	¨3ð 	°?ñ 	r   c                óÔ   € \        4       pV P                  R 4       FH  pVP                  4       pV'       g   K  V\        9  d   \	        RV R24      hVP                  V4       KJ  	  V# )rÎ   zMetric table name z is not registered)r	   rÑ   ÚstriprX   rm   Úadd)r  Úenabledr>   s   &  r   r  r  Ä  sa   € ä)›|€GØ× Ñ  Ö%ˆØ�z‰z‹|ˆßÙØÔ/Ô/Ü Ð#5°d°VÐ;MÐ!NÓOÐOØ�‰�DÖñ &ð €Nr   c               ó    € V ^8„  d   QhRRRR/# )r$   r>   r[   r%   Úboolr   )r'   s   "r   r(   r(   Ñ  s   € ÷ +ñ + #ð +¨$ñ +r   c                ó   € V \        4       9   # r;   )rk   ©r>   s   &r   Úis_metric_table_enabledr  Ñ  s   € ØÔ(Ó*Ñ*Ð*r   c               ó    € V ^8„  d   QhRRRR/# )r$   r>   r[   r%   rZ   r   )r'   s   "r   r(   r(   Õ  s   € ÷ *ñ *˜3ð * ;ñ *r   c                óP   € V \         9  d   \        R V  R24      h\         V ,          # )zMetric table z is not defined)rX   rm   r  s   &r   rù   rù   Õ  s*   € ØÔ+Ô+Ü˜}¨T¨F°/ÐBÓCÐCÜ# DÕ)Ð)r   Úkernel_autotunec          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r$   ræ   r[   rå   r   r   Úlatencyre   r%   r&   r   )r'   s   "r   r(   r(   æ  s4   € ÷ 
ñ 
Øð
Ø#&ð
Ø06ð
ØAFð
à	ñ
r   c                óP   a aaa€ \        R 4      P                  VVV V3R l4       R# )r  c                 ó*   <€ R SRSR\        S 4      RS/# ©ræ   rå   Útriton_configÚ
latency_ms)r[   )r   rå   ræ   r  s   €€€€r   r÷   Ú,log_kernel_autotune_result.<locals>.<lambda>ê  s    ø€ Ø˜;Ø˜;ØœS ›[Ø˜'ñ	
r   N)rù   ru   )ræ   rå   r   r  s   ffffr   Úlog_kernel_autotune_resultr  æ  s   û€ ô Ð&Ó'×/Ñ/÷	
ör   )Úkernel1_pathÚkernel1_latencyÚkernel2_pathÚkernel2_latencyÚfused_kernel_pathÚfused_kernel_latencyÚslow_down_ratio)Úgraph_idÚnum_nodes_before_fusionÚnum_nodes_after_fusion)
Úkernel0_pathr  r  Úkernel3_pathÚkernel0_latencyr  r  Úkernel3_latencyrê   rë   )Úpre_grad_graph_idÚpost_grad_graph_idÚ
node1_nameÚ
node2_nameÚnode1_debug_strÚnode2_debug_strÚcommon_buffer_namesÚfailure_reason)rå   ræ   r¶   rê   rë   rì   rí   rî   rï   rð   rñ   rò   ró   rô   rõ   r  )BÚ__conditional_annotations__Ú
__future__r   r„   r<   r©   r�   r»   r   Ú	functoolsr   Útypingr   Útorch._inductorr   Útorch._inductor.utilsr   Útorch.utils._ordered_setr	   Úcollections.abcr
   Ú%torch._inductor.runtime.triton_compatr   Útorch._inductor.schedulerr   r*   r+   r,   r   r   r   r.   r/   r   r   r0   r1   r2   r   r3   r   r    r!   r4   r6   r@   rB   rX   rZ   rš   r®   r´   r¿   rÄ   rÉ   r×   rÜ   rà   rã   rú   rÿ   rk   r  r  rù   r  )r1  s   @r   Ú<module>r;     s=  øðß "Ð "ã 
Û Û Û 	Û 	Ý !Ý Ý  å "Ý 4Ý /÷ Ý(å<Ý;ð Ð Ø!"Ð ØÐ ð ð ð ó ð 8:€Ð4Ó 9ð Ð ð Ð ð ×Ñ÷!ð !ó ð!ð CEÐ !Ð#?Ó DàÐ Ø,-Ð )àÐ ØÐ �3Ó ð Ð à#$Ð ˜SÓ $Ø+,Ð # SÓ ,Ø !Ð ˜#Ó !õðD ÷3ð 3ó ð3õM÷8ñ 8ð2 46Ð Ð0Ó 5ð ÷9/ð 9/ó ð9/ðx × Ñ Øòôð × Ñ Øòôð × Ñ Øòôð" × Ñ Ø-ò	ôð × Ñ Øòôõ6+õ 3õõõ0õ
õ&õõõ*)õX!õDð ô	ó ð	õ+õ*ð × Ñ Øòô÷
r   