§
    ŠŠtj:  ã                  ó¢  — U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ erd d	lmZ d d
lmZ d dlmZ d ad ad ag aded<   g Zded<   d ad aej         G d„ d¦  «        ¦   «         Z g a!ded<   d a"d a#d a$d a%ded<   d a&d a'ded<   d a(ded<   d a)ded<   dVd„Z*e G d„ d¦  «        ¦   «         Z+dWd„Z, G d „ d!¦  «        Z-i Z.d"ed#<   e G d$„ d%¦  «        ¦   «         Z/e/ 0                    d&g d'¢¦  «         e/ 0                    d(g d)¢¦  «         e/ 0                    d*g d+¢¦  «         e/ 0                    d,g d-¢¦  «         e/ 0                    d.g d/¢¦  «         dXd2„Z1dYd4„Z2dZd7„Z3d[d8„Z4d\d:„Z5dYd;„Z6d]d=„Z7d^d@„Z8d_dB„Z9d`dE„Z:dVdF„Z;dadH„Z<e	dbdJ„¦   «         Z=dcdM„Z>dddN„Z?e/ 0                    dOg dP¢¦  «         dedU„Z@dS )fé    )Ú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                  ó(   — e Zd ZU ded<   dZded<   dS )ÚCppOuterLoopFusedCountÚintÚinner_kernel_numberr   Úlocal_buffer_numberN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   © ó    úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_inductor/metrics.pyr   r   +   s0   € € € € € € àÐÐÑØ ÐÐ Ð Ð Ñ Ð Ð 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_reductionÚreturnÚNonec                 óÐ   — da dadat                               ¦   «          t
                               ¦   «          dadat                               ¦   «          da	da
dadadadadadad S )Nr   )Ú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   Úresetr-   C   sŽ   € ð  ÐØ%&Ð"ØÐÝ×ÒÑÔÐÝ×ÒÑÔÐØÐØÐÝ%×+Ò+Ñ-Ô-Ð-Ø !ÐØ01Ð-ØÐØ ÐØ"#ÐØ*+Ð'Ø ÐØÐÐÐr   c                  óP   — e Zd ZU dZded<   ded<   ded<   ded<   ded<   ded<   d	S )
ÚCachedMetricsDeltasz]
    The subset of metrics we want update across cache hits, e.g., the
    FxGraphCache.
    r   r#   r$   r'   r(   r%   r*   N)r   r   r   Ú__doc__r   r   r   r   r/   r/   e   sf   € € € € € € ðð ð
  ÐÐÑØ'Ð'Ð'Ñ'ØÐÐÑØÐÐÑØÐÐÑØ2Ð2Ð2Ñ2Ð2Ð2r   r/   ú	list[str]c                 óH   — d„ t          j        t          ¦  «        D ¦   «         S )Nc                ó   — g | ]	}|j         ‘Œ
S r   ©Úname)Ú.0Úfields     r   ú
<listcomp>z%get_metric_fields.<locals>.<listcomp>u   s   € ÐLÐLÐL˜5ˆEŒJÐLÐLÐLr   )ÚdataclassesÚfieldsr/   r   r   r   Úget_metric_fieldsr;   t   s"   € ØLÐL¥KÔ$6Õ7JÑ$KÔ$KÐLÑLÔLÐLr   c                  ó:   — e Zd ZdZd
d„Zdd„Zedd„¦   «         Zd	S )Ú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.
    r    r!   c                ón   — i | _         t          ¦   «         D ]}t          ¦   «         |         | j         |<   Œd S ©N)Úcached_metricsr;   Úglobals)ÚselfÚmetrics     r   Ú__init__zCachedMetricsHelper.__init__   sB   € Ø ˆÔÝ'Ñ)Ô)ð 	<ð 	<ˆFÝ*1©)¬)°FÔ*;ˆDÔ Ñ'Ð'ð	<ð 	<r   r/   c                óŠ   — i }t          ¦   «         D ]'}t          ¦   «         |         | j        |         z
  ||<   Œ(t          di |¤ŽS )Nr   )r;   rA   r@   r/   )rB   Údelta_metricsrC   s      r   Ú
get_deltaszCachedMetricsHelper.get_deltas„   sU   € ØˆÝ'Ñ)Ô)ð 	Tð 	TˆFÝ$+¡I¤I¨fÔ$5¸Ô8KÈFÔ8SÑ$SˆM˜&Ñ!Ð!å"Ð3Ð3 ]Ð3Ð3Ð3r   Údeltac                ó|   — t          ¦   «         D ],}t          ¦   «         |xx         t          | |¦  «        z  cc<   Œ-d S r?   )r;   rA   Úgetattr)rH   rC   s     r   Úapply_deltasz CachedMetricsHelper.apply_deltas‹   sN   € å'Ñ)Ô)ð 	8ð 	8ˆFÝ‰IŒI�fÐÐÔ¥¨°Ñ!7Ô!7Ñ7ÐÐÑÐð	8ð 	8r   N©r    r!   )r    r/   )rH   r/   r    r!   )r   r   r   r0   rD   rG   ÚstaticmethodrK   r   r   r   r=   r=   x   sf   € € € € € ðð ð<ð <ð <ð <ð
4ð 4ð 4ð 4ð ð8ð 8ð 8ñ „\ð8ð 8ð 8r   r=   zdict[str, MetricTable]ÚREGISTERED_METRIC_TABLESc                  ój   — e Zd ZU ded<   ded<   dZded<   dd„Zdd„Zdd„Zdd„Ze	dd„¦   «         Z
dS )ÚMetricTableÚstrÚ
table_namer1   Úcolumn_namesr   r   Únum_rows_addedÚrow_fnú+Callable[[], dict[str, str | float | None]]r    r!   c                óˆ  ‡— | j         t          ¦   «         vrd S  |¦   «         Št          | j        ¦  «        t          ‰¦  «        k    s.J t          | j        ¦  «        › dt          ‰¦  «        › �¦   «         ‚t	          | j        ¦  «        t	          ‰                     ¦   «         ¦  «        k    s@J t	          | j        ¦  «        › dt	          ‰                     ¦   «         ¦  «        › �¦   «         ‚t          ¦   «         }|gˆfd„| j        D ¦   «         z   }t          d„ |D ¦   «         ¦  «        sJ ‚|                      |¦  «         d S )Nz v.s. c                ó    •— g | ]
}‰|         ‘ŒS r   r   )r6   Úcolumn_nameÚrow_dicts     €r   r8   z'MetricTable.add_row.<locals>.<listcomp>©   s   ø€ ÐQÐQÐQ°�h˜{Ô+ÐQÐQÐQr   c           	   3  ój   K  — | ].}t          |t          t          t          d ¦  «        f¦  «        V — Œ/d S r?   )Ú
isinstancerQ   ÚfloatÚtype)r6   Úis     r   ú	<genexpr>z&MetricTable.add_row.<locals>.<genexpr>ª   s9   è è € ÐHÐH¸q•:˜a¥#¥u­d°4©j¬jÐ!9Ñ:Ô:ÐHÐHÐHÐHÐHÐHr   )	rR   Úenabled_metric_tablesÚlenrS   r	   Úkeysr   ÚallÚ
_write_row)rB   rU   ÚbnÚrowrZ   s       @r   Úadd_rowzMetricTable.add_row›   sB  ø€ ØŒ?Õ"7Ñ"9Ô"9Ð9Ð9ØˆFà�6‘8”8ˆÝ�4Ô$Ñ%Ô%­¨X©¬Ò6Ð6Ð6Ý�4Ô$Ñ%Ô%Ð<Ð<­S°©]¬]Ð<Ð<ñ 7Ô6Ð6õ ˜$Ô+Ñ,Ô,µ
¸8¿=º=¹?¼?Ñ0KÔ0KÒKÐKÐKÝ˜$Ô+Ñ,Ô,ÐQÐQµJ¸x¿}º}¹¼Ñ4OÔ4OÐQÐQñ LÔKÐKõ  Ñ!Ô!ˆàˆdÐQÐQÐQÐQ¸tÔ?PÐQÑQÔQÑQˆÝÐHÐHÀCÐHÑHÔHÑHÔHÐHÐHÐHØ�Š˜ÑÔÐÐÐr   c                ó   — d| j         › d�S )NÚmetric_table_z.csv)rR   )rB   s    r   Úoutput_filenamezMetricTable.output_filename­   s   € Ø4˜tœÐ4Ð4Ð4Ð4r   c                óè   — |                       ¦   «         }t          |d¦  «        5 }t          j        |d¬¦  «        }|                     dg| j        z   ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚwú
©ÚlineterminatorÚ
model_name)rk   ÚopenÚcsvÚwriterÚwriterowrS   )rB   ÚfilenameÚfdrt   s       r   Úwrite_headerzMetricTable.write_header°   sÇ   € Ø×'Ò'Ñ)Ô)ˆÝ�(˜CÑ Ô ð 	@ BÝ”Z °4Ð8Ñ8Ô8ˆFØ�OŠO˜\˜N¨TÔ->Ñ>Ñ?Ô?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@s   ¥5A'Á'A+Á.A+rg   úlist[str | float | None]c                óè  — |                       ¦   «         }| j        dk    r3t          j                             |¦  «        s|                      ¦   «          | xj        dz  c_        t          |¦  «        D ]+\  }}t          |t          ¦  «        r|d›}n|€d}n|}|||<   Œ,t          |d¦  «        5 }t          j        |d¬¦  «        }|                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   é   z.6fÚ Úarn   ro   )rk   rT   ÚosÚpathÚexistsrx   Ú	enumerater\   r]   rr   rs   rt   ru   )rB   rg   rv   ÚidxÚorig_valÚnew_valrw   rt   s           r   re   zMetricTable._write_row¶   sF  € Ø×'Ò'Ñ)Ô)ˆØÔ !Ò#Ð#­B¬G¯NªN¸8Ñ,DÔ,DÐ#Ø×ÒÑÔÐàÐÔ˜qÑ ÐÔå& s™^œ^ð 	ð 	‰MˆC�Ý˜(¥EÑ*Ô*ð #Ø%Ð+Ð+��ØÐ!Ø��à"�ØˆC�‰HˆHå�(˜CÑ Ô ð 	! BÝ”Z °4Ð8Ñ8Ô8ˆFØ�OŠO˜CÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s   Â.,C'Ã'C+Ã.C+r5   c                ó:   — t          | |¦  «        }|t          | <   d S r?   )rP   rN   )r5   rS   Útables      r   Úregister_tablezMetricTable.register_tableÊ   s"   € å˜D ,Ñ/Ô/ˆØ).Õ  Ñ&Ð&Ð&r   N)rU   rV   r    r!   )r    rQ   rL   )rg   ry   r    r!   )r5   rQ   rS   r1   r    r!   )r   r   r   r   rT   rh   rk   rx   re   rM   r‡   r   r   r   rP   rP   ”   s°   € € € € € € à€O€O�OØÐÐÑà€NÐÐÐÑðð ð ð ð$5ð 5ð 5ð 5ð@ð @ð @ð @ð!ð !ð !ð !ð( ð/ð /ð /ñ „\ð/ð /ð /r   rP   Úslow_fusion)Úkernel1_pathÚkernel1_latencyÚkernel2_pathÚkernel2_latencyÚfused_kernel_pathÚfused_kernel_latencyÚslow_down_ratioÚgraph_stats)Úgraph_idÚnum_nodes_before_fusionÚnum_nodes_after_fusionÚpersistent_red_perf)
Úkernel0_pathr‰   r‹   Úkernel3_pathÚkernel0_latencyrŠ   rŒ   Úkernel3_latencyÚ
size_hintsÚreduction_hintÚ'fusion_failure_due_to_indexing_mismatch)Úpre_grad_graph_idÚpost_grad_graph_idÚ
node1_nameÚ
node2_nameÚnode1_debug_strÚnode2_debug_strÚcommon_buffer_namesÚfailure_reasonÚkernel_metadata©Úkernel_nameÚkernel_pathÚkernel_categoryr™   rš   Úline_of_codeÚnum_loadÚ	num_storeÚnum_for_loopÚnum_atomic_addÚnum_argsÚxnumelÚynumelÚrnumelÚkernel_args_num_gbÚkernel_module_coderQ   c                ó–   — ddl m} ddlm} |                     | ¦  «        } ||¦  «        }t          j        |j        j        ¦  «        S )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
    r{   )ÚPyCodeCache)Úget_triton_kernel)Ú	codecacherµ   Úwrapper_benchmarkr¶   ÚloadÚinspectÚ	getsourceÚfn)r³   rµ   r¶   ÚmodÚkernels        r   Ú_parse_kernel_fn_coder¿   $  sc   € ð 'Ð&Ð&Ð&Ð&Ð&Ø4Ð4Ð4Ð4Ð4Ð4à
×
Ò
Ð-Ñ
.Ô
.€CØÐ˜sÑ#Ô#€Fõ Ô˜VœYœ\Ñ*Ô*Ð*r   Úproper_kernel_fn_codec                óD   — t          |                      ¦   «         ¦  «        S )zJ
    Return the line of code for the kernel excluding the decorators.
    )rb   Ú
splitlines)rÀ   s    r   Ú_parse_kernel_line_of_coderÃ   4  s   € õ Ð$×/Ò/Ñ1Ô1Ñ2Ô2Ð2r   r¨   ú
str | Nonec                ó~   — |dk    rd S t          j        d| ¦  «        }|s
J d¦   «         ‚|                     d¦  «        S )NÚforeachzsize_hints=(\[[0-9, ]*\]),zsize_hints missing!r{   ©ÚreÚsearchÚgroup)r³   r¨   Úms      r   Ú_parse_size_hintsrÌ   ;  sI   € Ø˜)Ò#Ð#àˆtÝ
Œ	Ð/Ð1CÑDÔD€AØÐ#Ð#Ð#Ñ#Ô#ˆ1Ø�7Š7�1‰:Œ:Ðr   c                óz   — | dvrd S t          j        d|¦  «        }|s
J d¦   «         ‚|                     d¦  «        S )N)Ú	reductionÚpersistent_reductionz$reduction_hint=ReductionHint\.(\w*),z/reduction_hint not found in kernel source code!r{   rÇ   )r¨   r³   rË   s      r   Ú_parse_reduction_hintrÐ   D  sJ   € ØÐCÐCÐCØˆtÝ
Œ	Ð9Ð;MÑNÔN€AØÐ?Ð?Ð?Ñ?Ô?ˆ1Ø�7Š7�1‰:Œ:Ðr   Úpatternc                ó,   — |                       |¦  «        S r?   )Úcount)rÀ   rÑ   s     r   Ú_count_patternrÔ   L  s   € Ø ×&Ò& wÑ/Ô/Ð/r   c                ó  — |                       ¦   «         d         }|                     d¦  «        sJ ‚|                     d¦  «        }|                     d¦  «        }||dz   |…         }|                     d¦  «        }t	          |¦  «        S )Nr   údef ú(z):r{   ú,)rÂ   Ú
startswithÚindexÚsplitrb   )rÀ   Údef_lineÚ	start_idxÚend_idxÚdecl_csvÚcompss         r   Ú_count_argsrá   P  s„   € Ø$×/Ò/Ñ1Ô1°!Ô4€HØ×Ò˜vÑ&Ô&Ð&Ð&Ð&Ø—’˜sÑ#Ô#€IØ�nŠn˜TÑ"Ô"€GØ˜	 A™¨Ð/Ô0€HØ�NŠN˜3ÑÔ€EÝˆu‰:Œ:Ðr   Úkernel_fn_codec                ó@   — |                       d¦  «        }| |d…         S )z
    Skip decorators.
    rÖ   N)rÚ   )râ   Ú	start_poss     r   Ú_parse_proper_kernel_fn_coderå   Z  s&   € ð ×$Ò$ VÑ,Ô,€IØ˜)˜*˜*Ô%Ð%r   Únumel_arg_nameú
int | Nonec                ó~   — t          j        |› d�| ¦  «        }|r"t          |                     d¦  «        ¦  «        S d S )Nz
 = ([\d]+)r{   )rÈ   rÉ   r   rÊ   )rÀ   ræ   rË   s      r   Ú_parse_numelré   b  s@   € Ý
Œ	�^Ð0Ð0Ð0Ð2GÑHÔH€AØð Ý�1—7’7˜1‘:”:‰ŒÐàˆtr   úfloat | Nonec                óz   — t          j        d| ¦  «        }|r"t          |                     d¦  «        ¦  «        S 	 dS )z�
    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.]+)r{   N)rÈ   rÉ   r]   rÊ   )râ   r¨   rË   s      r   Ú_parse_kernel_args_num_gbrì   j  sB   € õ 	Œ	Ð1°>ÑBÔB€AØð 
Ý�Q—W’W˜Q‘Z”ZÑ Ô Ð ð	ð ˆtr   r¦   r§   c           
     ó*  ‡ ‡‡‡‡‡‡‡	— ddl m}  ||¦  «        Št          ‰|¦  «        Št          |‰¦  «        Š	t	          |¦  «        Št          ‰¦  «        Št          ‰¦  «        Št          d¦  «                             ˆˆˆˆ ˆˆˆˆ	fd„¦  «         dS )zå
    An 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.
    r{   )Ú"get_kernel_category_by_source_coder¤   c                 ó"  •— ‰‰‰ ‰‰‰t          ‰d¦  «        t          ‰d¦  «        t          ‰d¦  «        t          ‰d¦  «        t          ‰¦  «        t          ‰d¦  «        t          ‰d¦  «        t          ‰d¦  «        t          ‰‰ ¦  «        dœS )	Nztl.loadztl.storezfor ztl.atomic_addr¯   r°   r±   r¥   )rÔ   rá   ré   rì   )r¨   râ   Úkernel_line_of_coder¦   r§   rÀ   rš   r™   s   €€€€€€€€r   ú<lambda>z%log_kernel_metadata.<locals>.<lambda>•  s¡   ø€ Ø&Ø&Ø.Ø$Ø,Ø/Ý&Ð'<¸iÑHÔHÝ'Ð(=¸zÑJÔJÝ*Ð+@À&ÑIÔIÝ,Ð-BÀOÑTÔTÝ#Ð$9Ñ:Ô:Ý"Ð#8¸(ÑCÔCÝ"Ð#8¸(ÑCÔCÝ"Ð#8¸(ÑCÔCÝ";Ø ñ#ô #ð
ð 
€ r   N)	r¸   rî   rÐ   rÌ   r¿   rå   rÃ   Úget_metric_tablerh   )
r¦   r§   r³   rî   r¨   râ   rð   rÀ   rš   r™   s
   ``  @@@@@@r   Úlog_kernel_metadataró     sß   øøøøøøøø€ ð FÐEÐEÐEÐEÐEà8Ð8Ð9KÑLÔL€OÝ*¨?Ð<NÑOÔO€NÝ"Ð#5°ÑGÔG€JÝ*Ð+=Ñ>Ô>€Nå8¸ÑHÔHÐõ 5Ð5JÑKÔKÐåÐ&Ñ'Ô'×/Ò/ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r   c                 ó  — t                                ¦   «         D ]p\  } }| t          ¦   «         v r[|                     ¦   «         }t          j                             |¦  «        rt	          j        |¦  «         |                     ¦   «          ŒqdS )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)	rN   Úitemsra   rk   r~   r   r€   Úunlinkrx   )r5   r†   rv   s      r   Úpurge_old_log_filesr÷   «  s‰   € õ 0×5Ò5Ñ7Ô7ð !ð !‰ˆˆeØÕ(Ñ*Ô*Ð*Ð*Ø×,Ò,Ñ.Ô.ˆHÝŒw�~Š~˜hÑ'Ô'ð $Ý”	˜(Ñ#Ô#Ð#à×ÒÑ Ô Ð øð!ð !r   úOrderedSet[str]c                 ó4   — t          t          j        ¦  «        S r?   )Úenabled_metric_tables_implr   ra   r   r   r   ra   ra   º  s   € Ý%¥fÔ&BÑCÔCÐCr   Ú
config_strc                óØ   — t          ¦   «         }|                      d¦  «        D ]E}|                     ¦   «         }|sŒ|t          v sJ d|› d�¦   «         ‚|                     |¦  «         ŒF|S )NrØ   zMetric table name z is not registered)r	   rÛ   ÚstriprN   Úadd)rû   Úenabledr5   s      r   rú   rú   ¾  s„   € å)™|œ|€GØ× Ò  Ñ%Ô%ð ð ˆØ�zŠz‰|Œ|ˆØð 	ØØÕ/Ð/Ð/Ð/Ø9 Ð9Ð9Ð9ñ 0Ô/Ð/ð 	�Š�DÑÔÐÐØ€Nr   r5   Úboolc                ó"   — | t          ¦   «         v S r?   )ra   r4   s    r   Úis_metric_table_enabledr  Ì  s   € ØÕ(Ñ*Ô*Ð*Ð*r   c                óJ   — | t           v sJ d| › d�¦   «         ‚t           |          S )NzMetric table z is not defined)rN   r4   s    r   rò   rò   Ð  s3   € ØÕ+Ð+Ð+Ð+Ð-R¸TÐ-RÐ-RÐ-RÑ+Ô+Ð+Ý# DÔ)Ð)r   Úkernel_autotune©r§   r¦   Útriton_configÚ
latency_msr   r   Úlatencyr]   c                ó^   ‡ ‡‡‡— t          d¦  «                             ˆˆˆ ˆfd„¦  «         d S )Nr  c                 ó,   •— ‰‰t          ‰ ¦  «        ‰dœS )Nr  )rQ   )r   r¦   r§   r  s   €€€€r   rñ   z,log_kernel_autotune_result.<locals>.<lambda>ä  s!   ø€ Ø&Ø&Ý  ™[œ[Ø!ð	
ð 
€ r   )rò   rh   )r§   r¦   r   r  s   ````r   Úlog_kernel_autotune_resultr  à  sV   øøøø€ õ Ð&Ñ'Ô'×/Ò/ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r   rL   )r    r1   )r³   rQ   r    rQ   )rÀ   rQ   r    r   )r³   rQ   r¨   rQ   r    rÄ   )r¨   rQ   r³   rQ   r    rÄ   )rÀ   rQ   rÑ   rQ   r    r   )râ   rQ   r    rQ   )rÀ   rQ   ræ   rQ   r    rç   )râ   rQ   r¨   rQ   r    rê   )r¦   rQ   r§   rQ   r³   rQ   r    r!   )r    rø   )rû   rQ   r    rø   )r5   rQ   r    r   )r5   rQ   r    rP   )
r§   rQ   r¦   rQ   r   r   r  r]   r    r!   )AÚ
__future__r   rs   r9   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   r)   r*   r+   r   r,   r   r   r   r-   r/   r;   r=   rN   rP   r‡   r¿   rÃ   rÌ   rÐ   rÔ   rá   rå   ré   rì   ró   r÷   ra   rú   r  rò   r  r   r   r   ú<module>r     s0  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à "Ð "Ð "Ð "Ð "Ð "Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø /Ð /Ð /Ð /Ð /Ð /ð ð <Ø(Ð(Ð(Ð(Ð(Ð(à<Ð<Ð<Ð<Ð<Ð<Ø;Ð;Ð;Ð;Ð;Ð;ð Ð Ø!"Ð ØÐ ð ð ð ð ð ñ ð 8:€Ð 9Ð 9Ð 9Ñ 9ð Ð ð Ð ð Ôð!ð !ð !ð !ð !ñ !ô !ñ Ôð!ð CEÐ !Ð DÐ DÐ DÑ DàÐ Ø,-Ð )àÐ ØÐ Ð Ð Ð Ñ ð Ð à#$Ð Ð $Ð $Ð $Ñ $Ø+,Ð #Ð ,Ð ,Ð ,Ñ ,Ø !Ð Ð !Ð !Ð !Ñ !ðð ð ð ðD ð3ð 3ð 3ð 3ð 3ñ 3ô 3ñ „ð3ðMð Mð Mð Mð8ð 8ð 8ð 8ð 8ñ 8ô 8ð 8ð2 46Ð Ð 5Ð 5Ð 5Ñ 5ð ð8/ð 8/ð 8/ð 8/ð 8/ñ 8/ô 8/ñ „ð8/ðv × Ò Øðð ð ñô ð ð × Ò Øðð ð ñô ð ð × Ò Øðð ð ñô ð ð" × Ò Ø-ð	ð 	ð 	ñô ð ð × Ò Øðð ð ñô ð ð6+ð +ð +ð +ð 3ð 3ð 3ð 3ðð ð ð ðð ð ð ð0ð 0ð 0ð 0ðð ð ð ð&ð &ð &ð &ðð ð ð ðð ð ð ð*)ð )ð )ð )ðX!ð !ð !ð !ðDð Dð Dð Dð ð
ð 
ð 
ñ „ð
ð+ð +ð +ð +ð*ð *ð *ð *ð
 × Ò Øðð ð ñô ð ð
ð 
ð 
ð 
ð 
ð 
r   