ó
    CC˜j+¡  ã                  óô  • % S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKJr  SSKJrJr  SSKJrJr  SSKrSSKrSSKrSSKJr  SSKJrJrJrJ r   SSK!J"r"  SS	K#J$r$  SS
K%J&r&J'r'J(r(  SSK)J*r*  \(       a  SSK+r+SSK,J-r-  SSK.J/r/J0r0   " S S\15      r2\Rf                  " \45      r5\Rf                  " S5      r6Sr7\Rp                  SGS j5       r9SHS jr:SHS jr;\Rx                  " SS9 " S S5      5       r=\Rx                   " S S5      5       r>Sq?S\@S'   SqAS\@S'   SqBS\@S '   \C" 5       qDS!\@S"'   \Rx                  " SS9 " S# S$5      5       rE\" S%5      rF " S& S'\RŽ                  5      rH\HR’                  rJ " S( S)\RŽ                  5      rK\KR’                  rL\Rx                   " S* S+5      5       rMSS,.         SIS- jjrNSS,.         SIS. jjrOSJS/ jrPSKS0 jrQSLS1 jrRSMS2 jrSSNS3 jrTSOS4 jrUSPS5 jrVSQS6 jrWSRS7 jrXSSS8 jrYSTS9 jrZ\'R¶                   " S: S;\&5      5       r\SUS< jr]SVS= jr^ SW       SXS> jjr_SVS? jr`SYS@ jraSZSA jrbSSSB jrcS[SC jrdSYSD jreS\S]SE jjrfSSSF jrgg)^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                  ó   • \ rS rSrSrg)ÚReservedWorkflowIdUserErroré7   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    ÚŸC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\torch/_dynamo/pgo.pyr   r   7   s   † Úr   r   z%torch.fx.experimental.symbolic_shapesé
   c                ó
  • [         R                  R                  U 5      (       d  U $ [        U S5       nUR	                  5       n[
        R                  " U5      n[        US-  S5      nUsS S S 5        $ ! , (       d  f       g = f)NÚrbl   ÿÿ Ú08x)ÚosÚpathÚexistsÚopenÚreadÚzlibÚcrc32Úformat)ÚfilepathÚfileÚcontentÚcrc32_valueÚhashs        r    Ú_hash_containing_filer2   s   sa   € ô �7‰7�>‰>˜(×#Ñ#Øˆä	ˆh˜Ô	 Ø—)‘)“+ˆÜ—j’j Ó)ˆÜ�k JÑ.°Ó6ˆØ÷	 
×	×	ús   ³7A4Á4
Bc                ó^   • [        U 5      (       a  [        U S5      (       a  U R                  $ g )NÚ__code__)ÚcallableÚhasattrr4   ©r/   s    r    Ú_get_closure_contentr8   €   s(   € Ü�×ÑœW W¨j×9Ñ9Ø×ÑÐØr   c                óN   •  [        U R                  5      $ ! [         a     g f = f©N)r8   Úcell_contentsÚ
ValueErrorr7   s    r    Ú_get_cell_hash_contentr=   †   s*   € ðÜ# G×$9Ñ$9Ó:Ð:øÜó Ùðús   ‚ —
$£$T)Úfrozenc                  óŽ   • \ rS rSr% S\S'   S\S'   S\S'   S\S'   SrS	\S
'   SS jrSS jrSS jr\	 S     SS jj5       r
Srg)ÚCodeIdéŽ   ÚstrÚfilenameÚintÚfirstlinenoÚnameÚ	file_hashNú
int | NoneÚclosure_hashc                ó   • [        U[        5      (       d  gU R                  UR                  :H  =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ ©NF)Ú
isinstancer@   rG   rE   rF   rI   )ÚselfÚothers     r    Ú__eq__ÚCodeId.__eq__�   sp   € Ü˜%¤×(Ñ(Øà�N‰N˜eŸo™oÑ-÷ 8Ø× Ñ  E×$5Ñ$5Ñ5÷8à—	‘	˜UŸZ™ZÑ'÷8ð ×!Ñ! U×%7Ñ%7Ñ7ð		
r   c                óp   • [        U R                  U R                  U R                  U R                  45      $ r:   )r1   rG   rF   rE   rI   ©rM   s    r    Ú__hash__ÚCodeId.__hash__¨   s*   € Ü�T—^‘^ T§Y¡Y°×0@Ñ0@À$×BSÑBSÐTÓUÐUr   c                ón   • SU R                    SU R                   SU R                   SU R                   3$ )Nzhash(Ú)Ú:)rG   rC   rE   rF   rR   s    r    Ú__str__ÚCodeId.__str__«   s5   € Ø�t—~‘~Ð& a¨¯© °a¸×8HÑ8HÐ7IÈÈ4Ï9É9È+ÐVÐVr   c                óÊ   • S nU(       a  [        [        S U 5       5      5      n[        U R                  U R                  U R
                  [        U R                  5      U5      $ )Nc              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr:   )r=   )Ú.0Úcs     r    Ú	<genexpr>ÚCodeId.make.<locals>.<genexpr>´   s   é € Ð%QÊÀAÔ&<¸Q×&?Ð&?Êùs   ‚)r1   Útupler@   Úco_filenameÚco_firstlinenoÚco_namer2   )ÚcodeÚclosurerI   s      r    ÚmakeÚCodeId.make®   sX   € ð ˆÞÜ¤Ñ%QÉÓ%QÓ QÓRˆLäØ×ÑØ×ÑØ�L‰LÜ! $×"2Ñ"2Ó3Øó
ð 	
r   r   )rN   ÚobjectÚreturnÚbool)ri   rD   ©ri   rB   r:   )rd   útypes.CodeTypere   z!tuple[types.CellType, ...] | Noneri   r@   )r   r   r   r   Ú__annotations__rI   rO   rS   rX   Ústaticmethodrf   r   r   r   r    r@   r@   Ž   sc   ‡ àƒMØÓØ
ƒIð ƒNØ#€L�*Ó#ô
ôVôWð àKOð
Øð
Ø'Hð
à	ô
ó ó
r   r@   c                  óB   • \ rS rSr% \R
                  " S S9rS\S'   Srg)Ú	CodeStateé¿   c                 ó    • [        [        5      $ r:   )r   ÚFrameStateSizeEntryr   r   r    Ú<lambda>ÚCodeState.<lambda>Â   s
   € ¤Ô,?Ô @r   )Údefault_factoryz%defaultdict[str, FrameStateSizeEntry]Úautomatic_dynamicr   N)	r   r   r   r   ÚdataclassesÚfieldrw   rm   r   r   r   r    rp   rp   ¿   s   ‡ à?J×?PÒ?PÙ@ñ@ÐÐ<ö r   rp   ú%defaultdict[CodeId, CodeState] | NoneÚ_INIT_CODE_STATEÚ_CODE_STATEFrj   Ú_LOGGED_DYNAMIC_ALLOWLISTzset[str]Ú_KNOWN_DYNAMIC_SOURCESc                  ó$   • \ rS rSr% SrS\S'   Srg)ÚInferStrideéÌ   a(  
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.
rD   Údimr   N)r   r   r   r   Ú__doc__rm   r   r   r   r    r€   r€   Ì   s   ‡ ñð  
†Hr   r€   Ú_Tc                  ó   • \ rS rSrSrSrSrg)Ú	AutoUnsetéä   z
The identity element of our semilattice, a generic "don't know" element that
is always subsumed when we get more information.
r   r   N©r   r   r   r   rƒ   Útokenr   r   r   r    r†   r†   ä   ó   † ñð
 ƒEr   r†   c                  ó   • \ rS rSrSrSrSrg)ÚAutoDynamicéð   zv
The top element of our (bounded) semilattice, whenever you merge this with
any other element you always get it again
r   r   Nrˆ   r   r   r    rŒ   rŒ   ð   rŠ   r   rŒ   c                  ó®  • \ rS rSr% \R
                  " \S9rS\S'   \R
                  " \S9r	S\S'   \R
                  " \S9r
S\S'   \R
                  " S	S
S9rS\S'   \R
                  " S	S
S9rS\S'   SS jrSS jrSS jrSS jr\SS j5       r\S S j5       r\      S!S j5       r\S"S j5       r\S#S j5       r\      S$S j5       rS%S jrSrg	)&rs   éü   )Údefaultzint | AutoDynamic | AutoUnsetÚscalarz7AutoDynamic | AutoUnset | tuple[int | AutoDynamic, ...]ÚsizezEAutoDynamic | AutoUnset | tuple[int | AutoDynamic | InferStride, ...]ÚstrideNF)r�   Úcompareztuple[int | None, ...] | NoneÚexcluded_sizesrH   Úexcluded_scalarc                ó¾  ^• SS jmS	U4S jjnU R                   [        L a6  U R                  [        L a#  U R                  [        L a  gSU R                   3$ U R                  [        L af  [	        U R                   [
        5      (       aG  [	        U R                  [
        5      (       a(  SU" U R                   5       SU" U R                  5       3$ S[        U 5       3$ )
Nc                óŠ   • U [         L a  gU [        L a  g[        U [        5      (       a  SU R                   S3$ [        U 5      $ )NÚ?z
auto unsetzS(rV   )Úauto_dynamicÚ
auto_unsetrL   r€   r‚   rB   )Úss    r    Úrender_singleÚ1FrameStateSizeEntry.render.<locals>.render_single  s?   € Ø”LÒ ØØ”j’à#Ü˜Aœ{×+Ñ+Ø˜AŸE™E˜7 !�}Ð$ä˜1“v�r   c                óF   >• SSR                  U4S jU  5       5      -   S-   $ )NÚ[z, c              3  ó4   >#   • U  H  nT" U5      v •  M     g 7fr:   r   )r\   rœ   r�   s     €r    r^   ÚCFrameStateSizeEntry.render.<locals>.render_tuple.<locals>.<genexpr>  s   øé € Ð"@ºR¸¡=°×#3Ð#3ºRùs   ƒÚ])Újoin)Ússr�   s    €r    Úrender_tupleÚ0FrameStateSizeEntry.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 | InferStrideri   rB   )r¥   z+tuple[int | AutoDynamic | InferStride, ...]ri   rB   )r’   rš   r“   r‘   rL   r`   Úrepr)rM   r¦   r�   s     @r    ÚrenderÚFrameStateSizeEntry.render  s±   ø€ ô		÷	Gð �9‰9œÒ$¨¯©¼Ò)DØ�{‰{œlÒ*Ø7à  §¡ Ð.Ð.Ø�[‰[œLÒ(Ü˜$Ÿ)™)¤U×+Ñ+´
¸4¿;¹;Ì×0NÑ0NØ%¡l°4·9±9Ó&=Ð%>¸hÁ|ÐTX×T_ÑT_ÓG`ÐFaÐbÐbð œ$˜t›*˜Ð&Ð&r   c                óò  • [        U R                  [        R                  5      (       a  [	        U R                  5      e[        U R
                  [        5      (       a=  U R
                   H-  n[        U[        R                  5      (       d  M$  [	        U5      e   [        U R                  [        5      (       a>  U R                   H-  n[        U[        R                  5      (       d  M$  [	        U5      e   g g r:   )rL   r‘   ÚtorchÚSymIntÚAssertionErrorr’   r`   r“   )rM   rœ   Ús1s      r    Ú__post_init__Ú!FrameStateSizeEntry.__post_init__)  s£   € Ü�d—k‘k¤5§<¡<×0Ñ0Ü  §¡Ó-Ð-Ü�d—i‘i¤×'Ñ'Ø—Y”Y�Ü˜a¤§¡×.Ó.Ü(¨Ó+Ð+ñ ô �d—k‘k¤5×)Ñ)Ø—k”k�Ü˜b¤%§,¡,×/Ó/Ü(¨Ó,Ð,ò "ð *r   c                ó|   • U R                   [        L a  gU R                   [        L a  gU R                   U   [        L $ )NTF)r’   rš   r›   ©rM   r‚   s     r    Úis_size_dynamicÚ#FrameStateSizeEntry.is_size_dynamic5  s3   € Ø�9‰9œÒ$ØØ�9‰9œ
Ò"ØØ�y‰y˜‰~¤Ð-Ð-r   c                óþ   • [        U R                  [        5      (       a!  [        S U R                   5       5      (       d  gU R                  [
        L a  gU R                  [        L a  gU R                  U   [
        L $ )Nc              3  óD   #   • U  H  n[        U5      [        L v •  M     g 7fr:   ©ÚtyperD   ©r\   rœ   s     r    r^   Ú8FrameStateSizeEntry.is_stride_dynamic.<locals>.<genexpr>M  s   é € Ð0SÊÀA´°a³¼CµÊùs   ‚ FT)rL   r’   r`   Úallr“   rš   r›   r³   s     r    Úis_stride_dynamicÚ%FrameStateSizeEntry.is_stride_dynamic<  s^   € ô" �t—y‘y¤%×(Ñ(¬SÑ0SÈÏÊÓ0S×-SÑ-SàØ�;‰;œ,Ò&ØØ�;‰;œ*Ò$ØØ�{‰{˜3Ñ¤<Ð/Ð/r   c                ó&   • [        S U  5       5      $ )Nc              3  óp   #   • U  H,  n[        U[        R                  5      (       a  [        OUv •  M.     g 7fr:   )rL   r¬   r­   rš   )r\   Úxs     r    r^   Ú4FrameStateSizeEntry._munge_symint.<locals>.<genexpr>X  s'   é € ÐTÒQSÈA¤Z°´5·<±<×%@Ñ%@•\ÀaÔGÒQSùs   ‚46)r`   )Úxss    r    Ú_munge_symintÚ!FrameStateSizeEntry._munge_symintV  s   € äÑTÑQSÓTÓTÐTr   c                ó(   • [        U[        [        S9$ ©N)r‘   r’   r“   )rs   rš   )ÚclsrÁ   s     r    Úmake_scalarÚFrameStateSizeEntry.make_scalarZ  s   € ä"¨!´,Ä|ÑTÐTr   c                ó\   • [        [        U R                  U5      U R                  U5      S9$ rÇ   )rs   rš   rÄ   )rÈ   r’   r“   s      r    Úmake_tensorÚFrameStateSizeEntry.make_tensor^  s0   € ô #ÜØ×"Ñ" 4Ó(Ø×$Ñ$ VÓ,ñ
ð 	
r   c                óF   • [        [        U R                  U5      [        S9$ rÇ   )rs   r›   rÄ   )rÈ   r’   s     r    Ú	make_sizeÚFrameStateSizeEntry.make_sizeh  s#   € ä"ÜØ×"Ñ" 4Ó(Üñ
ð 	
r   c                ól   • U [         L a  U$ U[         L a  U $ U [        L d  U[        L d  X:w  a  [        $ U $ r:   )r›   rš   )rÁ   Úys     r    Ú_merge_atomÚFrameStateSizeEntry._merge_atomp  s8   € à”
Š?ØˆHØ”
Š?ØˆHØ”Ò ¤\Ò 1°Q³VÜÐØˆr   c                óØ   ^ • U[         L a  U$ U[         L a  U$ U[        L d	  U[        L a  [        $ [        U5      [        U5      :w  a  [        $ [        U 4S j[	        X5       5       5      $ )Nc              3  óJ   >#   • U  H  u  pTR                  X5      v •  M     g 7fr:   )rÓ   )r\   rÁ   rÒ   rÈ   s      €r    r^   Ú6FrameStateSizeEntry._merge_atom_tup.<locals>.<genexpr>ˆ  s   øé € ÐC²{©t¨q�S—_‘_ Q×*Ð*²{ùs   ƒ #)r›   rš   Úlenr`   Úzip)rÈ   rÃ   Úyss   `  r    Ú_merge_atom_tupÚ#FrameStateSizeEntry._merge_atom_tupz  s_   ø€ ð ”ÒØˆIØ”ÒØˆIØ”Ò ¤|Ò!3ÜÐÜˆr‹7”c˜"“gÓÜÐÜÔC´s¸2´{ÓCÓCÐCr   c                óè  • U R                  U R                  UR                  5      n[        U R                  [        5      (       aE  X R                  :w  a"  [        S U R                   5       5      U l        OU R                  b  S U l        X l        [        U R                  5      [        L aH  [        UR                  5      [        L a,  U R                  UR                  :w  a  U R                  U l        O'U R                  [        L a  U R                  b  S U l        U R                  U R                  UR                  5      U l        U R                  U R                  UR                  5      U l        U $ )Nc              3  óN   #   • U  H  n[        U5      [        L a  UOS v •  M     g 7fr:   r¸   rº   s     r    r^   Ú.FrameStateSizeEntry.__ior__.<locals>.<genexpr>”  s"   é € ð ,Ú;D°aœ˜a›¤Cš‘A¨TÔ1º9ùs   ‚#%)rÛ   r’   rL   r`   r•   r¹   r‘   rD   r–   rš   rÓ   r“   )rM   rN   Únew_sizes      r    Ú__ior__ÚFrameStateSizeEntry.__ior__Š  s  € ð ×'Ñ'¨¯	©	°5·:±:Ó>ˆÜ�d—i‘i¤×'Ñ'ØŸ9™9Ó$Ü&+ñ ,Ø;?¿9º9ó,ó '�Õ#ð ×$Ñ$Ñ0Ø&*�Ô#ØŒ	ô
 �—‘Ó¤Ò$Ü�U—\‘\Ó"¤cÒ)Ø—‘˜uŸ|™|Ó+à#'§;¡;ˆDÕ Ø�[‰[œLÒ(¨T×-AÑ-AÑ-MØ#'ˆDÔ Ø×&Ñ& t§{¡{°E·L±LÓAˆŒØ×*Ñ*¨4¯;©;¸¿¹ÓEˆŒØˆr   )r–   r•   r‘   r’   r“   rk   ©ri   ÚNone)r‚   rD   ri   rj   )rÃ   útuple[int, ...]ri   ztuple[AutoDynamic | int, ...])rÁ   rD   ri   rs   )r’   rå   r“   rå   ri   rs   )r’   rå   ri   rs   )rÁ   r„   rÒ   r„   ri   zAutoDynamic | _T)rÃ   ú(AutoDynamic | AutoUnset | tuple[_T, ...]rÚ   ræ   ri   z6AutoDynamic | AutoUnset | tuple[AutoDynamic | _T, ...])rN   r   ri   r   )r   r   r   r   rx   ry   r›   r‘   rm   r’   r“   r•   r–   r©   r°   r´   r½   rn   rÄ   ÚclassmethodrÉ   rÌ   rÏ   rÓ   rÛ   rá   r   r   r   r    rs   rs   ü   s]  ‡ à,7×,=Ò,=ÀjÑ,Q€FÐ)ÓQð EP×DUÒDUØñE€DÐ
Aó ð 	×Ò *Ñ-ð ÐQó ð 5@×4EÒ4EØ˜eñ5€NÐ1ó ð #.×"3Ò"3¸DÈ%Ñ"P€O�ZÓPô'ô:
-ô.ô0ð4 óUó ðUð óUó ðUð ð
Ø"ð
Ø,;ð
à	ó
ó ð
ð ó
ó ð
ð óó ðð ðDà4ðDð 5ðDð 
@ó	Dó ðD÷r   rs   ©Úis_unspecialized_nn_modulec          
     óp  ^^^
• [         R                  U R                  U R                  5      n[	        5       U   n[
        R                  R                  R                  (       Ga  TUR                  ;   nUR                  T   n[        R                  " U5      m
UT-  nU(       a¼  T
R                  UR                  :w  a¢  [        R                  ST5        [        R                  STTR                  T
R                  5        [         R"                  " STSS[%        T
R                  5      [%        TR                  5      S.5        U(       a  [        R                  ST5         S         SUUU
4S jjjnU(       að  T
R&                  UR&                  :w  aÖ  [)        T
R&                  [*        5      (       a­  [)        TR&                  [*        5      (       aŽ  [-        T
R&                  5      [-        TR&                  5      :w  a  U" S	S
S5        Oa[/        [-        TR&                  5      5       H4  n	T
R&                  U	   TR&                  U	   :w  d  M%  U" S	SU	 S3SU	5        M6     O
U" S	SS5        U(       aó  T
R0                  UR0                  :w  aÙ  [)        T
R0                  [*        5      (       a°  [)        TR0                  [*        5      (       a‘  [-        T
R0                  5      [-        TR0                  5      :w  a  U" SS
S5        U$ [/        [-        TR0                  5      5       H4  n	T
R0                  U	   TR0                  U	   :w  d  M%  U" SSU	 S3SU	5        M6      U$ U" SSS5        U$ UR                  T   m
[        R                  STT
R                  TR                  5        TUR                  T'   TnU$ )Nú2marking %s as dynamic (from automatic dynamic/PGO)z%automatic dynamic int %s val %s != %srw   r‘   zscalar change©rF   Ú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           
     óF  >• Uc  [        TU 5      O[        TU 5      U   nUc  [        TU 5      O[        TU 5      U   n[        R                  ST5        [        R	                  SU TUUU5        [
        R                  " STUc  SOUU[        U5      [        U5      S.5        g )Nrë   z#automatic dynamic %s %s %s %s != %srw   r¼   rì   )ÚgetattrÚsymbolic_shape_logÚinfoÚlogÚdebugr	   ÚinstantrB   )	Útup_nameÚshort_reasonÚlong_reasonÚiÚ	entry_tupÚold_entry_tupÚentryrF   Ú	old_entrys	         €€€r    Úlog_tupÚ)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’   r‚   zdimensionality changezsize(rV   zsize changerN   r“   zstride(zstride changez9automatic dynamic is off, overwriting int %s val %s -> %sr:   )
rø   rB   rù   rB   rú   rB   rû   rH   ri   rä   )r@   rf   Úf_codere   Úget_code_stater¬   Ú_dynamoÚconfigÚautomatic_dynamic_shapesrw   Úcopyr‘   ró   rô   rõ   rö   r	   r÷   rB   r’   rL   r`   rØ   Úranger“   )ÚtxrF   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Ð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Ñ0´ZÀÇ
Á
ÌE×5RÑ5RÜ�y—~‘~Ó&¬#¨e¯j©j«/Ó9Ù˜F EÐ+BÕCä"¤3 u§z¡z£?Ö3˜Ø$Ÿ>™>¨!Ñ,°·
±
¸1±Õ=Ù# F¨e°A°3°a¨L¸-ÈÖKò 4ñ ˜ ¨Ô1æ˜×)Ñ)¨Y×-=Ñ-=Ó=Ü˜)×*Ñ*¬E×2Ñ2´zÀ%Ç,Á,ÔPU×7VÑ7VÜ�y×'Ñ'Ó(¬C°·±Ó,=Ó=Ù˜H eÐ-DÔEð$ Ðô! #¤3 u§|¡|Ó#4Ö5˜Ø$×+Ñ+¨AÑ.°%·,±,¸q±/ÕAÙ# H°¸°s¸!¨n¸oÈqÖQò 6ð  Ðñ ˜ '¨7Ô3ð Ðð  ×1Ñ1°$Ñ7ˆ	Ü�	‰	ØGØØ×ÑØ�L‰Lô		
ð /4ˆ×%Ñ% dÑ+Øˆ	àÐr   c               ó$  • U R                   =nc  [        U UUUS9$ UR                  c  X$R                  R                  U'   U$ S nUR                   H-  nXR                  ;   d  M  [        U UUR                  U   US9nM/     Uc  [        S5      eU$ )Nrè   zCexpected at least one matching automatic_dynamic entry across ranks)Údistributed_stater  Ú
all_statesÚlocal_staterw   r®   )r	  rF   rþ   ré   ÚstÚresÚ	sub_states          r    Úprocess_automatic_dynamicr    s³   € ð ×"Ñ"Ð"ˆÑ+Ü'ØØØØ'Añ	
ð 	
ð 
�‰Ñ	ð 27�‰×(Ñ(¨Ñ.Øˆð ˆØŸœˆIØ×2Ñ2Õ2Ü.ØØØ×/Ñ/°Ñ5Ø/Iñ	’ñ 'ð ‰;Ü ØUóð ð ˆ
r   c                óô   • S n[         R                  " 5       (       a/  [         R                  " 5       (       a  [         R                  " 5       n[        R
                  R                  R                  nU  SU SU 3$ )NrW   )ÚdistÚis_availableÚis_initializedÚget_rankr¬   Úcompilerr  Úcache_key_tag)ÚkeyÚrankÚtags      r    Úformat_cache_keyr!  O  s]   € ð €DÜ×Ò×Ñœt×2Ò2×4Ñ4Ü�}Š}‹ˆä
�.‰.×
Ñ
×
-Ñ
-€CØˆU�!�D�6˜˜3˜%Ð Ð r   c                 ó€  • [         R                  R                  R                  (       a  [	        S5        g [         R                  R                  R
                  =n b,  U R                  S5      (       a  [        S5      e[        U 5      $ [         R                  R                  5       =nb  Uu  p#[        SU SU 35      $ g )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.rW   )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                ó‚   • [         R                  R                  R                  (       a  [	        S5        g [        U 5      $ )Nr#  )r¬   r  r  r%  r   r!  )Ú
sticky_keys    r    Úget_extra_cache_keyr1  t  s0   € Ü‡~�~×Ñ×1×1ÜØUô	
ð ä˜JÓ'Ð'r   c                ó  • [         R                  R                  R                  (       d  [        R                  S5        g SSKJn  [        R                  " SSSU  S35      n[        R                  R                  U" 5       SU5      $ )	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_utilsr3  ÚreÚsubr%   r&   r¤   )Ú	cache_keyr3  Úcode_state_keys      r    Úcode_state_pathr=    s\   € Ü�=‰=×Ñ×;×;Ü�	‰	Ð;Ô<Øå?ä—V’V˜O¨S°KÀ	¸{È$Ð2OÓP€NÜ�7‰7�<‰<™	› X¨~Ó>Ð>r   c                 ó‚  • [         R                  R                  R                  (       a  g[         R                  R                  R
                  =n b  U $ [        5       (       d  g[         R                  R                  5       (       a  g SSK	J
n  U[         R                  R                  S5      :¬  $ ! [         a     gf = f)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_cacherE  Š  s›   € Ü‡~�~×Ñ×1×1Øä�]‰]×!Ñ!×>Ñ>Ð>ˆÑKØˆä�;‰;Øä×Ñ×,Ñ,×.Ñ.ØðÝHð  ¤5×#8Ñ#8×#MÑ#MØ1ó$ñ ð øô ó Ùðús   Â	B1 Â1
B>Â=B>c                 óT   • SSK Jn   [        5       (       d  g U " S[        5       SS5      $ )Nr   ©Úcreate_cachez
dynamo-pgoÚFbRemoteDynamoPGOCacheÚRemoteDynamoPGOCache)Útorch._inductor.remote_cacherH  rE  r   rG  s    r    Úget_remote_cacherL  ¡  s,   € Ý9ä-×/Ñ/ØáØÜ‹Ø Øó	ð r   c                ó*  • [        5       nU R                  R                  5        Hj  u  p#Sn[        UR                  [
        5      (       a  [        UR                  ;   nOUR                  [        :X  a  SnU(       d  MY  UR                  U5        Ml     U$ )NFT)	r   rw   ÚitemsrL   r’   r`   rš   r‘   Úadd)Ú
code_stateÚdynamic_sourcesÚsrcÚfsÚdynamics        r    Ú_collect_dynamic_sourcesrU  ¯  st   € Ü'1£|€OØ×/Ñ/×5Ñ5Ö7‰ˆØˆÜ�b—g‘gœu×%Ñ%Ü" b§g¡gÑ-‰GØ�Y‰Yœ,Ó&ØˆGßˆ7Ø×Ñ Ö$ñ 8ð Ðr   c                óº   • SSK Jn  [        5       nU  HD  nU[        ;   a  M  U" U5      (       a  [        R	                  U5        M3  UR	                  U5        MF     U$ )Nr   )Úis_dynamic_source)Útorch._dynamo.variables.builderrW  r   r~   rO  )Úall_sourcesrW  Úmissing_sourcesrR  s       r    Ú_collect_missing_sourcesr[  ¼  sV   € ÝAô (2£|€OÛˆØÔ(Ó(ÙÙ˜s×#Ñ#Ü"×&Ñ& sÔ+ÙØ×Ñ˜CÖ ñ ð Ðr   c                ó>  • [         R                  U S 5      n[        5       U   n[        U5      nSR	                  U5      nSR	                  [        U5      5      nU(       a,  [        S=nSS9   [        R                  " UUUS9  S S S 5        g g ! , (       d  f       g = f)NÚ,zpgo.dynamic_whitelistT©Úlog_pt2_compile_event)Úrecompile_dynamic_whitelistÚmissing_dynamic_whitelist)	r@   rf   r  rU  r¤   r[  r
   r	   Úpt2_compile)r  r
  r  Úall_dynamic_sourcesÚframe_whitelistÚmissing_whitelistrF   s          r    Úlog_frame_dynamic_whitelistrf  Ë  s�   € ä�k‰k˜& $Ó'€GÜ Ó" 7Ñ+€KÜ2°;Ó?ÐØ—h‘hÐ2Ó3€OØŸ™Ô!9Ð:MÓ!NÓOÐÞÜÐ"9Ð9˜$ÐQUÓVÜ×*Ò*ØØ,;Ø*;ò÷ WÐVð ßVÕVús   Á-BÂ
Bc                 ó^   • [         (       d"  [        R                  R                  SSSS9  Sq g g )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)r}   r¬   r(  Úadd_mlhub_insightr   r   r    Ú_log_size_mismatch_recompilerm  Û  s9   € ç$Ò$Ü×Ñ×/Ñ/Ø.Ø:ð!%ð 	0ñ 	
ð %)Ñ!ð %r   c                ó  • SR                  S U R                  5        5       5      n[        5       nU R                  5        H  nUR	                  [        U5      5        M     U(       a  USSR                  U5       S3-  nU$ )NÚ
c              3  ó’   #   • U  H=  u  pU S 3SR                  S UR                  R                  5        5       5      -   v •  M?     g7f)z:
ro  c              3  óR   #   • U  H  u  pS U SUR                  5        3v •  M     g7f)z  z: N)r©   )r\   rR  rS  s      r    r^   Ú.render_code_state.<locals>.<genexpr>.<genexpr>ì  s)   é € ð 
Ú5P©'¨#ˆb���R˜Ÿ	™	›�}Õ%Ò5Pùs   ‚%'N)r¤   rw   rN  )r\   ÚkÚvs      r    r^   Ú$render_code_state.<locals>.<genexpr>ê  sP   é € ð ò
 ‰DˆAð	 ˆ#ˆ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¤   rN  r   ÚvaluesÚupdaterU  )ÚcsÚcode_state_strrQ  Ústates       r    Úrender_code_stater|  é  s†   € Ø—Y‘Yñ ð
 —H‘H”Jóó €Nô (2£|€OØ—‘–ˆØ×ÑÔ7¸Ó>Ö?ñ æØðGàGJÇxÁxÐP_ÓG`ÐFaÐabðdñ	
ˆð
 Ðr   c                  óZ   • \ rS rSr\SS j5       r\\SS j5       5       r\S	S j5       rSr	g)
ÚPGOCacheArtifactiý  c                ó~   • [        U R                  U R                  5      U R                  5      nUc  [	        S5      eg )Nz:write_local_impl returned None during PGO cache population)Úwrite_local_implÚ!_rewrite_cache_key_for_mega_cacher  r/   r®   )rM   Úmetas     r    Úpopulate_cacheÚPGOCacheArtifact.populate_cacheÿ  s@   € äØ×2Ñ2°4·8±8Ó<¸d¿l¹ló
ˆð ‰<Ü ØLóð ð r   c                 ó   • g)NÚpgor   r   r   r    r¹   ÚPGOCacheArtifact.type	  s   € ð r   c                óT   • U R                  S5      (       d  U $ [        5       =nb  U$ U $ )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�  Ú2PGOCacheArtifact._rewrite_cache_key_for_mega_cache  s3   € ð ×&Ñ& w×/Ñ/àÐÜ$“Ð&ˆGÑ3ØˆNØÐr   r   Nrã   rk   )r‰  rB   ri   rB   )
r   r   r   r   r   rƒ  rn   r¹   r�  r   r   r   r    r~  r~  ý  sD   † àóó ðð Øóó ó ðð óó ór   r~  c                ó.  • [        [        [        5      (       d  [        S[	        [        5       35      e[
        R                  SX[        [        5      5        [        SU S3SS 5        [        SS5        [        R                  " [        5      q[        $ )	Nz.expected _CODE_STATE to be a defaultdict, got z$get_code_state %s hit %s, %d entriesÚget_Ú_code_stateÚstringc                 ó    • [        [        5      $ r:   ©r|  r|   r   r   r    rt   Úhit.<locals>.<lambda>'  s
   € Ô!¤+Ô.r   r†  T)rL   r|   r   r®   r¹   rõ   rô   rØ   r   r   r  Údeepcopyr{   )r  Útys     r    Úhitr•    s   € ä”k¤;×/Ñ/ÜØ<¼TÄ+Ó=NÐ<OÐPó
ð 	
ô ‡H�HÐ3°S¼cÄ+Ó>NÔOÜØ
ˆrˆd�+ÐØÙ.ôô
 �E˜4Ô Ü—}’}¤[Ó1ÐÜÐr   c           	     ó   • [        U 5      nUbæ  [        R                  R                  U5      (       aÂ  [	        S=nSS9   [
        R                  " X S9  [        US5       n UR                  5       n[        R                  " U5      q[
        R                  " X#R                  5       S9  [        [        R                  5       U 5      R!                  U5        [#        US5      sS S S 5        sS S S 5        $ g ! [$         a    [&        R)                  SUSS	9   Of = f S S S 5        O! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f)
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	   rb  r(   r)   ÚpickleÚloadsr|   Útellr   r~  r¹   Úrecordr•  Ú	Exceptionrõ   Úwarning)r;  r&   rF   Úfr/   s        r    Úget_local_code_stater¤  .  s"  € ä˜9Ó%€DØÑœBŸG™GŸN™N¨4×0Ñ0ÜØ.Ð.ˆDÀdó
ô ×*Ò*¨4Ò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C6Â*8D%Ã"	D?Ã6DÄD%ÄDÄD%Ä	D?Ä%
D3	Ä/D?Ä?
Ec                ó®  • S n U R                  U5      nUbÚ   [        U[        5      (       d  [        S[	        U5       35      eUS   n[        U[
        5      (       d  [        S[	        U5       35      e[        R                  " U5      nUb  [        R                  " U[        U5      S9  [        R                  " U5      n[        [        R	                  5       U5      R                  U5        U$ ["        R'                  SU5         U$ ! [          a    ["        R%                  SUSS9   U$ f = f! [          a    ["        R%                  S	USS9   U$ f = f)
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)ÚgetrL   Údictr®   r¹   rB   Úbase64Ú	b64decoder	   rb  rØ   r�  rž  r   r~  r   r¡  rõ   r¢  rô   )Úremote_cacher;  Ú
event_namerP  Ú
cache_datar¦  Úpayloads          r    Úlookup_remote_cache_entryr¯  I  sn  € ð
 €Jð!DØ!×%Ñ% iÓ0ˆ
ð Ñ!ðÜ! *¬d×3Ñ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#   „D1 ™B*D ÄD.Ä-D.Ä1EÅEc                óä   • [        5       nUbR  [        S=nSSS9   [        R                  " X S9  [	        XU5      nUb  Uq[        U S5      sS S S 5        $  S S S 5        g g ! , (       d  f       g = f)Nzpgo.get_remote_code_stateTÚ!pgo_get_remote_code_state_time_us©r_  Údynamo_compile_column_usr—  Úremote)rL  r
   r	   rb  r¯  r|   r•  ©r;  r«  rF   rP  s       r    Úget_remote_code_stater¶  t  s€   € ä#Ó%€LØÑÜØ/Ð/ˆDØ"&Ø%Hó
ô
 ×*Ò*¨4ÒEÜ2°<ÈDÓQˆJØÑ%Ø(�Ü˜9 hÓ/÷
ñ 
ð &÷
ñ ÷
ô 
ð ús   ›1A!Á!
A/c                ót  ^• [         c  [        S5      e[        5       nUb‡  [        S=nSSS9   [        R
                  " X S9  [        X5      m[        R                  SU Tb  [        T5      OS	5        Tb)  [         (       a  [        S
5      eTq [        SSU4S j5        SSS5        gg! , (       d  f       g= f)zg
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²  r—  z'get_extra_code_state %s hit, %d entriesr   zBexpected _CODE_STATE to be empty before merging extra remote stateÚget_extra_remote_code_stater�  c                 ó   >• [        T 5      $ r:   )r|  )rP  s   €r    rt   Ú-get_extra_remote_code_state.<locals>.<lambda>§  s   ø€ Ô-¨jÔ9r   )r|   r®   rL  r
   r	   rb  r¯  rõ   rô   rØ   r   rµ  s      @r    r¸  r¸  …  sÊ   ø€ ô
 ÑÜØTó
ð 	
ô $Ó%€LØÑÜØ5Ð5ˆDØ"&Ø%Hó
ô
 ×*Ò*¨4ÒEÜ2°<ÓKˆJÜ�H‰HØ9ØØ#-Ñ#9”�J”¸qôð
 Ñ%ß’;Ü(Ø\óð ð )�ä)Ø1ØÜ9ô÷'
ð 
ð  ÷
õ 
ús   ®A1B)Â)
B7c                 ó‚  • [         b  [         $ [        [        5      q [        5       n U c  [         $ [	        U 5      nUc  [        U 5        [         (       d@  [        R                  R                  R                  =nb  [        U5      nUb  [        U5        [        R                  S5        [         c  [        S5      e[         $ )Nzget_code_state using defaultz._CODE_STATE should have been initialized above)r|   r   rp   r.  r¤  r¶  r¬   r  r  Úpgo_extra_read_keyr1  r¸  rõ   rô   r®   )r;  Úlocal_code_stateÚsticky_readÚextra_read_keys       r    r  r  «  s©   € äÑÜÐô œiÓ(€Kä“€IØÑÜÐô ,¨IÓ6Ðð ÑÜ˜iÔ(÷ ŠKÜ!ŸN™N×1Ñ1×DÑDÐDˆ[ÑQä,¨[Ó9ˆØÑ%Ü'¨Ô7ä‡H�HÐ+Ô,äÑÜÐMÓNÐNÜÐr   c                 ó|  • [         c  [        R                  S5        g [         [        :X  a  [        R                  S5        g [	        5       n U c  [        R                  S5        g [        U 5        [        U 5        [        R                  R                  R                  =nb  [        U5      nUb  [        U5        g g g )Nz1put_code_state: never initialized, will not writez#put_code_state: no change, skippingz&put_code_state: no cache key, skipping)r|   rõ   rô   r{   r.  Úput_local_code_stateÚput_remote_code_stater¬   r  r  Úpgo_extra_write_keyr1  )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                ó¶  • [        U 5      nUc  g US-   nUS-   nSSKJn  [        R                  " [        R
                  R                  U5      SS9  U" U[        S9   [        US5       nUR                  U5        UR                  5       nS S S 5        [        R                  " X25        S S S 5        UW4$ ! , (       d  f       N0= f! , (       d  f       UW4$ = f)	Nz.tmpz.lockr   )ÚFileLockT)Úexist_ok)ÚtimeoutÚwb)r=  Útorch.utils._filelockrÈ  r%   Úmakedirsr&   ÚdirnameÚLOCK_TIMEOUTr(   ÚwriterŸ  Ú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Ô"÷	 
3ð
 �ˆ:Ð÷	 "Õ!ú÷ 
3Ô	2ð
 �ˆ:Ðús$   ÁCÁ*"B6ÂCÂ6
C	Ã CÃ
Cc                ó  • [        S=nSS9   [        R                  " XS9  [        c  [	        S5      e[
        R                  " [        5      n[        [        R                  5       U 5      R                  U5        [        X5      nUc  [        R                  S5         S S S 5        g Uu  pE[        R                  " XS9  [        R                  SU[        [        5      5        [        S	S
S 5        S S S 5        g ! , (       d  f       g = f)Nzpgo.put_local_code_stateTr^  r—  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Á  r�  c                 ó    • [        [        5      $ r:   r‘  r   r   r    rt   Ú&put_local_code_state.<locals>.<lambda>  ó
   € Ô%¤kÔ2r   )r
   r	   rb  r|   r®   r�  Údumpsr   r~  r¹   r   r€  rõ   rô   rØ   r   )r;  rF   rÒ  r‚  r&   r’   s         r    rÁ  rÁ  ý  sÙ   € Ü	Ð8Ð8�dÐPTÓ	UÜ×&Ò& tÒAÜÑÜ ØQóð ô —|’|¤KÓ0ˆäÔ.×3Ñ3Ó5°yÓA×HÑHÈÔVä 	Ó8ˆØ‰<Ü�H‰HÐ;Ô<Ø÷ 
VÐ	Uð ‰
ˆä×&Ò& tÒCÜ�‰Ð=¸tÄSÌÓEUÔVÜ!Ø"ØÙ2ô	
÷' 
V×	UÖ	Uús   �BC;Â(A
C;Ã;
D	c           	     óX  • U(       d  SOSn[        SU 3=nSSS9   [        R                  " X0S9  [        c  [	        S5      e[        5       nUc   [        R                  S	U5         S S S 5        g [        R                  " [        5      n[        R                  " U[        U5      S
9  S[        R                  " U5      R                  S5      0nUR                  X5        [        R                  SX [        [        5      5        [        USS 5        S S S 5        g ! , (       d  f       g = f)NrÂ  Úput_extra_remote_code_statezpgo.TÚ!pgo_put_remote_code_state_time_usr²  r—  z@_CODE_STATE must be initialized before writing remote code statez%s: remote cache disabledr˜  r¦  Úasciiz%s: wrote remote %s, %d entriesr�  c                 ó    • [        [        5      $ r:   r‘  r   r   r    rt   Ú'put_remote_code_state.<locals>.<lambda><  rØ  r   )r
   r	   rb  r|   r®   rL  rõ   rô   r�  rÙ  rØ   r©  Ú	b64encodeÚdecodeÚputr   )r;  Úextra_code_stater¬  rF   r«  r/   r­  s          r    rÂ  rÂ    s  € ö  ñ 	 à*ð ô
 
Ø�z�lÐ#Ð#ˆØ"Ø!Dó
ô
 	×&Ò& tÒAÜÑÜ ØRóð ô (Ó)ˆàÑÜ�H‰HÐ0°*Ô=Ø÷
ð 
ô" —,’,œ{Ó+ˆÜ×&Ò& t¼cÀ'»lÒKà”F×$Ò$ WÓ-×4Ñ4°WÓ=ð"
ˆ
ð 	×Ñ˜Ô/Ü�‰Ø-¨zÄcÌ+ÓFVô	
ô 	"ØØÙ2ô	
÷7
÷ 
ö 
ús   œADÁ0B"DÄ
D)c                 ó   • S q S qSqg rK   )r|   r{   r}   r   r   r    Úreset_code_staterå  A  s   € à€KØÐØ %Ñr   )r-   rB   ri   rB   )r/   ztypes.CellTyperi   rh   )
r	  r   rF   rB   rþ   rs   ré   rj   ri   rs   )r  rB   ri   rB   )ri   ú
str | None)r0  rB   ri   ræ  )r;  rB   ri   ræ  )ri   rj   )ri   zRemoteCache[JsonDataTy] | None)rP  rp   ri   úOrderedSet[str])rY  rç  ri   rç  )r  rl   ri   rä   rã   )ry  údefaultdict[CodeId, CodeState]ri   rB   )r  rB   r”  rB   ri   rè  )r;  rB   ri   rz   r:   )r«  zRemoteCache[JsonDataTy]r;  rB   r¬  ræ  ri   rz   )r;  rB   ri   rä   )ri   rè  )r;  rB   rÒ  Úbytesri   ztuple[str, int] | None)F)r;  rB   rã  rj   ri   rä   )hrƒ   Ú
__future__r   r©  r  rx   ÚenumÚ	functoolsÚloggingr%   r�  r9  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   rK  r   r   r<   r   Ú	getLoggerr   rõ   ró   rÏ  Úcacher2   r8   r=   Ú	dataclassr@   rp   r{   rm   r|   r}   Úsetr~   r€   r„   ÚEnumr†   r‰   r›   rŒ   rš   rs   r  r  r!  r.  r1  r=  rE  rL  rU  r[  rf  rm  r|  Úregisterr~  r•  r¤  r¯  r¶  r¸  r  rÆ  r€  rÁ  rÂ  rå  r   r   r    Ú<module>r     sü  ðò	õ #ã Û Û Û Û Û Û 	Û Û 	Û Ý #ß )ß ,ã Û Û Ý  ÷ó õ )Ý >÷ñ õ
 0ö ÛåHßDô	 *ô 	ð ×Ò˜Ó!€Ø×&Ò&Ð'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   