§
    ­˜ºh�}  ã                  óæ  — U d Z 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ZddlZddlmZ ddlmZmZmZmZ ddlmZ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!m"Z" ddl#m$Z$ dd	l%m&Z& dd
l'm(Z(m)Z)m*Z* ddl+m,Z, erddl-Z-ddl.m/Z/ ddl0m1Z1m2Z2  G d„ de3¦  «        Z4 ej5        e6¦  «        Z7dZ8ej9        dMd„¦   «         Z: ej;        d¬¦  «         G d„ d¦  «        ¦   «         Z<ej;         G d„ d¦  «        ¦   «         Z=da>de?d<   da@de?d<    ej;        d¬¦  «         G d„ d¦  «        ¦   «         ZA ed ¦  «        ZB G d!„ d"ejC        ¦  «        ZDeDjE        ZF G d#„ d$ejC        ¦  «        ZGeGjE        ZHej;         G d%„ d&¦  «        ¦   «         ZId'd(œdNd/„ZJd'd(œdNd0„ZKdOd2„ZLdPd4„ZMdQd5„ZNdRd7„ZOdSd:„ZPdTd>„ZQdUdA„ZRe)jS         G dB„ dCe(¦  «        ¦   «         ZTdVdD„ZUdWdE„ZVdXdI„ZWdYdJ„ZXdYdK„ZYdWdL„ZZdS )Za  
Profile Guided Optimization (PGO) implementation for Dynamo.

This module provides functionality for caching and managing code state profiles
that guide optimization decisions in Dynamo. It implements both local and remote
caching mechanisms for storing profile information across runs, handles profile
merging across distributed ranks, and manages the lifecycle of profile data
during compilation. The profiles track dynamic vs static properties of tensors
and help Dynamo make better specialization decisions.
é    )ÚannotationsN)Údefaultdict)ÚOptionalÚTYPE_CHECKINGÚTypeVarÚUnion)ÚoverrideÚSelf)ÚCompileEventLoggerÚdynamo_timedÚset_feature_useÚ	warn_once)Ú	is_fbcode)Útrace_structured_artifact)ÚCacheArtifactÚCacheArtifactFactoryÚCacheArtifactManager)Ú
OrderedSet)ÚInstructionTranslator)Ú
JsonDataTyÚRemoteCachec                  ó   — e Zd ZdS )ÚReservedWorkflowIdUserErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úY/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/torch/_dynamo/pgo.pyr   r   7   s   € € € € € Ø€Dr   r   é
   ÚfilepathÚstrÚreturnc                ó  — t           j                             | ¦  «        s| S t          | d¦  «        5 }|                     ¦   «         }t          j        |¦  «        }t          |dz  d¦  «        }|cd d d ¦  «         S # 1 swxY w Y   d S )NÚrbl   ÿÿ Ú08x)ÚosÚpathÚexistsÚopenÚreadÚzlibÚcrc32Úformat)r!   ÚfileÚcontentÚcrc32_valueÚhashs        r   Ú_hash_containing_filer3   r   sÃ   € õ Œ7�>Š>˜(Ñ#Ô#ð Øˆå	ˆh˜Ñ	Ô	ð  Ø—)’)‘+”+ˆÝ”j Ñ)Ô)ˆÝ�k JÑ.°Ñ6Ô6ˆØð	ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s   ²=A<Á<B ÂB T)Úfrozenc                  óh   — e Zd ZU ded<   ded<   ded<   ded<   dd„Zdd„Zdd„Zedd„¦   «         ZdS )ÚCodeIdr"   ÚfilenameÚintÚfirstlinenoÚnameÚ	file_hashÚotherÚobjectr#   Úboolc                ó�   — t          |t          ¦  «        sdS | j        |j        k    o| j        |j        k    o| j        |j        k    S )NF)Ú
isinstancer6   r;   r9   r:   ©Úselfr<   s     r   Ú__eq__zCodeId.__eq__�   sN   € Ý˜%¥Ñ(Ô(ð 	Ø�5àŒN˜eœoÒ-ð (ØÔ  EÔ$5Ò5ð(à”	˜UœZÒ'ð	
r   c                óD   — t          | j        | j        | j        f¦  «        S ©N)r2   r;   r:   r9   ©rB   s    r   Ú__hash__zCodeId.__hash__—   s   € Ý�T”^ T¤Y°Ô0@ÐAÑBÔBÐBr   c                óF   — d| j         › d| j        › d| j        › d| j        › �S )Nzhash(ú)ú:)r;   r7   r9   r:   rF   s    r   Ú__str__zCodeId.__str__š   s1   € ØV�t”~ÐVÐV¨¬ÐVÐV¸Ô8HÐVÐVÈ4Ì9ÐVÐVÐVr   Úcodeútypes.CodeTypec                óh   — t          | j        | j        | j        t	          | j        ¦  «        ¦  «        S rE   )r6   Úco_filenameÚco_firstlinenoÚco_namer3   )rL   s    r   ÚmakezCodeId.make�   s3   € åØÔØÔØŒLÝ! $Ô"2Ñ3Ô3ñ	
ô 
ð 	
r   N)r<   r=   r#   r>   )r#   r8   ©r#   r"   )rL   rM   r#   r6   )	r   r   r   Ú__annotations__rC   rG   rK   ÚstaticmethodrR   r   r   r   r6   r6      s£   € € € € € € à€M€M�MØÐÐÑØ€I€I�Ið €N€N�Nð
ð 
ð 
ð 
ðCð Cð Cð CðWð Wð Wð Wð ð
ð 
ð 
ñ „\ð
ð 
ð 
r   r6   c                  ó>   — e Zd ZU  ej        d„ ¬¦  «        Zded<   dS )Ú	CodeStatec                 ó*   — t          t          ¦  «        S rE   )r   ÚFrameStateSizeEntryr   r   r   ú<lambda>zCodeState.<lambda>ª   s   € ¥Õ,?Ñ @Ô @€ r   )Údefault_factoryz%defaultdict[str, FrameStateSizeEntry]Úautomatic_dynamicN)r   r   r   ÚdataclassesÚfieldr\   rT   r   r   r   rW   rW   §   sM   € € € € € € à?P¸{Ô?PØ@Ð@ð@ñ @ô @Ðð ð ð ñ ð ð r   rW   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.
    r8   ÚdimN)r   r   r   Ú__doc__rT   r   r   r   rb   rb   ²   s%   € € € € € € ðð ð  €H€H�H€H€Hr   rb   Ú_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   rd   Útokenr   r   r   rg   rg   Ê   ó   € € € € € ðð ð
 €E€E€Er   rg   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   Nrh   r   r   r   rl   rl   Ö   rj   r   rl   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 )0rY   )Ú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(rI   )Úauto_dynamicÚ
auto_unsetr@   rb   rc   r"   )rs   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 rE   r   )Ú.0rs   ry   s     €r   ú	<genexpr>zCFrameStateSizeEntry.render.<locals>.render_tuple.<locals>.<genexpr>ü   s-   øè è € Ð"@Ð"@¸ = =°Ñ#3Ô#3Ð"@Ð"@Ð"@Ð"@Ð"@Ð"@r   ú])Újoin)rz   ry   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)})rs   rt   r#   r"   )rz   r{   r#   r"   )rp   rw   rq   ro   r@   Útuple)rB   rƒ   ry   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 rE   )r@   ro   ÚtorchÚSymIntrp   r„   rq   )rB   rs   Ús1s      r   Ú__post_init__z!FrameStateSizeEntry.__post_init__  sÊ   € Ý˜dœk­5¬<Ñ8Ô8ÐEÐE¸$¼+ÑEÔEÐEÝ�d”i¥Ñ'Ô'ð 	:Ø”Yð :ð :�Ý% a­¬Ñ6Ô6Ð9Ð9¸Ñ9Ô9Ð9Ð9Ý�d”k¥5Ñ)Ô)ð 	<Ø”kð <ð <�Ý% b­%¬,Ñ7Ô7Ð;Ð;¸Ñ;Ô;Ð;Ð;ð	<ð 	<ð<ð <r   rc   r8   r>   c                ój   — | j         t          u rdS | j         t          u rdS | j         |         t          u S )NTF)rp   rw   rx   ©rB   rc   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 rE   )Útyper8   )r   rs   s     r   r€   z8FrameStateSizeEntry.is_stride_dynamic.<locals>.<genexpr>,  s,   è è € Ð0SÐ0SÀAµ°a±´½C°Ð0SÐ0SÐ0SÐ0SÐ0SÐ0Sr   FT)r@   rp   r„   Úallrq   rw   rx   r�   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 rE   )r@   rˆ   r‰   rw   )r   Úxs     r   r€   z4FrameStateSizeEntry._munge_symint.<locals>.<genexpr>7  s7   è è € ÐTÐTÈA¥Z°µ5´<Ñ%@Ô%@ÐG•\�\ÀaÐTÐTÐTÐTÐTÐTr   )r„   )r”   s    r   Ú_munge_symintz!FrameStateSizeEntry._munge_symint5  s    € åÐTÐTÐQSÐTÑTÔTÑTÔTÐTr   r™   c                ó:   — t          |t          t          ¬¦  «        S ©N)ro   rp   rq   )rY   rw   )Úclsr™   s     r   Úmake_scalarzFrameStateSizeEntry.make_scalar9  s   € å"¨!µ,Å|ÐTÑTÔTÐTr   c                ó|   — t          t          |                      |¦  «        |                      |¦  «        ¬¦  «        S rœ   )rY   rw   rš   )r�   rp   rq   s      r   Úmake_tensorzFrameStateSizeEntry.make_tensor=  s@   € õ #ÝØ×"Ò" 4Ñ(Ô(Ø×$Ò$ VÑ,Ô,ð
ñ 
ô 
ð 	
r   c                ó`   — t          t          |                      |¦  «        t          ¬¦  «        S rœ   )rY   rx   rš   )r�   rp   s     r   Ú	make_sizezFrameStateSizeEntry.make_sizeG  s0   € å"ÝØ×"Ò" 4Ñ(Ô(Ýð
ñ 
ô 
ð 	
r   re   Ú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 rE   )rx   rw   )r™   r£   s     r   Ú_merge_atomzFrameStateSizeEntry._merge_atomO  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 rE   )r¦   )r   r™   r£   r�   s      €r   r€   z6FrameStateSizeEntry._merge_atom_tup.<locals>.<genexpr>g  s5   øè è € ÐCÐC©t¨q°!�S—_’_ Q¨Ñ*Ô*ÐCÐCÐCÐCÐCÐCr   )rx   rw   Úlenr„   Úzip)r�   r”   r¨   s   `  r   Ú_merge_atom_tupz#FrameStateSizeEntry._merge_atom_tupY  sˆ   ø€ ð •ÐÐØˆIØ•ÐÐØˆIØ•ÐÐ ¥|Ð!3Ð!3ÝÐÝˆr‰7Œ7•c˜"‘g”gÒÐÝÐÝÐCÐCÐCÐCµs¸2¸r±{´{ÐCÑCÔCÑCÔCÐCr   r<   r
   c                óä   — |                       | j        |j        ¦  «        | _        |                      | j        |j        ¦  «        | _        |                      | j        |j        ¦  «        | _        | S rE   )r¦   ro   r®   rp   rq   rA   s     r   Ú__ior__zFrameStateSizeEntry.__ior__i  sX   € Ø×&Ò& t¤{°E´LÑAÔAˆŒØ×(Ò(¨¬°E´JÑ?Ô?ˆŒ	Ø×*Ò*¨4¬;¸¼ÑEÔEˆŒØˆr   NrS   ©r#   r†   )rc   r8   r#   r>   )r”   r•   r#   r–   )r™   r8   r#   rY   )rp   r•   rq   r•   r#   rY   )rp   r•   r#   rY   )r™   re   r£   re   r#   r¤   )r”   r§   r¨   r§   r#   r©   )r<   r
   r#   r
   )r   r   r   r]   r^   rx   ro   rT   rp   rq   r…   r‹   rŽ   r“   rU   rš   Úclassmethodrž   r    r¢   r¦   r®   r°   r   r   r   rY   rY   â   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   rY   F©Úis_unspecialized_nn_moduleÚtxr   r:   Úentryr´   r>   c          
     ó6  ‡‡‡
— t                                | j        ¦  «        }t          ¦   «         |         }t          j        j        j        �r‹‰|j        v }|j        ‰         }t          j	        |¦  «        Š
|‰z  }|r“‰
j
        |j
        k    rƒt                               d‰‰j
        ‰
j
        ¦  «         t          j        d‰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|	¦  «         Œ1nN |ddd¦  «         n@|j        ‰         Š
t                               d‰‰
j
        ‰j
        ¦  «         ‰|j        ‰<   ‰}|S )Nz%automatic dynamic int %s val %s != %sr\   ro   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#   r†   c           
     óX  •— |€t          ‰| ¦  «        nt          ‰| ¦  «        |         }|€t          ‰| ¦  «        nt          ‰| ¦  «        |         }t                               d| ‰|||¦  «         t          j        d‰|€dn||t          |¦  «        t          |¦  «        dœ¦  «         d S )Nz#automatic dynamic %s %s %s %s != %sr\   r’   r¸   )ÚgetattrÚlogÚdebugr   Úinstantr"   )	r½   r¾   r¿   rÀ   Ú	entry_tupÚold_entry_tupr¶   r:   Ú	old_entrys	         €€€r   Úlog_tupz)update_automatic_dynamic.<locals>.log_tupš  sÝ   ø€ ð -.¨I•˜˜xÑ(Ô(Ð(½7À5È(Ñ;SÔ;SÐTUÔ;Vð ð
 �9õ ˜	 8Ñ,Ô,Ð,å˜Y¨Ñ1Ô1°!Ô4ð õ
 �IŠIØ5ØØØàØñô ð õ Ô&Ø#à Ø,-¨I 5 5¸1Ø)Ý! -Ñ0Ô0Ý˜y™>œ>ðð ñ	ô 	ð 	ð 	ð 	r   rp   rc   zdimensionality changezsize(rI   zsize changer<   rq   zstride(zstride changez9automatic dynamic is off, overwriting int %s val %s -> %srE   )
r½   r"   r¾   r"   r¿   r"   rÀ   rÁ   r#   r†   )r6   rR   Úf_codeÚget_code_staterˆ   Ú_dynamoÚconfigÚautomatic_dynamic_shapesr\   Úcopyro   rÄ   rÅ   r   rÆ   r"   Úinforp   r@   r„   r¬   Úrangerq   )rµ   r:   r¶   r´   Úcode_idÚframe_stateÚ	is_updateÚ	mut_entryrÊ   rÀ   rÉ   s    ``       @r   Úupdate_automatic_dynamicr×   p  s}  øøø€ õ �kŠk˜"œ)Ñ$Ô$€GÝ Ñ"Ô" 7Ô+€KÝ„}ÔÔ4ñ ^Ø˜KÔ9Ð9ˆ	ØÔ1°$Ô7ˆ	Ý”I˜iÑ(Ô(ˆ	Ø�UÑˆ	ð ð 	˜Ô)¨YÔ-=Ò=Ð=Ý�IŠIØ7ØØ”ØÔ ñ	ô ð õ Ô&Ø#à Ø#+Ø-Ý! )Ô"2Ñ3Ô3Ý˜uœ|Ñ,Ô,ðð ñ	ô 	ð 	ð *ð Ý—’ðOð ñ	ô ð ð TXð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð> ð 		2˜œ¨9¬>Ò9Ð9Ý˜)œ.­%Ñ0Ô0ð 2µZÀÄ
ÍEÑ5RÔ5Rð 2Ý�y”~Ñ&Ô&­#¨e¬j©/¬/Ò9Ð9Ø�G˜F EÐ+BÑCÔCÐCÐCå"¥3 u¤z¡?¤?Ñ3Ô3ð Lð L˜Ø$œ>¨!Ô,°´
¸1´Ò=Ð=Ø#˜G F¨L°A¨L¨L¨L¸-ÈÑKÔKÐKøðLð �˜ ¨Ñ1Ô1Ð1àð 		4˜Ô)¨YÔ-=Ò=Ð=Ý˜)Ô*­EÑ2Ô2ð 4µzÀ%Ä,ÕPUÑ7VÔ7Vð 4Ý�yÔ'Ñ(Ô(­C°´Ñ,=Ô,=Ò=Ð=Ø�G˜H eÐ-DÑEÔEÐEÐEå"¥3 u¤|Ñ#4Ô#4Ñ5Ô5ð Rð R˜Ø$Ô+¨AÔ.°%´,¸q´/ÒAÐAØ#˜G H¨n¸¨n¨n¨n¸oÈqÑQÔQÐQøðRð �˜ '¨7Ñ3Ô3Ð3øàÔ1°$Ô7ˆ	Ý�	Š	ØGØØÔØŒLñ		
ô 	
ð 	
ð /4ˆÔ% dÑ+Øˆ	àÐ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_stater\   )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_cachesú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.rJ   )rˆ   Ú	_inductorrÎ   Ú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| › d�¦  «        }t          j                              |¦   «         d|¦  «        S )	Nz'automatic_dynamic_local_pgo not enabledr   )Ú	cache_dirz[<>:"/\\|?*]Ú_Úcode_state_z.pklÚdynamo)rˆ   rÍ   rÎ   Úautomatic_dynamic_local_pgorÄ   rÅ   Ú%torch._inductor.runtime.runtime_utilsrø   ÚreÚsubr'   r(   r‚   )rö   rø   Úcode_state_keys      r   Úcode_state_pathr  -  sy   € ÝŒ=ÔÔ;ð Ý�	Š	Ð;Ñ<Ô<Ð<Øˆtà?Ð?Ð?Ð?Ð?Ð?å”V˜O¨SÐ2OÀ	Ð2OÐ2OÐ2OÑPÔP€NÝŒ7�<Š<˜	˜	™œ X¨~Ñ>Ô>Ð>r   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)rˆ   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	  8  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  O  sK   € Ø9Ð9Ð9Ð9Ð9Ð9å-Ñ/Ô/ð Øˆtàˆ<ØÝ‰ŒØ Øñ	ô ð r   Ú
code_stateúOrderedSet[str]c                ó  — t          ¦   «         }| j                             ¦   «         D ]Y\  }}d}t          |j        t
          ¦  «        rt          |j        v }n|j        t          k    rd}|r|                     |¦  «         ŒZ|S )NFT)	r   r\   Úitemsr@   rp   r„   rw   ro   Úadd)r  Údynamic_sourcesÚsrcÚfsÚdynamics        r   Ú_collect_dynamic_sourcesr  ]  s‰   € Ý'1¡|¤|€OØÔ/×5Ò5Ñ7Ô7ð %ð %‰ˆˆRØˆÝ�b”g�uÑ%Ô%ð 	Ý" b¤gÐ-ˆGˆGØŒY�,Ò&Ð&ØˆGØð 	%Ø×Ò Ñ$Ô$Ð$øØÐr   rË   rM   r†   c                ó2  — t                                | ¦  «        }t          ¦   «         |         }d                     t	          |¦  «        ¦  «        }|rDt          dx}d¬¦  «        5  t          j        ||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S d S )Nú,zpgo.dynamic_whitelistT©Úlog_pt2_compile_event)Úrecompile_dynamic_whitelist)r6   rR   rÌ   r‚   r  r   r   Úpt2_compile)rË   rÓ   rÔ   Úframe_whitelistr:   s        r   Úlog_frame_dynamic_whitelistr#  j  sì   € Ý�kŠk˜&Ñ!Ô!€GÝ Ñ"Ô" 7Ô+€KØ—h’hÕ7¸ÑDÔDÑEÔE€OØð ÝÐ"9Ð9˜$ÐQUÐVÑVÔVð 	ð 	ÝÔ*Ø°/ðñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ðð s   Á&B
Â
BÂBÚcsúdefaultdict[CodeId, CodeState]c                ó2  — d                      d„ |                      ¦   «         D ¦   «         ¦  «        }t          ¦   «         }|                      ¦   «         D ]$}|                     t          |¦  «        ¦  «         Œ%|r|dd                      |¦  «        › d�z  }|S )Nú
c              3  ó”   K  — | ]C\  }}|› d �d                      d„ |j                             ¦   «         D ¦   «         ¦  «        z   V — ŒDdS )z:
r'  c              3  óP   K  — | ]!\  }}d |› d|                      ¦   «         › �V — Œ"dS )z  z: N)r…   )r   r  r  s      r   r€   z.render_code_state.<locals>.<genexpr>.<genexpr>x  sP   è è € ð 
ð 
Ù*1¨#¨rÐ%�Ð%Ð%˜Ÿ	š	™œÐ%Ð%ð
ð 
ð 
ð 
ð 
ð 
r   N)r‚   r\   r  )r   ÚkÚvs      r   r€   z$render_code_state.<locals>.<genexpr>v  sƒ   è è € ð ð ñ
 ˆAˆqð	 ˆ	ˆ	ˆ	Ø
�)Š)ð 
ð 
Ø56Ô5H×5NÒ5NÑ5PÔ5Pð
ñ 
ô 
ñ 
ô 
ñ	
ðð ð ð ð ð r   z°

PGO detected a recompilation due to dynamic shapes. To reduce shape recompilations by compiling dynamically to start, set environment variable TORCH_COMPILE_DYNAMIC_SOURCES="r  ú")r‚   r  r   ÚvaluesÚupdater  )r$  Úcode_state_strr  Ústates       r   Úrender_code_stater1  u  sÁ   € Ø—Y’Yð ð ð
 —H’H‘J”Jðñ ô ñ ô €Nõ (2¡|¤|€OØ—’‘”ð @ð @ˆØ×ÒÕ7¸Ñ>Ô>Ñ?Ô?Ð?Ð?Øð 
ØðdàGJÇxÂxÐP_ÑG`ÔG`ðdð dð dñ	
ˆð
 Ðr   c                  óf   — e Zd Zed	d„¦   «         Zeed
d„¦   «         ¦   «         Zedd„¦   «         ZdS )ÚPGOCacheArtifactr#   r†   c                óh   — t          |                      | j        ¦  «        | j        ¦  «        }|€J ‚d S rE   )Úwrite_local_implÚ!_rewrite_cache_key_for_mega_cacheÚkeyr0   )rB   Úmetas     r   Úpopulate_cachezPGOCacheArtifact.populate_cache‹  s<   € åØ×2Ò2°4´8Ñ<Ô<¸d¼lñ
ô 
ˆð ÐÐÐÐÐr   r"   c                 ó   — dS )NÚpgor   r   r   r   r‘   zPGOCacheArtifact.type’  s	   € ð ˆur   Úoriginal_keyc                óX   — |                       d¦  «        s| S t          ¦   «         x}�|S | S )zø
        The PGO cache artifact key for a MAST job contains the job name and the version.
        When we want to use the cache artifact on a different MAST job, we need to
        update the key to use the new MAST job's name and version.
        râ   )rì   rõ   )r<  Únew_keys     r   r6  z2PGOCacheArtifact._rewrite_cache_key_for_mega_cache—  s:   € ð ×&Ò& wÑ/Ô/ð 	 àÐÝ$‘”Ð&ˆGÐ3ØˆNØÐr   Nr±   rS   )r<  r"   r#   r"   )r   r   r   r	   r9  rU   r‘   r6  r   r   r   r3  r3  ‰  s|   € € € € € àð ð  ð  ñ „Xð ð Øðð ð ñ „\ñ „Xðð ðð ð ñ „\ðð ð r   r3  c                 óø  ‡	— t           �t           S t          t          ¦  «        a t          ¦   «         } | €t           S dˆ	fd„}t	          | ¦  «        Š	‰	��Xt
          j                             ‰	¦  «        �r8t          dx}d¬¦  «        5  t          j
        || ¬	¦  «         t          ‰	d
¦  «        5 }	 |                     ¦   «         }t          j        |¦  «        a t          j
        ||                     ¦   «         ¬¦  «         t!          j        t$                               ¦   «         | |¦  «          |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/          ¦   «         }|��–t          dx}dd¬¦  «        5  t          j
        || ¬	¦  «         	 |                     | ¦  «        }|�ó	 t3          |t4          ¦  «        sJ ‚|d         }t3          |t6          ¦  «        sJ ‚t9          j        |¦  «        }t          j
        |t=          |¦  «        ¬¦  «         t          j        |¦  «        a t!          j        t$                               ¦   «         | |¦  «          |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          dd¦  «         t          j	        t          ¦  «        a
t          S )Nz$get_code_state %s hit %s, %d entriesÚget_Ú_code_stateÚstringc                 ó*   — t          t          ¦  «        S rE   ©r1  r`   r   r   r   rZ   z-get_code_state.<locals>.hit.<locals>.<lambda>¹  ó   € Õ%¥kÑ2Ô2€ r   r;  T)r@   r`   r   rÄ   rÑ   r¬   r   r   rÐ   Údeepcopyr_   )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ñ	
ô 	
ð 	
õ
 	˜˜tÑ$Ô$Ð$Ýœ=­Ñ5Ô5ÐÝÐr   zpgo.get_local_code_stateTr  ©rö   r%   ©Úcache_size_bytesÚlocalz&get_code_state failed while reading %s)Úexc_infozpgo.get_remote_code_stateÚ!pgo_get_remote_code_state_time_us©r  Údynamo_compile_column_usÚ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   rW   rõ   r  r'   r(   r)   r   r   r!  r*   r+   ÚpickleÚloadsÚtellr   Úrecord_artifactr3  r‘   Ú	ExceptionrÄ   Úwarningr  Úgetr@   Údictr"   Úbase64Ú	b64decoder¬   rÑ   )
rö   rI  r:   Úfr0   Úremote_cacheÚ
cache_datarR  Úpayloadr(   s
            @r   rÌ   rÌ   ¦  s  ø€ åÐÝÐõ �iÑ(Ô(€Kå‘”€IØÐÝÐðð ð ð ð ð õ ˜9Ñ%Ô%€DØÑ�BœGŸNšN¨4Ñ0Ô0ÑÝØ.Ð.ˆDÀdð
ñ 
ô 
ð 	(ð 	(õ Ô*¨4¸9ÐEÑEÔEÐEõ �d˜DÑ!Ô!ð ( Qð(ØŸfšf™hœh�GÝ"(¤,¨wÑ"7Ô"7�KÝ&Ô2°4È!Ï&Ê&É(Ì(ÐSÑSÔSÐSõ )Ô8Ý(×-Ò-Ñ/Ô/°¸Gñô ð ð ˜3˜w™<œ<ð(ð (ð (ð (ñ (ô (ð (ð	(ð 	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(øõ !ð ð ð Ý—K’KØ@À$ÐQUð  ñ ô ð ð ð ðøøøðð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(õ, $Ñ%Ô%€LØÑÝØ/Ð/ˆDØ"&Ø%Hð
ñ 
ô 
ð $	Lð $	Lõ
 Ô*¨4¸9ÐEÑEÔEÐEðLØ)×-Ò-¨iÑ8Ô8�
ð Ð)ð-Ý)¨*µdÑ;Ô;Ð;Ð;Ð;Ø)¨&Ô1˜Ý)¨$µÑ4Ô4Ð4Ð4Ð4Ý"(Ô"2°4Ñ"8Ô"8˜Ý*Ô6Ø µ3°w±<´<ðñ ô ð õ '-¤l°7Ñ&;Ô&;˜õ -Ô<Ý,×1Ò1Ñ3Ô3°YÀñô ð ð  #˜s 8™}œ}ðE$	Lð $	Lð $	Lð $	Lñ $	Lô $	Lð $	Lð $	Løõ0 %ð ð ð ÝŸšØOØ%Ø%)ð $ñ ô ð ð ð ðøøøõ —H’HÐ?ÀÑKÔKÐKÐKøõ7 ð ð ð Ý—’Ø=¸yÐSWð ñ ô ð ð ð ðøøøð$	Lð $	Lð $	Lñ $	Lô $	Lð $	Lð $	Lð $	Lð $	Lð $	Lð $	Løøøð $	Lð $	Lð $	Lð $	LõL ‡H‚HÐ+Ñ,Ô,Ð,åÐ"Ð"Ð"ÝÐs¼   Â'F Â-F	Â/AEÃ?7F	Ä6F Å'E9Å6F	Å8E9Å9F	Å=F Æ	F	ÆF ÆF	ÆF Æ F$Æ'F$ÇMÇ(LÇ=MÈ BKÊ7MË'K/Ë,MË.K/Ë/MÌ'L8Ì5MÌ7L8Ì8MÍMÍM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Ñ   r_   rõ   Úput_local_code_stateÚput_remote_code_staterJ  s    r   Úput_code_statere    s�   € ÝÐÝ�ŠÐDÑEÔEÐEØˆåÕ&Ò&Ð&Ý�ŠÐ6Ñ7Ô7Ð7Øˆå‘”€IØÐÝ�ŠÐ9Ñ:Ô:Ð:Øˆå˜Ñ#Ô#Ð#Ý˜)Ñ$Ô$Ð$Ð$Ð$r   Úpickled_codeÚbytesúOptional[tuple[str, int]]c                óÖ  — t          | ¦  «        }|€d S |dz   }|dz   }ddlm} t          j        t          j                             |¦  «        d¬¦  «          ||t          ¬¦  «        5  t          |d¦  «        5 }| 	                    |¦  «         | 
                    ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j        ||¦  «         d d d ¦  «         n# 1 swxY w Y   ||fS )	Nz.tmpz.lockr   )ÚFileLockT)Úexist_ok)ÚtimeoutÚwb)r  Útorch.utils._filelockrj  r'   Úmakedirsr(   ÚdirnameÚLOCK_TIMEOUTr*   ÚwriterV  Úreplace)rö   rf  r(   Útmp_pathÚ	lock_pathrj  r^  rp   s           r   r5  r5    so  € Ý˜9Ñ%Ô%€Dà€|Øˆtð
 �f‰}€HØ�w‘€Ið /Ð.Ð.Ð.Ð.Ð.å„K•”—’ Ñ%Ô%°Ð5Ñ5Ô5Ð5à	ˆ�)¥\Ð	2Ñ	2Ô	2ð #ð #Ý�(˜DÑ!Ô!ð 	 QØ�GŠG�LÑ!Ô!Ð!Ø—6’6‘8”8ˆDð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ 	Œ
�8˜TÑ"Ô"Ð"ð	#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð
 �ˆ:Ðs6   Á)CÁ:*B0Â$CÂ0B4	Â4CÂ7B4	Â8CÃC Ã#C c                óR  — t          dx}d¬¦  «        5  t          j        || ¬¦  «         t          €J ‚t	          j        t          ¦  «        }t          j        t           	                    ¦   «         | |¦  «         t          | |¦  «        }|€(t                               d¦  «         	 d d d ¦  «         d S |\  }}t          j        ||¬¦  «         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_local_code_stateTr  rJ  z$put_code_state: local cache disabledrK  z*put_code_state: wrote local %s, %d entriesrc  rD  c                 ó*   — t          t          ¦  «        S rE   rF  r   r   r   rZ   z&put_local_code_state.<locals>.<lambda>G  rG  r   )r   r   r!  r`   rT  Údumpsr   rW  r3  r‘   r5  rÄ   rÑ   r¬   r   )rö   r:   rf  r8  r(   rp   s         r   rc  rc  1  s‹  € Ý	Ð8Ð8�dÐPTÐ	UÑ	UÔ	Uð 
ð 
ÝÔ& t°yÐAÑAÔAÐAÝÐ&Ð&Ð&å”|¥KÑ0Ô0ˆåÔ,Ý×!Ò!Ñ#Ô# Y°ñ	
ô 	
ð 	
õ   	¨<Ñ8Ô8ˆØˆ<Ý�HŠHÐ;Ñ<Ô<Ð<Øð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð ‰
ˆˆdåÔ& t¸dÐCÑCÔCÐCÝ�ŠÐ=¸tÅSÍÑEUÔEUÑVÔVÐVÝ!Ø"ØØ2Ð2ñ	
ô 	
ð 	
ð%
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   ”BDÂ4ADÄD Ä#D c                ó„  — t          dx}dd¬¦  «        5  t          j        || ¬¦  «         t          €J ‚t	          ¦   «         }|€(t
                               d¦  «         	 d d d ¦  «         d S t          j        t          ¦  «        }t          j        |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_stateTÚ!pgo_put_remote_code_state_time_usrP  rJ  z%put_code_state: remote cache disabledrK  rR  Úasciiz+put_code_state: wrote remote %s, %d entriesrd  rD  c                 ó*   — t          t          ¦  «        S rE   rF  r   r   r   rZ   z'put_remote_code_state.<locals>.<lambda>g  rG  r   )r   r   r!  r`   r  rÄ   rÑ   rT  rx  r¬   r\  Ú	b64encodeÚdecodeÚputr   )rö   r:   r_  r0   r`  s        r   rd  rd  K  s«  € Ý	Ø+Ð+ˆØ"Ø!Dð
ñ 
ô 
ð 
ð 
õ
 	Ô& t°yÐAÑAÔAÐAÝÐ&Ð&Ð&å'Ñ)Ô)ˆàÐÝ�HŠHÐ<Ñ=Ô=Ð=Øð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
õ ”,�{Ñ+Ô+ˆÝÔ& t½cÀ'¹l¼lÐKÑKÔKÐKà•FÔ$ WÑ-Ô-×4Ò4°WÑ=Ô=ð"
ˆ
ð 	×Ò˜ JÑ/Ô/Ð/Ý�ŠØ9¸9ÅcÍ+ÑFVÔFVñ	
ô 	
ð 	
õ 	"Ø#ØØ2Ð2ñ	
ô 	
ð 	
ð1
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   •AD5Á-B;D5Ä5D9Ä<D9c                 ó   — d a d ad S rE   )r`   r_   r   r   r   Úreset_code_stater�  l  s   € à€KØÐÐÐr   )r!   r"   r#   r"   )
rµ   r   r:   r"   r¶   rY   r´   r>   r#   rY   )r#   rà   )rö   r"   r#   rà   )r#   r>   )r#   r
  )r  rW   r#   r  )rË   rM   r#   r†   )r$  r%  r#   r"   )r#   r%  r±   )rö   r"   rf  rg  r#   rh  )rö   r"   r#   r†   )[rd   Ú
__future__r   r\  rÐ   r]   ÚenumÚ	functoolsÚloggingr'   rT  rþ   r,   Úcollectionsr   Útypingr   r   r   r   Útyping_extensionsr	   r
   Útorch._dynamo.configrˆ   Útorch._utils_internalÚtorch.compiler.configÚtorch.distributedÚdistributedrå   Útorch._dynamo.utilsr   r   r   r   Útorch._environmentr   Útorch._logging._internalr   Útorch.compiler._cacher   r   r   Útorch.utils._ordered_setr   ÚtypesÚtorch._dynamo.symbolic_convertr   r  r   r   Ú
ValueErrorr   Ú	getLoggerr   rÄ   rq  Úcacher3   Ú	dataclassr6   rW   r_   rT   r`   rb   re   ÚEnumrg   ri   rx   rl   rw   rY   r×   rß   rõ   r  r	  r  r  r#  r1  Úregisterr3  rÌ   re  r5  rc  rd  r�  r   r   r   ú<module>r›     s™  ðð	ð 	ð 	ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð ð ð )Ð (Ð (Ð (Ð (Ð (Ø >Ð >Ð >Ð >Ð >Ð >ðð ð ð ð ð ð ð ð ð ð
 0Ð /Ð /Ð /Ð /Ð /ð ð EØ€L€L€LàDÐDÐDÐDÐDÐDØDÐDÐDÐDÐDÐDÐDÐDð	ð 	ð 	ð 	ð 	 *ñ 	ô 	ð 	ð €gÔ˜Ñ!Ô!€à€ðj „ð	ð 	ð 	ñ „ð	ð €Ô˜dÐ#Ñ#Ô#ð$
ð $
ð $
ð $
ð $
ñ $
ô $
ñ $Ô#ð$
ðN Ôðð ð ð ð ñ ô ñ Ôðð >BÐ Ð AÐ AÐ AÑ AØ8<€Ð <Ð <Ð <Ñ <ð €Ô˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð( €WˆT�]„]€ðð ð ð ð �”	ñ ô ð ð Œ_€
ðð ð ð ð �$”)ñ ô ð ð Ô €ð ÔðJð Jð Jð Jð Jñ Jô Jñ ÔðJðd (-ðið ið ið ið ið iðb (-ð+ð +ð +ð +ð +ð +ð\ð ð ð ðF?ð ?ð ?ð ?ðð ð ð ð.ð ð ð ð
ð 
ð 
ð 
ðð ð ð ðð ð ð ð( Ôðð ð ð ð �}ñ ô ñ Ôðð8]ð ]ð ]ð ]ð@%ð %ð %ð %ð$ð ð ð ð2
ð 
ð 
ð 
ð4
ð 
ð 
ð 
ðBð ð ð ð ð r   