§
    ŠŠtjåœ  ã                  óˆ  — 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 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l.m/Z/m0Z0  G d„ de1¦  «        Z2 ej3        e4¦  «        Z5 ej3        d¦  «        Z6dZ7ej8        dgd„¦   «         Z9dhd„Z:dhd„Z; ej<        d¬¦  «         G d„ d¦  «        ¦   «         Z=ej<         G d„ d ¦  «        ¦   «         Z>da?d!e@d"<   daAd!e@d#<   d$aBd%e@d&<    eC¦   «         aDd'e@d(<    ej<        d¬¦  «         G d)„ d*¦  «        ¦   «         ZE ed+¦  «        ZF G d,„ d-ejG        ¦  «        ZHeHjI        ZJ G d.„ d/ejG        ¦  «        ZKeKjI        ZLej<         G d0„ d1¦  «        ¦   «         ZMd$d2œdid8„ZNd$d2œdid9„ZOdjd;„ZPdkd=„ZQdld?„ZRdmdA„ZSdndB„ZTdodD„ZUdpdG„ZVdqdI„ZWdrdM„ZXdsdN„ZYdtdQ„ZZe'j[         G dR„ dSe&¦  «        ¦   «         Z\dudU„Z]dvdV„Z^	 dwdxdZ„Z_dvd[„Z`dyd\„Zadzd]„Zbdsd^„Zcd{db„Zddydc„Zed|d}de„Zfdsdf„ZgdS )~a  
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)ÚTYPE_CHECKINGÚTypeVar)ÚoverrideÚSelf)ÚCompileEventLoggerÚdynamo_timedÚset_feature_useÚ	warn_once)Ú	is_fbcode)Útrace_structured_artifact)ÚCacheArtifactÚCacheArtifactFactoryÚCacheArtifactRecorder)Ú
OrderedSet)ÚInstructionTranslatorBase)Ú
JsonDataTyÚRemoteCachec                  ó   — e Zd ZdS )ÚReservedWorkflowIdUserErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úO/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_dynamo/pgo.pyr   r   7   s   € € € € € Ø€Dr   r   z%torch.fx.experimental.symbolic_shapesé
   Ú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_filer1   s   sÃ   € õ Œ7�>Š>˜(Ñ#Ô#ð Øˆå	ˆh˜Ñ	Ô	ð  Ø—)’)‘+”+ˆÝ”j Ñ)Ô)ˆÝ�k JÑ.°Ñ6Ô6ˆØð	ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s   ²=A<Á<B ÂB r.   útypes.CellTypeÚobjectc                óR   — t          | ¦  «        rt          | d¦  «        r| j        S d S )NÚ__code__)ÚcallableÚhasattrr5   ©r.   s    r   Ú_get_closure_contentr9   €   s1   € Ý�ÑÔð  �W W¨jÑ9Ô9ð  ØÔÐØˆ4r   c                óN   — 	 t          | j        ¦  «        S # t          $ r Y d S w xY w©N)r9   Úcell_contentsÚ
ValueErrorr8   s    r   Ú_get_cell_hash_contentr>   †   s:   € ðÝ# GÔ$9Ñ:Ô:Ð:øÝð ð ð Øˆtˆtðøøøs   ‚ –
$£$T)Úfrozenc                  óz   — e Zd ZU ded<   ded<   ded<   ded<   dZded	<   dd„Zdd„Zdd„Ze	 ddd„¦   «         Z	dS )ÚCodeIdr    ÚfilenameÚintÚfirstlinenoÚnameÚ	file_hashNú
int | NoneÚclosure_hashÚotherr3   r!   Úboolc                ó°   — t          |t          ¦  «        sdS | j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S ©NF)Ú
isinstancerA   rF   rD   rE   rH   )ÚselfrI   s     r   Ú__eq__zCodeId.__eq__�   sc   € Ý˜%¥Ñ(Ô(ð 	Ø�5àŒN˜eœoÒ-ð 8ØÔ  EÔ$5Ò5ð8à”	˜UœZÒ'ð8ð Ô! UÔ%7Ò7ð		
r   c                óP   — t          | j        | j        | j        | j        f¦  «        S r;   )r0   rF   rE   rD   rH   ©rN   s    r   Ú__hash__zCodeId.__hash__¨   s#   € Ý�T”^ T¤Y°Ô0@À$ÔBSÐTÑUÔUÐUr   c                óF   — d| j         › d| j        › d| j        › d| j        › �S )Nzhash(ú)ú:)rF   rB   rD   rE   rQ   s    r   Ú__str__zCodeId.__str__«   s1   € ØV�t”~ÐVÐV¨¬ÐVÐV¸Ô8HÐVÐVÈ4Ì9ÐVÐVÐVr   Úcodeútypes.CodeTypeÚclosureú!tuple[types.CellType, ...] | Nonec                ó¾   — d }|r&t          t          d„ |D ¦   «         ¦  «        ¦  «        }t          | j        | j        | j        t          | j        ¦  «        |¦  «        S )Nc              3  ó4   K  — | ]}t          |¦  «        V — Œd S r;   )r>   )Ú.0Úcs     r   ú	<genexpr>zCodeId.make.<locals>.<genexpr>´   s+   è è € Ð%QÐ%QÀAÕ&<¸QÑ&?Ô&?Ð%QÐ%QÐ%QÐ%QÐ%QÐ%Qr   )r0   ÚtuplerA   Úco_filenameÚco_firstlinenoÚco_namer1   )rW   rY   rH   s      r   ÚmakezCodeId.make®   sj   € ð ˆØð 	SÝ¥Ð%QÐ%QÈÐ%QÑ%QÔ%QÑ QÔ QÑRÔRˆLåØÔØÔØŒLÝ! $Ô"2Ñ3Ô3Øñ
ô 
ð 	
r   )rI   r3   r!   rJ   )r!   rC   ©r!   r    r;   )rW   rX   rY   rZ   r!   rA   )
r   r   r   Ú__annotations__rH   rO   rR   rV   Ústaticmethodrd   r   r   r   rA   rA   Ž   s¼   € € € € € € à€M€M�MØÐÐÑØ€I€I�Ið €N€N�NØ#€LÐ#Ð#Ð#Ñ#ð
ð 
ð 
ð 
ðVð Vð Vð VðWð Wð Wð Wð àKOð
ð 
ð 
ð 
ñ „\ð
ð 
ð 
r   rA   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>Â   s   € ¥Õ,?Ñ @Ô @€ r   )Údefault_factoryz%defaultdict[str, FrameStateSizeEntry]Úautomatic_dynamicN)r   r   r   ÚdataclassesÚfieldrn   rf   r   r   r   ri   ri   ¿   sM   € € € € € € à?P¸{Ô?PØ@Ð@ð@ñ @ô @Ðð ð ð ñ ð ð r   ri   ú%defaultdict[CodeId, CodeState] | NoneÚ_INIT_CODE_STATEÚ_CODE_STATEFrJ   Ú_LOGGED_DYNAMIC_ALLOWLISTzset[str]Ú_KNOWN_DYNAMIC_SOURCESc                  ó   — 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.
    rC   ÚdimN)r   r   r   Ú__doc__rf   r   r   r   rw   rw   Ì   s%   € € € € € € ðð ð  €H€H�H€H€Hr   rw   Ú_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   ry   Útokenr   r   r   r|   r|   ä   ó   € € € € € ðð ð
 €E€E€Er   r|   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   Nr}   r   r   r   r�   r�   ð   r   r   r�   c                  ó¨  — 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<    ej        dd	¬
¦  «        Z
ded<    ej        dd	¬
¦  «        Zded<   d,d„Zd-d„Zd.d„Zd.d„Zed/d„¦   «         Zed0d„¦   «         Zed1d„¦   «         Zed2d „¦   «         Zed3d$„¦   «         Zed4d(„¦   «         Zd5d+„ZdS )6rk   )Údefaultzint | AutoDynamic | AutoUnsetÚscalarz7AutoDynamic | AutoUnset | tuple[int | AutoDynamic, ...]ÚsizezEAutoDynamic | AutoUnset | tuple[int | AutoDynamic | InferStride, ...]ÚstrideNF)rƒ   Úcompareztuple[int | None, ...] | NoneÚexcluded_sizesrG   Úexcluded_scalarr!   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t          | ¦  «        › �S )NÚsú+int | AutoDynamic | AutoUnset | InferStrider!   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(rT   )Úauto_dynamicÚ
auto_unsetrM   rw   rx   r    )r‹   s    r   Úrender_singlez1FrameStateSizeEntry.render.<locals>.render_single  sM   € Ø•LÐ Ð Ø�sØ•j��à#�|Ý˜A�{Ñ+Ô+ð Ø$˜AœE�}�}�}Ð$å˜1‘v”v�r   Ússú+tuple[int | AutoDynamic | InferStride, ...]c                óR   •— dd                      ˆfd„| D ¦   «         ¦  «        z   dz   S )Nú[z, c              3  ó.   •K  — | ]} ‰|¦  «        V — Œd S r;   r   )r]   r‹   r‘   s     €r   r_   zCFrameStateSizeEntry.render.<locals>.render_tuple.<locals>.<genexpr>  s-   øè è € Ð"@Ð"@¸ = =°Ñ#3Ô#3Ð"@Ð"@Ð"@Ð"@Ð"@Ð"@r   ú])Újoin)r’   r‘   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 )r‹   rŒ   r!   r    )r’   r“   r!   r    )r…   r�   r†   r„   rM   r`   Úrepr)rN   r™   r‘   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ð '�$˜t™*œ*Ð&Ð&Ð&r   ÚNonec                ó¤  — t          | j        t          j        ¦  «        rt	          | j        ¦  «        ‚t          | j        t          ¦  «        r3| j        D ]+}t          |t          j        ¦  «        rt	          |¦  «        ‚Œ,t          | j        t          ¦  «        r3| j        D ]-}t          |t          j        ¦  «        rt	          |¦  «        ‚Œ,d S d S r;   )rM   r„   ÚtorchÚSymIntÚAssertionErrorr…   r`   r†   )rN   r‹   Ús1s      r   Ú__post_init__z!FrameStateSizeEntry.__post_init__)  sÔ   € Ý�d”k¥5¤<Ñ0Ô0ð 	.Ý  ¤Ñ-Ô-Ð-Ý�d”i¥Ñ'Ô'ð 	,Ø”Yð ,ð ,�Ý˜a¥¤Ñ.Ô.ð ,Ý(¨Ñ+Ô+Ð+ð,å�d”k¥5Ñ)Ô)ð 	-Ø”kð -ð -�Ý˜b¥%¤,Ñ/Ô/ð -Ý(¨Ñ,Ô,Ð,ð-ð	-ð 	-ð-ð -r   rx   rC   rJ   c                ój   — | j         t          u rdS | j         t          u rdS | j         |         t          u S )NTF)r…   r�   r�   ©rN   rx   s     r   Úis_size_dynamicz#FrameStateSizeEntry.is_size_dynamic5  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;   ©ÚtyperC   ©r]   r‹   s     r   r_   z8FrameStateSizeEntry.is_stride_dynamic.<locals>.<genexpr>M  s,   è è € Ð0SÐ0SÀAµ°a±´½C°Ð0SÐ0SÐ0SÐ0SÐ0SÐ0Sr   FT)rM   r…   r`   Úallr†   r�   r�   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[AutoDynamic | int, ...]c                ó4   — t          d„ | D ¦   «         ¦  «        S )Nc              3  ó\   K  — | ]'}t          |t          j        ¦  «        rt          n|V — Œ(d S r;   )rM   rž   rŸ   r�   )r]   Úxs     r   r_   z4FrameStateSizeEntry._munge_symint.<locals>.<genexpr>X  s7   è è € ÐTÐTÈA¥Z°µ5´<Ñ%@Ô%@ÐG•\�\ÀaÐTÐTÐTÐTÐTÐTr   )r`   )r­   s    r   Ú_munge_symintz!FrameStateSizeEntry._munge_symintV  s    € åÐTÐTÐQSÐTÑTÔTÑTÔTÐTr   r²   c                ó:   — t          |t          t          ¬¦  «        S ©N)r„   r…   r†   )rk   r�   )Úclsr²   s     r   Úmake_scalarzFrameStateSizeEntry.make_scalarZ  s   € å"¨!µ,Å|ÐTÑTÔTÐTr   c                ó|   — t          t          |                      |¦  «        |                      |¦  «        ¬¦  «        S rµ   )rk   r�   r³   )r¶   r…   r†   s      r   Úmake_tensorzFrameStateSizeEntry.make_tensor^  s@   € õ #ÝØ×"Ò" 4Ñ(Ô(Ø×$Ò$ VÑ,Ô,ð
ñ 
ô 
ð 	
r   c                ó`   — t          t          |                      |¦  «        t          ¬¦  «        S rµ   )rk   r�   r³   )r¶   r…   s     r   Ú	make_sizezFrameStateSizeEntry.make_sizeh  s0   € å"ÝØ×"Ò" 4Ñ(Ô(Ýð
ñ 
ô 
ð 	
r   rz   ÚyúAutoDynamic | _Tc                óp   — | t           u r|S |t           u r| S | t          u s|t          u s| |k    rt          S | S r;   )r�   r�   )r²   r¼   s     r   Ú_merge_atomzFrameStateSizeEntry._merge_atomp  sF   € à•
ˆ?ˆ?ØˆHØ•
ˆ?ˆ?ØˆHØ•ÐÐ ¥\Ð 1Ð 1°Q¸!²V°VÝÐØˆr   ú(AutoDynamic | AutoUnset | tuple[_T, ...]Úysú6AutoDynamic | AutoUnset | tuple[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]   r²   r¼   r¶   s      €r   r_   z6FrameStateSizeEntry._merge_atom_tup.<locals>.<genexpr>ˆ  s5   øè è € ÐCÐC©t¨q°!�S—_’_ Q¨Ñ*Ô*ÐCÐCÐCÐCÐCÐCr   )r�   r�   Úlenr`   Úzip)r¶   r­   rÁ   s   `  r   Ú_merge_atom_tupz#FrameStateSizeEntry._merge_atom_tupz  sˆ   ø€ ð •ÐÐØˆIØ•ÐÐØˆIØ•ÐÐ ¥|Ð!3Ð!3ÝÐÝˆr‰7Œ7•c˜"‘g”gÒÐÝÐÝÐCÐCÐCÐCµs¸2¸r±{´{ÐCÑCÔCÑCÔCÐCr   rI   r   c                ót  — |                       | j        |j        ¦  «        }t          | j        t          ¦  «        r=|| j        k    r$t          d„ | j        D ¦   «         ¦  «        | _        n| j        �d | _        || _        t          | j        ¦  «        t          u r8t          |j        ¦  «        t          u r| j        |j        k    r| j        | _        n| j        t          u r| j        �d | _        |  
                    | j        |j        ¦  «        | _        |                       | j        |j        ¦  «        | _        | S )Nc              3  óJ   K  — | ]}t          |¦  «        t          u r|nd V — Œd S r;   r¨   rª   s     r   r_   z.FrameStateSizeEntry.__ior__.<locals>.<genexpr>”  sE   è è € ð ,ð ,Ø67�˜a™œ¥C˜˜�A�A¨Tð,ð ,ð ,ð ,ð ,ð ,r   )rÇ   r…   rM   r`   rˆ   r©   r„   rC   r‰   r�   r¿   r†   )rN   rI   Únew_sizes      r   Ú__ior__zFrameStateSizeEntry.__ior__Š  s+  € ð ×'Ò'¨¬	°5´:Ñ>Ô>ˆÝ�d”i¥Ñ'Ô'ð 	+Ø˜4œ9Ò$Ð$Ý&+ð ,ð ,Ø;?¼9ð,ñ ,ô ,ñ 'ô '�Ô#Ð#ð Ô$Ð0Ø&*�Ô#ØˆŒ	õ
 �”ÑÔ¥Ð$Ð$Ý�U”\Ñ"Ô"¥cÐ)Ð)Ø”˜uœ|Ò+Ð+à#'¤;ˆDÔ Ð ØŒ[�LÐ(Ð(¨TÔ-AÐ-MØ#'ˆDÔ Ø×&Ò& t¤{°E´LÑAÔAˆŒØ×*Ò*¨4¬;¸¼ÑEÔEˆŒØˆr   re   ©r!   rœ   )rx   rC   r!   rJ   )r­   r®   r!   r¯   )r²   rC   r!   rk   )r…   r®   r†   r®   r!   rk   )r…   r®   r!   rk   )r²   rz   r¼   rz   r!   r½   )r­   rÀ   rÁ   rÀ   r!   rÂ   )rI   r   r!   r   )r   r   r   ro   rp   r�   r„   rf   r…   r†   rˆ   r‰   r›   r¢   r¥   r¬   rg   r³   Úclassmethodr·   r¹   r»   r¿   rÇ   rË   r   r   r   rk   rk   ü   s&  € € € € € € à,=¨KÔ,=ÀjÐ,QÑ,QÔ,Q€FÐQÐQÐQÑQð EVÀKÔDUØðEñ Eô E€Dð ð ð ñ ð 	ˆÔ *Ð-Ñ-Ô-ð ð ð ð ñ ð 5F°KÔ4EØ˜eð5ñ 5ô 5€Nð ð ð ñ ð #4 +Ô"3¸DÈ%Ð"PÑ"PÔ"P€OÐPÐPÐPÑPð'ð 'ð 'ð 'ð:
-ð 
-ð 
-ð 
-ð.ð .ð .ð .ð0ð 0ð 0ð 0ð4 ðUð Uð Uñ „\ðUð ðUð Uð Uñ „[ðUð ð
ð 
ð 
ñ „[ð
ð ð
ð 
ð 
ñ „[ð
ð ðð ð ñ „\ðð ðDð Dð Dñ „[ðDðð ð ð ð ð r   rk   ©Úis_unspecialized_nn_moduleÚtxr   rE   ÚentryrÏ   c          
     óx  ‡‡‡
— t                                | j        | j        ¦  «        }t	          ¦   «         |         }t
          j        j        j        �r¦‰|j	        v }|j	        ‰         }t          j
        |¦  «        Š
|‰z  }|r®‰
j        |j        k    ržt                               d‰¦  «         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 )Nú2marking %s as dynamic (from automatic dynamic/PGO)z%automatic dynamic int %s val %s != %srn   r„   zscalar change©rE   Ú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ÚirG   r!   rœ   c           
     óŽ  •— |€t          ‰| ¦  «        nt          ‰| ¦  «        |         }|€t          ‰| ¦  «        nt          ‰| ¦  «        |         }t                               d‰¦  «         t                               d| ‰|||¦  «         t          j        d‰|€dn||t          |¦  «        t          |¦  «        dœ¦  «         d S )NrÓ   z#automatic dynamic %s %s %s %s != %srn   r«   rÔ   )ÚgetattrÚsymbolic_shape_logÚinfoÚlogÚdebugr	   Úinstantr    )	rÙ   rÚ   rÛ   rÜ   Ú	entry_tupÚold_entry_tuprÑ   rE   Ú	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ð õ
 ×#Ò#ØDØñô ð õ �IŠIØ5ØØØàØñô ð õ Ô&Ø#à Ø,-¨I 5 5¸1Ø)Ý! -Ñ0Ô0Ý˜y™>œ>ðð ñ	ô 	ð 	ð 	ð 	r   r…   rx   zdimensionality changezsize(rT   zsize changerI   r†   zstride(zstride changez9automatic dynamic is off, overwriting int %s val %s -> %sr;   )
rÙ   r    rÚ   r    rÛ   r    rÜ   rG   r!   rœ   )rA   rd   Úf_coderY   Úget_code_staterž   Ú_dynamoÚconfigÚautomatic_dynamic_shapesrn   Úcopyr„   rß   rà   rá   râ   r	   rã   r    r…   rM   r`   rÅ   Úranger†   )rÐ   rE   rÑ   rÏ   Úcode_idÚframe_stateÚ	is_updateÚ	mut_entryrç   rÜ   ræ   s    ``       @r   Úupdate_automatic_dynamicró   ª  s¢  øøø€ õ �kŠk˜"œ) R¤ZÑ0Ô0€GÝ Ñ"Ô" 7Ô+€KÝ„}ÔÔ4ñ fØ˜KÔ9Ð9ˆ	ØÔ1°$Ô7ˆ	Ý”I˜iÑ(Ô(ˆ	Ø�UÑˆ	ð ð 	˜Ô)¨YÔ-=Ò=Ð=Ý×#Ò#ØDØñô ð õ �IŠIØ7ØØ”ØÔ ñ	ô ð õ Ô&Ø#à Ø#+Ø-Ý! )Ô"2Ñ3Ô3Ý˜uœ|Ñ,Ô,ðð ñ	ô 	ð 	ð *ð Ý—’ðOð ñ	ô ð ð QUð!	ð !	ð !	ð !	ð !	ð !	ð !	ð !	ð !	ðF ð 		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        |         |¬¦  «        }Œ*|€t          d¦  «        ‚|S )NrÎ   zCexpected at least one matching automatic_dynamic entry across ranks)Údistributed_stateró   Ú
all_statesÚlocal_statern   r    )rÐ   rE   rÑ   rÏ   ÚstÚresÚ	sub_states          r   Úprocess_automatic_dynamicrû     sÇ   € ð Ô"Ð"ˆÐ+Ý'ØØØØ'Að	
ñ 
ô 
ð 	
ð 
ŒÐ	ð 27ˆŒÔ(¨Ñ.Øˆð ˆØœð 	ð 	ˆIØ�yÔ2Ð2Ð2Ý.ØØØÔ/°Ô5Ø/Ið	ñ ô �øð ˆ;Ý ØUñô ð ð ˆ
r   Úkeyc                ó¸   — d }t          j        ¦   «         r&t          j        ¦   «         rt          j        ¦   «         }t          j        j        j        }| › d|› d|› �S )NrU   )ÚdistÚis_availableÚis_initializedÚget_rankrž   Úcompilerrë   Úcache_key_tag)rü   ÚrankÚtags      r   Úformat_cache_keyr  O  s^   € ð €DÝÔÑÔð �tÔ2Ñ4Ô4ð ÝŒ}‰Œˆå
Œ.Ô
Ô
-€CØÐ Ð �DÐ Ð ˜3Ð Ð Ð r   ú
str | Nonec                 ó^  — t           j        j        j        rt	          d¦  «         d S t           j        j        j        x} �3|                      d¦  «        rt          d¦  «        ‚t          | ¦  «        S t           j	         
                    ¦   «         x}�|\  }}t          d|› d|› �¦  «        S d S )NúGdynamo_pgo force disabled by torch.compiler.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.rU   )rž   r  rë   Úforce_disable_cachesr   Újob_idÚ
startswithr   r  Ú_utils_internalÚget_mast_job_name_version)ÚrÚname_versionÚmast_job_nameÚmast_job_versions       r   Úget_cache_keyr  Z  sÈ   € å„~ÔÔ1ð ÝØUñ	
ô 	
ð 	
ð ˆtõ Œ^Ô"Ô)Ð)ˆÐ6Ø�<Š<˜Ñ Ô ð 	Ý-ð$ñô ð õ
   Ñ"Ô"Ð"åÔ-×GÒGÑIÔIÐIˆÐVØ*6Ñ'ˆÐ'ÝÐ J¨Ð JÐ JÐ8HÐ JÐ JÑKÔKÐKàˆ4r   Ú
sticky_keyc                ón   — t           j        j        j        rt	          d¦  «         d S t          | ¦  «        S )Nr	  )rž   r  rë   r  r   r  )r  s    r   Úget_extra_cache_keyr  t  s<   € Ý„~ÔÔ1ð ÝØUñ	
ô 	
ð 	
ð ˆtå˜JÑ'Ô'Ð'r   Ú	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+  Š  s¿   € Ý„~ÔÔ1ð ØˆuåŒ]Ô!Ô>Ð>ˆÐKØˆå‰;Œ;ð ØˆuåÔ×,Ò,Ñ.Ô.ð ØˆuðØHÐHÐHÐHÐHÐHÐHøÝð ð ð Øˆuˆuðøøøð  ¥5Ô#8×#MÒ#MØ1ñ$ô $ò ð s   Á$A+ Á+
A9Á8A9úRemoteCache[JsonDataTy] | Nonec                 ó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_cacher3  ¡  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   rn   ÚitemsrM   r…   r`   r�   r„   Úadd)r4  Ú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   Úall_sourcesc                óÂ   — ddl m} t          ¦   «         }| D ]G}|t          v rŒ ||¦  «        rt                               |¦  «         Œ2|                     |¦  «         ŒH|S )Nr   )Úis_dynamic_source)Útorch._dynamo.variables.builderr@  r   ru   r8  )r>  r@  Úmissing_sourcesr:  s       r   Ú_collect_missing_sourcesrC  ¼  s„   € ØAÐAÐAÐAÐAÐAõ (2¡|¤|€OØð !ð !ˆØÕ(Ð(Ð(ØØÐ˜sÑ#Ô#ð 	Ý"×&Ò& sÑ+Ô+Ð+ØØ×Ò˜CÑ Ô Ð Ð ØÐr   rè   rX   rœ   c                ó~  — t                                | d ¦  «        }t          ¦   «         |         }t          |¦  «        }d                     |¦  «        }d                     t          |¦  «        ¦  «        }|rEt          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Úmissing_dynamic_whitelist)	rA   rd   ré   r=  r˜   rC  r
   r	   Úpt2_compile)rè   rï   rð   Úall_dynamic_sourcesÚframe_whitelistÚmissing_whitelistrE   s          r   Úlog_frame_dynamic_whitelistrN  Ë  s  € å�kŠk˜& $Ñ'Ô'€GÝ Ñ"Ô" 7Ô+€KÝ2°;Ñ?Ô?ÐØ—h’hÐ2Ñ3Ô3€OØŸšÕ!9Ð:MÑ!NÔ!NÑOÔOÐØð ÝÐ"9Ð9˜$ÐQUÐVÑVÔVð 	ð 	ÝÔ*ØØ,;Ø*;ðñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ðð s   ÂB0Â0B4Â7B4c                 ó`   — t           s&t          j                             ddd¬¦  «         da d S d S )NÚdynamic_shapes_analysisz$Dynamic shape recompilation detectedz PGO detected a recompilation due to dynamic shapes.             Please follow the instruction from the action link to reduce             recompilation overhead.)ÚcategoryÚinsightÚinsight_descriptionT)rt   rž   r  Úadd_mlhub_insightr   r   r   Ú_log_size_mismatch_recompilerU  Û  sM   € å$ð 	)ÝÔ×/Ò/Ø.Ø:ð!%ð 	0ñ 	
ô 	
ð 	
ð %)Ð!Ð!Ð!ð	)ð 	)r   Ú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:
rY  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>ì  sP   è è € ð 
ð 
Ù*1¨#¨rÐ%�Ð%Ð%˜Ÿ	š	™œÐ%Ð%ð
ð 
ð 
ð 
ð 
ð 
r   N)r˜   rn   r7  )r]   ÚkÚvs      r   r_   z$render_code_state.<locals>.<genexpr>ê  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="rE  ú")r˜   r7  r   ÚvaluesÚupdater=  )rV  Úcode_state_strr9  Ústates       r   Úrender_code_staterc  é  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                ó‚   — t          |                      | j        ¦  «        | j        ¦  «        }|€t	          d¦  «        ‚d S )Nz:write_local_impl returned None during PGO cache population)Úwrite_local_implÚ!_rewrite_cache_key_for_mega_cacherü   r.   r    )rN   Úmetas     r   Úpopulate_cachezPGOCacheArtifact.populate_cacheÿ  sK   € åØ×2Ò2°4´8Ñ<Ô<¸d¼lñ
ô 
ˆð ˆ<Ý Ø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  )rm  Únew_keys     r   rh  z2PGOCacheArtifact._rewrite_cache_key_for_mega_cache  s:   € ð ×&Ò& wÑ/Ô/ð 	 àÐÝ$‘”Ð&ˆGÐ3ØˆNØÐr   NrÌ   re   )rm  r    r!   r    )r   r   r   r   rj  rg   r©   rh  r   r   r   re  re  ý  s|   € € € € € àðð ð ñ „Xðð Øðð ð ñ „\ñ „Xðð ðð ð ñ „\ðð ð r   re  Útyc                óh  — t          t          t          ¦  «        s$t          dt	          t          ¦  «        › �¦  «        ‚t
                               d| |t          t          ¦  «        ¦  «         t          d|› d�dd„ ¦  «         t          dd¦  «         t          j        t          ¦  «        at          S )	Nz.expected _CODE_STATE to be a defaultdict, got z$get_code_state %s hit %s, %d entriesÚget_Ú_code_stateÚstringc                 ó*   — t          t          ¦  «        S r;   ©rc  rs   r   r   r   rl   zhit.<locals>.<lambda>'  s   € Õ!¥+Ñ.Ô.€ r   rl  T)rM   rs   r   r    r©   rá   rà   rÅ   r   r   rí   Údeepcopyrr   )rü   rp  s     r   Úhitrx    s­   € å•k¥;Ñ/Ô/ð 
ÝØP½TÅ+Ñ=NÔ=NÐPÐPñ
ô 
ð 	
õ ‡H‚HÐ3°S¸"½cÅ+Ñ>NÔ>NÑOÔOÐOÝØˆrÐÐÐØØ.Ð.ñô ð õ
 �E˜4Ñ Ô Ð Ý”}¥[Ñ1Ô1ÐÝÐr   c                óþ  — t          | ¦  «        }|��jt          j                             |¦  «        �rJt	          dx}d¬¦  «        5  t          j        || ¬¦  «         t          |d¦  «        5 }	 |                     ¦   «         }t          j
        |¦  «        at          j        ||                     ¦   «         ¬¦  «         t          t                               ¦   «         | ¦  «                             |¦  «         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   d S )
Nzpgo.get_local_code_stateTrF  ©r  r#   ©Úcache_size_bytesÚlocalz&get_code_state failed while reading %s©Úexc_info)r#  r%   r&   r'   r
   r	   rJ  r(   r)   ÚpickleÚloadsrs   Útellr   re  r©   Úrecordrx  Ú	Exceptionrá   Úwarning)r  r&   rE   Úfr.   s        r   Úget_local_code_stater‡  .  s;  € å˜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õ *Õ*:×*?Ò*?Ñ*AÔ*AÀ9ÑMÔM×TÒTØñô ð õ ˜t WÑ-Ô-ð.ð .ð .ð .ñ .ô .ð .ð	.ð 	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.øõ !ð ð ð Ý—K’KØ@À$ÐQUð  ñ ô ð ð ð ðøøøðð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð( ˆ4sb   Á'E2Á-EÁ/AD!Â?A	EÄE2Ä!'EÅEÅ
EÅEÅE2ÅE	ÅE2Å"E	Å#E2Å2E6Å9E6Úremote_cacheúRemoteCache[JsonDataTy]Ú
event_namec                ó  — d }	 |                       |¦  «        }|��&	 t          |t          ¦  «        st          dt	          |¦  «        › �¦  «        ‚|d         }t          |t
          ¦  «        st          dt	          |¦  «        › �¦  «        ‚t          j        |¦  «        }|�#t          j	        |t          |¦  «        ¬¦  «         t          j        |¦  «        }t          t                               ¦   «         |¦  «                             |¦  «         nv# t           $ r  t"                               d|d¬¦  «         Y nMw xY wt"                               d|¦  «         n-# t           $ r  t"                               d	|d¬¦  «         Y nw xY w|S )
Nz&expected cache_data to be a dict, got Údataz-expected cache_data['data'] to be a str, got r{  z1get_code_state failed parsing remote result on %sTr~  z get_code_state remote miss on %sz'get_code_state failed remote read on %s)ÚgetrM   Údictr    r©   r    Úbase64Ú	b64decoder	   rJ  rÅ   r€  r�  r   re  rƒ  r„  rá   r…  rà   )rˆ  r  rŠ  r4  Ú
cache_datarŒ  Úpayloads          r   Úlookup_remote_cache_entryr“  I  sÝ  € ð
 €Jð!DØ!×%Ò% iÑ0Ô0ˆ
ð Ñ!ðÝ! *­dÑ3Ô3ð Ý(ØSÅÀjÑAQÔAQÐSÐSñô ð ð " &Ô)�Ý! $­Ñ,Ô,ð Ý(ØTÍÈTÉ
Ì
ÐTÐTñô ð õ !Ô*¨4Ñ0Ô0�ØÐ)Ý&Ô2Ø"µS¸±\´\ðñ ô ð õ $œ\¨'Ñ2Ô2�
õ &Õ&6×&;Ò&;Ñ&=Ô&=¸yÑIÔI×PÒPØñô ð ð øõ ð ð ð Ý—’ØGØØ!ð ñ ô ð ð ð ðøøøõ �HŠHÐ7¸ÑCÔCÐCÐCøõ? ð Yð Yð YÝ�ŠÐ=¸yÐSWˆÑXÔXÐXÐXÐXðYøøøð@ Ðs#   „E �B=D Ä'D?Ä>D?Å'FÆFc                ó  — t          ¦   «         }|�tt          dx}dd¬¦  «        5  t          j        || ¬¦  «         t	          || |¦  «        }|�|at          | d¦  «        cd d d ¦  «         S 	 d d d ¦  «         n# 1 swxY w Y   d S )Nzpgo.get_remote_code_stateTÚ!pgo_get_remote_code_state_time_us©rG  Údynamo_compile_column_usrz  Úremote)r3  r
   r	   rJ  r“  rs   rx  ©r  rˆ  rE   r4  s       r   Úget_remote_code_staterš  t  s   € å#Ñ%Ô%€LØÐÝØ/Ð/ˆDØ"&Ø%Hð
ñ 
ô 
ð 		0ð 		0õ
 Ô*¨4¸9ÐEÑEÔEÐEÝ2°<ÀÈDÑQÔQˆJØÐ%Ø(�Ý˜9 hÑ/Ô/ð		0ð 		0ð 		0ð 		0ñ 		0ô 		0ð 		0ð 		0ð &ð		0ð 		0ð 		0ñ 		0ô 		0ð 		0ð 		0ð 		0ð 		0ð 		0ð 		0øøøð 		0ð 		0ð 		0ð 		0ð ˆ4s   ¥;A:Á:A>ÂA>c                ó´  ‡— t           €t          d¦  «        ‚t          ¦   «         }|�°t          dx}dd¬¦  «        5  t	          j        || ¬¦  «         t          || ¦  «        Št                               d| ‰�t          ‰¦  «        nd	¦  «         ‰�,t           rt          d
¦  «        ‚‰a t          ddˆfd„¦  «         ddd¦  «         dS # 1 swxY w Y   dS dS )zo
    Reads an additional PGO profile from the given cache key, and merges it with the default PGO profile.
    NzF_CODE_STATE must be initialized before reading extra remote code statezpgo.get_extra_remote_code_stateTr•  r–  rz  z'get_extra_code_state %s hit, %d entriesr   zBexpected _CODE_STATE to be empty before merging extra remote stateÚget_extra_remote_code_statert  c                 ó"   •— t          ‰ ¦  «        S r;   )rc  )r4  s   €r   rl   z-get_extra_remote_code_state.<locals>.<lambda>§  s   ø€ Õ-¨jÑ9Ô9€ r   )rs   r    r3  r
   r	   rJ  r“  rá   rà   rÅ   r   r™  s      @r   rœ  rœ  …  sg  ø€ õ
 ÐÝØTñ
ô 
ð 	
õ $Ñ%Ô%€LØÐÝØ5Ð5ˆDØ"&Ø%Hð
ñ 
ô 
ð 	ð 	õ
 Ô*¨4¸9ÐEÑEÔEÐEÝ2°<ÀÑKÔKˆJÝ�HŠHØ9ØØ#-Ð#9•�J‘”�¸qñô ð ð
 Ð%Ýð Ý(Ø\ñô ð ð )�å)Ø1ØØ9Ð9Ð9Ð9ñô ð ð'	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð  Ðs   ¼BCÃCÃCc                 ó   — t           �t           S t          t          ¦  «        a t          ¦   «         } | €t           S t	          | ¦  «        }|€t          | ¦  «         t           s8t          j        j        j	        x}� t          |¦  «        }|�t          |¦  «         t                               d¦  «         t           €t          d¦  «        ‚t           S )Nzget_code_state using defaultz._CODE_STATE should have been initialized above)rs   r   ri   r  r‡  rš  rž   r  rë   Úpgo_extra_read_keyr  rœ  rá   rà   r    )r  Úlocal_code_stateÚsticky_readÚextra_read_keys       r   ré   ré   «  sÄ   € åÐÝÐõ �iÑ(Ô(€Kå‘”€IØÐÝÐõ ,¨IÑ6Ô6Ðð ÐÝ˜iÑ(Ô(Ð(õ ð8å!œNÔ1ÔDÐDˆ[ÐQå,¨[Ñ9Ô9ˆØÐ%Ý'¨Ñ7Ô7Ð7å‡H‚HÐ+Ñ,Ô,Ð,åÐÝÐMÑNÔNÐNÝÐr   c                 ó°  — t           €t                               d¦  «         d S t           t          k    rt                               d¦  «         d S t	          ¦   «         } | €t                               d¦  «         d S t          | ¦  «         t          | ¦  «         t          j        j	        j
        x}�"t          |¦  «        }|�t          |¦  «         d S d S d S )Nz1put_code_state: never initialized, will not writez#put_code_state: no change, skippingz&put_code_state: no cache key, skipping)rs   rá   rà   rr   r  Úput_local_code_stateÚput_remote_code_staterž   r  rë   Úpgo_extra_write_keyr  )r  Ústicky_writeÚextra_write_keys      r   Úput_code_stater©  Î  sÐ   € ÝÐÝ�ŠÐDÑEÔEÐEØˆåÕ&Ò&Ð&Ý�ŠÐ6Ñ7Ô7Ð7Øˆå‘”€IØÐÝ�ŠÐ9Ñ:Ô:Ð:Øˆå˜Ñ#Ô#Ð#Ý˜)Ñ$Ô$Ð$ÝœÔ-ÔAÐAˆÐNÝ-¨lÑ;Ô;ˆØÐ&Ý! /Ñ2Ô2Ð2Ð2Ð2ð OÐNà&Ð&r   Úpickled_codeÚbytesútuple[str, int] | Nonec                óÖ  — 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._filelockr®  r%   Úmakedirsr&   ÚdirnameÚLOCK_TIMEOUTr(   Úwriter‚  Úreplace)r  rª  r&   Útmp_pathÚ	lock_pathr®  r†  r…   s           r   rg  rg  ä  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                ó†  — t          dx}d¬¦  «        5  t          j        || ¬¦  «         t          €t	          d¦  «        ‚t          j        t          ¦  «        }t          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_stateTrF  rz  z?_CODE_STATE must be initialized before writing local code statez$put_code_state: local cache disabledr{  z*put_code_state: wrote local %s, %d entriesr¤  rt  c                 ó*   — t          t          ¦  «        S r;   rv  r   r   r   rl   z&put_local_code_state.<locals>.<lambda>  ó   € Õ%¥kÑ2Ô2€ r   )r
   r	   rJ  rs   r    r€  Údumpsr   re  r©   rƒ  rg  rá   rà   rÅ   r   )r  rE   rª  ri  r&   r…   s         r   r¤  r¤  ý  s�  € Ý	Ð8Ð8�dÐPTÐ	UÑ	UÔ	Uð 
ð 
ÝÔ& t°yÐAÑAÔAÐAÝÐÝ ØQñô ð õ ”|¥KÑ0Ô0ˆåÕ.×3Ò3Ñ5Ô5°yÑAÔA×HÒHÈÑVÔVÐVå 	¨<Ñ8Ô8ˆØˆ<Ý�HŠHÐ;Ñ<Ô<Ð<Øð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð ‰
ˆˆdåÔ& t¸dÐCÑCÔCÐCÝ�ŠÐ=¸tÅSÍÑEUÔEUÑVÔVÐVÝ!Ø"ØØ2Ð2ñ	
ô 	
ð 	
ð'
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   ”B-D6ÃAD6Ä6D:Ä=D:Úextra_code_statec           	     ó´  — |sdnd}t          d|› �x}dd¬¦  «        5  t          j        || ¬¦  «         t          €t	          d¦  «        ‚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 S # 1 swxY w Y   d S )Nr¥  Úput_extra_remote_code_statezpgo.TÚ!pgo_put_remote_code_state_time_usr–  rz  z@_CODE_STATE must be initialized before writing remote code statez%s: remote cache disabledr{  rŒ  Úasciiz%s: wrote remote %s, %d entriesrt  c                 ó*   — t          t          ¦  «        S r;   rv  r   r   r   rl   z'put_remote_code_state.<locals>.<lambda><  r¼  r   )r
   r	   rJ  rs   r    r3  rá   rà   r€  r½  rÅ   r�  Ú	b64encodeÚdecodeÚputr   )r  r¾  rŠ  rE   rˆ  r.   r‘  s          r   r¥  r¥    sâ  € ð  ð	+ÐÐà*ð õ
 
Ø#�zÐ#Ð#Ð#ˆØ"Ø!Dð
ñ 
ô 
ð 
ð 
õ
 	Ô& t°yÐAÑAÔAÐAÝÐÝ ØRñô ð õ (Ñ)Ô)ˆàÐÝ�HŠHÐ0°*Ñ=Ô=Ð=Øð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
õ" ”,�{Ñ+Ô+ˆÝÔ& t½cÀ'¹l¼lÐKÑKÔKÐKà•FÔ$ WÑ-Ô-×4Ò4°WÑ=Ô=ð"
ˆ
ð 	×Ò˜ JÑ/Ô/Ð/Ý�ŠØ-¨z¸9ÅcÍ+ÑFVÔFVñ	
ô 	
ð 	
õ 	"ØØØ2Ð2ñ	
ô 	
ð 	
ð7
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   žAEÂB<EÅEÅEc                 ó   — d a d adad S rL   )rs   rr   rt   r   r   r   Úreset_code_staterÈ  A  s   € à€KØÐØ %ÐÐÐr   )r   r    r!   r    )r.   r2   r!   r3   )
rÐ   r   rE   r    rÑ   rk   rÏ   rJ   r!   rk   )rü   r    r!   r    )r!   r  )r  r    r!   r  )r  r    r!   r  )r!   rJ   )r!   r,  )r4  ri   r!   r5  )r>  r5  r!   r5  )rè   rX   r!   rœ   rÌ   )rV  rW  r!   r    )rü   r    rp  r    r!   rW  )r  r    r!   rq   r;   )rˆ  r‰  r  r    rŠ  r  r!   rq   )r  r    r!   rœ   )r!   rW  )r  r    rª  r«  r!   r¬  )F)r  r    r¾  rJ   r!   rœ   )hry   Ú
__future__r   r�  rí   ro   ÚenumÚ	functoolsÚloggingr%   r€  r   r*   Úcollectionsr   Útypingr   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   r2  r   r   r=   r   Ú	getLoggerr   rá   rß   rµ  Úcacher1   r9   r>   Ú	dataclassrA   ri   rr   rf   rs   rt   Úsetru   rw   rz   ÚEnumr|   r~   r�   r�   r�   rk   ró   rû   r  r  r  r#  r+  r3  r=  rC  rN  rU  rc  Úregisterre  rx  r‡  r“  rš  rœ  ré   r©  rg  r¤  r¥  rÈ  r   r   r   ú<module>râ     s²  ðð	ð 	ð 	ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð ð ð )Ð (Ð (Ð (Ð (Ð (Ø >Ð >Ð >Ð >Ð >Ð >ðð ð ð ð ð ð ð ð ð ð
 0Ð /Ð /Ð /Ð /Ð /ð ð EØ€L€L€LàHÐHÐHÐHÐHÐHØDÐDÐDÐDÐDÐDÐDÐDð	ð 	ð 	ð 	ð 	 *ñ 	ô 	ð 	ð €gÔ˜Ñ!Ô!€Ø&�WÔ&Ð'NÑOÔOÐ à€ðj „ð	ð 	ð 	ñ „ð	ðð ð ð ðð ð ð ð €Ô˜dÐ#Ñ#Ô#ð-
ð -
ð -
ð -
ð -
ñ -
ô -
ñ $Ô#ð-
ð` Ôðð ð ð ð ñ ô ñ Ôðð ;?Ð Ð >Ð >Ð >Ñ >Ø59€Ð 9Ð 9Ð 9Ñ 9Ø"'Ð Ð 'Ð 'Ð 'Ñ 'Ø#& 3¡5¤5Ð Ð (Ð (Ð (Ñ (ð €Ô˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð( €WˆT�]„]€ðð ð ð ð �”	ñ ô ð ð Œ_€
ðð ð ð ð �$”)ñ ô ð ð Ô €ð Ôðjð jð jð jð jñ jô jñ Ôðjðd (-ðqð qð qð qð qð qðr (-ð.ð .ð .ð .ð .ð .ðb!ð !ð !ð !ðð ð ð ð4(ð (ð (ð (ð?ð ?ð ?ð ?ðð ð ð ð.ð ð ð ð
ð 
ð 
ð 
ðð ð ð ðð ð ð ð )ð )ð )ð )ðð ð ð ð( Ôðð ð ð ð �}ñ ô ñ Ôðð>ð ð ð ð"ð ð ð ð< "ð(ð (ð (ð (ð (ðVð ð ð ð"#ð #ð #ð #ðL ð  ð  ð  ðF3ð 3ð 3ð 3ð,ð ð ð ð2
ð 
ð 
ð 
ð6%
ð %
ð %
ð %
ð %
ðR&ð &ð &ð &ð &ð &r   