Ë
    ÃÓ^jåœ  ã                  ó¸  — 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jf                  e4«      Z5 ejf                  d«      Z6dZ7ejp                  dGd„«       Z9dHd„Z:dHd„Z; ejx                  d¬«       G d„ d«      «       Z=ejx                   G d„ d«      «       Z>da?de@d<   daAde@d<   daBde@d <    eC«       aDd!e@d"<    ejx                  d¬«       G d#„ d$«      «       ZE ed%«      ZF G d&„ d'ejŽ                  «      ZHeHj’                  ZJ G d(„ d)ejŽ                  «      ZKeKj’                  ZLejx                   G d*„ d+«      «       ZMdd,œ	 	 	 	 	 	 	 	 	 dId-„ZNdd,œ	 	 	 	 	 	 	 	 	 dId.„ZOdJd/„ZPdKd0„ZQdLd1„ZRdMd2„ZSdNd3„ZTdOd4„ZUdPd5„ZVdQd6„ZWdRd7„ZXdSd8„ZYdTd9„ZZe'j¶                   G d:„ d;e&«      «       Z\dUd<„Z]dVd=„Z^	 dW	 	 	 	 	 	 	 dXd>„Z_dVd?„Z`dYd@„ZadZdA„ZbdSdB„Zcd[dC„ZddYdD„Zed\d]dE„ZfdSdF„Zgy)^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y)ÚReservedWorkflowIdUserErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    ú\/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/pgo.pyr   r   7   s   „ Ør   r   z%torch.fx.experimental.symbolic_shapesé
   c                óô   — t         j                  j                  | «      s| S t        | d«      5 }|j	                  «       }t        j                  |«      }t        |dz  d«      }|cd d d «       S # 1 sw Y   y xY w)NÚrbl   ÿÿ Ú08x)ÚosÚpathÚexistsÚopenÚreadÚzlibÚcrc32Úformat)ÚfilepathÚfileÚcontentÚcrc32_valueÚhashs        r   Ú_hash_containing_filer/   s   sg   € ô �7‰7�>‰>˜(Ô#Øˆä	ˆh˜Ó	ð  Ø—)‘)“+ˆÜ—j‘j Ó)ˆÜ�k JÑ.°Ó6ˆØ÷	÷ ò ús   ®6A.Á.A7c                óJ   — t        | «      rt        | d«      r| j                  S y )NÚ__code__)ÚcallableÚhasattrr1   ©r,   s    r   Ú_get_closure_contentr5   €   s"   € Ü�ÔœW W¨jÔ9Ø×ÑÐØr   c                óL   — 	 t        | j                  «      S # t        $ r Y y w xY w©N)r5   Úcell_contentsÚ
ValueErrorr4   s    r   Ú_get_cell_hash_contentr:   †   s*   € ðÜ# G×$9Ñ$9Ó:Ð:øÜò Ùðús   ‚ —	#¢#T)Úfrozenc                  ó|   — 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	y)ÚCodeIdÚstrÚfilenameÚintÚfirstlinenoÚnameÚ	file_hashNú
int | NoneÚclosure_hashc                óø   — t        |t        «      sy| j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S ©NF)Ú
isinstancer=   rC   rA   rB   rE   )ÚselfÚothers     r   Ú__eq__zCodeId.__eq__�   sm   € Ü˜%¤Ô(Øà�N‰N˜eŸo™oÑ-ò 8Ø× Ñ  E×$5Ñ$5Ñ5ò8à—	‘	˜UŸZ™ZÑ'ò8ð ×!Ñ! U×%7Ñ%7Ñ7ð		
r   c                óp   — t        | j                  | j                  | j                  | j                  f«      S r7   )r.   rC   rB   rA   rE   ©rI   s    r   Ú__hash__zCodeId.__hash__¨   s*   € Ü�T—^‘^ T§Y¡Y°×0@Ñ0@À$×BSÑBSÐTÓUÐUr   c                ón   — d| j                   › d| j                  › d| j                  › d| j                  › �S )Nzhash(ú)ú:)rC   r?   rA   rB   rM   s    r   Ú__str__zCodeId.__str__«   s5   € Ø�t—~‘~Ð& a¨¯© °a¸×8HÑ8HÐ7IÈÈ4Ï9É9È+ÐVÐVr   c                óÀ   — d }|rt        t        d„ |D «       «      «      }t        | j                  | j                  | j
                  t        | j                  «      |«      S )Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr7   )r:   )Ú.0Úcs     r   ú	<genexpr>zCodeId.make.<locals>.<genexpr>´   s   è ø€ Ò%QÀAÔ&<¸Q×&?Ñ%Qùs   ‚)r.   Útupler=   Úco_filenameÚco_firstlinenoÚco_namer/   )ÚcodeÚclosurerE   s      r   ÚmakezCodeId.make®   sX   € ð ˆÙÜ¤Ñ%QÈÔ%QÓ QÓRˆLäØ×ÑØ×ÑØ�L‰LÜ! $×"2Ñ"2Ó3Øó
ð 	
r   )rJ   ÚobjectÚreturnÚbool)r`   r@   ©r`   r>   r7   )r\   útypes.CodeTyper]   z!tuple[types.CellType, ...] | Noner`   r=   )
r   r   r   Ú__annotations__rE   rK   rN   rR   Ústaticmethodr^   r   r   r   r=   r=   Ž   sc   … àƒMØÓØ
ƒIð ƒNØ#€L�*Ó#ó
óVóWð àKOð
Øð
Ø'Hð
à	ò
ó ñ
r   r=   c                  ó@   — e Zd ZU  ej                  d„ ¬«      Zded<   y)Ú	CodeStatec                 ó    — t        t        «      S r7   )r   ÚFrameStateSizeEntryr   r   r   ú<lambda>zCodeState.<lambda>Â   s   € ¤Ô,?Ó @€ r   )Údefault_factoryz%defaultdict[str, FrameStateSizeEntry]Úautomatic_dynamicN)r   r   r   ÚdataclassesÚfieldrl   rd   r   r   r   rg   rg   ¿   s!   … à?P¸{×?PÑ?PÙ@ô@ÐÐ<ô r   rg   ú%defaultdict[CodeId, CodeState] | NoneÚ_INIT_CODE_STATEÚ_CODE_STATEFra   Ú_LOGGED_DYNAMIC_ALLOWLISTzset[str]Ú_KNOWN_DYNAMIC_SOURCESc                  ó   — e Zd ZU dZded<   y)Ú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__rd   r   r   r   ru   ru   Ì   s   … ñð  
„Hr   ru   Ú_Tc                  ó   — e Zd ZdZdZy)Ú	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   rw   Útokenr   r   r   rz   rz   ä   ó   „ ñð
 �Er   rz   c                  ó   — e Zd ZdZdZy)Ú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dd„«       Ze	 	 	 	 	 	 dd„«       Zed d„«       Zed!d„«       Ze	 	 	 	 	 	 d"d„«       Zd#d„Zy)$ri   )Údefaultzint | AutoDynamic | AutoUnsetÚscalarz7AutoDynamic | AutoUnset | tuple[int | AutoDynamic, ...]ÚsizezEAutoDynamic | AutoUnset | tuple[int | AutoDynamic | InferStride, ...]ÚstrideNF)r�   Úcompareztuple[int | None, ...] | NoneÚexcluded_sizesrD   Úexcluded_scalarc                óœ  ‡— dd„Šd	ˆfd„}| j                   t        u r4| j                  t        u r"| j                  t        u ryd| j                  › �S | j                  t        u r\t	        | j                   t
        «      rBt	        | j                  t
        «      r(d || j                   «      › d || j                  «      › �S dt        | «      › �S )
Nc                ó|   — | t         u ry| t        u ryt        | t        «      rd| j                  › d�S t        | «      S )Nú?z
auto unsetzS(rP   )Úauto_dynamicÚ
auto_unsetrH   ru   rv   r>   )Úss    r   Úrender_singlez1FrameStateSizeEntry.render.<locals>.render_single  s<   € Ø”LÑ ØØ”j‘à#Ü˜Aœ{Ô+Ø˜AŸE™E˜7 !�}Ð$ä˜1“v�r   c                óD   •— ddj                  ˆfd„| D «       «      z   dz   S )Nú[z, c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr7   r   )rU   r�   rŽ   s     €r   rW   zCFrameStateSizeEntry.render.<locals>.render_tuple.<locals>.<genexpr>  s   øè ø€ Ò"@¸¡=°×#3Ñ"@ùs   ƒú])Újoin)ÚssrŽ   s    €r   Úrender_tuplez0FrameStateSizeEntry.render.<locals>.render_tuple  s"   ø€ Ø˜Ÿ™Ó"@¸RÔ"@Ó@Ñ@À3ÑFÐFr   zfully dynamic scalar or tensorzscalar ztensor size=z stride=zunusual )r�   z+int | AutoDynamic | AutoUnset | InferStrider`   r>   )r”   z+tuple[int | AutoDynamic | InferStride, ...]r`   r>   )rƒ   r‹   r„   r‚   rH   rX   Úrepr)rI   r•   rŽ   s     @r   ÚrenderzFrameStateSizeEntry.render  s«   ø€ ó		õ	Gð �9‰9œÑ$¨¯©¼Ñ)DØ�{‰{œlÑ*Ø7à  §¡ Ð.Ð.Ø�[‰[œLÑ(Ü˜$Ÿ)™)¤UÔ+´
¸4¿;¹;ÌÔ0NØ%¡l°4·9±9Ó&=Ð%>¸hÁ|ÐTX×T_ÑT_ÓG`ÐFaÐbÐbð œ$˜t›*˜Ð&Ð&r   c                ó¸  — t        | j                  t        j                  «      rt	        | j                  «      ‚t        | j
                  t        «      r6| j
                  D ]'  }t        |t        j                  «      sŒt	        |«      ‚ t        | j                  t        «      r7| j                  D ]'  }t        |t        j                  «      sŒt	        |«      ‚ y y r7   )rH   r‚   ÚtorchÚSymIntÚAssertionErrorrƒ   rX   r„   )rI   r�   Ús1s      r   Ú__post_init__z!FrameStateSizeEntry.__post_init__)  sž   € Ü�d—k‘k¤5§<¡<Ô0Ü  §¡Ó-Ð-Ü�d—i‘i¤Ô'Ø—Y‘Yò ,�Ü˜a¤§¡Õ.Ü(¨Ó+Ð+ð,ô �d—k‘k¤5Ô)Ø—k‘kò -�Ü˜b¤%§,¡,Õ/Ü(¨Ó,Ð,ñ-ð *r   c                óx   — | j                   t        u ry| j                   t        u ry| j                   |   t        u S )NTF)rƒ   r‹   rŒ   ©rI   rv   s     r   Úis_size_dynamicz#FrameStateSizeEntry.is_size_dynamic5  s3   € Ø�9‰9œÑ$ØØ�9‰9œ
Ñ"ØØ�y‰y˜‰~¤Ð-Ð-r   c                óæ   — t        | j                  t        «      rt        d„ | j                  D «       «      sy| j                  t
        u ry| j                  t        u ry| j                  |   t
        u S )Nc              3  ó>   K  — | ]  }t        |«      t        u –— Œ y ­wr7   ©Útyper@   ©rU   r�   s     r   rW   z8FrameStateSizeEntry.is_stride_dynamic.<locals>.<genexpr>M  s   è ø€ Ò0SÀA´°a³¼C´Ñ0Sùs   ‚FT)rH   rƒ   rX   Úallr„   r‹   rŒ   rŸ   s     r   Úis_stride_dynamicz%FrameStateSizeEntry.is_stride_dynamic<  sX   € ô" �t—y‘y¤%Ô(¬SÑ0SÈÏÉÔ0SÔ-SàØ�;‰;œ,Ñ&ØØ�;‰;œ*Ñ$ØØ�{‰{˜3Ñ¤<Ð/Ð/r   c                ó&   — t        d„ | D «       «      S )Nc              3  ó`   K  — | ]&  }t        |t        j                  «      rt        n|–— Œ( y ­wr7   )rH   r™   rš   r‹   )rU   Úxs     r   rW   z4FrameStateSizeEntry._munge_symint.<locals>.<genexpr>X  s"   è ø€ ÒTÈA¤Z°´5·<±<Ô%@•\ÀaÓGÑTùs   ‚,.)rX   )Úxss    r   Ú_munge_symintz!FrameStateSizeEntry._munge_symintV  s   € äÑTÐQSÔTÓTÐTr   c                ó.   — t        |t        t        ¬«      S ©N)r‚   rƒ   r„   )ri   r‹   )Úclsrª   s     r   Úmake_scalarzFrameStateSizeEntry.make_scalarZ  s   € ä"¨!´,Ä|ÔTÐTr   c                ób   — t        t        | j                  |«      | j                  |«      ¬«      S r®   )ri   r‹   r¬   )r¯   rƒ   r„   s      r   Úmake_tensorzFrameStateSizeEntry.make_tensor^  s0   € ô #ÜØ×"Ñ" 4Ó(Ø×$Ñ$ VÓ,ô
ð 	
r   c                óL   — t        t        | j                  |«      t        ¬«      S r®   )ri   rŒ   r¬   )r¯   rƒ   s     r   Ú	make_sizezFrameStateSizeEntry.make_sizeh  s#   € ä"ÜØ×"Ñ" 4Ó(Üô
ð 	
r   c                ód   — | t         u r|S |t         u r| S | t        u s|t        u s| |k7  rt        S | S r7   )rŒ   r‹   )rª   Úys     r   Ú_merge_atomzFrameStateSizeEntry._merge_atomp  s:   € à”
‰?ØˆHØ”
‰?ØˆHØ”Ñ ¤\Ñ 1°Q¸!²VÜÐØˆr   c                óÎ   ‡ — |t         u r|S |t         u r|S |t        u s|t        u rt        S t        |«      t        |«      k7  rt        S t        ˆ fd„t	        ||«      D «       «      S )Nc              3  óH   •K  — | ]  \  }}‰j                  ||«      –— Œ y ­wr7   )r·   )rU   rª   r¶   r¯   s      €r   rW   z6FrameStateSizeEntry._merge_atom_tup.<locals>.<genexpr>ˆ  s    øè ø€ ÒC©t¨q°!�S—_‘_ Q¨×*ÑCùs   ƒ")rŒ   r‹   ÚlenrX   Úzip)r¯   r«   Úyss   `  r   Ú_merge_atom_tupz#FrameStateSizeEntry._merge_atom_tupz  sa   ø€ ð ”ÑØˆIØ”ÑØˆIØ”Ñ ¤|Ñ!3ÜÐÜˆr‹7”c˜"“gÒÜÐÜÓC´s¸2¸r³{ÔCÓCÐCr   c                óÔ  — | j                  | j                  |j                  «      }t        | j                  t        «      rD|| j                  k7  r"t        d„ | j                  D «       «      | _        n| j                  �d | _        || _        t        | j                  «      t        u rFt        |j                  «      t        u r+| j                  |j                  k7  r| j                  | _        n%| j                  t        u r| j                  �d | _        | j                  | j                  |j                  «      | _        | j                  | j                  |j                  «      | _        | S )Nc              3  óF   K  — | ]  }t        |«      t        u r|nd –— Œ y ­wr7   r£   r¥   s     r   rW   z.FrameStateSizeEntry.__ior__.<locals>.<genexpr>”  s$   è ø€ ò ,Ø67œ˜a›¤C™‘A¨TÓ1ñ,ùs   ‚!)r½   rƒ   rH   rX   r†   r¤   r‚   r@   r‡   r‹   r·   r„   )rI   rJ   Únew_sizes      r   Ú__ior__zFrameStateSizeEntry.__ior__Š  s  € ð ×'Ñ'¨¯	©	°5·:±:Ó>ˆÜ�d—i‘i¤Ô'Ø˜4Ÿ9™9Ò$Ü&+ñ ,Ø;?¿9¹9ô,ó '�Õ#ð ×$Ñ$Ð0Ø&*�Ô#ØˆŒ	ô
 �—‘Ó¤Ñ$Ü�U—\‘\Ó"¤cÑ)Ø—‘˜uŸ|™|Ò+à#'§;¡;ˆDÕ Ø�[‰[œLÑ(¨T×-AÑ-AÐ-MØ#'ˆDÔ Ø×&Ñ& t§{¡{°E·L±LÓAˆŒØ×*Ñ*¨4¯;©;¸¿¹ÓEˆŒØˆr   rb   ©r`   ÚNone)rv   r@   r`   ra   )r«   útuple[int, ...]r`   ztuple[AutoDynamic | int, ...])rª   r@   r`   ri   )rƒ   rÄ   r„   rÄ   r`   ri   )rƒ   rÄ   r`   ri   )rª   rx   r¶   rx   r`   zAutoDynamic | _T)r«   ú(AutoDynamic | AutoUnset | tuple[_T, ...]r¼   rÅ   r`   z6AutoDynamic | AutoUnset | tuple[AutoDynamic | _T, ...])rJ   r   r`   r   )r   r   r   rm   rn   rŒ   r‚   rd   rƒ   r„   r†   r‡   r—   r�   r    r§   re   r¬   Úclassmethodr°   r²   r´   r·   r½   rÁ   r   r   r   ri   ri   ü   sg  … à,=¨K×,=Ñ,=ÀjÔ,Q€FÐ)ÓQð EVÀK×DUÑDUØôE€DÐ
Aó ð 	ˆ×Ñ *Ô-ð ÐQó ð 5F°K×4EÑ4EØ˜eô5€NÐ1ó ð #4 +×"3Ñ"3¸DÈ%Ô"P€O�ZÓPó'ó:
-ó.ó0ð4 òUó ðUð òUó ðUð ð
Ø"ð
Ø,;ð
à	ò
ó ð
ð ò
ó ð
ð òó ðð ðDà4ðDð 5ðDð 
@ò	Dó ðDôr   ri   ©Úis_unspecialized_nn_modulec          
     óî  ‡‡‡
— t         j                  | j                  | j                  «      }t	        «       |   }t
        j                  j                  j                  �rÉ‰|j                  v }|j                  ‰   }t        j                  |«      Š
|‰z  }|rµ‰
j                  |j                  k7  rœt        j                  d‰«       t        j                  d‰‰j                  ‰
j                  «       t!        j"                  d‰ddt%        ‰
j                  «      t%        ‰j                  «      dœ«       |rt        j                  d‰«       	 d	 	 	 	 	 	 	 	 	 dˆˆˆ
fd„}|rà‰
j&                  |j&                  k7  rÇt)        ‰
j&                  t*        «      r£t)        ‰j&                  t*        «      r‰t-        ‰
j&                  «      t-        ‰j&                  «      k7  r |d	d
d«       n]t/        t-        ‰j&                  «      «      D ]1  }	‰
j&                  |	   ‰j&                  |	   k7  sŒ# |d	d|	› d�d|	«       Œ3 n
 |d	dd«       |râ‰
j0                  |j0                  k7  rÉt)        ‰
j0                  t*        «      r¥t)        ‰j0                  t*        «      r‹t-        ‰
j0                  «      t-        ‰j0                  «      k7  r |dd
d«       |S t/        t-        ‰j0                  «      «      D ]1  }	‰
j0                  |	   ‰j0                  |	   k7  sŒ# |dd|	› d�d|	«       Œ3 |S  |ddd«       |S |j                  ‰   Š
t        j                  d‰‰
j                  ‰j                  «       ‰|j                  ‰<   ‰}|S )Nú2marking %s as dynamic (from automatic dynamic/PGO)z%automatic dynamic int %s val %s != %srl   r‚   zscalar change©rB   Ú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`.c           
     ó>  •— |€t        ‰| «      nt        ‰| «      |   }|€t        ‰| «      nt        ‰| «      |   }t        j                  d‰«       t        j	                  d| ‰|||«       t        j                  d‰|€dn||t        |«      t        |«      dœ«       y )NrÊ   z#automatic dynamic %s %s %s %s != %srl   r¦   rË   )ÚgetattrÚsymbolic_shape_logÚinfoÚlogÚdebugr	   Úinstantr>   )	Útup_nameÚshort_reasonÚlong_reasonÚiÚ	entry_tupÚold_entry_tupÚentryrB   Ú	old_entrys	         €€€r   Úlog_tupz)update_automatic_dynamic.<locals>.log_tupØ  sº   ø€ ð -.¨I”˜˜xÔ(¼7À5È(Ó;SÐTUÑ;Vð ð
 �9ô ˜	 8Ô,ä˜Y¨Ó1°!Ñ4ð ô
 ×#Ñ#ØDØôô �I‰IØ5ØØØàØôô ×&Ñ&Ø#à Ø,-¨I¡5¸1Ø)Ü! -Ó0Ü˜y›>ñõ	r   rƒ   rv   zdimensionality changezsize(rP   zsize changerJ   r„   zstride(zstride changez9automatic dynamic is off, overwriting int %s val %s -> %sr7   )
r×   r>   rØ   r>   rÙ   r>   rÚ   rD   r`   rÃ   )r=   r^   Úf_coder]   Úget_code_stater™   Ú_dynamoÚconfigÚautomatic_dynamic_shapesrl   Úcopyr‚   rÒ   rÓ   rÔ   rÕ   r	   rÖ   r>   rƒ   rH   rX   rº   Úranger„   )ÚtxrB   rÝ   rÈ   Úcode_idÚframe_stateÚ	is_updateÚ	mut_entryrß   rÚ   rÞ   s    ``       @r   Úupdate_automatic_dynamicrì   ª  s'  ú€ ô �k‰k˜"Ÿ)™) R§Z¡ZÓ0€GÜ Ó" 7Ñ+€KÜ‡}�}×Ñ×4Ó4Ø˜K×9Ñ9Ð9ˆ	Ø×1Ñ1°$Ñ7ˆ	Ü—I‘I˜iÓ(ˆ	Ø�UÑˆ	ñ ˜×)Ñ)¨Y×-=Ñ-=Ò=Ü×#Ñ#ØDØôô �I‰IØ7ØØ—‘Ø× Ñ ô	ô ×&Ñ&Ø#à Ø#+Ø-Ü! )×"2Ñ"2Ó3Ü˜uŸ|™|Ó,ñô	ñ *Ü—‘ðOð ô	ð QUð!	Øð!	Ø),ð!	Ø;>ð!	ØCMð!	à÷!	ñF ˜Ÿ™¨9¯>©>Ò9Ü˜)Ÿ.™.¬%Ô0´ZÀÇ
Á
ÌEÔ5RÜ�y—~‘~Ó&¬#¨e¯j©j«/Ò9Ù˜F EÐ+BÕCä"¤3 u§z¡z£?Ó3ò L˜Ø$Ÿ>™>¨!Ñ,°·
±
¸1±Ó=Ù# F¨e°A°3°a¨L¸-ÈÕKñLñ ˜ ¨Ô1á˜×)Ñ)¨Y×-=Ñ-=Ò=Ü˜)×*Ñ*¬EÔ2´zÀ%Ç,Á,ÔPUÔ7VÜ�y×'Ñ'Ó(¬C°·±Ó,=Ò=Ù˜H eÐ-DÔEð$ Ðô! #¤3 u§|¡|Ó#4Ó5ò R˜Ø$×+Ñ+¨AÑ.°%·,±,¸q±/ÓAÙ# H°¸°s¸!¨n¸oÈqÕQðRð  Ðñ ˜ '¨7Ô3ð Ðð  ×1Ñ1°$Ñ7ˆ	Ü�	‰	ØGØØ×ÑØ�L‰Lô		
ð /4ˆ×%Ñ% dÑ+Øˆ	àÐr   c               ó$  — | j                   x}€t        | |||¬«      S |j                  €||j                  j                  |<   |S d }|j                  D ]-  }||j                  v sŒt        | ||j                  |   |¬«      }Œ/ |€t        d«      ‚|S )NrÇ   zCexpected at least one matching automatic_dynamic entry across ranks)Údistributed_staterì   Ú
all_statesÚlocal_staterl   r›   )rç   rB   rÝ   rÈ   ÚstÚresÚ	sub_states          r   Úprocess_automatic_dynamicrô     s¼   € ð ×"Ñ"Ð"ˆÐ+Ü'ØØØØ'Aô	
ð 	
ð 
�‰Ð	ð 27ˆ�‰×(Ñ(¨Ñ.Øˆð ˆØŸ™ò 	ˆIØ�y×2Ñ2Ò2Ü.ØØØ×/Ñ/°Ñ5Ø/Iô	‘ð	ð ˆ;Ü ØUóð ð ˆ
r   c                óÚ   — d }t        j                  «       r(t        j                  «       rt        j                  «       }t        j
                  j                  j                  }| › d|› d|› �S )NrQ   )ÚdistÚis_availableÚis_initializedÚget_rankr™   Úcompilerrã   Úcache_key_tag)ÚkeyÚrankÚtags      r   Úformat_cache_keyrÿ   O  sW   € ð €DÜ×ÑÔœt×2Ñ2Ô4Ü�}‰}‹ˆä
�.‰.×
Ñ
×
-Ñ
-€CØˆU�!�D�6˜˜3˜%Ð Ð r   c                 ój  — t         j                  j                  j                  rt	        d«       y t         j                  j                  j
                  x} �'| j                  d«      rt        d«      ‚t        | «      S t         j                  j                  «       x}�|\  }}t        d|› d|› �«      S y )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.rQ   )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Ò1ÜØUô	
ð ô �^‰^×"Ñ"×)Ñ)Ð)ˆÐ6Ø�<‰<˜Ô Ü-ð$óð ô
   Ó"Ð"ä×-Ñ-×GÑGÓIÐIˆÐVØ*6Ñ'ˆÐ'Ü %¨ °aÐ8HÐ7IÐ JÓKÐKàr   c                óx   — t         j                  j                  j                  rt	        d«       y t        | «      S )Nr  )r™   rú   rã   r  r   rÿ   )Ú
sticky_keys    r   Úget_extra_cache_keyr  t  s0   € Ü‡~�~×Ñ×1Ò1ÜØUô	
ð ä˜JÓ'Ð'r   c                ó  — t         j                  j                  j                  st        j                  d«       y ddlm} t        j                  ddd| › d�«      }t        j                  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“   )Ú	cache_keyr  Úcode_state_keys      r   Úcode_state_pathr    s\   € Ü�=‰=×Ñ×;Ò;Ü�	‰	Ð;Ô<Øå?ä—V‘V˜O¨S°KÀ	¸{È$Ð2OÓP€NÜ�7‰7�<‰<™	› X¨~Ó>Ð>r   c                 ó`  — t         j                  j                  j                  ryt         j                  j                  j
                  x} �| S t        «       syt         j                  j                  «       ry	 ddl	m
} |t         j                  j                  d«      k\  S # t        $ r Y yw xY w)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Ò1Øä�]‰]×!Ñ!×>Ñ>Ð>ˆÐKØˆäŒ;Øä×Ñ×,Ñ,Ô.ØðÝHð  ¤5×#8Ñ#8×#MÑ#MØ1ó$ñ ð øô ò Ùðús   Á9B! Â!	B-Â,B-c                 óJ   — ddl m}  t        «       sy  | dt        «       dd«      S )Nr   ©Úcreate_cachez
dynamo-pgoÚFbRemoteDynamoPGOCacheÚRemoteDynamoPGOCache)Útorch._inductor.remote_cacher&  r#  r   r%  s    r   Úget_remote_cacher*  ¡  s)   € Ý9ä-Ô/ØáØÜ‹Ø Øó	ð r   c                ó  — t        «       }| j                  j                  «       D ]]  \  }}d}t        |j                  t
        «      rt        |j                  v }n|j                  t        k(  rd}|sŒM|j                  |«       Œ_ |S )NFT)	r   rl   ÚitemsrH   rƒ   rX   r‹   r‚   Úadd)Ú
code_stateÚdynamic_sourcesÚsrcÚfsÚdynamics        r   Ú_collect_dynamic_sourcesr3  ¯  sv   € Ü'1£|€OØ×/Ñ/×5Ñ5Ó7ò %‰ˆˆRØˆÜ�b—g‘gœuÔ%Ü" b§g¡gÐ-‰GØ�Y‰Yœ,Ò&ØˆGÚØ×Ñ Õ$ð%ð Ðr   c                ó¤   — ddl m} t        «       }| D ]:  }|t        v rŒ ||«      rt        j	                  |«       Œ*|j	                  |«       Œ< |S )Nr   )Úis_dynamic_source)Útorch._dynamo.variables.builderr5  r   rs   r-  )Úall_sourcesr5  Úmissing_sourcesr0  s       r   Ú_collect_missing_sourcesr9  ¼  sX   € ÝAô (2£|€OØò !ˆØÔ(Ñ(ØÙ˜sÔ#Ü"×&Ñ& sÔ+ØØ×Ñ˜CÕ ð!ð Ðr   c                ó4  — t         j                  | d «      }t        «       |   }t        |«      }dj	                  |«      }dj	                  t        |«      «      }|r1t        dx}d¬«      5  t        j                  |||¬«       d d d «       y y # 1 sw Y   y xY w)Nú,zpgo.dynamic_whitelistT©Úlog_pt2_compile_event)Úrecompile_dynamic_whitelistÚmissing_dynamic_whitelist)	r=   r^   rá   r3  r“   r9  r
   r	   Úpt2_compile)rà   rè   ré   Úall_dynamic_sourcesÚframe_whitelistÚmissing_whitelistrB   s          r   Úlog_frame_dynamic_whitelistrD  Ë  s™   € ä�k‰k˜& $Ó'€GÜ Ó" 7Ñ+€KÜ2°;Ó?ÐØ—h‘hÐ2Ó3€OØŸ™Ô!9Ð:MÓ!NÓOÐÙÜÐ"9Ð9˜$ÐQUÔVñ 	Ü×*Ñ*ØØ,;Ø*;õ÷	ð 	ð ÷	ð 	ús   Á+BÂBc                 óZ   — t         s%t        j                  j                  ddd¬«       da y y )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)rr   r™   r  Úadd_mlhub_insightr   r   r   Ú_log_size_mismatch_recompilerK  Û  s6   € å$Ü×Ñ×/Ñ/Ø.Ø:ð!%ð 	0ô 	
ð %)Ñ!ð %r   c                óø   — dj                  d„ | j                  «       D «       «      }t        «       }| j                  «       D ]  }|j	                  t        |«      «       Œ |r|ddj                  |«      › d�z  }|S )Nú
c              3  óŽ   K  — | ]=  \  }}|› d �dj                  d„ |j                  j                  «       D «       «      z   –— Œ? y­w)z:
rM  c              3  óN   K  — | ]  \  }}d |› d|j                  «       › �–— Œ y­w)z  z: N)r—   )rU   r0  r1  s      r   rW   z.render_code_state.<locals>.<genexpr>.<genexpr>ì  s,   è ø€ ò 
Ù*1¨#¨rˆb���R˜Ÿ	™	›�}Ô%ñ
ùs   ‚#%N)r“   rl   r,  )rU   ÚkÚvs      r   rW   z$render_code_state.<locals>.<genexpr>ê  sQ   è ø€ ò ñ
 ˆAˆqð	 ˆ#ˆSˆ	Ø
�)‰)ñ 
Ø56×5HÑ5H×5NÑ5NÓ5Pô
ó 
õ	
ñùs   ‚AA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Úupdater3  )ÚcsÚcode_state_strr/  Ústates       r   Úrender_code_staterX  é  s�   € Ø—Y‘Yñ ð
 —H‘H“Jôó €Nô (2£|€OØ—‘“ò @ˆØ×ÑÔ7¸Ó>Õ?ð@áØðGàGJÇxÁxÐP_ÓG`ÐFaÐabðdñ	
ˆð
 Ðr   c                  óL   — e Zd Zedd„«       Zeedd„«       «       Zedd„«       Zy)ÚPGOCacheArtifactc                ó|   — t        | j                  | j                  «      | j                  «      }|€t	        d«      ‚y )Nz:write_local_impl returned None during PGO cache population)Úwrite_local_implÚ!_rewrite_cache_key_for_mega_cacherü   r,   r›   )rI   Úmetas     r   Úpopulate_cachezPGOCacheArtifact.populate_cacheÿ  s@   € äØ×2Ñ2°4·8±8Ó<¸d¿l¹ló
ˆð ˆ<Ü ØLóð ð r   c                  ó   — y)NÚpgor   r   r   r   r¤   zPGOCacheArtifact.type	  s   € ð r   c                óH   — | j                  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  )Úoriginal_keyÚnew_keys     r   r]  z2PGOCacheArtifact._rewrite_cache_key_for_mega_cache  s0   € ð ×&Ñ& wÔ/àÐÜ$“Ð&ˆGÐ3ØˆNØÐr   NrÂ   rb   )rc  r>   r`   r>   )r   r   r   r   r_  re   r¤   r]  r   r   r   rZ  rZ  ý  sD   „ àòó ðð Øòó ó ðð òó ñr   rZ  c                ó$  — t        t        t        «      st        dt	        t        «      › �«      ‚t
        j                  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 r7   ©rX  rq   r   r   r   rj   zhit.<locals>.<lambda>'  s   € Ô!¤+Ó.€ r   ra  T)rH   rq   r   r›   r¤   rÔ   rÓ   rº   r   r   rå   Údeepcopyrp   )rü   Útys     r   Úhitrm    s~   € ä”k¤;Ô/ÜØ<¼TÄ+Ó=NÐ<OÐPó
ð 	
ô ‡H�HÐ3°S¸"¼cÄ+Ó>NÔOÜØ
ˆrˆd�+ÐØÙ.ôô
 �E˜4Ô Ü—}‘}¤[Ó1ÐÜÐr   c                ó”  — t        | «      }|�ét        j                  j                  |«      rÊt	        dx}d¬«      5  t        j                  || ¬«       t        |d«      5 }	 |j                  «       }t        j                  |«      at        j                  ||j                  «       ¬«       t        t        j                  «       | «      j!                  |«       t#        |d«      cd d d «       cd d d «       S y # t$        $ r t&        j)                  d|d¬	«       Y nw xY w	 d d d «       n# 1 sw Y   nxY wd d d «       y # 1 sw Y   y xY w)
Nzpgo.get_local_code_stateTr<  ©r  r    ©Úcache_size_bytesÚlocalz&get_code_state failed while reading %s©Úexc_info)r  r"   r#   r$   r
   r	   r@  r%   r&   ÚpickleÚloadsrq   Útellr   rZ  r¤   Úrecordrm  Ú	ExceptionrÔ   Úwarning)r  r#   rB   Úfr,   s        r   Úget_local_code_stater|  .  s.  € ä˜9Ó%€DØÐœBŸG™GŸN™N¨4Ô0ÜØ.Ð.ˆDÀdô
ñ 	.ô ×*Ñ*¨4¸9ÕEô �d˜DÓ!ð . Qð.ØŸf™f›h�GÜ"(§,¡,¨wÓ"7�KÜ&×2Ñ2°4È!Ï&É&Ë(ÕSô *Ô*:×*?Ñ*?Ó*AÀ9ÓM×TÑTØôô ˜t WÓ-÷.ð .÷	.ñ 	.ð( øô !ò Ü—K‘KØ@À$ÐQUð  ö ðúð÷.÷ .ñ .ú÷	.ð( ÷)	.ð( úsN   ¼$D>Á D)Á"A
C8Â,8D)Ã$	D>Ã8!DÄD)ÄDÄD)Ä 	D>Ä)D2	Ä.D>Ä>Ec                óœ  — d }	 | j                  |«      }|�Ï	 t        |t        «      st        dt	        |«      › �«      ‚|d   }t        |t
        «      st        dt	        |«      › �«      ‚t        j                  |«      }|� t        j                  |t        |«      ¬«       t        j                  |«      }t        t        j	                  «       |«      j                  |«       |S t"        j'                  d|«       |S # t         $ r t"        j%                  d|d¬«       Y |S w xY w# t         $ r t"        j%                  d	|d¬«       Y |S w xY w)
Nz&expected cache_data to be a dict, got Údataz-expected cache_data['data'] to be a str, got rp  z1get_code_state failed parsing remote result on %sTrs  z get_code_state remote miss on %sz'get_code_state failed remote read on %s)ÚgetrH   Údictr›   r¤   r>   Úbase64Ú	b64decoder	   r@  rº   ru  rv  r   rZ  rx  ry  rÔ   rz  rÓ   )Úremote_cacher  Ú
event_namer.  Ú
cache_datar~  Úpayloads          r   Úlookup_remote_cache_entryr‡  I  sh  € ð
 €Jð!DØ!×%Ñ% iÓ0ˆ
ð Ð!ðÜ! *¬dÔ3Ü(Ø@ÄÀjÓAQÐ@RÐSóð ð " &Ñ)�Ü! $¬Ô,Ü(ØGÌÈTË
À|ÐTóð ô !×*Ñ*¨4Ó0�ØÐ)Ü&×2Ñ2Ø"´S¸³\õô $Ÿ\™\¨'Ó2�
ô &Ô&6×&;Ñ&;Ó&=¸yÓI×PÑPØôð
 Ðô �H‰HÐ7¸ÔCØÐøô ò Ü—‘ØGØØ!ð õ ð Ððûô) ò YÜ�‰Ð=¸yÐSWˆÕXð> ÐðAYús#   „D& ˜BC> Ã>!D#Ä"D#Ä&!EÅ
Ec                óä   — t        «       }|�Xt        dx}dd¬«      5  t        j                  || ¬«       t	        || |«      }|�|at        | d«      cd d d «       S 	 d d d «       y y # 1 sw Y   y xY w)Nzpgo.get_remote_code_stateTÚ!pgo_get_remote_code_state_time_us©r=  Údynamo_compile_column_usro  Úremote)r*  r
   r	   r@  r‡  rq   rm  ©r  rƒ  rB   r.  s       r   Úget_remote_code_staterŽ  t  s„   € ä#Ó%€LØÐÜØ/Ð/ˆDØ"&Ø%Hô
ñ 		0ô
 ×*Ñ*¨4¸9ÕEÜ2°<ÀÈDÓQˆJØÐ%Ø(�Ü˜9 hÓ/÷		0ñ 		0ð &÷		0ñ ÷		0ð ús   �4A&Á&A/c                ód  ‡— t         €t        d«      ‚t        «       }|�†t        dx}dd¬«      5  t	        j
                  || ¬«       t        || «      Št        j                  d| ‰�t        ‰«      nd	«       ‰�#t         rt        d
«      ‚‰a t        ddˆfd„«       ddd«       yy# 1 sw Y   yxY w)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Š  ro  z'get_extra_code_state %s hit, %d entriesr   zBexpected _CODE_STATE to be empty before merging extra remote stateÚget_extra_remote_code_staterh  c                 ó   •— t        ‰ «      S r7   )rX  )r.  s   €r   rj   z-get_extra_remote_code_state.<locals>.<lambda>§  s   ø€ Ô-¨jÓ9€ r   )rq   r›   r*  r
   r	   r@  r‡  rÔ   rÓ   rº   r   r�  s      @r   r�  r�  …  sÑ   ø€ ô
 ÐÜØTó
ð 	
ô $Ó%€LØÐÜØ5Ð5ˆDØ"&Ø%Hô
ñ 	ô
 ×*Ñ*¨4¸9ÕEÜ2°<ÀÓKˆJÜ�H‰HØ9ØØ#-Ð#9”�J”¸qôð
 Ð%ÝÜ(Ø\óð ð )�ä)Ø1ØÛ9ô÷'	ð 	ð  ÷	ð 	ús   ¯A-B&Â&B/c                 ól  — t         �t         S t        t        «      a t        «       } | €t         S t	        | «      }|€t        | «       t         s>t        j                  j                  j                  x}�t        |«      }|�t        |«       t        j                  d«       t         €t        d«      ‚t         S )Nzget_code_state using defaultz._CODE_STATE should have been initialized above)rq   r   rg   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Ðð ÐÜ˜iÔ(õ Ü!ŸN™N×1Ñ1×DÑDÐDˆ[ÐQä,¨[Ó9ˆØÐ%Ü'¨Ô7ä‡H�HÐ+Ô,äÐÜÐMÓNÐNÜÐr   c                 ór  — t         €t        j                  d«       y t         t        k(  rt        j                  d«       y t	        «       } | €t        j                  d«       y t        | «       t        | «       t        j                  j                  j                  x}�t        |«      }|�t        |«       y y y )Nz1put_code_state: never initialized, will not writez#put_code_state: no change, skippingz&put_code_state: no cache key, skipping)rq   rÔ   rÓ   rp   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ØäÔ&Ò&Ü�‰Ð6Ô7Øä“€IØÐÜ�‰Ð9Ô:Øä˜Ô#Ü˜)Ô$ÜŸ™×-Ñ-×AÑAÐAˆÐNÜ-¨lÓ;ˆØÐ&Ü! /Õ2ð 'ð Or   c                óª  — t        | «      }|€y |dz   }|dz   }ddlm} t        j                  t        j
                  j                  |«      d¬«        ||t        ¬«      5  t        |d«      5 }|j                  |«       |j                  «       }d d d «       t        j                  ||«       d d d «       |fS # 1 sw Y   Œ+xY w# 1 sw Y   |fS xY w)	Nz.tmpz.lockr   )ÚFileLockT)Úexist_ok)ÚtimeoutÚwb)r  Útorch.utils._filelockrŸ  r"   Úmakedirsr#   ÚdirnameÚLOCK_TIMEOUTr%   Úwriterw  Úreplace)r  Úpickled_coder#   Útmp_pathÚ	lock_pathrŸ  r{  rƒ   s           r   r\  r\  ä  sÂ   € Ü˜9Ó%€Dà€|Øð
 �f‰}€HØ�w‘€Iõ /ä‡K�K”—‘—‘ Ó%°Õ5á	�)¤\Ô	2ñ #Ü�(˜DÓ!ð 	 QØ�G‰G�LÔ!Ø—6‘6“8ˆD÷	ô 	�
‰
�8˜TÔ"÷	#ð
 �ˆ:Ð÷		ð 	ú÷#ð
 �ˆ:Ðús$   Á!CÁ."B:ÂCÂ:C	Â?CÃCc                ó  — t        dx}d¬«      5  t        j                  || ¬«       t        €t	        d«      ‚t        j                  t        «      }t        t        j                  «       | «      j                  |«       t        | |«      }|€t        j                  d«       	 d d d «       y |\  }}t        j                  ||¬«       t        j                  d|t        t        «      «       t        d	d
d„ «       d d d «       y # 1 sw Y   y xY w)Nzpgo.put_local_code_stateTr<  ro  z?_CODE_STATE must be initialized before writing local code statez$put_code_state: local cache disabledrp  z*put_code_state: wrote local %s, %d entriesr˜  rh  c                 ó    — t        t        «      S r7   rj  r   r   r   rj   z&put_local_code_state.<locals>.<lambda>  ó   € Ô%¤kÓ2€ r   )r
   r	   r@  rq   r›   ru  Údumpsr   rZ  r¤   rx  r\  rÔ   rÓ   rº   r   )r  rB   r©  r^  r#   rƒ   s         r   r˜  r˜  ý  sê   € Ü	Ð8Ð8�dÐPTÔ	Uñ 
Ü×&Ñ& t°yÕAÜÐÜ ØQóð ô —|‘|¤KÓ0ˆäÔ.×3Ñ3Ó5°yÓA×HÑHÈÔVä 	¨<Ó8ˆØˆ<Ü�H‰HÐ;Ô<Ø÷
ð 
ð ‰
ˆˆdä×&Ñ& t¸dÕCÜ�‰Ð=¸tÄSÌÓEUÔVÜ!Ø"ØÙ2ô	
÷'
÷ 
ñ 
ús   �BDÂ,ADÄDc           	     óP  — |sdnd}t        d|› �x}dd¬«      5  t        j                  || ¬«       t        €t	        d«      ‚t        «       }|€ t        j                  d	|«       	 d d d «       y t        j                  t        «      }t        j                  |t        |«      ¬
«       dt        j                  |«      j                  d«      i}|j                  | |«       t        j                  d|| t        t        «      «       t        |dd„ «       d d d «       y # 1 sw Y   y xY w)Nr™  Úput_extra_remote_code_statezpgo.TÚ!pgo_put_remote_code_state_time_usrŠ  ro  z@_CODE_STATE must be initialized before writing remote code statez%s: remote cache disabledrp  r~  Úasciiz%s: wrote remote %s, %d entriesrh  c                 ó    — t        t        «      S r7   rj  r   r   r   rj   z'put_remote_code_state.<locals>.<lambda><  r®  r   )r
   r	   r@  rq   r›   r*  rÔ   rÓ   ru  r¯  rº   r�  Ú	b64encodeÚdecodeÚputr   )r  Úextra_code_stater„  rB   rƒ  r,   r…  s          r   r™  r™    s!  € ñ  ñ 	 à*ð ô
 
Ø�z�lÐ#Ð#ˆØ"Ø!Dô
ñ 
ô
 	×&Ñ& t°yÕAÜÐÜ ØRóð ô (Ó)ˆàÐÜ�H‰HÐ0°*Ô=Ø÷
ð 
ô" —,‘,œ{Ó+ˆÜ×&Ñ& t¼cÀ'»lÕKà”F×$Ñ$ WÓ-×4Ñ4°WÓ=ð"
ˆ
ð 	×Ñ˜ JÔ/Ü�‰Ø-¨z¸9ÄcÌ+ÓFVô	
ô 	"ØØÙ2ô	
÷7
÷ 
ñ 
ús   šADÁ/B$DÄD%c                 ó   — d a d aday rG   )rq   rp   rr   r   r   r   Úreset_code_staterº  A  s   € à€KØÐØ %Ñr   )r*   r>   r`   r>   )r,   ztypes.CellTyper`   r_   )
rç   r   rB   r>   rÝ   ri   rÈ   ra   r`   ri   )rü   r>   r`   r>   )r`   ú
str | None)r  r>   r`   r»  )r  r>   r`   r»  )r`   ra   )r`   zRemoteCache[JsonDataTy] | None)r.  rg   r`   úOrderedSet[str])r7  r¼  r`   r¼  )rà   rc   r`   rÃ   rÂ   )rU  údefaultdict[CodeId, CodeState]r`   r>   )rü   r>   rl  r>   r`   r½  )r  r>   r`   ro   r7   )rƒ  zRemoteCache[JsonDataTy]r  r>   r„  r»  r`   ro   )r  r>   r`   rÃ   )r`   r½  )r  r>   r©  Úbytesr`   ztuple[str, int] | None)F)r  r>   r¸  ra   r`   rÃ   )hrw   Ú
__future__r   r�  rå   rm   ÚenumÚ	functoolsÚloggingr"   ru  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   r)  r   r   r9   r   Ú	getLoggerr   rÔ   rÒ   r¦  Úcacher/   r5   r:   Ú	dataclassr=   rg   rp   rd   rq   rr   Úsetrs   ru   rx   ÚEnumrz   r|   rŒ   r   r‹   ri   rì   rô   rÿ   r  r  r  r#  r*  r3  r9  rD  rK  rX  ÚregisterrZ  rm  r|  r‡  rŽ  r�  rá   r�  r\  r˜  r™  rº  r   r   r   ú<module>rØ     s  ðò	õ #ã Û Û Û Û Û Û 	Û Û 	Û Ý #ß )ß ,ã Û Û Ý  ÷ó õ )Ý >÷ñ õ
 0ñ ÛåHßDô	 *ô 	ð €g×Ñ˜Ó!€Ø&�W×&Ñ&Ð'NÓOÐ à€ðj ‡�ò	ó ð	óóð €×Ñ˜dÔ#÷-
ð -
ó $ð-
ð` ×Ñ÷ð ó ðð ;?Ð Ð7Ó >Ø59€Ð2Ó 9Ø"'Ð ˜4Ó 'Ù#&£5Ð ˜Ó (ð €×Ñ˜dÔ#÷ð ó $ðñ( ˆTƒ]€ô�—	‘	ô ð �_‰_€
ô�$—)‘)ô ð × Ñ €ð ×Ñ÷jð jó ðjðd (-ñqØ!ðqà
ðqð ðqð
 !%ðqð óqðr (-ñ.Ø!ð.à
ð.ð ð.ð
 !%ð.ð ó.ób!óó4(ó?óó.ó
óóó )óð( ×Ñô�}ó ó ðó>ó"ð< "ð(Ø)ð(àð(ð ð(ð +ó	(óVó"#óL óF3ó,ó2
ô6%
ôR&r   