§
    ŠŠtjL¸  ã            	       óX  — d 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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mZmZ ddlmZ ddlmZmZmZmZmZ ddlmZ ddlZddl m!Z! ddl"m#Z# dd	l$m%Z% d
dl&m'Z' d
dl(m)Z)m*Z*m+Z+  ej,        e-¦  «        Z.erd
dl/m0Z0m1Z1  e%¦   «         Z2dedef         dedef         fd„Z3 ej4        d¬¦  «         G d„ d¦  «        ¦   «         Z5ej4         G d„ d¦  «        ¦   «         Z6de7defd„Z8dddej9        deddfd„Z: ede;¦  «        Z< ed e;¦  «        Z= ej4        d¬¦  «         G d!„ d"¦  «        ¦   «         Z>ej?        d#ej@        de;fd$„¦   «         ZAej4         G d%„ d&¦  «        ¦   «         ZBej4         G d'„ d(¦  «        ¦   «         ZCd)eCdej9        fd*„ZDd+ej9        d,edefd-„ZEd+ej9        deFe;e;f         fd.„ZG ej4        d¬¦  «         G d/„ d0¦  «        ¦   «         ZHej4         G d1„ d2¦  «        ¦   «         ZIdd3lJmKZKmLZLmMZM eLjN         G d4„ d5eK¦  «        ¦   «         ZOej4         G d6„ d7¦  «        ¦   «         ZPd8e;de;fd9„ZQd:ej@        d;eRd<eRdeSe;         fd=„ZTd:ej@        d;eRd<eRde;fd>„ZUd+ej9        dejV        d         fd?„ZW G d@„ dA¦  «        ZXeYe<ef         ZZ G dB„ dCej[        ¦  «        Z\ G dD„ dEe\¦  «        Z] G dF„ dGe\¦  «        Z^ G dH„ dIe^¦  «        Z_de;fdJ„Z` e_eja         b                     e`¦   «         dK¦  «        ¦  «        ZcdS )La  
This module provides the infrastructure for creating and managing compile package
for torch.compile. We mainly have two abstractions here:
  - CompilePackage: Overarching data structure for store and lookup a list of compiled codes.
  - CodeCacheEntry: Data structure for a single code being compiled by torch.compile.
The caching behavior is always under user control explicitly so that a stronger guarantee can
be provided about cache hit for a specific compiled model. Users can load the compile package
from a different process or host.
é    N)ÚCallableÚ	GeneratorÚIterator)Únullcontext)ÚAnyÚNewTypeÚOptionalÚTYPE_CHECKINGÚUnion)ÚNever©ÚPackageError)Ú_graph_device_type)ÚWeakIdKeyDictionaryé   )Úget_code_keys)ÚcountersÚdynamo_timedÚincrement_frame)ÚGuardManagerWrapperÚGuardsStateÚfn.Úreturnc                 óœ   ‡ — dt           t                   dt          dt          j        f         dt          dt          j        f         fˆ fd„}|S )NÚclsÚcodeÚSerializedCoder   c                 ó`   •— |t           v rt           |         S  ‰| |¦  «        }|t           |<   |S ©N)Ú_CODE_CACHE)r   r   Úresr   s      €úS/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_dynamo/package.pyÚ_z_code_cache.<locals>._5   s9   ø€ ð •;ÐÐÝ˜tÔ$Ð$Øˆb��d‰mŒmˆØ��DÑØˆ
ó    )Útyper   r   ÚtypesÚCodeType)r   r#   s   ` r"   Ú_code_cacher(   4   s^   ø€ ðÝ•#ŒYðÝ#Ð$4µe´nÐ$DÔEðå	Ð¥¤Ð/Ô	0ðð ð ð ð ð ð €Hr$   T)Úfrozenc                   óº  — e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   eedf         ed	<   eedf         ed
<   eedf         ed<   eed<   eed<   eed<   eedf         ed<   eedf         ed<   dZ	edz  ed<   dZ
edz  ed<   dZedz  ed<   dZedz  ed<   eedej        dd fd„¦   «         ¦   «         Zeedd dej        fd„¦   «         ¦   «         ZdS )r   Úco_argcountÚco_posonlyargcountÚco_kwonlyargcountÚ
co_nlocalsÚco_stacksizeÚco_flagsÚco_code.Ú	co_constsÚco_namesÚco_varnamesÚco_filenameÚco_nameÚco_firstlinenoÚco_cellvarsÚco_freevarsNÚco_linetableÚco_qualnameÚco_exceptiontableÚ	co_lnotabr   r   c                 ó’   ‡ ‡— ˆfd„t          ¦   «         D ¦   «         }t          ˆ fd„|d         D ¦   «         ¦  «        |d<    ‰ di |¤ŽS )Nc                 ó2   •— i | ]}|t          ‰|¦  «        “ŒS © ©Úgetattr)Ú.0Úkeyr   s     €r"   ú
<dictcomp>z3SerializedCode.from_code_object.<locals>.<dictcomp>Z   s%   ø€ ÐEÐEÐE¨c�#•w˜t SÑ)Ô)ÐEÐEÐEr$   c              3   óz   •K  — | ]5}t          |t          j        ¦  «        r‰                     |¦  «        n|V — Œ6d S r   )Ú
isinstancer&   r'   Úfrom_code_object©rC   Úcr   s     €r"   ú	<genexpr>z2SerializedCode.from_code_object.<locals>.<genexpr>[   s[   øè è € ð $
ð $
àõ (2°!µU´^Ñ'DÔ'DÐKˆC× Ò  Ñ#Ô#Ð#È!ð$
ð $
ð $
ð $
ð $
ð $
r$   r2   r@   )r   Útuple)r   r   Úkwargss   `` r"   rH   zSerializedCode.from_code_objectW   sw   øø€ ð FÐEÐEÐEµ]±_´_ÐEÑEÔEˆÝ#ð $
ð $
ð $
ð $
à˜KÔ(ð$
ñ $
ô $
ñ 
ô 
ˆˆ{Ñð ˆsˆ}ˆ}�Vˆ}ˆ}Ðr$   Úserialized_codec                 óÂ   ‡ ‡— ˆfd„t          ¦   «         D ¦   «         }t          ˆ fd„|d         D ¦   «         ¦  «        |d<   t          j        |                     ¦   «         Ž S )Nc                 ó2   •— i | ]}|t          ‰|¦  «        “ŒS r@   rA   )rC   rD   rN   s     €r"   rE   z1SerializedCode.to_code_object.<locals>.<dictcomp>d   s%   ø€ ÐPÐPÐP¸�#•w˜°Ñ4Ô4ÐPÐPÐPr$   c              3   óp   •K  — | ]0}t          |t          ¦  «        r‰                     |¦  «        n|V — Œ1d S r   )rG   r   Úto_code_objectrI   s     €r"   rK   z0SerializedCode.to_code_object.<locals>.<genexpr>e   sY   øè è € ð $
ð $
àõ &0°µ>Ñ%BÔ%BÐIˆC×Ò˜qÑ!Ô!Ð!Èð$
ð $
ð $
ð $
ð $
ð $
r$   r2   )r   rL   r&   r'   Úvalues)r   rN   rM   s   `` r"   rR   zSerializedCode.to_code_objecta   s   øø€ ð QÐPÐPÐPÅÁÄÐPÑPÔPˆÝ#ð $
ð $
ð $
ð $
à˜KÔ(ð$
ñ $
ô $
ñ 
ô 
ˆˆ{Ñõ Œ~Ø�]Š]‰_Œ_ð
ð 	
r$   )Ú__name__Ú
__module__Ú__qualname__ÚintÚ__annotations__ÚbytesrL   r   Ústrr:   r;   r<   r=   Úclassmethodr(   r&   r'   rH   rR   r@   r$   r"   r   r   A   s«  € € € € € € àÐÐÑØÐÐÑØÐÐÑØ€O€O�OØÐÐÑØ€M€M�MØ€N€N�NØ�S˜#�XŒÐÐÑØ�C˜�HŒoÐÐÑØ�s˜C�x”Ð Ð Ñ ØÐÐÑØ€L€L�LØÐÐÑØ�s˜C�x”Ð Ð Ñ Ø�s˜C�x”Ð Ð Ñ Ø!%€L�%˜$‘,Ð%Ð%Ñ%Ø"€K��t‘Ð"Ð"Ñ"Ø&*Ð�u˜t‘|Ð*Ð*Ñ*Ø €Iˆs�T‰zÐ Ð Ñ àØð E¤Nð Ð7Gð ð ð ñ „[ñ „[ðð Øð
Ð-=ð 
À%Ä.ð 
ð 
ð 
ñ „[ñ „[ð
ð 
ð 
r$   r   c                   ó(   — e Zd ZU dZeed<   eed<   dS )Ú_GuardedCodeCacheEntrya  
    Contains the serializable information associated with a single compilation in dynamo.
    To restore an execution of compiled code, we will need to serialize the following data:
      - Dynamo bytecode for mapping Python inputs/outputs.
      - Dynamo guards.
    Úguards_stateÚdynamo_codeN)rT   rU   rV   Ú__doc__rY   rX   r   r@   r$   r"   r]   r]   n   s6   € € € € € € ðð ð ÐÐÑØÐÐÑÐÐr$   r]   r^   c                 óè   — 	 dd l mc mc mc m} |                     ¦   «         }n# t
          $ r t          ¦   «         }Y nw xY w|5  t          j        | ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nr   )	Ú0torch.distributed.fsdp._fully_shard._fully_shardÚdistributedÚfsdpÚ_fully_shardÚdisable_fsdp_module_new_initÚImportErrorr   ÚpickleÚloads)r^   re   Úctxs      r"   Úload_guards_staterk   {   sæ   € ðØOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOà×7Ò7Ñ9Ô9ˆˆøÝð ð ð Ý‰mŒmˆˆˆðøøøà	ð *ð *ÝŒ|˜LÑ)Ô)ð*ð *ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð *ð *s!   ‚#& ¦AÁ AÁA'Á'A+Á.A+r   Útarget_codeÚruntime_global_scoper   c                 óŽ   — ddl m} t          j        j                             | || j         ¦  «        | j        |¬¦  «        j        S )Nr   )ÚOutputGraphCommon)Úshape_code_partsrm   )Úoutput_graphro   ÚtorchÚ_dynamoÚguardsÚCheckFunctionManagerrp   Úguard_manager)r^   rl   rm   ro   s       r"   Úload_guard_managerrw   †   sZ   € ð
 0Ð/Ð/Ð/Ð/Ð/åŒ=Ô×4Ò4ØØÐ˜,Ô3Ñ4Ô4Ø%Ô6Ø1ð	 5ñ ô ô
 ðr$   Ú
_BackendIdÚ_FunctionIdc                   óB   — e Zd ZU eed<   eed<   eed<   eed<   eed<   dS )ÚInlinedSourceÚmoduleÚfirstlinenoÚ
lastlinenoÚchecksumÚcontentN)rT   rU   rV   rZ   rX   rW   r@   r$   r"   r{   r{   ™   s@   € € € € € € à€K€K�KØÐÐÑØ€O€O�OØ€M€M�MØ€L€L�L€L€Lr$   r{   r|   c                 ó*   — t          j        | ¦  «        S r   )ÚinspectÚ	getsource)r|   s    r"   Ú_get_module_contentr„   ¢   s   € åÔ˜VÑ$Ô$Ð$r$   c                   ó@   — e Zd ZU ee         ed<   dej        ddfd„ZdS )Ú
SourceInfoÚinlined_sourcesr   r   Nc                 óÔ  — t          j        |¦  «        }|€d S t          j        |¦  «        \  }}|t          |¦  «        z   }d                     |¦  «        }|d                     t          |||¦  «        ¦  «        k    rt          d|j        › d|› d|› d�¦  «        ‚| j         	                    t          |j        ||t          |¦  «        t          |¦  «        ¬¦  «        ¦  «         d S )NÚ zSource mismatch for ú (line ú-ú))r|   r}   r~   r   r€   )r‚   Ú	getmoduleÚgetsourcelinesÚlenÚjoinÚ_get_sourcelinesÚAssertionErrorrT   r‡   Úaddr{   Ú_hash_sourcer„   )Úselfr   r|   Úsourcelinesr}   r~   Úsources          r"   Úadd_codezSourceInfo.add_code«   s  € ÝÔ" 4Ñ(Ô(ˆØˆ>ØˆFÝ#*Ô#9¸$Ñ#?Ô#?Ñ ˆ�[Ø ¥3 {Ñ#3Ô#3Ñ3ˆ
Ø—’˜Ñ%Ô%ˆØ�R—W’WÕ-¨f°kÀ:ÑNÔNÑOÔOÒOÐOÝ ð5 v¤ð 5ð 5Ø$ð5ð 5Ø'1ð5ð 5ð 5ñô ð ð 	Ô× Ò ÝØ”Ø'Ø%Ý% fÑ-Ô-Ý+¨FÑ3Ô3ðñ ô ñ	
ô 	
ð 	
ð 	
ð 	
r$   )	rT   rU   rV   Úsetr{   rX   r&   r'   r˜   r@   r$   r"   r†   r†   §   sK   € € € € € € à˜Ô'Ð'Ð'Ñ'ð
˜Uœ^ð 
°ð 
ð 
ð 
ð 
ð 
ð 
r$   r†   c                   óº   — e Zd ZU dZeed<   eed<   ee         ed<   ee	         ed<   e
eef         ed<   ee         ed<   edz  ed	<   eed
<   dZeed<   dZeed<   dS )Ú_DynamoCodeCacheEntrya  
    Contains the serializable information associated with a single code object
    in dynamo. To restore an execution of compiled code, we will need the following
    ingredients:
      1. The "original" code object, which serves as the entry point for eager
         execution, i.e. the code only executed when there's no cache entry hit.
      2. The python module name this code object belongs to, for identifying the
         enclosing global scope to inject compiled and resume functions.
      3. A list of function names that pointing to this code object. There could be
         multiple function objects pointing to the same code such as recursive functions.
      4. A list of guarded code that eval frame dispatches to.
      5. A list of imported module objects unioned from all compiled branches.
      6. A list of "backends" (compiled fx graph) unioned from all compiled branches.
      7. A string path used to access the original code object users defined.
         A code object can be accessed by "{python_module}.{function_name}.{code_source}" .
      8. A boolean flag indicating whether the function is installed to global scope.
      9. A boolean flag indicating whether the function has a compile id.
      10. Whether or not this code entry was bypassed
    Úpython_codeÚpython_moduleÚfunction_namesÚguarded_codesÚimport_sourcesÚbackend_idsNÚcode_sourceÚinstall_to_globalFÚhas_compile_idÚbypassed)rT   rU   rV   r`   r   rX   rZ   Úlistry   r]   Údictrx   Úboolr¤   r¥   r@   r$   r"   r›   r›   Â   sº   € € € € € € ðð ð(  ÐÐÑØÐÐÑØ˜Ô%Ð%Ð%Ñ%ØÐ.Ô/Ð/Ð/Ñ/Ø˜˜c˜”NÐ"Ð"Ñ"Ø�jÔ!Ð!Ð!Ñ!Ø�t‘ÐÐÑØÐÐÑØ €N�DÐ Ð Ñ Ø€HˆdÐÐÑÐÐr$   r›   Úentryc                 ó²  — t          | j        ¦  «        dk    r$t          dt          | j        ¦  «        › �¦  «        ‚t          j        | j                 }| j        d                              d¦  «        }|D ]}t          ||¦  «        }Œ| j        rù| j                             d¦  «        }|D ]Û}| 	                    d¦  «        r´| 
                    d¦  «        }t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚|dk     rt          d|› �¦  «        ‚t          ||d |…         d ¦  «        }|€t          d	| › �¦  «        ‚|t          j        ||dz   d
…         ¦  «                 }ŒËt          ||¦  «        }ŒÜnt          d	| › �¦  «        ‚t          |t"          j        ¦  «        s"t          dt          |¦  «        › d| › �¦  «        ‚|S )Nr   z(Expected exactly one function name, got r   ú.ú]ú[z"Expected int for index_begin, got z'Expected non-negative index_begin, got z"Cannot find source for code entry éÿÿÿÿzExpected CodeType, got z for code entry )r�   rž   r’   ÚsysÚmodulesr�   ÚsplitrB   r¢   ÚendswithÚrfindrG   rW   r%   r   ÚastÚliteral_evalr&   r'   )r©   r   ÚpartsÚpartÚindex_beginÚattrs         r"   Ú_lookup_coderº   ä   s  € Ý
ˆ5ÔÑ Ô  AÒ%Ð%ÝØRµs¸5Ô;OÑ7PÔ7PÐRÐRñ
ô 
ð 	
õ Œk˜%Ô-Ô.€BØÔ  Ô#×)Ò)¨#Ñ.Ô.€EØð ð ˆÝ�R˜ÑÔˆˆØÔð IØÔ!×'Ò'¨Ñ,Ô,ˆØð 	'ð 	'ˆDØ�}Š}˜SÑ!Ô!ð 'Ø"Ÿjšj¨™oœo�Ý! +­sÑ3Ô3ð Ý(ØP½TÀ+Ñ=NÔ=NÐPÐPñô ð ð  ’?�?Ý(ØOÀ+ÐOÐOñô ð õ ˜r 4¨¨¨Ô#5°tÑ<Ô<�Ø�<Ý&Ð'SÈEÐ'SÐ'SÑTÔTÐTØ�#Ô*¨4°¸a±À"Ð0DÔ+EÑFÔFÔG��å˜R Ñ&Ô&��ð!	'õ$ ÐGÀÐGÐGÑHÔHÐHÝ�b�%œ.Ñ)Ô)ð 
ÝØG¥d¨2¡h¤hÐGÐGÀÐGÐGñ
ô 
ð 	
ð €Ir$   r   Úscopec                 ó,   — t          d| › d|› �¦  «        ‚)Nz*Cannot resolve a fully qualified name for z. Lookup scope: r   )r   r»   s     r"   Ú_raise_resolution_errorr½   	  s'   € Ý
ØR°TÐRÐRÈ5ÐRÐRñô ð r$   c                 ó2  ‡ ‡‡‡— t          j        ‰ ¦  «        }|€t          d‰ › �¦  «        ‚|Št          j        dk    ry‰ j                             d¦  «        }|D ]\}t          ‰|¦  «        st          ‰ ‰¦  «         t          ‰|¦  «        Št          j
        ‰¦  «        st          j        ‰¦  «        r nŒ]t          ¦   «         Šdt          dt          dz  fˆˆ ˆˆfd„Š ‰‰¦  «        }|€t          ‰ ‰¦  «         ‰j        |                     d¦  «        fS )aS  
    Given a code object, return a fully qualified name which will be used as
    a serialized handle to access the code object from the new process.
    This is normally a straightforward process, but there are some corner cases:
    1. When a function is defined with decorator, then this function will be captured
       inside a closure with the wrapper object.
    2. When a function is defined as a nested function, then the code object will be
       stored on the co_consts field of the parent code object by Python compiler.
    This function handles all of the corner cases above.
    NúCannot find module for code ©é   é   r«   Úobjr   c                 ó|  •— | ‰
v rd S ‰
                      | ¦  «         t          j        | ¦  «        r7| ‰	u rdS t          | j        ¦  «        D ]\  }} ‰|¦  «        x}�
d|› d|› �c S Œt          j        | ¦  «        r ‰| j        ¦  «        x}�| Šd|› �S t          j        | ¦  «        r© ‰| j        ¦  «        x}�| Šd|› �S | j	        �‰t          | j	        ¦  «        D ]t\  }}	 |j
        }n# t          $ r Y Œw xY wt          j        |¦  «        s)t          j        |¦  «        st          j        |¦  «        sŒ[ ‰|¦  «        x}�| Šd|› d|› �c S Œut          j        dk     �rYt          j        | ¦  «        rj| j                             ¦   «         D ]P}t          j        |¦  «        s)t          j        |¦  «        st          j        |¦  «        sŒ? ‰|¦  «        x}�|c S ŒQt          j        | ¦  «        rÇt%          j        | j                             ¦   «         t+          | ¦  «        ¦  «        D ]�}	 t-          | |¦  «        }n# t.          $ r Y Œ w xY wt          j        |¦  «        s)t          j        |¦  «        st          j        |¦  «        sŒa ‰|¦  «        x}�|j        |k    rt3          ‰	‰¦  «         |c S ŒŽd S )	Nr‰   z.co_consts[r¬   z	.__func__z	.__code__z.__closure__[z].cell_contentsrÀ   )r“   r‚   ÚiscodeÚ	enumerater2   ÚismethodÚ__func__Ú
isfunctionÚ__code__Ú__closure__Úcell_contentsÚ
ValueErrorr¯   Úversion_infoÚismoduleÚ__dict__rS   ÚisclassÚ	itertoolsÚchainÚkeysÚdirrB   ÚAttributeErrorrT   r½   )rÃ   ÚiÚconstr!   ÚcellrÌ   ÚvalueÚnameÚ_find_code_sourcer   ÚseenÚtoplevels           €€€€r"   rÜ   z+_get_code_source.<locals>._find_code_source+  s‘  ø€ ð �$ˆ;ˆ;Ø�4à�Š�‰ŒˆåŒ>˜#ÑÔð 	3Ø�dˆ{ˆ{Ø�rå% c¤mÑ4Ô4ð 3ð 3‘��5Ø,Ð,¨UÑ3Ô3Ð3�CÐ@Ø2¨Ð2Ð2¨SÐ2Ð2Ð2Ð2Ð2ð Aõ Ô˜CÑ Ô ð 	)Ø(Ð(¨¬Ñ6Ô6Ð6�ÐCØ�Ø( 3Ð(Ð(Ð(åÔ˜cÑ"Ô"ð 	GØ(Ð(¨¬Ñ6Ô6Ð6�ÐCØ�Ø( 3Ð(Ð(Ð(ØŒÐ*Ý(¨¬Ñ9Ô9ð Gð G‘G�A�tð!Ø(,Ô(:˜˜øÝ%ð !ð !ð !Ø ˜ð!øøøõ  Ô*¨=Ñ9Ô9ð!å"œ>¨-Ñ8Ô8ð!õ #Ô+¨MÑ:Ô:ð!ð
 !Ø0Ð0°Ñ?Ô?Ð?˜ÐLØ#&˜ØF¨qÐFÐFÀÐFÐFÐFÐFÐFð Mõ Ô˜gÒ%Ñ%ÝÔ Ñ$Ô$ð 	#Ø œ\×0Ò0Ñ2Ô2ð #ð #�EåÔ*¨5Ñ1Ô1ð!å"œ?¨5Ñ1Ô1ð!õ #Ô+¨EÑ2Ô2ð!ð
 !Ø0Ð0°Ñ7Ô7Ð7˜ÐDØ"˜
˜
˜
ð Eõ Œ˜sÑ#Ô#ð #Ý%œO¨C¬L×,=Ò,=Ñ,?Ô,?ÅÀSÁÄÑJÔJð #ð #�Dð!Ý '¨¨TÑ 2Ô 2˜˜øÝ)ð !ð !ð !Ø ˜ð!øøøõ  Ô*¨5Ñ1Ô1ð!å"œ?¨5Ñ1Ô1ð!õ #Ô+¨EÑ2Ô2ð!ð
 !Ø0Ð0°Ñ7Ô7Ð7˜ÐDØ œ>¨TÒ1Ð1Ý3°D¸(ÑCÔCÐCØ"˜
˜
˜
ð Eð ˆts$   Ã#C+Ã+
C8Ã7C8È1IÉ
IÉI)r‚   r�   r   r¯   rÎ   r;   r±   Úhasattrr½   rB   rÉ   rÇ   r™   r   rZ   rV   Ústrip)r   r|   r¶   r·   r¢   rÜ   rÝ   rÞ   s   `    @@@r"   Ú_get_code_sourcerá     sd  øøøø€ õ Ô˜tÑ$Ô$€FØ€~ÝÐ@¸$Ð@Ð@ÑAÔAÐAà€HÝ
Ô˜7Ò"Ð"ØÔ ×&Ò& sÑ+Ô+ˆàð 	ð 	ˆDÝ˜8 TÑ*Ô*ð 8Ý'¨¨hÑ7Ô7Ð7Ý˜x¨Ñ.Ô.ˆHÝÔ! (Ñ+Ô+ð ­wÔ/?ÀÑ/IÔ/Ið Ø�ðå‰5Œ5€DðE�sð E¥s¨T¡zð Eð Eð Eð Eð Eð Eð Eð Eð EðN $Ð# HÑ-Ô-€KØÐÝ  hÑ/Ô/Ð/ØÔ  +×"3Ò"3°CÑ"8Ô"8Ð8Ð8r$   c                   óœ   — e Zd ZU dZeed<   eed<   edz  ed<   eeef         dz  ed<   edz  ed<   dZe	dd
„¦   «         Z
	 ddd ded	dfd„ZdS )Ú
SystemInfozÀ
    System information including Python, PyTorch, and GPU details.
    This information is used to ensure compiled artifacts can only be loaded
    with compatible system configurations.
    Úpython_versionÚtorch_versionNÚtoolkit_versionÚtriton_versionÚgpu_name)ÚcudaÚxpur   c                 óŽ  — d}ddl m} d\  }}| j        D ]}}t          t          |¦  «                             ¦   «         rT	 t          t          |¦  «                             ¦   «         }t          t          j        |¦  «        } n# t          $ r Y Œyw xY wŒ~ | t          j
        ¦   «         t          j        | |d¦  «        |¬¦  «        S )z=Create a SystemInfo instance with current system information.Nr   )Úget_triton_version)NN©r   r   )rä   rå   ræ   rç   rè   )Útorch.utils._tritonrì   Ú
CHECK_GPUSrB   rr   Úis_availableÚget_device_nameÚversionÚ	ExceptionÚplatformrä   Ú__version__)r   rè   rì   ræ   Údevice_types        r"   ÚcurrentzSystemInfo.current‡  sð   € ð ˆØ:Ð:Ð:Ð:Ð:Ð:à$.Ñ!ˆ�/Øœ>ð 	ð 	ˆKÝ•u˜kÑ*Ô*×7Ò7Ñ9Ô9ð ðÝ&¥u¨kÑ:Ô:×JÒJÑLÔL�HÝ&-­e¬m¸[Ñ&IÔ&I�OØ�EøÝ ð ð ð Ø�Dðøøøðð ˆsÝ#Ô2Ñ4Ô4ÝÔ+Ø+Ø-Ð-¨fÑ5Ô5Øð
ñ 
ô 
ð 	
s   ¿ABÂ
BÂBÚcpuÚotherrö   c                 óL  — | j         |j         k    rt          d| j         › �¦  «        ‚| j        |j        k    rt          d| j        › �¦  «        ‚|| j        v rÈt	          t
          |¦  «                             ¦   «         st          |› d�¦  «        ‚| j        |j        k    rt          d| j        › �¦  «        ‚|j        dk    r'| j        |j        k    rt          d| j        › �¦  «        ‚|j	        �1| j	        |j	        k    r#t          d| j	        › d	|j	        › �¦  «        ‚dS dS dS )
z~
        Check if this SystemInfo is compatible with another SystemInfo.
        Raises RuntimeError if incompatible.
        z=Compile package was created with a different Python version: z>Compile package was created with a different PyTorch version: z is not availablez>Compile package was created with a different toolkit version: rí   z=Compile package was created with a different Triton version: Nz7Compile package was created with different GPU: cached=z
, current=)
rä   ÚRuntimeErrorrå   rï   rB   rr   rð   ræ   rç   rè   )r•   rù   rö   s      r"   Úcheck_compatibilityzSystemInfo.check_compatibility   s‹  € ð Ô %Ô"6Ò6Ð6ÝØeÐPTÔPcÐeÐeñô ð ð Ô Ô!4Ò4Ð4ÝØeÐQUÔQcÐeÐeñô ð ð ˜$œ/Ð)Ð)Ý�5 +Ñ.Ô.×;Ò;Ñ=Ô=ð FÝ" kÐ#DÐ#DÐ#DÑEÔEÐEàÔ# uÔ'<Ò<Ð<Ý"ØkÐUYÔUiÐkÐkñô ð ð
 Ô$¨Ò.Ð.ØÔ'¨5Ô+?Ò?Ð?å"ØiÐTXÔTgÐiÐiñô ð ð
 Œ~Ð)¨d¬m¸u¼~Ò.MÐ.MÝ"ðHØ"œmðHð HØ7<´~ðHð Hñô ð ð' *Ð)ð$ *Ð)Ð.MÐ.Mr$   )r   rã   )rø   )rT   rU   rV   r`   rZ   rX   rL   rW   rï   r[   r÷   rü   r@   r$   r"   rã   rã   x  sÌ   € € € € € € ðð ð ÐÐÑØÐÐÑØ˜4‘ZÐÐÑØ˜#˜s˜(”O dÑ*Ð*Ð*Ñ*Ø�D‰jÐÐÑØ €Jàð
ð 
ð 
ñ „[ð
ð2 7<ð&ð &Ø!ð&Ø03ð&à	ð&ð &ð &ð &ð &ð &r$   rã   c                   óä   — e Zd ZU ee         ed<   eed<   eed<    ej	        e
j        ¬¦  «        Ze
ed<   dZedz  ed<   dZedz  ed<   ed	ee         fd
„¦   «         Zdd„Zd	eeef         fd„ZdS )Ú_DynamoCacheEntryÚcodesÚsource_inforö   )Údefault_factoryÚsystem_infoNÚfn_nameÚfn_first_linenor   c                 ó$   — d„ | j         D ¦   «         S )Nc                 ó&   — h | ]}|j         D ]}|’ŒŒS r@   )r¡   )rC   r   Ú
backend_ids      r"   ú	<setcomp>z0_DynamoCacheEntry.backend_ids.<locals>.<setcomp>Ô  s(   € ÐUÐUÐU˜tÀDÔDTÐUÐU°j�
ÐUÐUÐUÐUr$   )rÿ   ©r•   s    r"   r¡   z_DynamoCacheEntry.backend_idsÒ  s   € àUÐU t¤zÐUÑUÔUÐUr$   c                 óx   — t                                ¦   «         }| j                             || j        ¦  «         dS )zZCheck if the current system is compatible with the system used to create this cache entry.N)rã   r÷   r  rü   rö   )r•   Úcurrent_system_infos     r"   Úcheck_versionsz _DynamoCacheEntry.check_versionsÖ  s7   € å(×0Ò0Ñ2Ô2ÐØÔ×,Ò,Ð-@À$ÔBRÑSÔSÐSÐSÐSr$   c                 óà   — t          | j        ¦  «        dk    rt          d¦  «        ‚t          t          | j        ¦  «        ¦  «        | j        | j        | j        t          | j        ¦  «        dœS )Nr   z Expected at least one code entry)Ú	num_codesr  r  rö   r¡   )	r�   rÿ   r’   rZ   r  r  rö   r¦   r¡   r	  s    r"   Ú
debug_infoz_DynamoCacheEntry.debug_infoÛ  se   € ÝˆtŒz‰?Œ?˜aÒÐÝ Ð!CÑDÔDÐDå�S ¤™_œ_Ñ-Ô-Ø”|Ø#Ô3ØÔ+Ý Ô 0Ñ1Ô1ð
ð 
ð 	
r$   ©r   N)rT   rU   rV   r¦   r›   rX   r†   rZ   ÚdataclassesÚfieldrã   r÷   r  r  r  Úpropertyr™   rx   r¡   r  r§   r   r  r@   r$   r"   rþ   rþ   É  sô   € € € € € € àÐ%Ô&Ð&Ð&Ñ&ØÐÐÑØÐÐÑØ/˜kÔ/À
Ô@RÐSÑSÔS€K�ÐSÐSÑSØ€GˆS�4‰ZÐÐÑØ"&€O�S˜4‘ZÐ&Ð&Ñ&àðV˜S œ_ð Vð Vð Vñ „XðVðTð Tð Tð Tð
	
˜D  c œNð 	
ð 	
ð 	
ð 	
ð 	
ð 	
r$   rþ   )ÚCacheArtifactÚCacheArtifactFactoryÚCacheArtifactRecorderc                   ó2   — e Zd Zdd„Zedefd„¦   «         ZdS )ÚPrecompileCacheArtifactr   Nc                 óP   — t                                | j        | j        ¦  «         d S r   )ÚDynamoCacheÚ_write_to_local_cacher€   rD   r	  s    r"   Úpopulate_cachez&PrecompileCacheArtifact.populate_cacheð  s"   € Ý×)Ò)¨$¬,¸¼ÑAÔAÐAÐAÐAr$   c                  ó   — dS )NÚ
precompiler@   r@   r$   r"   r%   zPrecompileCacheArtifact.typeó  s   € àˆ|r$   r  )rT   rU   rV   r  ÚstaticmethodrZ   r%   r@   r$   r"   r  r  î  sS   € € € € € ðBð Bð Bð Bð ð�#ð ð ð ñ „\ðð ð r$   r  c                   óx   — e Zd ZU dZeed<   eeef         ed<   e	dedeeef         de
d          fd„¦   «         ZdS )ÚPrecompileCacheEntrya2  
    A full cache entry for caching precompile, for a toplevel torch.compile.
    Consists of a _DynamoCacheEntry, which contains all the dynamo related contents,
    and a set of backends content. In general, the backend content here will always
    be of type precompile_context.BackendCacheArtifact
    ÚdynamoÚbackendsÚcache_entryr   c                 óV  ‡— i }| j         D ]Ž}|j        D ]„}||vrst                               d¦  «         t	          j        |                      ¦   «         |dœ¦  «        Št          j         	                    dd„ ˆfd„d¬¦  «         d|_
         n||         ||<   Œ…Œ�t          | |¬	¦  «        S )
NzBackend not found)r©   Úmissing_backendÚartifactc                  ó   — dddœS )NÚdynamo_cache_bypassÚjson)rÛ   Úencodingr@   r@   r$   r"   ú<lambda>z7PrecompileCacheEntry.from_cache_entry.<locals>.<lambda>  s   € Ø$9Ø(.ð-ð -€ r$   c                  ó   •— ‰ S r   r@   )Ú	debug_strs   €r"   r,  z7PrecompileCacheEntry.from_cache_entry.<locals>.<lambda>  s   ø€ ¨9€ r$   F)Úmetadata_fnÚ
payload_fnÚexpect_trace_idT)r"  r#  )rÿ   r¡   ÚloggerÚwarningr*  Údumpsr  rr   Ú_loggingÚtrace_structuredr¥   r!  )r$  r#  Úbackend_contentr   r  r.  s        @r"   Úfrom_cache_entryz%PrecompileCacheEntry.from_cache_entry  sð   ø€ ð 24ˆàÔ%ð 	Gð 	GˆDØ"Ô.ð Gð G�
Ø XÐ-Ð-Ý—N’NÐ#6Ñ7Ô7Ð7Ý $¤
à%0×%;Ò%;Ñ%=Ô%=Ø/9ðð ñ!ô !�Iõ ”N×3Ò3Ø"ð%ð %ð $5Ð#4Ð#4Ð#4Ø(-ð 4ñ ô ð ð %)�D”MØ�Eà2:¸:Ô2F�O JÑ/Ð/øå#¨;ÀÐQÑQÔQÐQr$   N)rT   rU   rV   r`   rþ   rX   r§   rx   r   r  r	   r8  r@   r$   r"   r!  r!  ø  s‘   € € € € € € ðð ð ÐÐÑØ�:˜s�?Ô#Ð#Ð#Ñ#àðRØ&ðRØ26°zÀ3°Ô2GðRà	Ð(Ô	)ðRð Rð Rñ „\ðRð Rð Rr$   r!  r—   c                 óž   — t          j        ¦   «         }|                     |                      ¦   «         ¦  «         |                     ¦   «         S r   )ÚhashlibÚsha256ÚupdateÚencodeÚ	hexdigest)r—   Úsha256_hashs     r"   r”   r”   %  s=   € Ý”.Ñ"Ô"€KØ×Ò�v—}’}‘”Ñ'Ô'Ð'Ø× Ò Ñ"Ô"Ð"r$   Úmr}   r~   c                 óR   — t          j        | ¦  «        d         |dz
  |dz
  …         S )Nr   r   )r‚   rŽ   ©r@  r}   r~   s      r"   r‘   r‘   +  s,   € õ Ô! !Ñ$Ô$ QÔ'¨°a©¸*Àq¹.Ð(HÔIÐIr$   c           	      ód   — t          d                     t          | ||¦  «        ¦  «        ¦  «        S )Nr‰   )r”   r�   r‘   rB  s      r"   Ú_hash_sourcelinesrD  1  s)   € Ý˜ŸšÕ 0°°KÀÑ LÔ LÑMÔMÑNÔNÐNr$   c                 ó’   ‡ ‡‡‡‡— ddl mŠmŠ ddlmŠmŠ t          j        dt          d          fˆˆ ˆˆˆfd„¦   «         } |¦   «         S )Nr   )Úget_compile_idÚlog_dynamo_start)Úcompile_contextÚCompileContextr   c               3   óx  •K  — t          ¦   «           ‰i ¬¦  «        }  ‰ ‰| ¦  «        ¦  «        5  t          dddt          t          j        j        j        ¦  «        ‰j        ‰j        ‰j	        dœ¬¦  «        5   ‰‰¦  «         d V — d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )N)Úframe_statez_compile.compile_innerÚentire_frame_compileÚ!dynamo_cumulative_compile_time_us)Ú	frame_keyr6   r5   r7   )Ú
phase_nameÚdynamo_compile_column_usÚmetadata)
r   r   rZ   rr   rs   ÚutilsÚ
curr_framer6   r5   r7   )Ú
compile_idrI  r   rH  rF  rG  s    €€€€€r"   Ú_ctxz$_compile_frame_context.<locals>._ctxA  sb  øè è € åÑÔÐØ#�^°Ð3Ñ3Ô3ˆ
àˆO˜N˜N¨:Ñ6Ô6Ñ7Ô7ð	ð 	åØ(Ø1Ø)Lõ "%¥U¤]Ô%8Ô%CÑ!DÔ!DØ#œ|Ø#'Ô#3Ø&*Ô&9ð	ð ðñ ô ð	ð 	ð Ð˜TÑ"Ô"Ð"ØˆEˆEˆEð!	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s6   ²A	B/Á;BÂB/ÂB	ÂB/ÂB	ÂB/Â/B3Â6B3)	Útorch._dynamo.convert_framerF  rG  Útorch._guardsrH  rI  Ú
contextlibÚcontextmanagerr   )r   rU  rI  rH  rF  rG  s   ` @@@@r"   Ú_compile_frame_contextrZ  5  s”   øøøøø€ ð MÐLÐLÐLÐLÐLÐLÐLØ=Ð=Ð=Ð=Ð=Ð=Ð=Ð=õ Ôð•(˜4”.ð ð ð ð ð ð ð ð ð ñ Ôðð* ˆ4‰6Œ6€Mr$   c                   ó¼  — e Zd ZdZ	 	 d1dedef         dz  dedz  deddfd	„Zdefd
„Z		 	 d1dededz  deddfd„Z
	 	 	 d2dej        dededz  dedz  deddfd„Zedeeef         fd„¦   «         Zej        defd„¦   «         Zdej        ddfd„Zej        dej        ded         fd„¦   «         Zdedej        ddfd„Zdeej                 ddfd„Zde j!        j"        dz  ddfd„Z#d3d„Z$dej        dededdfd „Z%d!ed"eddfd#„Z&d4d$ed%edz  ddfd&„Z'd3d'„Z(d(ej)        d)ed*eddfd+„Z*d3d,„Z+d-eeef         ddfd.„Z,defd/„Z-e.dedef         defd0„¦   «         Z/dS )5ÚCompilePackagea   
    CompilePackage is considered a low level component and should not be directly exposed to
    end users. It has the following interface:

    1. `CompilePackage.__init__()` which optionally takes previously serialized dynamo states.
        a. when `dynamo` argument is None, it will construct a brand new CompilePackage object.
        b. when `dynamo` argument is not None, it will load a pre-compiled dynamo state.
    2. `package.save()` which dumps the dynamo and backend states to a DynamoCacheEntry object.
    3. `package.install(backends) which will handle all the side-effectful global scope
        updates with compiled functions and resume functions.
    NFr   .r"  Úignore_inlined_sourcesr   c                 óV  — d | _         i | _        d | _        i | _        d| _        i | _        t          t          ¦   «         ¬¦  «        | _        t          ¦   «         | _	        d| _
        |�A|                      |||¦  «         |                      ¦   «          |                      ¦   «          d S d S )Nrø   ©r‡   F)Ú_innermost_fnÚ_codesÚ_current_entryÚ_installed_globalsÚ_device_typeÚ_cached_backendsr†   r™   Ú_source_infoÚ_resume_codesÚ_initializedÚ
initializeÚ	uninstallÚvalidate)r•   r   r"  r]  s       r"   Ú__init__zCompilePackage.__init__g  s¤   € ð "ˆÔØCEˆŒà<@ˆÔØEGˆÔà!ˆÔð 8:ˆÔÝ(2Å3Á5Ä5Ð(IÑ(IÔ(IˆÔÝ25±%´%ˆÔØ!ˆÔØˆ>Ø�OŠO˜B Ð(>Ñ?Ô?Ð?Ø�NŠNÑÔÐØ�MŠM‰OŒOˆOˆOˆOð ˆ>r$   c                 ó   — | j         S r   )rh  r	  s    r"   Úis_initializedzCompilePackage.is_initialized  ó   € ØÔ Ð r$   c           
      ó^  — ddl m} | j        rt          d¦  «        ‚t	          t          ¦   «         ¬¦  «        | _         ||¦  «        | _        | j        €t          d¦  «        ‚|��t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚|                     ¦   «          |s‚|j        j        D ]i}t          j        |j        ¦  «        }t#          ||j        |j        ¦  «        }||j        k    r(t+          d|j        › d|j        › d	|j        › d
�¦  «        ‚Œj|j        | _        |j        ^}}	| j        j        |i| _        |	D ])}|| j        t2                               |j        ¦  «        <   Œ*n*|                      | j        j        | j        j        ¦  «         d| _        d S )Nr   ©Úinnermost_fnz%CompilePackage is already initializedr_  zinnermost_fn returned Nonez Expected _DynamoCacheEntry, got z!Source code changes detected for rŠ   z - line rŒ   T)Ú
eval_framerr  rh  r’   r†   r™   rf  r`  rG   rþ   r%   r  r   r‡   Ú	importlibÚimport_moduler|   rD  r}   r~   r   rû   rÿ   rÊ   ra  r   rR   rœ   Ú_add_functionrU   )
r•   r   r"  r]  rr  r   r@  r   Úmainrÿ   s
             r"   ri  zCompilePackage.initialize‚  s   € ð 	-Ð,Ð,Ð,Ð,Ð,àÔð 	JÝ Ð!HÑIÔIÐIÝ&µs±u´uÐ=Ñ=Ô=ˆÔØ)˜\¨"Ñ-Ô-ˆÔØÔÐ%Ý Ð!=Ñ>Ô>Ð>ØÑÝ˜fÕ&7Ñ8Ô8ð XÝ$Ð%VÍÈVÉÌÐ%VÐ%VÑWÔWÐWØ×!Ò!Ñ#Ô#Ð#Ø)ð 	7Ø"Ô.Ô>ð ð �DÝ!Ô/°´Ñ<Ô<�AÝ0°°DÔ4DÀdÄoÑVÔV�HØ 4¤=Ò0Ð0Ý*ð AÀÄð  Að  AÐTXÔTdð  Að  AÐnrÔn}ð  Að  Að  Añô ð ð 1ð
 %+Ô$6�Ô!à!œ<ˆLˆD�5ØÔ-Ô6¸Ð=ˆDŒKØð Tð T�ØOS�”�N×9Ò9¸$Ô:JÑKÔKÑLÐLðTð ×ÒØÔ"Ô+¨TÔ-?Ô-Jñô ð ð !ˆÔÐÐr$   rœ   r�   Úfunction_namer¢   r£   c           
      óÀ  — || j         vr:t          t                               |¦  «        |g g i g ||¬¦  «        }|| j         |<   n|| j         |         }|j        |k    rt          d|j        › d|› �¦  «        ‚|j        |k    rt          d|j        › d|› �¦  «        ‚|j        |k    rt          d|j        › d|› �¦  «        ‚|�|j         	                    |¦  «         d S d S )N)rœ   r�   rž   rŸ   r    r¡   r¢   r£   zpython_module mismatch: z != zinstall_to_global mismatch: zcode_source mismatch: )
ra  r›   r   rH   r�   r’   r£   r¢   rž   Úappend)r•   rœ   r�   rx  r¢   r£   r   s          r"   rv  zCompilePackage._add_function©  s=  € ð ˜dœkÐ)Ð)Ý(Ý*×;Ò;¸KÑHÔHØ+Ø!Ø Ø!ØØ'Ø"3ð	ñ 	ô 	ˆDð (,ˆDŒK˜Ñ$Ð$à”;˜{Ô+ˆDØÔ! ]Ò2Ð2Ý$ØV¨tÔ/AÐVÐVÀ}ÐVÐVñô ð ð Ô%Ð):Ò:Ð:Ý$Øb°4Ô3IÐbÐbÐO`ÐbÐbñô ð ð Ô ;Ò.Ð.Ý$ØP¨TÔ-=ÐPÐPÀ;ÐPÐPñô ð ð Ð$ØÔ×&Ò& }Ñ5Ô5Ð5Ð5Ð5ð %Ð$r$   c                 ó   — | j         S r   )re  r	  s    r"   Úcached_backendszCompilePackage.cached_backendsÏ  s   € àÔ$Ð$r$   c                 ól   — | j         €t          d¦  «        ‚t                               | j         ¦  «        S )Nz_innermost_fn is not set)r`  r’   r\  Úsource_id_from_fnr	  s    r"   Ú	source_idzCompilePackage.source_idÓ  s1   € àÔÐ%Ý Ð!;Ñ<Ô<Ð<Ý×/Ò/°Ô0BÑCÔCÐCr$   r   c                 óÐ   — t          |¦  «        \  }}t          j        |¦  «        }|€t          d|› �¦  «        ‚|                      ||j        t          |¦  «        |¬¦  «         d S )Nr¿   )rx  r¢   )rá   r‚   r�   r   rv  rT   ry   )r•   r   rx  r¢   r|   s        r"   Ú_add_user_functionz!CompilePackage._add_user_functionÙ  s}   € Ý%5°dÑ%;Ô%;Ñ"ˆ�{ÝÔ" 4Ñ(Ô(ˆØˆ>ÝÐD¸dÐDÐDÑEÔEÐEØ×ÒØØŒOÝ% mÑ4Ô4Ø#ð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
r$   )NNNc              #   óæ   K  — | j         �t          d¦  «        ‚|| j        vr|                      |¦  «         | j        |         }|| _         	 d V — d|_        d | _         d S # d|_        d | _         w xY w)Nz-_current_entry is already set in code_contextT)rb  r’   ra  r�  r¤   )r•   r   r©   s      r"   Úcode_contextzCompilePackage.code_contextå  s˜   è è € àÔÐ*Ý Ð!PÑQÔQÐQð �t”{Ð"Ð"Ø×#Ò# DÑ)Ô)Ð)à”˜DÔ!ˆØ#ˆÔð	'ØˆEˆEˆEà#'ˆEÔ Ø"&ˆDÔÐÐøð $(ˆEÔ Ø"&ˆDÔÐ&Ð&Ð&Ð&s   ÁA  Á A0r^   r_   c                 óÞ   — | j         €t          d¦  «        ‚| j         j        rd S t          |t                               |¦  «        ¬¦  «        }| j         j                             |¦  «         d S )Nz-_current_entry is not set in add_guarded_code)r^   r_   )rb  r’   r¥   r]   r   rH   rŸ   rz  )r•   r^   r_   Úguarded_code_entrys       r"   Úadd_guarded_codezCompilePackage.add_guarded_code÷  s{   € ð
 ÔÐ&Ý Ð!PÑQÔQÐQØÔÔ'ð 	ØˆFÝ3Ø%Ý&×7Ò7¸ÑDÔDð
ñ 
ô 
Ðð 	ÔÔ)×0Ò0Ð1CÑDÔDÐDÐDÐDr$   Úsourcesc                 ó    — | j         €t          d¦  «        ‚| j         j        rd S |D ]&}|| j        v rŒ| j                             |¦  «         Œ'd S )Nz/_current_entry is not set in add_inlined_source)rb  r’   r¥   rg  rf  r˜   )r•   r‡  r   s      r"   Úadd_inlined_sourcez!CompilePackage.add_inlined_source  sq   € ØÔÐ&Ý Ð!RÑSÔSÐSØÔÔ'ð 	ØˆFØð 	-ð 	-ˆDØ�tÔ)Ð)Ð)ØØÔ×&Ò& tÑ,Ô,Ð,Ð,ð	-ð 	-r$   Úgraphc                 ó.   — t          |¦  «        | _        d S r   )r   rd  )r•   rŠ  s     r"   Úupdate_device_typez!CompilePackage.update_device_type  s   € Ý.¨uÑ5Ô5ˆÔÐÐr$   c                 óJ   — | j         €t          d¦  «        ‚d| j         _        d S )Nz1_current_entry is not set in bypass_current_entryT)rb  r’   r¥   r	  s    r"   Úbypass_current_entryz#CompilePackage.bypass_current_entry  s+   € ØÔÐ&Ý Ð!TÑUÔUÐUØ'+ˆÔÔ$Ð$Ð$r$   c                 ó†   — |                       ||t          |¦  «        d¬¦  «         | j                             |¦  «         d S )NT)rx  r£   )rv  ry   rg  r“   )r•   rœ   r�   rx  s       r"   Úadd_resume_functionz"CompilePackage.add_resume_function  sT   € ð 	×ÒØØÝ% mÑ4Ô4Ø"ð	 	ñ 	
ô 	
ð 	
ð 	Ô×Ò˜{Ñ+Ô+Ð+Ð+Ð+r$   ÚaliasÚmodule_namec                 óP   — | j         €t          d¦  «        ‚|| j         j        |<   d S )Nz._current_entry is not set in add_import_source)rb  r’   r    )r•   r‘  r’  s      r"   Úadd_import_sourcez CompilePackage.add_import_source&  s0   € ØÔÐ&Ý Ð!QÑRÔRÐRØ4?ˆÔÔ*¨5Ñ1Ð1Ð1r$   r  Úbackendc                 óú   — | j         €t          d¦  «        ‚|                     d¦  «        st          d|› d�¦  «        ‚t          |¦  «        }| j         j                             |¦  «         |�|| j        |<   d S d S )Nz+_current_entry is not set in add_backend_idÚ__compiled_fn_z2backend_id must start with '__compiled_fn_', got 'ú')rb  r’   Ú
startswithrx   r¡   rz  re  )r•   r  r•  s      r"   Úadd_backend_idzCompilePackage.add_backend_id+  s›   € ØÔÐ&Ý Ð!NÑOÔOÐOØ×$Ò$Ð%5Ñ6Ô6ð 	Ý ØRÀZÐRÐRÐRñô ð õ   
Ñ+Ô+ˆ
ØÔÔ'×.Ò.¨zÑ:Ô:Ð:ØÐØ07ˆDÔ! *Ñ-Ð-Ð-ð Ðr$   c                 ó  — | j         �t          d¦  «        ‚| j        €t          d¦  «        ‚| j        st          d¦  «        ‚t	          t          | j        ¦  «        ¦  «        | j        j        urt          d¦  «        ‚d S )Nz-_current_entry should be None during validatez(_innermost_fn is not set during validatez1CompilePackage is not initialized during validatez6First code entry does not match _innermost_fn.__code__)rb  r’   r`  rh  ÚnextÚiterra  rÊ   r	  s    r"   rk  zCompilePackage.validate7  sŽ   € ØÔÐ*Ý Ð!PÑQÔQÐQØÔÐ%Ý Ð!KÑLÔLÐLØÔ ð 	VÝ Ð!TÑUÔUÐUÝ•�T”[Ñ!Ô!Ñ"Ô"¨$Ô*<Ô*EÐEÐEÝ ØHñô ð ð FÐEr$   r|   rÛ   rÚ   c                 óv   — ||j         |<   | j                             |g ¦  «                             |¦  «         d S r   )rÐ   rc  Ú
setdefaultrz  )r•   r|   rÛ   rÚ   s       r"   Ú_install_globalzCompilePackage._install_globalC  s;   € Ø %ˆŒ˜ÑØÔ×*Ò*¨6°2Ñ6Ô6×=Ò=¸dÑCÔCÐCÐCÐCr$   c                 óò   — ddl m} | j        €t          d¦  «        ‚| j                             ¦   «         D ]$\  }}|D ]}|j                             |¦  «         ŒŒ%i | _         || j        j        ¦  «         d S )Nr   )Ú_reset_precompile_entriesz%_innermost_fn is not set in uninstall)	Útorch._C._dynamo.eval_framer¢  r`  r’   rc  ÚitemsrÐ   ÚpoprÊ   )r•   r¢  r|   ÚnamesrÛ   s        r"   rj  zCompilePackage.uninstallG  s¢   € ØIÐIÐIÐIÐIÐIàÔÐ%Ý Ð!HÑIÔIÐIØ!Ô4×:Ò:Ñ<Ô<ð 	*ð 	*‰MˆF�EØð *ð *�Ø”×#Ò# DÑ)Ô)Ð)Ð)ð*ð #%ˆÔà!Ð! $Ô"4Ô"=Ñ>Ô>Ð>Ð>Ð>r$   r#  c                 óè  — ddl m} ddlm} |                      ¦   «          | j                             ¦   «         D �]¶\  }}|j        rt          |¦  «        nt          j
        ¦   «         }|5  t          j        |j                 }|j                             ¦   «         D ].\  }}	|                      ||t!          j        |	¦  «        ¦  «         Œ/|}
|j        r½|j        D ]µ}|j        rz|j        }|}|||fdt,          t.          j        df         dt.          j        dt4          t6          t8          f         d	t6          d
t.          j        f
d„}|                      |||¦  «         Œƒt/          j        ||j        |¦  «        }|                      |||¦  «         Œ¶|j        rt?          |¦  «        }
|j         r	 ddd¦  «         �Œ‚|j!        D ]�}||vrtE          d|› d�¦  «        ‚tG          dd¬¦  «        5  ||          $                    ¦   «         }|                      ||tJ          j&         '                    |¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   Œ‘tQ          |j)        ¦  «        dk    r$tJ          j&        j*         +                    |
¦  «         |j)        D �]?}tG          d¦  «        5  tY          |j-        ¦  «        }ddd¦  «         n# 1 swxY w Y   t          j        |j                 j        }|j        j.        x}r2 ||¦  «        }||v r||         |urt_          d|› d�¦  «        ‚n|||<   ta          |tJ          j&        j1        j2        ¦  «        st_          dtg          |¦  «        › �¦  «        ‚tG          d¦  «        5  ti          ||
|¦  «        }ddd¦  «         n# 1 swxY w Y    ||
|tj           6                    |j7        ¦  «        ¦  «         �ŒA	 ddd¦  «         n# 1 swxY w Y   �Œ¸dS )a3  
        Sync the package states to the compiled function. This includes the following actions:
          1. Clean up the previously installed states.
          2. Install the compiled functions to global scopes.
          3. Install the precompiled cache entries to ExtraStates on the code object.
        r   )Ú_load_precompile_entryr   )Úget_builtins_dictÚclosure.Ú_codeÚ_globalsÚ_namer   c                 ó2   — t          j        |||d | ¦  «        S r   )r&   ÚFunctionType)rª  r«  r¬  r­  s       r"   Ú_make_fnz(CompilePackage.install.<locals>._make_fnv  s$   € õ (-Ô'9Ø$)¨8°U¸DÀ'ñ("ô ("ð !"r$   NúBackend ú# is not found in the given backendsÚafter_deserializationÚbackend_compile)rO  Úprecompile_load_guardsz Builtins dict mismatch for key 'r˜  zExpected GuardsState, got Úprecompile_build_guards)8r£  r¨  rq   r©  rj  ra  r¤  r¤   rZ  rX  r   r¯   r°   r�   r    r   rt  ru  r£   rž   r9   rÐ   rL   r&   ÚCellTyper'   r§   rZ   r   r¯  r¢   rº   r¥   r¡   rû   r   r³  rr   rs   Údisabler�   rŸ   rs  Ú	skip_coderk   r^   Ú%name_of_builtins_dict_key_in_fglobalsr’   rG   rt   r   r%   rw   r   rR   r_   )r•   r#  r¨  r©  r   r©   Úcontextr|   r‘  r’  rl   rx  Ú	f_globalsr  r°  r   r  r•  Úguarded_coder^   rm   Úbuiltin_dict_nameÚbuiltins_dictrv   s                           r"   ÚinstallzCompilePackage.installT  s  € ð 	GÐFÐFÐFÐFÐFà3Ð3Ð3Ð3Ð3Ð3à�ŠÑÔÐØœ;×,Ò,Ñ.Ô.ð c	ñ c	‰KˆD�%ð Ô'ð.Õ& tÑ,Ô,Ð,åÔ+Ñ-Ô-ð ð
 ð ]ð ]Ýœ UÔ%8Ô9�Ø*/Ô*>×*DÒ*DÑ*FÔ*Fð ð Ñ&�E˜;Ø×(Ò(Ø ¥yÔ'>¸{Ñ'KÔ'Kñô ð ð ð #�ØÔ*ð LØ).Ô)=ð Lð L˜ØÔ+ð Lð )/¬˜IØ&3˜Gð 9=Ø;DØ-4ð	"ð "Ý).­u¬~¸sÐ/BÔ)Cð"å',¤~ð"õ +/­sµC¨x¬.ð"õ (+ð	"õ
 "'Ô!3ð"ð "ð "ð "ð !×0Ò0°¸ÈÑQÔQÐQÐQå!&Ô!3Ø $ f¤o°}ñ"ô "˜Bð !×0Ò0°¸ÈÑKÔKÐKÐKØÔ$ð 6Ý".¨uÑ"5Ô"5�Kà”>ð ð ðM]ð ]ð ]ñ ]ô ]ð ]ñ ]ðP #(Ô"3ð ð �JØ!¨Ð1Ð1Ý*ØV zÐVÐVÐVñô ð õ &Ø/Ð<Mðñ ô ð ð ð #+¨:Ô"6×"LÒ"LÑ"NÔ"N˜Ø×,Ò,Ø"Ø&Ý!œM×1Ò1°'Ñ:Ô:ñô ð ð	ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øõ �uÔ*Ñ+Ô+¨qÒ0Ð0õ ”MÔ,×6Ò6°{ÑCÔCÐCà$)Ô$7ð !ñ !�LÝ%Ð&>Ñ?Ô?ð Tð TÝ'8¸Ô9RÑ'SÔ'S˜ðTð Tð Tñ Tô Tð Tð Tð Tð Tð Tð Tøøøð Tð Tð Tð Tå+.¬;°uÔ7JÔ+KÔ+TÐ(ð
 (Ô4ÔZð[Ð)ðTð ):Ð(9Ð:NÑ(OÔ(O˜Ø,Ð0DÐDÐDà 4Ð5FÔ GØ'4ð!5ð !5õ '5Ø$[ÐGXÐ$[Ð$[Ð$[ñ'"ô '"ð !"ð!5ð GTÐ0Ð1BÑCÝ% lµE´MÔ4HÔ4TÑUÔUð Ý,ØM½¸lÑ9KÔ9KÐMÐMñô ð õ &Ð&?Ñ@Ô@ð ð Ý(:Ø(¨+Ð7Kñ)ô )˜ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð +Ð*Ø#Ø%Ý&×5Ò5°lÔ6NÑOÔOñô ð ñ ð;!ðy]ð ]ð ]ñ ]ô ]ð ]ð ]ð ]ð ]ð ]ð ]øøøð ]ð ]ð ]ð ]ùðc	ð c	sˆ   Á+EO%Æ<1O%Ç-AI	È<O%ÉIÉO%ÉIÉAO%Ê)K
	Ê>O%Ë
KËO%ËKËB1O%ÎN!	ÎO%Î!N%Î%O%Î(N%Î)/O%Ï%O)	Ï,O)	c                 ó  — |                       ¦   «          | j        €t          d¦  «        ‚t          t	          | j                             ¦   «         ¦  «        | j        | j        | j        j	        | j        j
        j        ¬¦  «        S )Nz'_innermost_fn is not set in cache_entry)rÿ   r   rö   r  r  )rk  r`  r’   rþ   r¦   ra  rS   rf  rd  rV   rÊ   r7   r	  s    r"   r$  zCompilePackage.cache_entryÅ  sx   € Ø�Š‰ŒˆØÔÐ%Ý Ð!JÑKÔKÐKÝ Ý�t”{×)Ò)Ñ+Ô+Ñ,Ô,ØÔ)ØÔ)ØÔ&Ô3Ø Ô.Ô7ÔFð
ñ 
ô 
ð 	
r$   c                 óF  — ddl m}  || ¦  «        }t          j        ¦   «         }|                     |j                             ¦   «         ¦  «         |                     t          |j        j	        ¦  «                             ¦   «         ¦  «         | 
                    ¦   «         S )Nr   rq  )rs  rr  r:  r;  r<  rV   r=  rZ   rÊ   r7   r>  )r   rr  Úinnermost_fn_r?  s       r"   r~  z CompilePackage.source_id_from_fnÑ  s“   € à,Ð,Ð,Ð,Ð,Ð,à$˜ RÑ(Ô(ˆå”nÑ&Ô&ˆØ×Ò˜=Ô5×<Ò<Ñ>Ô>Ñ?Ô?Ð?Ø×Ò�3˜}Ô5ÔDÑEÔE×LÒLÑNÔNÑOÔOÐOØ×$Ò$Ñ&Ô&Ð&r$   )NF)NNFr  r   )0rT   rU   rV   r`   r   r   rþ   r¨   rl  rn  ri  r&   r'   rZ   ry   rv  r  r§   rx   r|  Ú	functoolsÚcached_propertyr  r�  rX  rY  r   rƒ  rY   r†  r¦   r‰  rr   ÚfxÚGraphrŒ  rŽ  r�  r”  rš  rk  Ú
ModuleTyper   rj  rÀ  r$  r  r~  r@   r$   r"   r\  r\  Z  s0  € € € € € ð
ð 
ð ,0Ø',ð	ð à�S˜#�XÔ Ñ%ðð " DÑ(ðð !%ð	ð
 
ðð ð ð ð0! ð !ð !ð !ð !ð ,0Ø',ð	%!ð %!àð%!ð " DÑ(ð%!ð !%ð	%!ð
 
ð%!ð %!ð %!ð %!ðV -1Ø"&Ø"'ð$6ð $6à”^ð$6ð ð$6ð # TÑ)ð	$6ð
 ˜4‘Zð$6ð  ð$6ð 
ð$6ð $6ð $6ð $6ðL ð%  j°# oÔ!6ð %ð %ð %ñ „Xð%ð ÔðD˜3ð Dð Dð Dñ ÔðDð


 u¤~ð 

¸$ð 

ð 

ð 

ð 

ð Ôð' ¤ð '°IÐ>NÔ4Oð 'ð 'ð 'ñ Ôð'ð"EàðEð ”^ðEð 
ð	Eð Eð Eð Eð-¨$¨u¬~Ô*>ð -À4ð -ð -ð -ð -ð6¨¬¬¸Ñ(=ð 6À$ð 6ð 6ð 6ð 6ð,ð ,ð ,ð ,ð
,à”^ð,ð ð,ð ð	,ð
 
ð,ð ,ð ,ð ,ð@ sð @¸ð @Àð @ð @ð @ð @ð

8ð 
8¨ð 
8°s¸T±zð 
8ÈTð 
8ð 
8ð 
8ð 
8ð
ð 
ð 
ð 
ðD eÔ&6ð D¸cð DÈ#ð DÐRVð Dð Dð Dð Dð?ð ?ð ?ð ?ðo  Z° _Ô 5ð o¸$ð oð oð oð oðb

Ð.ð 

ð 

ð 

ð 

ð ð'˜h s¨C xÔ0ð '°Sð 'ð 'ð 'ñ „\ð'ð 'ð 'r$   r\  c            
       ó  — e Zd ZdZdeddfd„Zdededdfd„Ze	j
        dd	„¦   «         Ze	j
        d
ededdfd„¦   «         Zd
ededdfd„Zdededdfd„Ze	j
        dedefd„¦   «         Zdedefd„Zdededeeeeef         f         fd„ZdS )ÚDynamoStorez²
    A DynamoStore tracks active CompilePackages, and provides methods to store and retrieve them.

    This is an abstract base class for different storage implementations.
    Úpackager   Nc                 ór   — ddl m} |                     ¦   «         }|                     ||j        ¬¦  «         dS )z]
        Records a package to PrecompileContext, so that it can be serialized later.
        r   )ÚPrecompileContext)r$  rD   N)Ú torch._dynamo.precompile_contextrÍ  r$  Úrecord_dynamo_cache_entryr  )r•   rË  rÍ  r$  s       r"   Úrecord_packagezDynamoStore.record_packageç  sW   € ð 	GÐFÐFÐFÐFÐFà×)Ò)Ñ+Ô+ˆØ×3Ò3Ø#¨Ô):ð 	4ñ 	
ô 	
ð 	
ð 	
ð 	
r$   r  r•  c                 óZ   — ddl m}m}  |||¬¦  «        }|                     |¦  «         dS )zT
        Records eager fx graphs to PrecompileContext for testing purposes.
        r   )ÚEagerCacheArtifactrÍ  )rD   r€   N)rÎ  rÒ  rÍ  Úrecord_artifact)r•   r  r•  rÒ  rÍ  Úresults         r"   Úrecord_eager_backendz DynamoStore.record_eager_backendò  s[   € ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð
 $Ð#¨
¸GÐDÑDÔDˆØ×)Ò)¨&Ñ1Ô1Ð1Ð1Ð1r$   c                 ó   — d S r   r@   r	  s    r"   ÚclearzDynamoStore.clearþ  s   € Ø ˜Sr$   r$  Úpathc                 ó   — dS )a  
        Abstract method to write dynamo cache entry and backends to storage.

        Args:
            dynamo: The dynamo cache entry to write
            backends: Dictionary of backend content to write
            path: Path or key to identify where to write the data
        Nr@   ©r•   r$  rØ  s      r"   ÚwritezDynamoStore.write  s	   € ð 	ˆr$   rD   c                 ó6  — ddl m}m} i }|j        D ]`}|                     |¦  «        }|€t          d|› d�¦  «        ‚t          ||¦  «        st          dt          |¦  «        › �¦  «        ‚|||<   Œat          ||¦  «        }|  
                    ||¦  «         dS )úY
        Saves a package to a given path. Grabs backends from PrecompileContext.
        r   ©ÚBackendCacheArtifactrÍ  Nr±  r²  ú#Expected BackendCacheArtifact, got )rÎ  rß  rÍ  r¡   Úserialize_artifact_by_keyrû   rG   r’   r%   r!  rÛ  )	r•   r$  rD   rß  rÍ  r7  r  Úserialized_backendr©   s	            r"   Úsave_cache_entryzDynamoStore.save_cache_entry  sñ   € ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð
 &(ˆØ%Ô1ð 
	=ð 
	=ˆJØ!2×!LÒ!LÈZÑ!XÔ!XÐØ!Ð)Ý"ØN˜zÐNÐNÐNñô ð õ Ð0Ð2FÑGÔGð Ý$ØT½$Ð?QÑ:RÔ:RÐTÐTñô ð ð +=ˆO˜JÑ'Ð'å$ [°/ÑBÔBˆà�
Š
�5˜#ÑÔÐÐÐr$   c                 ó„   — |                       |¦  «         |                     ¦   «         }|                      ||¦  «         dS )rÝ  N)rÐ  r$  rã  )r•   rË  rD   r$  s       r"   Úsave_packagezDynamoStore.save_package+  sE   € ð 	×Ò˜GÑ$Ô$Ð$Ø×)Ò)Ñ+Ô+ˆØ×Ò˜k¨3Ñ/Ô/Ð/Ð/Ð/r$   c                 ó   — dS )a  
        Abstract method to read dynamo cache entry and backends from storage.

        Args:
            path: Path or key to identify where to read the data from

        Returns:
            A tuple containing (dynamo_cache_entry, backend_content)
        Nr@   ©r•   rØ  s     r"   ÚreadzDynamoStore.read3  s	   € ð 	ˆr$   c                 ó   — ddl m}m} |                      |¦  «        }|j                             ¦   «         D ]F}t          ||¦  «        st          dt          |¦  «        › �¦  «        ‚| 	                    |¦  «         ŒG|S )Nr   rÞ  rà  )
rÎ  rß  rÍ  rè  r#  rS   rG   r’   r%   rÓ  )r•   rD   rß  rÍ  Úprecompile_entryr•  s         r"   Úload_cache_entryzDynamoStore.load_cache_entry@  s¯   € ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð
  Ÿ9š9 S™>œ>ÐØ'Ô0×7Ò7Ñ9Ô9ð 	7ð 	7ˆGÝ˜gÐ';Ñ<Ô<ð Ý$ØI½$¸w¹-¼-ÐIÐIñô ð ð ×-Ò-¨gÑ6Ô6Ð6Ð6àÐr$   r   c                 óh   — |                       |¦  «        }t          ||j        ¦  «        }||j        fS )úg
        Loads a package from a given path and returns it plus a list of deserialized backends
        )rë  r\  r"  r#  )r•   r   rD   r©   rË  s        r"   Úload_packagezDynamoStore.load_packageP  s5   € ð ×%Ò% cÑ*Ô*ˆÝ   U¤\Ñ2Ô2ˆØ˜œÐ&Ð&r$   r  )rT   rU   rV   r`   r\  rÐ  rx   r   rÕ  ÚabcÚabstractmethodr×  r!  rZ   rÛ  rþ   rã  rå  rè  rë  rL   r§   rî  r@   r$   r"   rÊ  rÊ  à  s«  € € € € € ðð ð	
 nð 	
¸ð 	
ð 	
ð 	
ð 	
ð
2¨zð 
2ÀCð 
2ÈDð 
2ð 
2ð 
2ð 
2ð 	ÔØ Ð Ð ñ ÔØ àÔðà)ðð ðð 
ð	ð ð ñ ÔððÐ,=ð ÀCð ÈDð ð ð ð ð40 Nð 0¸ð 0Àð 0ð 0ð 0ð 0ð 	Ôð
˜ð 
Ð!5ð 
ð 
ð 
ñ Ôð
ð  Cð  Ð,@ð  ð  ð  ð  ð 'Øð'Øð'à	ˆ~˜t J° OÔ4Ð4Ô	5ð'ð 'ð 'ð 'ð 'ð 'r$   rÊ  c                   óF   — e Zd ZdZd
d„Zd
d„Zdededdfd„Zdedefd	„Z	dS )ÚInMemoryDynamoStorezX
    A DynamoStore implementation that keeps state about CompilePackages in memory.
    r   Nc                 ó   — i | _         d S r   ©Úpackagesr	  s    r"   rl  zInMemoryDynamoStore.__init__`  s   € Ø9;ˆŒˆˆr$   c                 ó8   — | j                              ¦   «          d S r   )rõ  r×  r	  s    r"   r×  zInMemoryDynamoStore.clearc  s   € ØŒ×ÒÑÔÐÐÐr$   r$  rØ  c                 ó   — || j         |<   dS )za
        Store the dynamo cache entry and backends in memory instead of writing to disk.
        Nrô  rÚ  s      r"   rÛ  zInMemoryDynamoStore.writef  s   € ð *ˆŒ�dÑÐÐr$   c                 óR   — || j         vrt          d|› �¦  «        ‚| j         |         S )zC
        Read dynamo cache entry and backends from memory.
        zNo package found with key )rõ  rû   rç  s     r"   rè  zInMemoryDynamoStore.readp  s5   € ð �t”}Ð$Ð$ÝÐB¸DÐBÐBÑCÔCÐCàŒ}˜TÔ"Ð"r$   r  )
rT   rU   rV   r`   rl  r×  r!  rZ   rÛ  rè  r@   r$   r"   rò  rò  [  s™   € € € € € ðð ð<ð <ð <ð <ðð ð ð ð*à)ð*ð ð*ð 
ð	*ð *ð *ð *ð#˜ð #Ð!5ð #ð #ð #ð #ð #ð #r$   rò  c                   óp   — e Zd ZdZddeddfd„Zdefd„Zdd„Zd	ed
eddfd„Z	de
d
eddfd„Zd
edefd„ZdS )ÚDiskDynamoStorezV
    A DynamoStore implementation that keeps state about CompilePackages on disk.
    r‰   Úpath_prefixr   Nc                 ó   — || _         dS )z¤
        Initialize a DiskDynamoStore with a path prefix.

        Args:
            path_prefix: Prefix directory for where to put CompilePackages on disk
        N©Ú_path_prefix)r•   rû  s     r"   rl  zDiskDynamoStore.__init__  s   € ð (ˆÔÐÐr$   c                 ó   — | j         S r   rý  r	  s    r"   rû  zDiskDynamoStore.path_prefixˆ  ro  r$   c                 ó‚   — |                       ¦   «         r*t          j        |                       ¦   «         d¬¦  «         dS dS )z6
        Clear all CompilePackages from disk.
        T)Úignore_errorsN)rû  ÚshutilÚrmtreer	  s    r"   r×  zDiskDynamoStore.clear‹  sL   € ð ×ÒÑÔð 	BÝŒM˜$×*Ò*Ñ,Ô,¸DÐAÑAÔAÐAÐAÐAð	Bð 	Br$   r$  rØ  c                 ó   — 	 t          j        |¦  «        }t          t                               ¦   «         |¦  «                             |¦  «         |                      ||¦  «         dS # t          $ r}t          d|› d|› �¦  «        |‚d}~ww xY w)z@
        Write dynamo cache entry and backends to disk.
        úFailed to save package to ú: N)	rh   r4  r  r  r%   Úrecordr  ró   rû   )r•   r$  rØ  Úpickled_contentÚes        r"   rÛ  zDiskDynamoStore.write’  s«   € ð	PÝ%+¤\°+Ñ%>Ô%>ˆOÝ!Õ"9×">Ò">Ñ"@Ô"@À$ÑGÔG×NÒNØñô ð ð ×&Ò& ¸Ñ=Ô=Ð=Ð=Ð=øÝð 	Pð 	Pð 	PÝÐG¸DÐGÐGÀAÐGÐGÑHÔHÈaÐOøøøøð	Pøøøs   ‚A$A( Á(
BÁ2BÂBr  c                 ót  — ddl m} |                      ¦   «         r2t          j                             |                      ¦   «         |¦  «        n|}	 t          j        |d¬¦  «          |t          j                             |d¦  «        |¦  «         d S # t          $ r}t          d|› d|› �¦  «        |‚d }~ww xY w)Nr   )Úwrite_atomicT)Úexist_okr©   r  r  )	Útorch._inductor.codecacher  rû  ÚosrØ  r�   Úmakedirsró   rû   )r•   r  rØ  r  r	  s        r"   r  z%DiskDynamoStore._write_to_local_cache£  sÓ   € Ø:Ð:Ð:Ð:Ð:Ð:à9=×9IÒ9IÑ9KÔ9KÐU�rŒw�|Š|˜D×,Ò,Ñ.Ô.°Ñ5Ô5Ð5ÐQUˆð	PÝŒK˜ tÐ,Ñ,Ô,Ð,ØˆL�œŸš d¨GÑ4Ô4°oÑFÔFÐFÐFÐFøÝð 	Pð 	Pð 	PÝÐG¸DÐGÐGÀAÐGÐGÑHÔHÈaÐOøøøøð	Pøøøs   ÁA B Â
B7ÂB2Â2B7c                 óÈ  — |                       ¦   «         r2t          j                             |                       ¦   «         |¦  «        n|}	 t	          t          j                             |d¦  «        d¦  «        5 }|                     ¦   «         }t          j        |¦  «        }|cddd¦  «         S # 1 swxY w Y   dS # t          $ r}t          d|› d|› �¦  «        |‚d}~ww xY w)zA
        Read dynamo cache entry and backends from disk.
        r©   ÚrbNz!Failed to load package from path r  )
rû  r  rØ  r�   Úopenrè  rh   ri   ró   rû   )r•   rØ  Úfr  r©   r	  s         r"   rè  zDiskDynamoStore.read­  s)  € ð :>×9IÒ9IÑ9KÔ9KÐU�rŒw�|Š|˜D×,Ò,Ñ.Ô.°Ñ5Ô5Ð5ÐQUˆð	WÝ•b”g—l’l 4¨Ñ1Ô1°4Ñ8Ô8ð ¸AØ"#§&¢&¡(¤(�Ýœ _Ñ5Ô5�Øðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð øõ ð 	Wð 	Wð 	WÝÐNÀ4ÐNÐNÈ1ÐNÐNÑOÔOÐUVÐVøøøøð	Wøøøs<   Á
.B< Á8*B/Â"B< Â/B3Â3B< Â6B3Â7B< Â<
C!ÃCÃC!)r‰   r  )rT   rU   rV   r`   rZ   rl  rû  r×  r!  rÛ  rY   r  rè  r@   r$   r"   rú  rú  z  s
  € € € € € ðð ð(ð ( Cð (°ð (ð (ð (ð (ð!˜Sð !ð !ð !ð !ðBð Bð Bð BðPà)ðPð ðPð 
ð	Pð Pð Pð Pð"P°Uð PÀ#ð PÈ$ð Pð Pð Pð PðW˜ð WÐ!5ð Wð Wð Wð Wð Wð Wr$   rú  c                   óˆ   ‡ — e Zd ZdZdeddfˆ fd„Zdedef         dedz  fˆ fd„Z	dedef         dedz  fd	„Z
defd
„Zˆ xZS )ÚDiskDynamoCachezs
    Special DiskDynamoStore which adds some helper functions for automatically
    tracking paths of packages
    rË  r   Nc                 óš   •— |j         }t                               d|j         ¦  «         t          ¦   «                              ||¦  «         dS )rÝ  zSaving CompilePackage for %sN)r  r2  ÚinfoÚsuperrå  )r•   rË  rD   Ú	__class__s      €r"   ÚsavezDiskDynamoCache.saveÁ  sE   ø€ ð ÔˆÝ�ŠÐ2°GÔ4EÑFÔFÐFÝ‰Œ×Ò˜W cÑ*Ô*Ð*Ð*Ð*r$   r   .c                 óŽ  •— t                                |¦  «        }t                               d|¦  «         t          j                             |                      ¦   «         |¦  «        }t          j                             |¦  «        r‡	 t          ¦   «          
                    |¦  «        }t          d         dxx         dz  cc<   |S # t          $ r; t          d         dxx         dz  cc<   t                               dd¬¦  «         Y d	S w xY wt                               d
|¦  «         t          d         dxx         dz  cc<   d	S )rí  zLoading CompilePackage for %sÚdynamo_cacheÚdynamo_cache_hitr   Údynamo_cache_errorz#Failed to load package from path %sT)Úexc_infoNzNo package found for %sÚdynamo_cache_miss)r\  r~  r2  r  r  rØ  r�   rû  Úexistsr  rë  r   ró   r3  )r•   r   rD   rØ  rÔ  r  s        €r"   ÚloadzDiskDynamoCache.loadÉ  s@  ø€ õ ×.Ò.¨rÑ2Ô2ˆÝ�ŠÐ3°SÑ9Ô9Ð9ÝŒw�|Š|˜D×,Ò,Ñ.Ô.°Ñ4Ô4ˆÝŒ7�>Š>˜$ÑÔð 	ðÝ™œ×1Ò1°#Ñ6Ô6�Ý˜Ô(Ð);Ð<Ð<Ô<ÀÑAÐ<Ð<Ñ<Ø�øÝð ð ð Ý˜Ô(Ð)=Ð>Ð>Ô>À!ÑCÐ>Ð>Ñ>Ý—’ÐDÈt�ÑTÔTÐTØ�t�tðøøøõ 	�ŠÐ-¨sÑ3Ô3Ð3Ý�Ô Ð!4Ð5Ð5Ô5¸Ñ:Ð5Ð5Ñ5Øˆts   Â	=C ÃADÄDc                 ó–   — |                       |¦  «        }|€dS t          ||j        ¦  «        }|                     |j        ¦  «         |S )zC
        Load directly into a package and install backends
        N)r"  r\  r"  rÀ  r#  )r•   r   ÚresultsrË  s       r"   Úload_and_install_packagez(DiskDynamoCache.load_and_install_packageÝ  sH   € ð —)’)˜B‘-”-ˆØˆ?Ø�4å$ R¨¬Ñ8Ô8ˆGØ�OŠO˜GÔ,Ñ-Ô-Ð-ØˆNr$   c                 óZ   — t           j                             t          ¦   «         d¦  «        S )Nr"  )r  rØ  r�   Ú	cache_dirr	  s    r"   rû  zDiskDynamoCache.path_prefixé  s   € ÝŒw�|Š|�I™KœK¨Ñ2Ô2Ð2r$   )rT   rU   rV   r`   r\  r  r   r   r!  r"  r%  rZ   rû  Ú__classcell__)r  s   @r"   r  r  »  sÜ   ø€ € € € € ðð ð
+˜Nð +¨tð +ð +ð +ð +ð +ð +ð�x  S Ô)ð Ð.BÀTÑ.Ið ð ð ð ð ð ð(
¨8°C¸°HÔ+=ð 
À.ÐSWÑBWð 
ð 
ð 
ð 
ð3˜Sð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3r$   r  c                  ó"   — ddl m}   | ¦   «         S )Nr   ©r'  )Ú'torch._inductor.runtime.cache_dir_utilsr'  r*  s    r"   r'  r'  í  s    € ØAÐAÐAÐAÐAÐAàˆ9‰;Œ;Ðr$   r"  )dr`   rï  r´   rX  r  rÄ  r:  rt  r‚   rÒ   r*  Úloggingr  rh   rô   r  r¯   r&   Úcollections.abcr   r   r   r   Útypingr   r   r	   r
   r   Útyping_extensionsr   rr   Útorch._dynamo.excr   Útorch._dynamo.graph_utilsr   Útorch.utils.weakr   Úbytecode_transformationr   rR  r   r   r   Ú	getLoggerrT   r2  rt   r   r   r    r(   Ú	dataclassr   r]   rY   rk   r'   rw   rZ   rx   ry   r{   ÚcacherÈ  r„   r†   r›   rº   r½   rL   rá   rã   rþ   Útorch.compiler._cacher  r  r  Úregisterr  r!  r”   rW   r¦   r‘   rD  ÚAbstractContextManagerrZ  r\  r§   Ú	_BackendsÚABCrÊ  rò  rú  r  r'  rØ  r�   r  r@   r$   r"   ú<module>r<     sÀ  ððð ð €
€
€
Ø 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø 
€
€
€
Ø €€€Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø "Ð "Ð "Ð "Ð "Ð "Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø #Ð #Ð #Ð #Ð #Ð #à €€€Ø *Ð *Ð *Ð *Ð *Ð *Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :ð 
ˆÔ	˜8Ñ	$Ô	$€ð ð 9Ø8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ð "Ð!Ñ#Ô#€ð
�H˜S #˜XÔ&ð 
¨8°C¸°HÔ+=ð 
ð 
ð 
ð 
ð €Ô˜dÐ#Ñ#Ô#ð)
ð )
ð )
ð )
ð )
ñ )
ô )
ñ $Ô#ð)
ðX Ôð	 ð 	 ð 	 ð 	 ð 	 ñ 	 ô 	 ñ Ôð	 ð* Eð *¨cð *ð *ð *ð *ðØðà”ðð ðð ð	ð ð ð ð ˆW�\ 3Ñ'Ô'€
Øˆg�m SÑ)Ô)€ð €Ô˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð „ð% Ô 0ð %°Sð %ð %ð %ñ „ð%ð Ôð
ð 
ð 
ð 
ð 
ñ 
ô 
ñ Ôð
ð4 Ôðð ð ð ð ñ ô ñ ÔððB"Ð-ð "°%´.ð "ð "ð "ð "ðJ %¤.ð ¸ð Àð ð ð ð ðf9˜5œ>ð f9¨e°C¸°H¬oð f9ð f9ð f9ð f9ðR €Ô˜dÐ#Ñ#Ô#ðMð Mð Mð Mð Mñ Mô Mñ $Ô#ðMð` Ôð
ð 
ð 
ð 
ð 
ñ 
ô 
ñ Ôð
ð:ð ð ð ð ð ð ð ð ð ð Ôðð ð ð ð ˜mñ ô ñ Ôðð Ôð)Rð )Rð )Rð )Rð )Rñ )Rô )Rñ Ôð)RðX#˜ð # ð #ð #ð #ð #ðJØÔðJØ&)ðJØ7:ðJà	ˆ#„YðJð Jð Jð JðO˜Ô)ð O¸ð OÈð OÐQTð Oð Oð Oð Oð"Ø
Œ.ð"àÔ& tÔ,ð"ð "ð "ð "ðJ@'ð @'ð @'ð @'ð @'ñ @'ô @'ð @'ðF �˜S�Ô!€	ðx'ð x'ð x'ð x'ð x'�#”'ñ x'ô x'ð x'ðv#ð #ð #ð #ð #˜+ñ #ô #ð #ð>>Wð >Wð >Wð >Wð >W�kñ >Wô >Wð >WðB/3ð /3ð /3ð /3ð /3�oñ /3ô /3ð /3ðd�3ð ð ð ð ð ˆo˜bœgŸlšl¨9¨9©;¬;¸ÑAÔAÑBÔB€€€r$   