ó
    Eñiþ�  ã                  óÄ  • % 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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K0J1r1J2r2   " S S\35      r4\Rj                  " \65      r7Sr8\Rr                  SDS j5       r:\Rv                  " SS9 " S S5      5       r<\Rv                   " S S5      5       r=Sq>S\?S'   Sq@S\?S'   SqAS\?S'   \B" 5       qCS\?S'   \Rv                  " SS9 " S  S!5      5       rD\" S"5      rE " S# S$\RŒ                  5      rG\GR�                  rI " S% S&\RŒ                  5      rJ\JR�                  rK\Rv                   " S' S(5      5       rLSS).         SES* jjrMSS).         SES+ jjrNSFS, jrOSGS- jrPSHS. jrQSIS/ jrRSJS0 jrSSKS1 jrTSLS2 jrUSMS3 jrVSNS4 jrWSOS5 jrXSPS6 jrY\)R´                   " S7 S8\(5      5       r[SQS9 jr\SRS: jr] SS       STS; jjr^SRS< jr_SUS= jr`SVS> jraSOS? jrbSWS@ jrcSUSA jrdSXSYSB jjreSOSC jrfg)Za  
Profile Guided Optimization (PGO) implementation for Dynamo.

This module provides functionality for caching and managing code state profiles
that guide optimization decisions in Dynamo. It implements both local and remote
caching mechanisms for storing profile information across runs, handles profile
merging across distributed ranks, and manages the lifecycle of profile data
during compilation. The profiles track dynamic vs static properties of tensors
and help Dynamo make better specialization decisions.
é    )ÚannotationsN)Údefaultdict)ÚOptionalÚTYPE_CHECKINGÚTypeVarÚUnion)ÚoverrideÚSelf)ÚCompileEventLoggerÚdynamo_timedÚset_feature_useÚ	warn_once)Ú	is_fbcode)Útrace_structured_artifact)ÚCacheArtifactÚCacheArtifactFactoryÚCacheArtifactManager)Ú
OrderedSet)ÚInstructionTranslator)Ú
JsonDataTyÚRemoteCachec                  ó   • \ rS rSrSrg)ÚReservedWorkflowIdUserErroré7   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    ÚN/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_dynamo/pgo.pyr   r   7   s   † Úr!   r   é
   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_filer4   r   sa   € ô �7‰7�>‰>˜(×#Ñ#Øˆä	ˆh˜Ô	 Ø—)‘)“+ˆÜ—j’j Ó)ˆÜ�k JÑ.°Ó6ˆØ÷	 
×	×	ús   ³7A4Á4
BT)Úfrozenc                  óp   • \ rS rSr% S\S'   S\S'   S\S'   S\S'   SS jrSS	 jrSS
 jr\SS j5       r	Sr
g)ÚCodeIdé   ÚstrÚfilenameÚintÚfirstlinenoÚnameÚ	file_hashc                óà   • [        U[        5      (       d  gU R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ ©NF)Ú
isinstancer7   r>   r<   r=   ©ÚselfÚothers     r"   Ú__eq__ÚCodeId.__eq__�   sU   € Ü˜%¤×(Ñ(Øà�N‰N˜eŸo™oÑ-÷ (Ø× Ñ  E×$5Ñ$5Ñ5÷(à—	‘	˜UŸZ™ZÑ'ð	
r!   c                óZ   • [        U R                  U R                  U R                  45      $ ©N)r3   r>   r=   r<   ©rC   s    r"   Ú__hash__ÚCodeId.__hash__—   s"   € Ü�T—^‘^ T§Y¡Y°×0@Ñ0@ÐAÓBÐBr!   c                ón   • SU R                    SU R                   SU R                   SU R                   3$ )Nzhash(Ú)Ú:)r>   r:   r<   r=   rI   s    r"   Ú__str__ÚCodeId.__str__š   s5   € Ø�t—~‘~Ð& a¨¯© °a¸×8HÑ8HÐ7IÈÈ4Ï9É9È+ÐVÐVr!   c                ó€   • [        U R                  U R                  U R                  [	        U R                  5      5      $ rH   )r7   Úco_filenameÚco_firstlinenoÚco_namer4   )Úcodes    r"   ÚmakeÚCodeId.make�   s6   € äØ×ÑØ×ÑØ�L‰LÜ! $×"2Ñ"2Ó3ó	
ð 	
r!   r   N)rD   ÚobjectÚreturnÚbool)rY   r;   ©rY   r9   )rU   útypes.CodeTyperY   r7   )r   r   r   r   Ú__annotations__rE   rJ   rO   ÚstaticmethodrV   r    r   r!   r"   r7   r7      s>   ‡ àƒMØÓØ
ƒIð ƒNô
ôCôWð ó
ó ó
r!   r7   c                  óB   • \ rS rSr% \R
                  " S S9rS\S'   Srg)Ú	CodeStateé§   c                 ó    • [        [        5      $ rH   )r   ÚFrameStateSizeEntryr   r!   r"   Ú<lambda>ÚCodeState.<lambda>ª   s
   € ¤Ô,?Ô @r!   )Údefault_factoryz%defaultdict[str, FrameStateSizeEntry]Úautomatic_dynamicr   N)	r   r   r   r   ÚdataclassesÚfieldrg   r]   r    r   r!   r"   r`   r`   §   s   ‡ à?J×?PÒ?PÙ@ñ@ÐÐ<ö r!   r`   ú(Optional[defaultdict[CodeId, CodeState]]Ú_INIT_CODE_STATEÚ_CODE_STATEFrZ   Ú_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.
r;   Údimr   N)r   r   r   r   Ú__doc__r]   r    r   r!   r"   rp   rp   ´   s   ‡ ñð  
†Hr!   rp   Ú_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   rs   Útokenr    r   r!   r"   rv   rv   Ì   ó   † ñð
 ƒEr!   rv   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   Nrx   r   r!   r"   r|   r|   Ø   rz   r!   r|   c                  óV  • \ rS rSr% \R
                  " \S9rS\S'   \R
                  " \S9r	S\S'   \R
                  " \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) rc   éä   )Údefaultz"Union[int, AutoDynamic, AutoUnset]ÚscalarzBUnion[AutoDynamic, AutoUnset, tuple[Union[int, AutoDynamic], ...]]ÚsizezOUnion[AutoDynamic, AutoUnset, tuple[Union[int, AutoDynamic, InferStride], ...]]Ústridec                ó¾  ^• 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(rM   )Úauto_dynamicÚ
auto_unsetrA   rp   rr   r9   )Ú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rH   r   )Ú.0r‰   rŠ   s     €r"   Ú	<genexpr>Ú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/Union[int, AutoDynamic, AutoUnset, InferStride]rY   r9   )r”   z0tuple[Union[int, AutoDynamic, InferStride], ...]rY   r9   )r‚   r‡   rƒ   r�   rA   ÚtupleÚrepr)rC   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      (       a9  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 rH   )rA   r�   ÚtorchÚSymIntr‚   r—   rƒ   )rC   r‰   Ús1s      r"   Ú__post_init__Ú!FrameStateSizeEntry.__post_init__  s¡   € Ü˜dŸk™k¬5¯<©<×8Ñ8ÐE¸$¿+¹+ÓEÐ8Ü�d—i‘i¤×'Ñ'Ø—Y”Y�Ü% a¬¯©×6Ó6Ð9¸Ó9Ð6ñ ä�d—k‘k¤5×)Ñ)Ø—k”k�Ü% b¬%¯,©,×7Ó7Ð;¸Ó;Ð7ò "ð *r!   c                ó|   • U R                   [        L a  gU R                   [        L a  gU R                   U   [        L $ )NTF)r‚   r‡   rˆ   ©rC   rr   s     r"   Úis_size_dynamicÚ#FrameStateSizeEntry.is_size_dynamic  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rH   )Útyper;   )r�   r‰   s     r"   r�   Ú8FrameStateSizeEntry.is_stride_dynamic.<locals>.<genexpr>.  s   é € Ð0SÊÀA´°a³¼CµÊùs   ‚ FT)rA   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rH   )rA   rœ   r�   r‡   )r�   Úxs     r"   r�   Ú4FrameStateSizeEntry._munge_symint.<locals>.<genexpr>9  s'   é € ÐTÒQSÈA¤Z°´5·<±<×%@Ñ%@•\ÀaÔGÒQSùs   ‚46)r—   )Úxss    r"   Ú_munge_symintÚ!FrameStateSizeEntry._munge_symint7  s   € äÑTÑQSÓTÓTÐTr!   c                ó(   • [        U[        [        S9$ ©N©r�   r‚   rƒ   )rc   r‡   )Úclsr®   s     r"   Úmake_scalarÚFrameStateSizeEntry.make_scalar;  s   € ä"¨!´,Ä|ÑTÐTr!   c                ó\   • [        [        U R                  U5      U R                  U5      S9$ r´   )rc   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´   )rc   rˆ   r±   )r¶   r‚   s     r"   Ú	make_sizeÚFrameStateSizeEntry.make_sizeI  s#   € ä"ÜØ×"Ñ" 4Ó(Üñ
ð 	
r!   c                ól   • U [         L a  U$ U[         L a  U $ U [        L d  U[        L d  X:w  a  [        $ U $ rH   )rˆ   r‡   )r®   Úys     r"   Ú_merge_atomÚFrameStateSizeEntry._merge_atomQ  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rH   )rÁ   )r�   r®   rÀ   r¶   s      €r"   r�   Ú6FrameStateSizeEntry._merge_atom_tup.<locals>.<genexpr>i  s   øé € ÐC²{©t¨q�S—_‘_ Q×*Ð*²{ùs   ƒ #)rˆ   r‡   Úlenr—   Úzip)r¶   r°   Úyss   `  r"   Ú_merge_atom_tupÚ#FrameStateSizeEntry._merge_atom_tup[  s_   ø€ ð ”ÒØˆIØ”ÒØˆIØ”Ò ¤|Ò!3ÜÐÜˆr‹7”c˜"“gÓÜÐÜÔC´s¸2´{ÓCÓCÐCr!   c                ó  • U R                  U R                  UR                  5      U l        U R                  U R                  UR                  5      U l        U R                  U R                  UR                  5      U l        U $ rH   )rÁ   r�   rÉ   r‚   rƒ   rB   s     r"   Ú__ior__ÚFrameStateSizeEntry.__ior__k  s[   € Ø×&Ñ& t§{¡{°E·L±LÓAˆŒØ×(Ñ(¨¯©°E·J±JÓ?ˆŒ	Ø×*Ñ*¨4¯;©;¸¿¹ÓEˆŒØˆr!   rµ   Nr[   ©rY   ÚNone)rr   r;   rY   rZ   )r°   útuple[int, ...]rY   z#tuple[Union[AutoDynamic, int], ...])r®   r;   rY   rc   )r‚   rÐ   rƒ   rÐ   rY   rc   )r‚   rÐ   rY   rc   )r®   rt   rÀ   rt   rY   zUnion[AutoDynamic, _T])r°   ú-Union[AutoDynamic, AutoUnset, tuple[_T, ...]]rÈ   rÑ   rY   zAUnion[AutoDynamic, AutoUnset, tuple[Union[AutoDynamic, _T], ...]])rD   r
   rY   r
   )r   r   r   r   rh   ri   rˆ   r�   r]   r‚   rƒ   r™   rŸ   r£   rª   r^   r±   Úclassmethodr·   rº   r½   rÁ   rÉ   rÌ   r    r   r!   r"   rc   rc   ä   s#  ‡ à1<×1BÒ1BÈ:Ñ1V€FÐ.ÓVð 	×Ò *Ñ-ð 	Ð
Ló ð
 	×Ò *Ñ-ð ð ó .ô'ô:<ô.ô0ð4 óUó ðUð óUó ðUð ð
Ø"ð
Ø,;ð
à	ó
ó ð
ð ó
ó ð
ð óó ðð ðDà9ðDð :ðDð 
Kó	Dó ðD÷r!   rc   ©Úis_unspecialized_nn_modulec          
     ó.  ^^^
• [         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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
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        U$ [+        [)        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      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$ )Nz%automatic dynamic int %s val %s != %srg   r�   zscalar change©r=   Údim_changedÚreasonÚcachedÚnewz¼%s is converted to a symbolic integer. It is an attribute of a user defined nn module class. If you wish to keep it static, you can mark the nn module class as `torch._dynamo.mark_static`.c           
     ó  >• Uc  [        TU 5      O[        TU 5      U   nUc  [        TU 5      O[        TU 5      U   n[        R                  SU TUUU5        [        R                  " STUc  SOUU[        U5      [        U5      S.5        g )Nz#automatic dynamic %s %s %s %s != %srg   r©   rÖ   )ÚgetattrÚlogÚdebugr   Úinstantr9   )	Útup_nameÚshort_reasonÚlong_reasonÚiÚ	entry_tupÚold_entry_tupÚentryr=   Ú	old_entrys	         €€€r"   Úlog_tupÚ)update_automatic_dynamic.<locals>.log_tupœ  s¤   ø€ ð -.©I”˜˜xÔ(¼7À5È(Ó;SÐTUÑ;Vð ð
 ‘9ô ˜	 8Ô,ä˜Y¨Ó1°!Ñ4ð ô
 �I‰IØ5ØØØàØôô ×&Ò&Ø#à Ø,-©I¡5¸1Ø)Ü! -Ó0Ü˜y›>ñõ	r!   r‚   rr   zdimensionality changezsize(rM   zsize changerD   rƒ   zstride(zstride changez9automatic dynamic is off, overwriting int %s val %s -> %srH   )
rà   r9   rá   r9   râ   r9   rã   zOptional[int]rY   rÏ   )r7   rV   Úf_codeÚget_code_staterœ   Ú_dynamoÚconfigÚautomatic_dynamic_shapesrg   Úcopyr�   rÝ   rÞ   r   rß   r9   Úinfor‚   rA   r—   rÆ   Úrangerƒ   )Útxr=   ræ   rÔ   Úcode_idÚframe_stateÚ	is_updateÚ	mut_entryrè   rã   rç   s    ``       @r"   Úupdate_automatic_dynamicr÷   r  s  ú€ ô �k‰k˜"Ÿ)™)Ó$€GÜ Ó" 7Ñ+€KÜ‡}�}×Ñ×4×4Ð4Ø˜K×9Ñ9Ñ9ˆ	Ø×1Ñ1°$Ñ7ˆ	Ü—I’I˜iÓ(ˆ	Ø�UÑˆ	ö ˜×)Ñ)¨Y×-=Ñ-=Ó=Ü�I‰IØ7ØØ—‘Ø× Ñ ô	ô ×&Ò&Ø#à Ø#+Ø-Ü! )×"2Ñ"2Ó3Ü˜uŸ|™|Ó,ñô	ö *Ü—‘ðOð ô	ð TXð	Øð	Ø),ð	Ø;>ð	ØCPð	à÷	ò 	ö> ˜Ÿ™¨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   eU$ )NrÓ   )Údistributed_stater÷   Ú
all_statesÚlocal_staterg   )rò   r=   ræ   rÔ   ÚstÚresÚ	sub_states          r"   Úprocess_automatic_dynamicrÿ   Þ  s¦   € ð ×"Ñ"Ð"ˆÑ+Ü'ØØØØ'Añ	
ð 	
ð 
�‰Ñ	ð 27�‰×(Ñ(¨Ñ.Øˆð ˆØŸœˆIØ×2Ñ2Õ2Ü.ØØØ×/Ñ/°Ñ5Ø/Iñ	’ñ 'ð ‰ÐˆØˆ
r!   c                óô   • S n[         R                  " 5       (       a/  [         R                  " 5       (       a  [         R                  " 5       n[        R
                  R                  R                  nU  SU SU 3$ )NrN   )ÚdistÚis_availableÚis_initializedÚget_rankrœ   Úcompilerrí   Úcache_key_tag)ÚkeyÚrankÚtags      r"   Úformat_cache_keyr
    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.rN   )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    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_keyr  1  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_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                 ó‚  • [         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_cacher.  G  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_cacher1  r.  r   r0  s    r"   Úget_remote_cacher5  ^  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   rg   ÚitemsrA   r‚   r—   r‡   r�   Úadd)Ú
code_stateÚdynamic_sourcesÚsrcÚfsÚdynamics        r"   Ú_collect_dynamic_sourcesr>  l  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.builderr@  r   rn   r8  )Úall_sourcesr@  Úmissing_sourcesr;  s       r"   Ú_collect_missing_sourcesrD  y  sV   € ÝAô (2£|€OÛˆØÔ(Ó(ÙÙ˜s×#Ñ#Ü"×&Ñ& sÔ+ÙØ×Ñ˜CÖ ñ ð Ðr!   c                ó<  • [         R                  U 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)	r7   rV   rë   r>  r“   rD  r   r   Úpt2_compile)rê   ró   rô   Úall_dynamic_sourcesÚframe_whitelistÚmissing_whitelistr=   s          r"   Úlog_frame_dynamic_whitelistrO  ˆ  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)rm   rœ   r  Úadd_mlhub_insightr   r!   r"   Ú_log_size_mismatch_recompilerV  ˜  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:
rX  c              3  óR   #   • U  H  u  pS U SUR                  5        3v •  M     g7f)z  z: N)r™   )r�   r;  r<  s      r"   r�   Ú.render_code_state.<locals>.<genexpr>.<genexpr>©  s)   é € ð 
Ú5P©'¨#ˆb���R˜Ÿ	™	›�}Õ%Ò5Pùs   ‚%'N)r“   rg   r7  )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="rF  Ú")r“   r7  r   ÚvaluesÚupdater>  )ÚcsÚcode_state_strr:  Ústates       r"   Úrender_code_statere  ¦  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                ól   • [        U R                  U R                  5      U R                  5      nUc   eg rH   )Úwrite_local_implÚ!_rewrite_cache_key_for_mega_cacher  r1   )rC   Úmetas     r"   Úpopulate_cacheÚPGOCacheArtifact.populate_cache¼  s2   € äØ×2Ñ2°4·8±8Ó<¸d¿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"   rj  Ú2PGOCacheArtifact._rewrite_cache_key_for_mega_cacheÈ  s3   € ð ×&Ñ& w×/Ñ/àÐÜ$“Ð&ˆGÑ3ØˆNØÐr!   r   NrÎ   r[   )rr  r9   rY   r9   )
r   r   r   r   r	   rl  r^   r§   rj  r    r   r!   r"   rg  rg  º  sD   † àó ó ð ð Øóó ó ðð óó ór!   rg  c                óü   • [        [        [        5      (       d   e[        R	                  SX[        [        5      5        [        SU S3SS 5        [        SS5        [        R                  " [        5      q
[        $ )Nz$get_code_state %s hit %s, %d entriesÚget_Ú_code_stateÚstringc                 ó    • [        [        5      $ rH   ©re  rl   r   r!   r"   rd   Úhit.<locals>.<lambda>Þ  s
   € Ô!¤+Ô.r!   ro  T)rA   rl   r   rÝ   rð   rÆ   r   r   rï   Údeepcopyrk   )r  Útys     r"   Úhitr~  ×  sf   € ä”k¤;×/Ñ/Ð/Ð/Ü‡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                  " [        R!                  5       X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_stateTrG  ©r$  r%   ©Úcache_size_bytesÚlocalz&get_code_state failed while reading %s©Úexc_info)r&  r'   r(   r)   r   r   rK  r*   r+   ÚpickleÚloadsrl   Útellr   Úrecord_artifactrg  r§   r~  Ú	ExceptionrÝ   Úwarning)r$  r(   r=   Úfr1   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ô )×8Ò8Ü(×-Ñ-Ó/°ôô ˜t WÓ-÷ "Ð!÷
ñ 
ð( øô !ó Ü—K‘KØ@À$ÐQUð  ó ðúð÷ "×!Ö!ú÷
ð( ÷)
ô 
ð( úsN   ¿!D;Á D!Á"AC2Â*4D!Ã	D;Ã2DÄD!ÄDÄD!Ä	D;Ä!
D/	Ä+D;Ä;
E	c                óR  • S n U R                  U5      nUb¬   [        U[        5      (       d   eUS   n[        U[        5      (       d   e[        R
                  " U5      nUb  [        R                  " U[        U5      S9  [        R                  " U5      n[        R                  " [        R                  5       X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)NÚdatar�  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)ÚgetrA   Údictr9   Úbase64Ú	b64decoder   rK  rÆ   r†  r‡  r   r‰  rg  r§   rŠ  rÝ   r‹  rð   )Úremote_cacher$  Ú
event_namer9  Ú
cache_datar�  Úpayloads          r"   Úlookup_remote_cache_entryr˜     s7  € ð
 €JðDØ!×%Ñ% iÓ0ˆ
ð Ñ!ðÜ! *¬d×3Ñ3Ð3Ð3Ø! &Ñ)�Ü! $¬×,Ñ,Ð,Ð,Ü ×*Ò*¨4Ó0�ØÑ)Ü&×2Ò2Ø"´S¸³\òô $Ÿ\š\¨'Ó2�
ô %×4Ò4Ü$×)Ñ)Ó+¨Yôð
 Ðô �H‰HÐ7¸ÕCØÐøô ó Ü—‘ØGØØ!ð ò ð Ððûô ó YÜ�‰Ð=¸yÐSWˆÒXð2 Ðð5Yús#   „D ™B C ÃD Ã?D ÄD&Ä%D&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©rH  Údynamo_compile_column_usr€  Úremote)r5  r   r   rK  r˜  rl   r~  ©r$  r”  r=   r9  s       r"   Úget_remote_code_staterŸ  %  s€   € ä#Ó%€LØÑÜØ/Ð/ˆDØ"&Ø%Hó
ô
 ×*Ò*¨4ÒEÜ2°<ÈDÓQˆJØÑ%Ø(�Ü˜9 hÓ/÷
ñ 
ð &÷
ñ ÷
ô 
ð ús   ›1A!Á!
A/c                óP  ^• [         c   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   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.
Nzpgo.get_extra_remote_code_stateTrš  r›  r€  z'get_extra_code_state %s hit, %d entriesr   Úget_extra_remote_code_staterx  c                 ó   >• [        T 5      $ rH   )re  )r9  s   €r"   rd   Ú-get_extra_remote_code_state.<locals>.<lambda>R  s   ø€ Ô-¨jÔ9r!   )
rl   r5  r   r   rK  r˜  rÝ   rð   rÆ   r   rž  s      @r"   r¡  r¡  6  s±   ø€ ô
 Ñ"Ð"Ð"ä#Ó%€LØÑÜØ5Ð5ˆDØ"&Ø%Hó
ô
 ×*Ò*¨4ÒEÜ2°<ÓKˆJÜ�H‰HØ9ØØ#-Ñ#9”�J”¸qôð
 Ñ%ß&š;Ð&�Ø(�ä)Ø1ØÜ9ô÷!
ð 
ð  ÷
õ 
ús   ¥A(BÂ
B%c                 óp  • [         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   e[         $ )Nzget_code_state using default)rl   r   r`   r  r�  rŸ  rœ   r  rí   Úpgo_extra_read_keyr  r¡  rÝ   rð   )r$  Úlocal_code_stateÚsticky_readÚextra_read_keys       r"   rë   rë   V  s£   € äÑÜÐô œiÓ(€Kä“€IØÑÜÐô ,¨IÓ6Ðð ÑÜ˜iÔ(÷ ŠKÜ!ŸN™N×1Ñ1×DÑDÐDˆ[ÑQä,¨[Ó9ˆØÑ%Ü'¨Ô7ä‡H�HÐ+Ô,äÑ"Ð"Ð"ÜÐ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)rl   rÝ   rð   rk   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¯  x  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"   ri  ri  Ž  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   e[        R
                  " [        5      n[        R                  " [        R                  5       X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_stateTrG  r€  z$put_code_state: local cache disabledr�  z*put_code_state: wrote local %s, %d entriesrª  rx  c                 ó    • [        [        5      $ rH   rz  r   r!   r"   rd   Ú&put_local_code_state.<locals>.<lambda>½  ó
   € Ô%¤kÔ2r!   )r   r   rK  rl   r†  Údumpsr   r‰  rg  r§   ri  rÝ   rð   rÆ   r   )r$  r=   r»  rk  r(   r‚   s         r"   rª  rª  §  sÌ   € Ü	Ð8Ð8�dÐPTÓ	UÜ×&Ò& tÒAÜÑ&Ð&Ð&ä—|’|¤KÓ0ˆä×,Ò,Ü×!Ñ!Ó# Yô	
ô   	Ó8ˆØ‰<Ü�H‰HÐ;Ô<Ø÷ 
VÐ	Uð ‰
ˆä×&Ò& tÒCÜ�‰Ð=¸tÄSÌÓEUÔVÜ!Ø"ØÙ2ô	
÷% 
V×	UÖ	Uús   �BC.ÂA
C.Ã.
C<c           	     óF  • U(       d  SOSn[        SU 3=nSSS9   [        R                  " X0S9  [        c   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%s: remote cache disabledr�  r�  Úasciiz%s: wrote remote %s, %d entriesrx  c                 ó    • [        [        5      $ rH   rz  r   r!   r"   rd   Ú'put_remote_code_state.<locals>.<lambda>â  rÁ  r!   )r   r   rK  rl   r5  rÝ   rð   r†  rÂ  rÆ   r’  Ú	b64encodeÚdecodeÚputr   )r$  Úextra_code_stater•  r=   r”  r1   r–  s          r"   r«  r«  Á  s
  € ö  ñ 	 à*ð ô
 
Ø�z�lÐ#Ð#ˆØ"Ø!Dó
ô
 	×&Ò& tÒAÜÑ&Ð&Ð&ä'Ó)ˆàÑÜ�H‰HÐ0°*Ô=Ø÷
ð 
ô —,’,œ{Ó+ˆÜ×&Ò& t¼cÀ'»lÒKà”F×$Ò$ WÓ-×4Ñ4°WÓ=ð"
ˆ
ð 	×Ñ˜Ô/Ü�‰Ø-¨zÄcÌ+ÓFVô	
ô 	"ØØÙ2ô	
÷1
÷ 
ö 
ús   œADÁ'B"DÄ
D c                 ó   • S q S qSqg r@   )rl   rk   rm   r   r!   r"   Úreset_code_staterÎ  ç  s   € à€KØÐØ %Ñr!   )r/   r9   rY   r9   )
rò   r   r=   r9   ræ   rc   rÔ   rZ   rY   rc   )r  r9   rY   r9   )rY   úOptional[str])r  r9   rY   rÏ  )r$  r9   rY   rÏ  )rY   rZ   )rY   z!Optional[RemoteCache[JsonDataTy]])r9  r`   rY   úOrderedSet[str])rB  rÐ  rY   rÐ  )rê   r\   rY   rÏ   rÎ   )rb  údefaultdict[CodeId, CodeState]rY   r9   )r  r9   r}  r9   rY   rÑ  )r$  r9   rY   rj   rH   )r”  zRemoteCache[JsonDataTy]r$  r9   r•  rÏ  rY   rj   )r$  r9   rY   rÏ   )rY   rÑ  )r$  r9   r»  ÚbytesrY   zOptional[tuple[str, int]])F)r$  r9   rÌ  rZ   rY   rÏ   )grs   Ú
__future__r   r’  rï   rh   ÚenumÚ	functoolsÚloggingr'   r†  r"  r,   Úcollectionsr   Útypingr   r   r   r   Útyping_extensionsr	   r
   Útorch._dynamo.configrœ   Útorch._utils_internalÚtorch.compiler.configÚtorch.distributedÚdistributedr  Útorch._dynamo.utilsr   r   r   r   Útorch._environmentr   Útorch._logging._internalr   Útorch.compiler._cacher   r   r   Útorch.utils._ordered_setr   ÚtypesÚtorch._dynamo.symbolic_convertr   r4  r   r   Ú
ValueErrorr   Ú	getLoggerr   rÝ   r¸  Úcacher4   Ú	dataclassr7   r`   rk   r]   rl   rm   Úsetrn   rp   rt   ÚEnumrv   ry   rˆ   r|   r‡   rc   r÷   rÿ   r
  r  r  r&  r.  r5  r>  rD  rO  rV  re  Úregisterrg  r~  r�  r˜  rŸ  r¡  rë   r¯  ri  rª  r«  rÎ  r   r!   r"   Ú<module>rí     sä  ðò	õ #ã Û Û Û Û Û Û 	Û Û 	Û Ý #ß :Ó :ß ,ã Û Û Ý  ÷ó õ )Ý >÷ñ õ
 0ö ÛåDßDô	 *ô 	ð ×Ò˜Ó!€à€ðj ‡�ó	ó ð	ð ×Ò˜dÑ#÷$
ð $
ó $ð$
ðN ×Ñ÷ð ó ðð >BÐ Ð:Ó AØ8<€Ð5Ó <Ø"'Ð ˜4Ó 'Ù#&£5Ð ˜Ó (ð ×Ò˜dÑ#÷ð ó $ðñ( ˆTƒ]€ô�—	‘	ô ð �_‰_€
ô�$—)‘)ô ð × Ñ €ð ×Ñ÷Jð Jó ðJðd (-ñiØðià
ðið ðið
 !%ðið õiðb (-ñ+Øð+à
ð+ð ð+ð
 !%ð+ð õ+ô\!ôô4(ô?ôô.ô
ôôô )ôð( ×Ñô�}ó ó ðô8ôð< !%ð"Ø)ð"àð"ð ð"ð .õ	"ôJô"ô@ôD3ô,ô2
ö4"
õL&r!   