§
    ž²Åj@h  ã                  óB  — 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Zd dlZd dl	Z	d dl
mZ d dlmZmZmZmZmZmZ d dlmZ d dlZd dlZd dlZd dlmZ d dlmZmZmZ d dl m!Z! d dl"m#Z# erd dl$Z$d d	l%m&Z& d d
l'm(Z(m)Z)  G d„ de*¦  «        Z+ ej,        e-¦  «        Z.dZ/ ej0        d¬¦  «         G d„ d¦  «        ¦   «         Z1ej0         G d„ d¦  «        ¦   «         Z2da3de4d<   da5de4d<    ej0        d¬¦  «         G d„ d¦  «        ¦   «         Z6 ed¦  «        Z7 G d„ dej8        ¦  «        Z9e9j:        Z; G d„ dej8        ¦  «        Z<e<j:        Z=ej0         G d„ d¦  «        ¦   «         Z>d d!œd<d*„Z?d d!œd<d+„Z@d=d-„ZAd>d/„ZBd?d0„ZCd@d2„ZDdAd5„ZEdBd6„ZFdCd8„ZGdDd9„ZHdDd:„ZIdCd;„ZJdS )Eé    )ÚannotationsN)Údefaultdict)ÚDefaultDictÚOptionalÚTupleÚTYPE_CHECKINGÚTypeVarÚUnion)ÚSelf)Údynamo_timedÚget_chromium_event_loggerÚ	warn_once)Ú	is_fbcode)Útrace_structured_artifact)ÚInstructionTranslator)Ú
JsonDataTyÚRemoteCachec                  ó   — e Zd ZdS )ÚReservedWorkflowIdUserErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úBC:\Projects\Historical\venv\Lib\site-packages\torch/_dynamo/pgo.pyr   r      s   € € € € € Ø€Dr   r   é
   T)Úfrozenc                  óF   — e Zd ZU ded<   ded<   ded<   edd	„¦   «         Zd
S )ÚCodeIdÚstrÚfilenameÚintÚfirstlinenoÚnameÚcodeútypes.CodeTypeÚreturnc                óB   — t          | j        | j        | j        ¦  «        S ©N)r   Úco_filenameÚco_firstlinenoÚco_name)r%   s    r   ÚmakezCodeId.make`   s   € å�dÔ&¨Ô(;¸T¼\ÑJÔJÐJr   N)r%   r&   r'   r   )r   r   r   Ú__annotations__Ústaticmethodr-   r   r   r   r   r   Z   sX   € € € € € € à€M€M�MØÐÐÑØ€I€I�IàðKð Kð Kñ „\ðKð Kð Kr   r   c                  ó>   — e Zd ZU  ej        d„ ¬¦  «        Zded<   dS )Ú	CodeStatec                 ó*   — t          t          ¦  «        S r)   )r   ÚFrameStateSizeEntryr   r   r   ú<lambda>zCodeState.<lambda>h   s   € ¥Õ,?Ñ @Ô @€ r   )Údefault_factoryz%DefaultDict[str, FrameStateSizeEntry]Úautomatic_dynamicN)r   r   r   ÚdataclassesÚfieldr6   r.   r   r   r   r1   r1   e   sM   € € € € € € à?P¸{Ô?PØ@Ð@ð@ñ @ô @Ðð ð ð ñ ð ð r   r1   z(Optional[DefaultDict[CodeId, CodeState]]Ú_INIT_CODE_STATEÚ_CODE_STATEc                  ó   — e Zd ZU dZded<   dS )ÚInferStrideaX  
    Denotes the quantity stride[dim] * size[dim], which is what the stride would
    be for the next physical dimension that results in a contiguous layout.

    For example, given size = [2, 3], stride = [3, 1], we can replace this with
    stride = [InferStride(1), 1], because InferStride(1) = stride[1] * size[1] = 1 * 3 = 3

    Indirecting the representation in this way is important for the join operation
    on strides as if we join [2, 3][3, 1] and [2, 4][4, 1],
    we don't want [2, None][None, 1] which would get eventually symbolized into
    [2, s0][s1, 1] (notice that the relationship between s0 and s1 is broken).
    If we instead rewrite the expressions as InferStride so we have [2, 3][InferStride(1), 1]
    and [2, 4][InferStride(1), 1] we now join to [2, None][InferStride(1), 1] will
    result in [2, s0][s0, 1], as desired.
    r"   ÚdimN)r   r   r   Ú__doc__r.   r   r   r   r<   r<   p   s%   € € € € € € ðð ð  €H€H�H€H€Hr   r<   Ú_Tc                  ó   — e Zd ZdZdZdS )Ú	AutoUnsetz‹
    The identity element of our semilattice, a generic "don't know" element that
    is always subsumed when we get more information.
    r   N©r   r   r   r>   Útokenr   r   r   rA   rA   ˆ   ó   € € € € € ðð ð
 €E€E€Er   rA   c                  ó   — e Zd ZdZdZdS )ÚAutoDynamicz‚
    The top element of our (bounded) semilattice, whenever you merge this with
    any other element you always get it again
    r   NrB   r   r   r   rF   rF   ”   rD   r   rF   c                  óL  — e Zd ZU  ej        e¬¦  «        Zded<    ej        e¬¦  «        Zded<    ej        e¬¦  «        Z	ded<   d&d
„Z
d'd„Zd(d„Zd(d„Zed)d„¦   «         Zed*d„¦   «         Zed+d„¦   «         Zed,d„¦   «         Zed-d„¦   «         Zed.d!„¦   «         Zd/d$„Zd%S )0r3   )Údefaultz"Union[int, AutoDynamic, AutoUnset]ÚscalarzBUnion[AutoDynamic, AutoUnset, Tuple[Union[int, AutoDynamic], ...]]ÚsizezOUnion[AutoDynamic, AutoUnset, Tuple[Union[int, AutoDynamic, InferStride], ...]]Ústrider'   r    c                óT  ‡— dd„Šdˆfd„}| j         t          u r(| j        t          u r| j        t          u rd	S d
| j        › �S | j        t          u rXt	          | j         t
          ¦  «        r>t	          | j        t
          ¦  «        r$d || j         ¦  «        › d || j        ¦  «        › �S dS )NÚsú/Union[int, AutoDynamic, AutoUnset, InferStride]r'   r    c                óŒ   — | t           u rdS | t          u rdS t          | t          ¦  «        rd| j        › d�S t          | ¦  «        S )Nú?z
auto unsetzS(ú))Úauto_dynamicÚ
auto_unsetÚ
isinstancer<   r=   r    )rM   s    r   Úrender_singlez1FrameStateSizeEntry.render.<locals>.render_single®   sM   € Ø•LÐ Ð Ø�sØ•j��à#�|Ý˜A�{Ñ+Ô+ð Ø$˜AœE�}�}�}Ð$å˜1‘v”v�r   Ússú0Tuple[Union[int, AutoDynamic, InferStride], ...]c                óR   •— dd                      ˆfd„| D ¦   «         ¦  «        z   dz   S )Nú[z, c              3  ó.   •K  — | ]} ‰|¦  «        V — Œd S r)   r   )Ú.0rM   rU   s     €r   ú	<genexpr>zCFrameStateSizeEntry.render.<locals>.render_tuple.<locals>.<genexpr>º   s-   øè è € Ð"@Ð"@¸ = =°Ñ#3Ô#3Ð"@Ð"@Ð"@Ð"@Ð"@Ð"@r   ú])Újoin)rV   rU   s    €r   Úrender_tuplez0FrameStateSizeEntry.render.<locals>.render_tuple¹   s4   ø€ Ø˜ŸšÐ"@Ð"@Ð"@Ð"@¸RÐ"@Ñ"@Ô"@Ñ@Ô@Ñ@À3ÑFÐFr   zfully dynamic scalar or tensorzscalar ztensor size=z stride=zunusual {repr(self)})rM   rN   r'   r    )rV   rW   r'   r    )rJ   rR   rK   rI   rT   Útuple)Úselfr_   rU   s     @r   ÚrenderzFrameStateSizeEntry.render¬   sç   ø€ ð		ð 		ð 		ð 		ð	Gð 	Gð 	Gð 	Gð 	Gð 	Gð Œ9�Ð$Ð$¨¬½Ð)DÐ)DØŒ{�lÐ*Ð*Ø7Ð7à. ¤Ð.Ð.Ð.ØŒ[�LÐ(Ð(Ý˜$œ)¥UÑ+Ô+ð cµ
¸4¼;ÍÑ0NÔ0Nð cØb l l°4´9Ñ&=Ô&=ÐbÐbÀ|À|ÐTXÔT_ÑG`ÔG`ÐbÐbÐbð &Ð%r   ÚNonec                ó†  — t          | j        t          j        ¦  «        rJ | j        ¦   «         ‚t          | j        t
          ¦  «        r.| j        D ]&}t          |t          j        ¦  «        r
J |¦   «         ‚Œ't          | j        t
          ¦  «        r.| j        D ](}t          |t          j        ¦  «        r
J |¦   «         ‚Œ'd S d S r)   )rT   rI   ÚtorchÚSymIntrJ   r`   rK   )ra   rM   Ús1s      r   Ú__post_init__z!FrameStateSizeEntry.__post_init__É   sÊ   € Ý˜dœk­5¬<Ñ8Ô8ÐEÐE¸$¼+ÑEÔEÐ8Ý�d”i¥Ñ'Ô'ð 	:Ø”Yð :ð :�Ý% a­¬Ñ6Ô6Ð9Ð9¸Ñ9Ô9Ð6Ð9Ý�d”k¥5Ñ)Ô)ð 	<Ø”kð <ð <�Ý% b­%¬,Ñ7Ô7Ð;Ð;¸Ñ;Ô;Ð7Ð;ð	<ð 	<ð<ð <r   r=   r"   Úboolc                ój   — | j         t          u rdS | j         t          u rdS | j         |         t          u S )NTF)rJ   rR   rS   ©ra   r=   s     r   Úis_size_dynamicz#FrameStateSizeEntry.is_size_dynamicÒ   s7   € ØŒ9�Ð$Ð$Ø�4ØŒ9�
Ð"Ð"Ø�5ØŒy˜Œ~¥Ð-Ð-r   c                óÞ   — t          | j        t          ¦  «        rt          d„ | j        D ¦   «         ¦  «        sdS | j        t
          u rdS | j        t          u rdS | j        |         t
          u S )Nc              3  óB   K  — | ]}t          |¦  «        t          u V — Œd S r)   )Útyper"   )r[   rM   s     r   r\   z8FrameStateSizeEntry.is_stride_dynamic.<locals>.<genexpr>ê   s,   è è € Ð0SÐ0SÀAµ°a±´½C°Ð0SÐ0SÐ0SÐ0SÐ0SÐ0Sr   FT)rT   rJ   r`   ÚallrK   rR   rS   rk   s     r   Úis_stride_dynamicz%FrameStateSizeEntry.is_stride_dynamicÙ   sv   € õ" �t”y¥%Ñ(Ô(ð	Ý-0Ð0SÐ0SÈÌÐ0SÑ0SÔ0SÑ-SÔ-Sð	ð �5ØŒ;�,Ð&Ð&Ø�4ØŒ;�*Ð$Ð$Ø�5ØŒ{˜3Ô¥<Ð/Ð/r   ÚxsúTuple[int, ...]ú#Tuple[Union[AutoDynamic, int], ...]c                ó4   — t          d„ | D ¦   «         ¦  «        S )Nc              3  ó\   K  — | ]'}t          |t          j        ¦  «        rt          n|V — Œ(d S r)   )rT   re   rf   rR   )r[   Úxs     r   r\   z4FrameStateSizeEntry._munge_symint.<locals>.<genexpr>õ   s7   è è € ÐTÐTÈA¥Z°µ5´<Ñ%@Ô%@ÐG•\�\ÀaÐTÐTÐTÐTÐTÐTr   )r`   )rr   s    r   Ú_munge_symintz!FrameStateSizeEntry._munge_symintó   s    € åÐTÐTÐQSÐTÑTÔTÑTÔTÐTr   rw   c                ó:   — t          |t          t          ¬¦  «        S ©N)rI   rJ   rK   )r3   rR   )Úclsrw   s     r   Úmake_scalarzFrameStateSizeEntry.make_scalar÷   s   € å"¨!µ,Å|ÐTÑTÔTÐTr   c                ó|   — t          t          |                      |¦  «        |                      |¦  «        ¬¦  «        S rz   )r3   rR   rx   )r{   rJ   rK   s      r   Úmake_tensorzFrameStateSizeEntry.make_tensorû   s@   € õ #ÝØ×"Ò" 4Ñ(Ô(Ø×$Ò$ VÑ,Ô,ð
ñ 
ô 
ð 	
r   c                ó`   — t          t          |                      |¦  «        t          ¬¦  «        S rz   )r3   rS   rx   )r{   rJ   s     r   Ú	make_sizezFrameStateSizeEntry.make_size  s0   € å"ÝØ×"Ò" 4Ñ(Ô(Ýð
ñ 
ô 
ð 	
r   r?   ÚyúUnion[AutoDynamic, _T]c                óp   — | t           u r|S |t           u r| S | t          u s|t          u s| |k    rt          S | S r)   )rS   rR   )rw   r�   s     r   Ú_merge_atomzFrameStateSizeEntry._merge_atom  sF   € à•
ˆ?ˆ?ØˆHØ•
ˆ?ˆ?ØˆHØ•ÐÐ ¥\Ð 1Ð 1°Q¸!²V°VÝÐØˆr   ú-Union[AutoDynamic, AutoUnset, Tuple[_T, ...]]ÚysúAUnion[AutoDynamic, AutoUnset, Tuple[Union[AutoDynamic, _T], ...]]c                ó  ‡ — |t           u r|S |t           u r|S |t          u s	|t          u rt          S t          |¦  «        t          |¦  «        k    rt          S t          ˆ fd„t	          ||¦  «        D ¦   «         ¦  «        S )Nc              3  óJ   •K  — | ]\  }}‰                      ||¦  «        V — Œd S r)   )r„   )r[   rw   r�   r{   s      €r   r\   z6FrameStateSizeEntry._merge_atom_tup.<locals>.<genexpr>%  s5   øè è € ÐCÐC©t¨q°!�S—_’_ Q¨Ñ*Ô*ÐCÐCÐCÐCÐCÐCr   )rS   rR   Úlenr`   Úzip)r{   rr   r†   s   `  r   Ú_merge_atom_tupz#FrameStateSizeEntry._merge_atom_tup  sˆ   ø€ ð •ÐÐØˆIØ•ÐÐØˆIØ•ÐÐ ¥|Ð!3Ð!3ÝÐÝˆr‰7Œ7•c˜"‘g”gÒÐÝÐÝÐCÐCÐCÐCµs¸2¸r±{´{ÐCÑCÔCÑCÔCÐCr   Úotherr   c                óä   — |                       | j        |j        ¦  «        | _        |                      | j        |j        ¦  «        | _        |                      | j        |j        ¦  «        | _        | S r)   )r„   rI   rŒ   rJ   rK   )ra   r�   s     r   Ú__ior__zFrameStateSizeEntry.__ior__'  sX   € Ø×&Ò& t¤{°E´LÑAÔAˆŒØ×(Ò(¨¬°E´JÑ?Ô?ˆŒ	Ø×*Ò*¨4¬;¸¼ÑEÔEˆŒØˆr   N)r'   r    ©r'   rc   )r=   r"   r'   ri   )rr   rs   r'   rt   )rw   r"   r'   r3   )rJ   rs   rK   rs   r'   r3   )rJ   rs   r'   r3   )rw   r?   r�   r?   r'   r‚   )rr   r…   r†   r…   r'   r‡   )r�   r   r'   r   )r   r   r   r7   r8   rS   rI   r.   rJ   rK   rb   rh   rl   rq   r/   rx   Úclassmethodr|   r~   r€   r„   rŒ   r�   r   r   r   r3   r3       sÃ  € € € € € € à1B°Ô1BÈ:Ð1VÑ1VÔ1V€FÐVÐVÐVÑVð
 	ˆÔ *Ð-Ñ-Ô-ð 	ð .ð .ð .ñ .ð
 	ˆÔ *Ð-Ñ-Ô-ð ð .ð .ð .ñ .ð&ð &ð &ð &ð:<ð <ð <ð <ð.ð .ð .ð .ð0ð 0ð 0ð 0ð4 ðUð Uð Uñ „\ðUð ðUð Uð Uñ „[ðUð ð
ð 
ð 
ñ „[ð
ð ð
ð 
ð 
ñ „[ð
ð ðð ð ñ „\ðð ðDð Dð Dñ „[ðDðð ð ð ð ð r   r3   F©Úis_unspecialized_nn_moduleÚtxr   r$   r    Úentryr“   ri   r'   c               óÄ  ‡‡‡
— t                                | j        ¦  «        }t          ¦   «         |         }‰|j        v }|j        ‰         }t          j        |¦  «        Š
|‰z  }|r²‰
j        |j        k    r¢t                               d‰‰j        ‰
j        ¦  «         t          ¦   «          
                    dt          j        ¦   «         ‰ddt          ‰
j        ¦  «        t          ‰j        ¦  «        dœ¦  «         |rt                               d‰¦  «         	 ddˆˆˆ
fd„}|rÜ‰
j        |j        k    rÌt!          ‰
j        t"          ¦  «        r¥t!          ‰j        t"          ¦  «        r‹t%          ‰
j        ¦  «        t%          ‰j        ¦  «        k    r |ddd¦  «         n`t'          t%          ‰j        ¦  «        ¦  «        D ]0}	‰
j        |	         ‰j        |	         k    r |dd|	› d�d|	¦  «         Œ1n |ddd¦  «         |rÜ‰
j        |j        k    rÌt!          ‰
j        t"          ¦  «        r¥t!          ‰j        t"          ¦  «        r‹t%          ‰
j        ¦  «        t%          ‰j        ¦  «        k    r |ddd¦  «         n`t'          t%          ‰j        ¦  «        ¦  «        D ]0}	‰
j        |	         ‰j        |	         k    r |dd|	› d�d|	¦  «         Œ1n |ddd¦  «         |S )Nz%automatic dynamic int %s val %s != %sr6   rI   zscalar change©r$   Údim_changedÚreasonÚcachedÚnewz¼%s is converted to a symbolic integer. It is an attribute of a user defined nn module class. If you wish to keep it static, you can mark the nn module class as `torch._dynamo.mark_static`.Útup_namer    Úshort_reasonÚlong_reasonÚiúOptional[int]r'   rc   c                ó–  •— |€t          ‰| ¦  «        nt          ‰| ¦  «        |         }|€t          ‰| ¦  «        nt          ‰| ¦  «        |         }t                               d| ‰|||¦  «         t          ¦   «                              dt          j        ¦   «         ‰|€dn||t          |¦  «        t          |¦  «        dœ¦  «         d S )Nz#automatic dynamic %s %s %s %s != %sr6   rp   r—   )ÚgetattrÚlogÚdebugr   Úlog_instant_eventÚtimeÚtime_nsr    )	rœ   r�   rž   rŸ   Ú	entry_tupÚold_entry_tupr•   r$   Ú	old_entrys	         €€€r   Úlog_tupz)update_automatic_dynamic.<locals>.log_tupX  sï   ø€ ð )*¨	�G�E˜8Ñ$Ô$Ð$µw¸uÀhÑ7OÔ7OÐPQÔ7Rð 	ð
 ˆyõ �I˜xÑ(Ô(Ð(å˜ HÑ-Ô-¨aÔ0ð 	õ
 	�	Š	Ø1ØØØàØñ	
ô 	
ð 	
õ 	"Ñ#Ô#×5Ò5ØÝŒL‰NŒNàØ()¨	˜u˜u°qØ%Ý˜mÑ,Ô,Ý˜9‘~”~ðð ñ
	
ô 
	
ð 
	
ð 
	
ð 
	
r   rJ   r=   zdimensionality changezsize(rQ   zsize changer�   rK   zstride(zstride changer)   )
rœ   r    r�   r    rž   r    rŸ   r    r'   rc   )r   r-   Úf_codeÚget_code_stater6   ÚcopyrI   r£   r¤   r   r¥   r¦   r§   r    ÚinforJ   rT   r`   rŠ   ÚrangerK   )r”   r$   r•   r“   Úcode_idÚframe_stateÚ	is_updateÚ	mut_entryr«   rŸ   rª   s    ``       @r   Úupdate_automatic_dynamicrµ   .  s5  øøø€ õ �kŠk˜"œ)Ñ$Ô$€GÝ Ñ"Ô" 7Ô+€KØ˜Ô5Ð5€IØÔ-¨dÔ3€IÝ”	˜)Ñ$Ô$€IØ�Ñ€Ið ð �YÔ%¨Ô)9Ò9Ð9Ý�	Š	Ø3ØØŒLØÔñ		
ô 	
ð 	
õ 	"Ñ#Ô#×5Ò5ØÝŒL‰NŒNàØ'Ø)Ý˜iÔ.Ñ/Ô/Ý˜5œ<Ñ(Ô(ðð ñ
	
ô 
	
ð 
	
ð &ð 	Ý�HŠHðKð ñ	ô ð ð PTð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð@ ð 	.�Y”^ y¤~Ò5Ð5Ý�i”n¥eÑ,Ô,ð 	.µ¸E¼JÍÑ1NÔ1Nð 	.Ý�9”>Ñ"Ô"¥c¨%¬*¡o¤oÒ5Ð5Ø�˜ Ð'>Ñ?Ô?Ð?Ð?å�s 5¤:™œÑ/Ô/ð Hð H�AØ ”~ aÔ(¨E¬J°q¬MÒ9Ð9Ø˜ ¨°¨¨¨°mÀQÑGÔGÐGøðHð ˆG�F˜G WÑ-Ô-Ð-àð 	0�YÔ%¨Ô)9Ò9Ð9Ý�iÔ&­Ñ.Ô.ð 	0µ:¸e¼lÍEÑ3RÔ3Rð 	0Ý�9Ô#Ñ$Ô$­¨E¬LÑ(9Ô(9Ò9Ð9Ø�˜ %Ð)@ÑAÔAÐAÐAå�s 5¤<Ñ0Ô0Ñ1Ô1ð Nð N�AØ Ô'¨Ô*¨e¬l¸1¬oÒ=Ð=Ø˜ ¨.°A¨.¨.¨.¸/È1ÑMÔMÐMøðNð ˆG�H˜g wÑ/Ô/Ð/àÐr   c               óÜ   — | j         x}€t          | |||¬¦  «        S |j        €||j        j        |<   |S d }|j        D ])}||j        v rt          | ||j        |         |¬¦  «        }Œ*|€J ‚|S )Nr’   )Údistributed_staterµ   Ú
all_statesÚlocal_stater6   )r”   r$   r•   r“   ÚstÚresÚ	sub_states          r   Úprocess_automatic_dynamicr½   ‘  s´   € ð Ô"Ð"ˆÐ+Ý'ØØØØ'Að	
ñ 
ô 
ð 	
ð 
ŒÐ	ð 27ˆŒÔ(¨Ñ.Øˆð ˆØœð 	ð 	ˆIØ�yÔ2Ð2Ð2Ý.ØØØÔ/°Ô5Ø/Ið	ñ ô �øð ˆˆˆØˆ
r   úOptional[str]c                 óè  — t           j        j        j        rt	          d¦  «         d S d } t          j        ¦   «         r&t          j        ¦   «         rt          j        ¦   «         } t           j	        j        j
        }t           j	        j        j        x}�.|                     d¦  «        rt          d¦  «        ‚|› d| › d|› �S t           j                             ¦   «         x}�|\  }}d|› d|› d| › d|› �S d S )NzHdynamo_pgo force disabled by torch._inductor.config.force_disable_cacheszmast:z•torch.compiler.config.job_id with prefix 'mast:' is reserved for automatically generated job id associated with a specific MAST job name and version.ú:)re   Ú	_inductorÚconfigÚforce_disable_cachesr   ÚdistÚis_availableÚis_initializedÚget_rankÚcompilerÚcache_key_tagÚjob_idÚ
startswithr   Ú_utils_internalÚget_mast_job_name_version)ÚrankÚtagÚrÚname_versionÚmast_job_nameÚmast_job_versions         r   Úget_cache_keyrÔ   ¿  s  € å„ÔÔ2ð ÝØVñ	
ô 	
ð 	
ð ˆtð €DÝÔÑÔð �tÔ2Ñ4Ô4ð ÝŒ}‰Œˆå
Œ.Ô
Ô
-€Cõ Œ^Ô"Ô)Ð)ˆÐ6Ø�<Š<˜Ñ Ô ð 	Ý-ð$ñô ð ð
 Ð"Ð"�dÐ"Ð"˜SÐ"Ð"Ð"åÔ-×GÒGÑIÔIÐIˆÐVØ*6Ñ'ˆÐ'ØF�}ÐFÐFÐ'7ÐFÐF¸$ÐFÐFÀÐFÐFÐFàˆ4r   Ú	cache_keyc                óÌ   — t           j        j        j        st                               d¦  «         d S ddlm} t          j	         
                     |¦   «         dd| › d�¦  «        S )Nz'automatic_dynamic_local_pgo not enabledr   )Ú	cache_dirÚdynamoÚcode_state_z.pkl)re   Ú_dynamorÂ   Úautomatic_dynamic_local_pgor£   r¤   Ú%torch._inductor.runtime.runtime_utilsr×   ÚosÚpathr^   )rÕ   r×   s     r   Úcode_state_pathrß   â  sf   € ÝŒ=ÔÔ;ð Ý�	Š	Ð;Ñ<Ô<Ð<Øˆtà?Ð?Ð?Ð?Ð?Ð?åŒ7�<Š<˜	˜	™œ XÐ/L¸YÐ/LÐ/LÐ/LÑMÔMÐMr   c                 ó>  — t           j        j        j        rdS t           j        j        j        x} �| S t          ¦   «         sdS t           j                             ¦   «         rdS 	 ddl	m
} n# t          $ r Y dS w xY w|t           j                             d¦  «        k    S )NFr   )ÚREMOTE_CACHE_VERSIONz'pytorch/remote_cache:dynamo_pgo_version)re   rÁ   rÂ   rÃ   rÚ   Úautomatic_dynamic_remote_pgor   rÌ   Úis_fb_unit_testÚtorch._inductor.fb.remote_cacherá   ÚModuleNotFoundErrorÚjustknobs_getval_int)rÐ   rá   s     r   Ú"should_use_remote_dynamo_pgo_cacherç   ì  s¿   € Ý„ÔÔ2ð ØˆuåŒ]Ô!Ô>Ð>ˆÐKØˆå‰;Œ;ð ØˆuåÔ×,Ò,Ñ.Ô.ð ØˆuðØHÐHÐHÐHÐHÐHÐHøÝð ð ð Øˆuˆuðøøøð  ¥5Ô#8×#MÒ#MØ1ñ$ô $ò ð s   Á$A+ Á+
A9Á8A9ú!Optional[RemoteCache[JsonDataTy]]c                 ób   — ddl m}  t          ¦   «         sd S  | dt          ¦   «         dd¦  «        S )Nr   ©Úcreate_cachez
dynamo-pgoÚFbRemoteDynamoPGOCacheÚRemoteDynamoPGOCache)Útorch._inductor.remote_cacherë   rç   r   rê   s    r   Úget_remote_cacherï     sK   € Ø9Ð9Ð9Ð9Ð9Ð9å-Ñ/Ô/ð Øˆtàˆ<ØÝ‰ŒØ Øñ	ô ð r   ÚcsúDefaultDict[CodeId, CodeState]c                ód   — d                      d„ |                      ¦   «         D ¦   «         ¦  «        S )Nú
c              3  ó¾   K  — | ]X\  }}|j         › d |j        › d |j        › d�d                     d„ |j                             ¦   «         D ¦   «         ¦  «        z   V — ŒYdS )rÀ   z:
ró   c              3  óP   K  — | ]!\  }}d |› d|                      ¦   «         › �V — Œ"dS )z  z: N)rb   )r[   ÚsrcÚfss      r   r\   z.render_code_state.<locals>.<genexpr>.<genexpr>  sP   è è € ð 
ð 
Ù*1¨#¨rÐ%�Ð%Ð%˜Ÿ	š	™œÐ%Ð%ð
ð 
ð 
ð 
ð 
ð 
r   N)r!   r#   r$   r^   r6   Úitems)r[   ÚkÚvs      r   r\   z$render_code_state.<locals>.<genexpr>  sœ   è è € ð ð ñ
 ˆAˆqð	 Œ:Ð3Ð3˜œÐ3Ð3¨¬Ð3Ð3Ð3Ø
�)Š)ð 
ð 
Ø56Ô5H×5NÒ5NÑ5PÔ5Pð
ñ 
ô 
ñ 
ô 
ñ	
ðð ð ð ð ð r   )r^   rø   )rð   s    r   Úrender_code_staterû     s>   € Ø�9Š9ð ð ð
 —H’H‘J”Jðñ ô ñ ô ð r   c                 ó<  ‡	— t           �t           S t          ¦   «         } t          t          ¦  «        a t	          ¦   «         }|€t           S dˆ	fd„}t          |¦  «        Š	‰	��t          j                             ‰	¦  «        rùt          dx}d¬¦  «        5  |  
                    ||¬	¦  «         t          ‰	d
¦  «        5 }	 t          j        |¦  «        a |  
                    ||                     ¦   «         ¬¦  «          |d¦  «        cd d d ¦  «         cd d d ¦  «         S # t          $ r  t                                d‰	d¬¦  «         Y nw xY w	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t%          ¦   «         }|��jt          dx}d¬¦  «        5  |  
                    ||¬	¦  «         	 |                     |¦  «        }|�Ç	 t)          |t*          ¦  «        sJ ‚|d         }t)          |t,          ¦  «        sJ ‚t/          j        |¦  «        }|  
                    |t3          |¦  «        ¬¦  «         t          j        |¦  «        a  |d¦  «        cd d d ¦  «         S # t          $ r  t                                d|d¬¦  «         Y nMw xY wt                                d|¦  «         n-# t          $ r  t                                d|d¬¦  «         Y nw xY wd d d ¦  «         n# 1 swxY w Y   t                                d¦  «         t           €J ‚t           S )NÚtyr    r'   rñ   c                ó  •— t          t          t          ¦  «        sJ ‚t                               d‰| t          t          ¦  «        ¦  «         t          d| › d�dd„ ¦  «         t          j        t          ¦  «        a	t          S )Nz$get_code_state %s hit %s, %d entriesÚget_Ú_code_stateÚstringc                 ó*   — t          t          ¦  «        S r)   ©rû   r:   r   r   r   r4   z-get_code_state.<locals>.hit.<locals>.<lambda>0  ó   € Õ%¥kÑ2Ô2€ r   )
rT   r:   r   r£   r¯   rŠ   r   r®   Údeepcopyr9   )rý   rÞ   s    €r   Úhitzget_code_state.<locals>.hit)  s{   ø€ å�+¥{Ñ3Ô3Ð3Ð3Ð3Ý�ŠÐ7¸¸rÅ3Å{ÑCSÔCSÑTÔTÐTÝ!Ø"�2Ð"Ð"Ð"ØØ2Ð2ñ	
ô 	
ð 	
õ
  œ=­Ñ5Ô5ÐÝÐr   zpgo.get_local_code_stateT©Úlog_pt2_compile_event©rÕ   Úrb©Úcache_size_bytesÚlocalz&get_code_state failed while reading %s)Úexc_infozpgo.get_remote_code_stateÚdataÚremotez1get_code_state failed parsing remote result on %sz get_code_state remote miss on %sz'get_code_state failed remote read on %szget_code_state using default)rý   r    r'   rñ   )r:   r   r   r1   rÔ   rß   rÝ   rÞ   Úexistsr   Úadd_event_dataÚopenÚpickleÚloadÚtellÚ	Exceptionr£   Úwarningrï   ÚgetrT   Údictr    Úbase64Ú	b64decoderŠ   Úloadsr¯   )
Úchromium_logrÕ   r  r$   ÚfÚremote_cacheÚ
cache_datar  ÚpayloadrÞ   s
            @r   r­   r­     s±  ø€ åÐÝÐå,Ñ.Ô.€Lõ �iÑ(Ô(€Kå‘”€IØÐÝÐð
ð 
ð 
ð 
ð 
ð 
õ ˜9Ñ%Ô%€DØÑ�BœGŸNšN¨4Ñ0Ô0ÐÝØ.Ð.ˆDÀdð
ñ 
ô 
ð 	(ð 	(ð ×'Ò'¨¸	Ð'ÑBÔBÐBõ �d˜DÑ!Ô!ð 	( Qð(Ý"(¤+¨a¡.¤.�KØ ×/Ò/°ÀqÇvÂvÁxÄxÐ/ÑPÔPÐPð ˜3˜w™<œ<ð	(ð 	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð	(ð 	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(øõ !ð ð ð Ý—K’KØ@À$ÐQUð  ñ ô ð ð ð ðøøøðð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(õ$ $Ñ%Ô%€LØÑÝØ/Ð/ˆDÀtð
ñ 
ô 
ð 	Lð 	Lð ×'Ò'¨¸	Ð'ÑBÔBÐBðLØ)×-Ò-¨iÑ8Ô8�
ð Ð)ð-Ý)¨*µdÑ;Ô;Ð;Ð;Ð;Ø)¨&Ô1˜Ý)¨$µÑ4Ô4Ð4Ð4Ð4Ý"(Ô"2°4Ñ"8Ô"8˜Ø$×3Ò3°DÍ3ÈwÉ<Ì<Ð3ÑXÔXÐXÝ&,¤l°7Ñ&;Ô&;˜ð  #˜s 8™}œ}ð7	Lð 	Lð 	Lð 	Lñ 	Lô 	Lð 	Lð 	Løõ( %ð ð ð ÝŸšØOØ%Ø%)ð $ñ ô ð ð ð ðøøøõ —H’HÐ?ÀÑKÔKÐKÐKøõ- ð ð ð Ý—’Ø=¸yÐSWð ñ ô ð ð ð ðøøøð	Lð 	Lð 	Lñ 	Lô 	Lð 	Lð 	Lð 	Lð 	Lð 	Lð 	Løøøð 	Lð 	Lð 	Lð 	Lõ> ‡H‚HÐ+Ñ,Ô,Ð,åÐ"Ð"Ð"ÝÐs»   Â(E.Â;EÂ==DÃ:
EÄE.Ä'EÅEÅEÅEÅE.ÅE	ÅE.ÅE	ÅE.Å.E2Å5E2ÆK)Æ6J0ÇK)ÇBI'É
K)É''JÊK)ÊJÊK)Ê0'KËK)ËKËK)Ë)K-Ë0K-rc   c                 ó8  — t           €t                               d¦  «         d S t           t          k    rt                               d¦  «         d S t	          ¦   «         } | €t                               d¦  «         d S t          | ¦  «         t          | ¦  «         d S )Nz1put_code_state: never initialized, will not writez#put_code_state: no change, skippingz&put_code_state: no cache key, skipping)r:   r£   r¯   r9   rÔ   Úput_local_code_stateÚput_remote_code_stater	  s    r   Úput_code_stater&  q  s�   € ÝÐÝ�ŠÐDÑEÔEÐEØˆåÕ&Ò&Ð&Ý�ŠÐ6Ñ7Ô7Ð7Øˆå‘”€IØÐÝ�ŠÐ9Ñ:Ô:Ð:Øˆå˜Ñ#Ô#Ð#Ý˜)Ñ$Ô$Ð$Ð$Ð$r   c           	     ó†  — t          dx}d¬¦  «        5  t          ¦   «         }|                     || ¬¦  «         t          €J ‚t	          | ¦  «        }|€(t
                               d¦  «         	 d d d ¦  «         d S |dz   }|dz   }dd	lm} t          j
        t          j                             |¦  «        d¬
¦  «          ||t          ¬¦  «        5  t          |d¦  «        5 }t          j        t          |¦  «         |                     ||                     ¦   «         ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ||¦  «         t
                               d|t'          t          ¦  «        ¦  «         t)          ddd„ ¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nzpgo.put_local_code_stateTr  r	  z$put_code_state: local cache disabledz.tmpz.lockr   )ÚFileLock)Úexist_ok)ÚtimeoutÚwbr  z*put_code_state: wrote local %s, %d entriesr$  r  c                 ó*   — t          t          ¦  «        S r)   r  r   r   r   r4   z&put_local_code_state.<locals>.<lambda>¥  s   € Õ)­+Ñ6Ô6€ r   )r   r   r  r:   rß   r£   r¯   Úfilelockr(  rÝ   ÚmakedirsrÞ   ÚdirnameÚLOCK_TIMEOUTr  r  Údumpr  ÚrenamerŠ   r   )rÕ   r$   r  rÞ   Útmp_pathÚ	lock_pathr(  r  s           r   r$  r$  ƒ  s³  € Ý	Ð8Ð8�dÐPTÐ	UÑ	UÔ	Uð "ð "Ý0Ñ2Ô2ˆØ×#Ò# D°IÐ#Ñ>Ô>Ð>ÝÐ&Ð&Ð&å˜yÑ)Ô)ˆàˆ<Ý�HŠHÐ;Ñ<Ô<Ð<Øð"ð "ð "ñ "ô "ð "ð "ð "ð ˜&‘=ˆØ˜7‘Nˆ	ð 	&Ð%Ð%Ð%Ð%Ð%å
Œ•B”G—O’O DÑ)Ô)°DÐ9Ñ9Ô9Ð9àˆX�i­Ð6Ñ6Ô6ð 	ð 	Ý�h Ñ%Ô%ð M¨Ý”�K¨Ñ+Ô+Ð+Ø×+Ò+¨DÀ1Ç6Â6Á8Ä8Ð+ÑLÔLÐLðMð Mð Mñ Mô Mð Mð Mð Mð Mð Mð Møøøð Mð Mð Mð Mõ ŒI�h Ñ%Ô%Ð%Ý�HŠHØ<¸dÅCÍÑDTÔDTñô ð õ &Ø&ØØ6Ð6ñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð-"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "sc   ”AF6Á<AF6ÃFÃ"AD2Ä&FÄ2D6Ä6FÄ9D6Ä:AFÆF6ÆF"	Æ"F6Æ%F"	Æ&F6Æ6F:Æ=F:c                ó¢  — t          dx}d¬¦  «        5  t          ¦   «         }|                     || ¬¦  «         t          €J ‚t	          ¦   «         }|€(t
                               d¦  «         	 d d d ¦  «         d S t          j        t          ¦  «        }|                     |t          |¦  «        ¬¦  «         dt          j        |¦  «                             d¦  «        i}|                     | |¦  «         t
                               d	| t          t          ¦  «        ¦  «         t          d
dd„ ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzpgo.put_remote_code_stateTr  r	  z%put_code_state: remote cache disabledr  r  Úasciiz+put_code_state: wrote remote %s, %d entriesr%  r  c                 ó*   — t          t          ¦  «        S r)   r  r   r   r   r4   z'put_remote_code_state.<locals>.<lambda>Â  r  r   )r   r   r  r:   rï   r£   r¯   r  ÚdumpsrŠ   r  Ú	b64encodeÚdecodeÚputr   )rÕ   r$   r  r   Úcontentr!  s         r   r%  r%  ©  s±  € Ý	Ð9Ð9�dÐQUÐ	VÑ	VÔ	Vð 
ð 
Ý0Ñ2Ô2ˆØ×#Ò# D°IÐ#Ñ>Ô>Ð>ÝÐ&Ð&Ð&å'Ñ)Ô)ˆàÐÝ�HŠHÐ<Ñ=Ô=Ð=Øð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
õ ”,�{Ñ+Ô+ˆØ×#Ò# D½3¸w¹<¼<Ð#ÑHÔHÐHà•FÔ$ WÑ-Ô-×4Ò4°WÑ=Ô=ð"
ˆ
ð 	×Ò˜ JÑ/Ô/Ð/Ý�ŠØ9¸9ÅcÍ+ÑFVÔFVñ	
ô 	
ð 	
õ 	"Ø#ØØ2Ð2ñ	
ô 	
ð 	
ð+
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   ”AEÁ;B<EÅEÅEc                 ó   — d a d ad S r)   )r:   r9   r   r   r   Úreset_code_stater>  Ç  s   € à€KØÐÐÐr   )
r”   r   r$   r    r•   r3   r“   ri   r'   r3   )r'   r¾   )rÕ   r    r'   r¾   )r'   ri   )r'   rè   )rð   rñ   r'   r    )r'   rñ   r�   )rÕ   r    r'   rc   )KÚ
__future__r   r  r®   r7   ÚenumÚloggingrÝ   r  r¦   Úcollectionsr   Útypingr   r   r   r   r	   r
   Útyping_extensionsr   Útorch._dynamo.configre   Útorch._utils_internalÚtorch.compiler.configÚtorch.distributedÚdistributedrÄ   Útorch._dynamo.utilsr   r   r   Útorch._environmentr   Útorch._logging._internalr   ÚtypesÚtorch._dynamo.symbolic_convertr   rî   r   r   Ú
ValueErrorr   Ú	getLoggerr   r£   r0  Ú	dataclassr   r1   r9   r.   r:   r<   r?   ÚEnumrA   rC   rS   rF   rR   r3   rµ   r½   rÔ   rß   rç   rï   rû   r­   r&  r$  r%  r>  r   r   r   ú<module>rS     s‰  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ (Ð (Ð (Ð (Ð (Ð (Ø >Ð >Ð >Ð >Ð >Ð >ð ð EØ€L€L€LàDÐDÐDÐDÐDÐDØDÐDÐDÐDÐDÐDÐDÐDð	ð 	ð 	ð 	ð 	 *ñ 	ô 	ð 	ð €gÔ˜Ñ!Ô!€à€ðj €Ô˜dÐ#Ñ#Ô#ðKð Kð Kð Kð Kñ Kô Kñ $Ô#ðKð Ôðð ð ð ð ñ ô ñ Ôðð >BÐ Ð AÐ AÐ AÑ AØ8<€Ð <Ð <Ð <Ñ <ð €Ô˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð( €WˆT�]„]€ðð ð ð ð �”	ñ ô ð ð Œ_€
ðð ð ð ð �$”)ñ ô ð ð Ô €ð ÔðJð Jð Jð Jð Jñ Jô Jñ ÔðJðd (-ð`ð `ð `ð `ð `ð `ðP (-ð+ð +ð +ð +ð +ð +ð\ð ð ð ðFNð Nð Nð Nðð ð ð ð.ð ð ð ðð ð ð ðSð Sð Sð Sðl%ð %ð %ð %ð$#ð #ð #ð #ðL
ð 
ð 
ð 
ð<ð ð ð ð ð r   