§
    ÎÐjî  ã                  óÀ   — 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 dZ edd	¬
¦  «        Z G d„ d¦  «        Zed„ ¦   «         Zd„ Zd„ Zdd„Zdd„Zdd„Zd	S )é    )Úannotations)ÚAny)Úcontextmanager)Ú
ContextVar©Úwraps)Úperf_counterÚ _wangp_triton_compilation_loggerÚwangp_triton_tuningN)Údefaultc                  ó"   — e Zd Zd„ Zd„ Zdd„ZdS )Ú_CompilationGroupc                ó"   — i | _         d | _        d S ©N)ÚstartedÚwinner)Úselfs    úMC:\Users\johnn\OneDrive\Documents\AI\shared\kernels\triton_compilation_log.pyÚ__init__z_CompilationGroup.__init__   s   € ØˆŒØˆŒˆˆó    c                ór   — || j         vr-t          ¦   «         | j         |<   t          d|› d�d¬¦  «         d S d S )Nú[WanGP][Triton] Preparing z' (compiling and tuning, please wait)...T©Úflush)r   r	   Úprint)r   Únames     r   Ústartz_CompilationGroup.start   sM   € Ø�t”|Ð#Ð#Ý!-¡¤ˆDŒL˜ÑÝÐ\¨tÐ\Ð\Ð\ÐdhÐiÑiÔiÐiÐiÐið $Ð#r   Fc           
     óà   — | j                              ¦   «         D ]S\  }}t          ¦   «         |z
  }|rt          d|› d|d›d�d¬¦  «         Œ2t          d|› d|d›d	| j        › d
�d¬¦  «         ŒTd S )Nz.[WanGP][Triton] Compilation/tuning failed for z after z.2fz s.Tr   ú[WanGP][Triton] Compiled ú in z s; winner: ú.)r   Úitemsr	   r   r   )r   Úfailedr   r   Úelapseds        r   Úfinishz_CompilationGroup.finish   s±   € Ø!œ\×/Ò/Ñ1Ô1ð 	qð 	q‰MˆD�'Ý"‘n”n wÑ.ˆGØð qÝÐdÀtÐdÐdÐT[ÐdÐdÐdÐdÐlpÐqÑqÔqÐqÐqåÐc°$ÐcÐc¸GÐcÐcÐcÐUYÔU`ÐcÐcÐcÐkoÐpÑpÔpÐpÐpð	qð 	qr   N)F)Ú__name__Ú
__module__Ú__qualname__r   r   r%   © r   r   r   r      sO   € € € € € ðð ð ðjð jð jð
qð qð qð qð qð qr   r   c               #  óL  K  — t          ¦   «         } t                               | ¦  «        }	 | V — |                      ¦   «          n%# t          $ r |                      d¬¦  «         ‚ w xY w	 t                               |¦  «         dS # t                               |¦  «         w xY w)zCGroup candidate compilations; a fully cached search remains silent.T)r#   N)r   Ú_TUNINGÚsetr%   ÚBaseExceptionÚreset)ÚgroupÚtokens     r   Úcompilation_tuningr1   "   s¬   è è € õ ÑÔ€EÝ�KŠK˜ÑÔ€EðØˆˆˆð
 	�Š‰Œˆˆøõ	 ð ð ð Ø�Š˜DˆÑ!Ô!Ð!Øðøøøð 	å�Š�eÑÔÐÐÐø��Š�eÑÔÐÐøøøs   ¬A °B Á"A'Á'B ÂB#c                ó<   ‡ — t          ‰ ¦  «        ˆ fd„¦   «         }|S )zEWrap a custom tuning search which returns its selected configuration.c                 óv   •— t          ¦   «         5 } ‰| i |¤Ž}||_        |cd d d ¦  «         S # 1 swxY w Y   d S r   )r1   r   )ÚargsÚkwargsr/   ÚresultÚfunctions       €r   Úwrappedz'log_compilation_tuning.<locals>.wrapped4   sŽ   ø€ åÑ!Ô!ð 	 UØ�X˜tÐ. vÐ.Ð.ˆFØ!ˆEŒLØð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   �.®2µ2r   )r7   r8   s   ` r   Úlog_compilation_tuningr9   2   s3   ø€ å
ˆ8�_„_ðð ð ð ñ „_ðð
 €Nr   c           	     ó   ‡— t          t          t          | dd ¦  «        dd ¦  «        dd ¦  «        }|�t          |j        t          d¦  «        rd S |j        Št          ‰¦  «        ˆfd„¦   «         }t	          |t          d¦  «         ||_        d S )NÚruntimeÚ	autotunerÚ	AutotunerFc                óˆ   •— t          ¦   «         5 } ‰| g|¢R i |¤Ž}| j        |_        |cd d d ¦  «         S # 1 swxY w Y   d S r   )r1   Úbest_configr   )r   r4   r5   r/   r6   Úoriginals        €r   Úrunz%_install_autotune_logger.<locals>.runC   sœ   ø€ åÑ!Ô!ð 	 UØ�X˜dÐ4 TÐ4Ð4Ð4¨VÐ4Ð4ˆFØÔ+ˆEŒLØð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   �7·;¾;T)ÚgetattrrA   Ú_LOGGER_MARKERr   Úsetattr)Útritonr<   rA   r@   s      @r   Ú_install_autotune_loggerrF   =   s›   ø€ Ý�¥¨°	¸4Ñ @Ô @À+ÈtÑTÔTÐVaÐcgÑhÔh€IØÐ�G I¤Mµ>À5ÑIÔIÐØˆØŒ}€Hå
ˆ8�_„_ðð ð ð ñ „_ðõ ˆC• Ñ&Ô&Ð&Ø€I„M€M€Mr   Útimesr   ÚreturnÚfloatc                óà   — t          | dd¦  «        }t          t          | dd¦  «        ¦  «        t          t          | dd¦  «        ¦  «        z   }|t          d„ |D ¦   «         ¦  «        z  }|dz  S )NÚlowering_stagesr)   Úir_initializationr   Ústore_resultsc              3  ó:   K  — | ]\  }}t          |¦  «        V — Œd S r   )Úint)Ú.0Ú_stageÚdurations      r   ú	<genexpr>z'_compile_duration_ms.<locals>.<genexpr>Q   s-   è è € ÐJÐJÑ&6 f¨h•C˜‘M”MÐJÐJÐJÐJÐJÐJr   g     @�@)rB   rO   Úsum)rG   rK   Útotal_uss      r   Ú_compile_duration_msrV   N   su   € Ý˜eÐ%6¸Ñ;Ô;€OÝ•7˜5Ð"5°qÑ9Ô9Ñ:Ô:½SÅÈÐP_ÐabÑAcÔAcÑ=dÔ=dÑd€HØ•ÐJÐJ¸/ÐJÑJÔJÑJÔJÑJ€HØ�fÑÐr   ÚsourceÚstrc                ó   — g }t          | d¦  «        �r't                               d„ | j                             ¦   «         D ¦   «         ¦  «        }|r(|                     d                     |¦  «        ¦  «         t          | j        j	        ¦  «        D ]¨\  }}| 
                    ¦   «         dv s'| 
                    ¦   «                              d¦  «        rf| j                             |fd¦  «        }t          |t          ¦  «        rt          |t           ¦  «        r|dk    r|                     |› d|› �¦  «         Œ©d                     |¦  «        S )	NÚfnc              3  ó”   K  — | ]C}t          |t          ¦  «        ¯|                     d ¦  «        ¯,|                     d ¦  «        V — ŒDdS )Ú*N)Ú
isinstancerX   Ú
startswithÚlstrip)rP   Úvalues     r   rS   z#_compile_variant.<locals>.<genexpr>X   s‡   è è € ð  Mð  M°UÕ[eÐfkÕmpÑ[qÔ[qð  MÐv{÷  wGò  wGð  HKñ  wLô  wLð  M˜uŸ|š|¨CÑ0Ô0ð  Mð  Mð  Mð  Mð  Mð  Mr   ú/>   ÚBÚCÚDÚHÚKÚMÚNÚTÚWÚBDÚBKÚBMÚBNÚBTÚBWÚSX0ÚBLOCK_Údynamicú=ú )ÚhasattrÚdictÚfromkeysÚ	signatureÚvaluesÚappendÚjoinÚ	enumeraterZ   Ú	arg_namesÚupperr^   Ú	constantsÚgetr]   rO   Úbool)rW   ÚpartsÚdtypesÚindexr   r`   s         r   Ú_compile_variantr†   U   su  € Ø€EÝˆv�tÑÔñ 4Ý—’ð  Mð  M¸fÔ>N×>UÒ>UÑ>WÔ>Wð  Mñ  Mô  Mñ  Mô  MˆØð 	+Ø�LŠL˜Ÿš &Ñ)Ô)Ñ*Ô*Ð*Ý$ V¤YÔ%8Ñ9Ô9ð 	4ð 	4‰KˆE�4Ø�zŠz‰|Œ|ÐwÐwÐwÐ{÷  |Fò  |Fñ  |Hô  |H÷  |Sò  |Sð  T\ñ  |]ô  |]ÐwØÔ(×,Ò,¨e¨X°yÑAÔA�Ý˜e¥SÑ)Ô)ð 4µ*¸UÅDÑ2IÔ2Ið 4ÈUÐV_ÒM_ÐM_Ø—L’L DÐ!2Ð!2¨5Ð!2Ð!2Ñ3Ô3Ð3øØ�8Š8�E‰?Œ?Ðr   r‚   c                 ó&  ‡‡‡— 	 dd l } n# t          $ r Y dS w xY wt          | dd ¦  «        }t          |dd ¦  «        Št          t          | dd ¦  «        dd ¦  «        }‰�"|� t          ‰d¦  «        rt          |d¦  «        sdS ‰j        Št          | ¦  «         t          ‰t          d¦  «        s"ˆfd„}t          |t          d	¦  «         |‰_        |j        Št          ‰t          d¦  «        s#ˆˆfd
„}t          |t          d	¦  «         ||_        d	S )Nr   FÚknobsÚcompilationÚcompilerÚlistenerÚget_cache_managerc            
     ót  •‡	— ‰
� ‰
di | ¤Ž |                       d¦  «        }t          t          |dd¦  «        pt          |¦  «        j        ¦  «        }|                       dd¦  «        rd S t
                                ¦   «         }|�|                     |¦  «         d S t          |                       d¦  «        ¦  «        }t          |¦  «        }|rd|› d�nd}|                       d	¦  «        pi Š	d
 	                    ˆ	fd„dD ¦   «         ¦  «        }|rd|› �nd}t          d|› |› d|d›d|› d�d¬¦  «         d S )NÚsrcr   Ú Ú	cache_hitTrG   z [ú]Úmetadataru   c              3  ó:   •K  — | ]}|‰v ¯|› d ‰|         › �V — ŒdS )rt   Nr)   )rP   Úkeyr’   s     €r   rS   zFinstall_triton_compilation_logger.<locals>.listener.<locals>.<genexpr>�   sA   øè è € ÐqÐq¸3ÐadÐhpÐapÐap Ð6Ð6 x°¤}Ð6Ð6ÐapÐapÐapÐapÐqÐqr   )Ú	num_warpsÚ
num_stagesz; configuration: r   r    z.0fz msr!   r   r)   )r�   rX   rB   Útyper&   r+   r   rV   r†   r|   r   )ÚeventrW   Úkernel_namer/   Úduration_msÚvariantÚdetailsÚlaunchÚselectedr’   Úprevious_listeners            @€r   r‹   z3install_triton_compilation_logger.<locals>.listenerr   sn  øø€ Ø Ð,Ø!Ð!Ð*Ð* EÐ*Ð*Ð*Ø—Y’Y˜uÑ%Ô%ˆFÝ�g f¨f°bÑ9Ô9ÐR½TÀ&¹\¼\Ô=RÑSÔSˆKØ�yŠy˜ dÑ+Ô+ð Ø�Ý—K’K‘M”MˆEØÐ Ø—’˜KÑ(Ô(Ð(Ø�Ý.¨u¯yªy¸Ñ/AÔ/AÑBÔBˆKÝ& vÑ.Ô.ˆGØ)0Ð8�o˜7�o�o�o�o°bˆGØ—y’y Ñ,Ô,Ð2°ˆHØ—X’XÐqÐqÐqÐqÐB]ÐqÑqÔqÑqÔqˆFØ7=ÐEÐ3¨6Ð3Ð3Ð3À2ˆHÝÐg¨kÐg¸7ÐgÐgÈÐgÐgÐgÐ\dÐgÐgÐgÐosÐtÑtÔtÐtÐtÐtr   Tc                óP   •‡—  ‰| ¦  «        Š G ˆˆfd„d¦  «        } |¦   «         S )Nc                  ó&   •— e Zd Zˆ fd„Zˆ ˆfd„ZdS )ú]install_triton_compilation_logger.<locals>.get_cache_manager.<locals>.CompilationCacheManagerc                ó$   •— t          ‰|¦  «        S r   )rB   )r   r   Úcache_managers     €r   Ú__getattr__ziinstall_triton_compilation_logger.<locals>.get_cache_manager.<locals>.CompilationCacheManager.__getattr__Ž   s   ø€ Ý" =°$Ñ7Ô7Ð7r   c                óD  •— ‰                      |¦  «        }|                     d¦  «        rt‰j        s|r|                     |¦  «        €Vt                               ¦   «         }|�|                     |d d…         ¦  «         nt          d|d d…         › d�d¬¦  «         |S )Nz.jsonéûÿÿÿr   z (compiling, please wait)...Tr   )Ú	get_groupÚendswithÚalways_compiler�   r+   r   r   )r   Úfilenamer/   Útuningr¤   r‰   s       €€r   r¨   zginstall_triton_compilation_logger.<locals>.get_cache_manager.<locals>.CompilationCacheManager.get_group‘   s³   ø€ Ø)×3Ò3°HÑ=Ô=�EØ×(Ò(¨Ñ1Ô1ð x°{Ô7Qð xÐY^ð xÐbg×bkÒbkÐltÑbuÔbuÐb}Ý!(§¢¡¤˜Ø!Ð-Ø"ŸLšL¨°#°2°#¬Ñ7Ô7Ð7Ð7å!Ð"j¸xÈÈÈ¼}Ð"jÐ"jÐ"jÐrvÐwÑwÔwÐwØ �Lr   N)r&   r'   r(   r¥   r¨   )r¤   r‰   s   €€r   ÚCompilationCacheManagerr¢   �   sL   ø€ € € € € ð8ð 8ð 8ð 8ð 8ð!ð !ð !ð !ð !ð !ð !ð !r   r­   r)   )r”   r­   r¤   r‰   Úprevious_get_cache_managers     @€€r   rŒ   z<install_triton_compilation_logger.<locals>.get_cache_managerŠ   s\   øø€ Ø6Ð6°sÑ;Ô;ˆMð!ð !ð !ð !ð !ð !ð !ð !ñ !ô !ð !ð +Ð*Ñ,Ô,Ð,r   )	rE   Ú	ExceptionrB   rv   r‹   rF   rC   rD   rŒ   )rE   rˆ   rŠ   r‹   rŒ   r‰   r®   rŸ   s        @@@r   Ú!install_triton_compilation_loggerr°   c   sy  øøø€ ðØˆˆˆˆøÝð ð ð Øˆuˆuðøøøõ �F˜G TÑ*Ô*€EÝ˜% °Ñ5Ô5€KÝ•w˜v z°4Ñ8Ô8¸*ÀdÑKÔK€HØÐ˜hÐ.µg¸kÈ:Ñ6VÔ6VÐ.Õ^eÐfnð  qDñ  _Eô  _EÐ.Øˆuà#Ô,ÐÝ˜VÑ$Ô$Ð$ÝÐ$¥n°eÑ<Ô<ð (ð	uð 	uð 	uð 	uð 	uõ& 	��.¨$Ñ/Ô/Ð/Ø'ˆÔà!)Ô!;ÐÝÐ-­~¸uÑEÔEð 7ð	-ð 	-ð 	-ð 	-ð 	-ð 	-õ& 	Ð!¥>°4Ñ8Ô8Ð8Ø%6ˆÔ"Øˆ4s   …
 Š
—)rG   r   rH   rI   )rW   r   rH   rX   )rH   r‚   )Ú
__future__r   Útypingr   Ú
contextlibr   Úcontextvarsr   Ú	functoolsr   Útimer	   rC   r+   r   r1   r9   rF   rV   r†   r°   r)   r   r   ú<module>r·      s<  ðà "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð 4€Ø
ˆ*Ð*°DÐ
9Ñ
9Ô
9€ðqð qð qð qð qñ qô qð qð& ðð ñ „ððð ð ðð ð ð"ð ð ð ðð ð ð ð<ð <ð <ð <ð <ð <r   