Ë
    g^(h§  ã                   ó<  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZ d dl	m
Z
mZ d dlmZ d dlmZmZmZ d dlmZ  ej(                  e«      Z G d„ d	e«      Z ej0                  d
¬«       G d„ d«      «       Zej0                   G d„ d«      «       Z G d„ d«      Zy)é    N)ÚEnum)ÚOptionalÚUnion)Ú
JsonDataTyÚRemoteCacheJsonSerde)Ú	cache_dir)ÚAppendingByteSerializerÚBytesReaderÚBytesWriter)Ú
OrderedSetc                   ó    — e Zd ZdZdZdZdZdZy)ÚCacheArtifactTypez
    Type of cache
    r   é   é   é   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚINDUCTORÚAUTOTUNEÚAOT_AUTOGRADÚPGO© ó    úS/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/compiler/_cache.pyr   r      s   „ ñð €HØ€HØ€LØ
�Cr   r   T)Úfrozenc                   óŽ   — e Zd ZU dZeed<   eed<    ej                  d¬«      Z	e
ed<   ededd d	d
fd„«       Zeded	d fd„«       Zy
)ÚCacheArtifactzO
    Data for each cache artifact that will be serialized and deserialized
    ÚtypeÚkeyF)ÚreprÚcontentÚwriterÚclsÚreturnNc                 óº   — | j                  |j                  j                  «       | j                  |j                  «       | j                  |j                  «       y ©N)Úwrite_uint64r    ÚvalueÚ	write_strr!   Úwrite_bytesr#   )r$   r%   s     r   Ú	serializezCacheArtifact.serialize*   s<   € à×Ñ˜CŸH™HŸN™NÔ+Ø×Ñ˜Ÿ™Ô!Ø×Ñ˜3Ÿ;™;Õ'r   Úreaderc                 óŽ   — | j                  «       }| j                  «       }| j                  «       }t        t	        |«      ||«      S r(   )Úread_uint64Úread_strÚ
read_bytesr   r   )r.   r    r!   r#   s       r   ÚdeserializezCacheArtifact.deserialize0   s?   € à×!Ñ!Ó#ˆØ�o‰oÓˆØ×#Ñ#Ó%ˆÜÔ.¨tÓ4°c¸7ÓCÐCr   )r   r   r   r   r   Ú__annotations__ÚstrÚdataclassesÚfieldr#   ÚbytesÚstaticmethodr   r-   r
   r3   r   r   r   r   r       sx   … ñð ÓØ	ƒHØ&�[×&Ñ&¨EÔ2€GˆUÓ2àð(˜+ð (¨Oð (Àò (ó ð(ð
 ðD˜Kð D¨Oò Dó ñDr   r   c                   ó  — e Zd ZU dZ ej
                  e¬«      Zee   e	d<    ej
                  e¬«      Z
ee   e	d<    ej
                  e¬«      Zee   e	d<    ej
                  e¬«      Zee   e	d<   dedd	fd
„Zdd„Zy	)Ú	CacheInfozb
    Return value of serialization and deserialization for the purpose of
    instrumentation
    )Údefault_factoryÚinductor_artifactsÚautotune_artifactsÚaot_autograd_artifactsÚpgo_artifactsÚartifactr&   Nc                 ó`  — |j                   t        j                  k(  r&| j                  j	                  |j
                  «       y |j                   t        j                  k(  r&| j                  j	                  |j
                  «       y |j                   t        j                  k(  r&| j                  j	                  |j
                  «       y |j                   t        j                  k(  r&| j                  j	                  |j
                  «       y t        j                  d|j                   › �«       y )NúUnsupported artifact type )r    r   r   r=   Úappendr!   r   r>   r   r?   r   r@   ÚlogÚwarning)ÚselfrA   s     r   ÚaddzCacheInfo.addD   sÆ   € Ø�=‰=Ô-×6Ñ6Ò6Ø×#Ñ#×*Ñ*¨8¯<©<Õ8Ø�]‰]Ô/×8Ñ8Ò8Ø×#Ñ#×*Ñ*¨8¯<©<Õ8Ø�]‰]Ô/×<Ñ<Ò<Ø×'Ñ'×.Ñ.¨x¯|©|Õ<Ø�]‰]Ô/×3Ñ3Ò3Ø×Ñ×%Ñ% h§l¡lÕ3ä�K‰KÐ4°X·]±]°OÐDÕEr   c                 óÔ   — | j                   j                  «        | j                  j                  «        | j                  j                  «        | j                  j                  «        y r(   )r=   Úclearr>   r?   r@   )rG   s    r   rJ   zCacheInfo.clearP   sJ   € Ø×Ñ×%Ñ%Ô'Ø×Ñ×%Ñ%Ô'Ø×#Ñ#×)Ñ)Ô+Ø×Ñ× Ñ Õ"r   ©r&   N)r   r   r   r   r6   r7   Úlistr=   r5   r4   r>   r?   r@   r   rH   rJ   r   r   r   r;   r;   8   s“   … ñð
 %6 K×$5Ñ$5ÀdÔ$KÐ˜˜S™	ÓKØ$5 K×$5Ñ$5ÀdÔ$KÐ˜˜S™	ÓKØ(9¨×(9Ñ(9È$Ô(OÐ˜D ™IÓOØ0˜{×0Ñ0ÀÔF€M�4˜‘9ÓFð
F˜Mð 
F¨dó 
Fô#r   r;   c            	       ó,  — e Zd ZU dZg Zee   ed<    e«       Z	ee   ed<    e
ej                  ¬«      Ze
e   ed<    e«       Zeed<   edd	„«       Zed
ededeeef   ddfd„«       Zedefd„«       Zedeeeef      fd„«       Zededee   fd„«       Zy)ÚCacheArtifactManageraQ  
    Lightweight manager class for collecting and processing cache artifacts for
    hot loading

    Intended Lifecycle:
    - Execute code via torch.compile, this will call
        CacheArtifactManager.record_artifact on each cache artifact
    - Call CacheArtifactManager.serialize to convert all the cache artifacts
        to portable format
    - Call CacheArtifactManager.deserialize to hot load the cache artifacts on
        a potentially different process

    NOTE: There's no FB/FC guarentees, results of cache artifacts will not be
          used unless code version matches.
    Ú_new_cache_artifactsÚ_seen_artifacts)Úserialize_fnÚ_serializerÚ_cache_infor&   Nc                 óÔ   — | j                   j                  «        | j                  j                  «        | j                  j                  «        | j                  j                  «        y r(   )rO   rJ   rP   rR   rS   ©r%   s    r   rJ   zCacheArtifactManager.clearu   sF   € à× Ñ ×&Ñ&Ô(Ø×Ñ×!Ñ!Ô#Ø�‰×ÑÔØ�‰×ÑÕr   Úartifact_typer!   r#   c                 óŠ  — |t         j                  k(  r-t        |t        «      rJ ‚t	        «       }|j                  |«      }t        |t        «      sJ ‚t        |||«      }|| j                  v ryt        j                  dt        |«      «       | j                  j                  |«       | j                  j                  |«       y)zg
        Called from each caching operation to record the artifact in this
        "mega" list
        NzRecording %s)r   r   Ú
isinstancer8   r   Úencoder   rP   rE   Údebugr5   rO   rD   rH   )r%   rV   r!   r#   ÚserderA   s         r   Úrecord_artifactz$CacheArtifactManager.record_artifact|   s¢   € ð Ô-×6Ñ6Ò6Ü! '¬5Ô1Ð1Ð1Ü(Ó*ˆEØ—l‘l 7Ó+ˆGÜ˜'¤5Ô)Ð)Ð)Ü  °°WÓ=ˆØ�s×*Ñ*Ñ*ØÜ�	‰	�.¤# h£-Ô0Ø× Ñ ×'Ñ'¨Ô1Ø×Ñ×Ñ Õ)r   c                 ó2   — t        | j                  «      dk7  S )zG
        Have we seen new artifacts since last serialize call?
        r   )ÚlenrO   rU   s    r   Úneed_serializez#CacheArtifactManager.need_serialize“   s   € ô
 �3×+Ñ+Ó,°Ñ1Ð1r   c                 óÌ  — | j                   D ]3  }t        j                  d|«       | j                  j	                  |«       Œ5 	 t        j                  | j                  «      }| j                  j                  | j                   «       | j                  j                  «       }| j                   j                  «        ||fS # t        $ r t        j                  dd¬«       Y yw xY w)z?
        Converts the "mega" list into portable format
        z
saving: %sz Failed to pickle cache artifactsT©Úexc_infoN)rO   rE   rZ   rS   rH   ÚcopyÚdeepcopyrR   ÚextendÚto_bytesrJ   Ú	ExceptionrF   )r%   rA   ÚinfoÚartifact_bytess       r   r-   zCacheArtifactManager.serializeš   s¿   € ð
 ×0Ñ0ò 	*ˆHÜ�I‰I�l HÔ-Ø�O‰O×Ñ Õ)ð	*ð		Kô —=‘= §¡Ó1ˆDØ�O‰O×"Ñ" 3×#;Ñ#;Ô<Ø Ÿ_™_×5Ñ5Ó7ˆNØ×$Ñ$×*Ñ*Ô,Ø! 4Ð'Ð'øÜò 	KÜ�K‰KÐ:ÀTˆKÕJØð	Kús   ÁA;C  Ã  C#Ã"C#Úserialized_artifactsc                 óþ  — 	 t        j                  | t        j                  ¬«      }ddlm} ddl	m
} dd	lm} dd
lm}  |«       }t        «       }|D �]�  }t
        j!                  d|«       |j#                  |«       |j$                  t&        j(                  k(  r'|j+                  |j,                  |j.                  «       Œo|j$                  t&        j0                  k(  rOt2        j4                  j7                  t9        «       |j,                  «      }	|j;                  |	|j.                  «       ŒÛ|j$                  t&        j<                  k(  r(|j+                  |j,                  |j.                  «       �Œ |j$                  t&        j>                  k(  r# ||j,                  |j.                  «      }
|
��Œ^J ‚t
        j                  d|j$                  › �«       �Œ„ |S # t        $ r t
        j                  dd¬«       Y yw xY w)zR
        Converts the portable format back into various filesystem caches
        )Údeserialize_fnz#Failed to un-pickle cache artifactsTra   Nr   )Úwrite_local_impl)ÚAOTAutogradCache)ÚFxGraphCache)Ú_LocalAutotuneCacheBackendzwriting: %srC   ) r	   Úto_listr   r3   rg   rE   rF   Útorch._dynamo.pgorm   Ú-torch._functorch._aot_autograd.autograd_cachern   Útorch._inductor.codecachero   Ú&torch._inductor.runtime.autotune_cacherp   r;   rZ   rH   r    r   r   Ú_write_to_local_cacher!   r#   r   ÚosÚpathÚjoinr   Ú_putr   r   )rj   Ú	artifactsrm   rn   ro   rp   Úautotune_cacherh   rA   r!   Úmetas              r   r3   z CacheArtifactManager.deserialize®   s€  € ð
	Ü/×7Ñ7Ø$´]×5NÑ5NôˆIõ 	7ÝRÝ:ÝUá3Ó5ˆä‹{ˆØ!ó 	JˆHÜ�I‰I�m XÔ.Ø�H‰H�XÔà�}‰}Ô 1× :Ñ :Ò:Ø×2Ñ2°8·<±<À×AQÑAQÕRØ—‘Ô"3×"<Ñ"<Ò<Ü—g‘g—l‘l¤9£;°·±Ó=�Ø×#Ñ# C¨×)9Ñ)9Õ:Ø—‘Ô"3×"@Ñ"@Ò@Ø ×6Ñ6°x·|±|ÀX×EUÑEUÖVØ—‘Ô"3×"7Ñ"7Ò7Ù'¨¯©°h×6FÑ6FÓG�ØÒ'Ð'Ð'ä—‘Ð8¸¿¹¸ÐHÖIð	Jð  ˆøô9 ò 	Ü�K‰KÐ=ÈˆKÔMÙð	ús   ‚%G Ç G<Ç;G<rK   )r   r   r   r   rO   rL   r   r4   r   rP   r	   r-   rR   r;   rS   ÚclassmethodrJ   r   r5   r   r8   r   r\   Úboolr_   r   Útupler9   r3   r   r   r   rN   rN   W   s  … ñð" 13Ð˜$˜}Ñ-Ó2ñ 2<³€O�Z Ñ.Ó=ñ ;RØ"×,Ñ,ô;€KÐ(¨Ñ7ó ñ '›[€K�Ó(àò ó ð ð ð*à(ð*ð ð*ð �u˜jÐ(Ñ)ð	*ð
 
ò*ó ð*ð, ð2˜tò 2ó ð2ð ð˜( 5¨°	Ð)9Ñ#:Ñ;ò ó ðð& ð$¨%ð $°H¸YÑ4Gò $ó ñ$r   rN   )rc   r6   Úloggingrw   Úenumr   Útypingr   r   Útorch._inductor.remote_cacher   r   Ú%torch._inductor.runtime.runtime_utilsr   Ú&torch.utils._appending_byte_serializerr	   r
   r   Útorch.utils._ordered_setr   Ú	getLoggerr   rE   r   Ú	dataclassr   r;   rN   r   r   r   ú<module>rŠ      s    ðÛ Û Û Û 	Ý ß "ç IÝ ;÷ñ õ
 0ð €g×Ñ˜Ó!€ô˜ô ð €×Ñ˜dÔ#÷Dð Dó $ðDð. ×Ñ÷#ð #ó ð#÷<|ò |r   