
    3j3              	         % 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Jr  S SK
JrJrJrJrJr  S SKJr  S SKJr  S SKJr  S SKJr  \
R4                  (       a  S S	KJr   S SKr\R>                  " \ 5      r!\RD                  " 5       (       a  S S
K#J$r%  \%r$S\&S'   O
\'\(   r$S\&S'   \" S5      r)\" S5      r*\RV                  " \SSSSSS9r,\RV                  " \SSSSSS9r- " S S\\)   5      r. " S S\\)\*4   5      r/\\0\1\2\3\4\2S4   \5S   S4   r6S\&S'    " S S\/\6\74   5      r8 " S S \/\)\)4   5      r9 " S! S"\\)   5      r: " S# S$\.\7   5      r; " S% S&\:\6   5      r< " S' S(\<5      r= " S) S*\<5      r> " S+ S,\<5      r? " S- S.\<5      r@ " S/ S0\<5      rA          S7S1 jrB\R                   " S2 S35      5       rD " S4 S55      rE\E" 5       rF\R                  S8S6 j5       rHg! \ a    Sr GNf = f)9    )annotationsN)abstractmethod)AnyGeneric	TypeAliasTypeVarUnion)override)dynamo_timed)config)_WaitCounter)Callable)Sampler   r   _T_UzFbRemoteFxGraphCache.getremote_fx_graph_cache_getF!remote_fx_graph_cache_get_time_usT)
phase_namelog_pt2_compile_eventdynamo_compile_column_uslog_waitcounterzFbRemoteFxGraphCache.putremote_fx_graph_cache_put!remote_fx_graph_cache_put_time_usc                  ^    \ rS rSrSrS
S jr\SS j5       r\SS j5       rSS jr	SS jr
Srg	)RemoteCacheBackendB   z
A backend implementation for accessing a remote/distributed cache.  Only
works with bytes in/out.  For structured data use a RemoteCache.
c                >    S[        U 5      R                   3U l        g )Nzbackend:)type__name___nameselfs    V/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/_inductor/remote_cache.py__init__RemoteCacheBackend.__init__H   s    T
 3 345
    c                    g N r"   keys     r#   _getRemoteCacheBackend._getK       r&   c                    g r(   r)   r"   r+   datas      r#   _putRemoteCacheBackend._putO   r.   r&   c                     U R                  U5      n[        R                  U R                  U5        U$ ! [         a!    [        R                  U R                  5        e f = fr(   )r,   cache_statsgetr    	Exception	exceptionr"   r+   values      r#   r6   RemoteCacheBackend.getS   sS    	IIcNEOODJJ.   	!!$**-	s	   15 +A c                     U R                  X5        [        R                  U R                  5        g ! [         a!    [        R                  U R                  5        e f = fr(   )r2   r5   putr    r7   r8   r0   s      r#   r=   RemoteCacheBackend.put\   sG    	IIc OODJJ' 	!!$**-	s	   03 +A)r    NreturnNoner+   strr@   	_T | None)r+   rC   r1   r   r@   rA   )r   
__module____qualname____firstlineno____doc__r$   r   r,   r2   r6   r=   __static_attributes__r)   r&   r#   r   r   B   s>    
6    r&   r   c                  <    \ rS rSr\SS j5       r\SS j5       rSrg)RemoteCacheSerdef   c                    g r(   r)   r"   r1   s     r#   encodeRemoteCacheSerde.encodeg   r.   r&   c                    g r(   r)   rN   s     r#   decodeRemoteCacheSerde.decodek   r.   r&   r)   N)r1   r   r@   r   )r1   r   r@   r   )r   rE   rF   rG   r   rO   rR   rI   r)   r&   r#   rK   rK   f   s(       r&   rK   
JsonDataTyc                  (    \ rS rSrSS jrSS jrSrg)RemoteCacheJsonSerdeu   c                B    [        [        R                  " U5      S5      $ )Nascii)bytesjsondumpsrN   s     r#   rO   RemoteCacheJsonSerde.encodev   s    TZZ%w//r&   c                .    [         R                  " U5      $ r(   )r[   loadsrN   s     r#   rR   RemoteCacheJsonSerde.decodey   s    zz$r&   r)   N)r1   rT   r@   rZ   )r1   rZ   r@   rT   r   rE   rF   rG   rO   rR   rI   r)   r&   r#   rV   rV   u   s    0 r&   rV   c                  (    \ rS rSrSS jrSS jrSrg)RemoteCachePassthroughSerde}   c                    U$ r(   r)   rN   s     r#   rO   "RemoteCachePassthroughSerde.encode~       r&   c                    U$ r(   r)   rN   s     r#   rR   "RemoteCachePassthroughSerde.decode   rg   r&   r)   N)r1   r   r@   r   ra   r)   r&   r#   rc   rc   }   s    r&   rc   c                      \ rS rSr% SrS\S'         SS jrSS jrSS jrSS jr	SS	 jr
SS
 jrSS jrSS jrSS jrSS jrSS jrSrg)RemoteCache   Nz,Callable[[], RemoteCacheBackend[Any]] | Nonebackend_override_clsc                h    U R                   R                  =nb  U" 5       U l        OXl        X l        g r(   )	__class__rm   backendserde)r"   rp   rq   override_clss       r#   r$   RemoteCache.__init__   s,     !NN???LL'>DL"L
r&   c                   [        S5      R                  5          U R                  5       n U R                  X5      n[        R                  [        U 5      R                  U5         U R                  U5        UsS S S 5        $ ! [         aE  n[        R                  [        U 5      R                  5        U(       a  [        U5      Ul        e S nAff = f! U R                  U5        f = f! , (       d  f       g = f)Nzpytorch.remote_cache.get)r   guard_create_sampler,   r5   r6   r   r   r7   r8   rC   fail_reason_log_sample)r"   r+   sampleresultes        r#   r6   RemoteCache.get   s    45;;=((*F	)3/T
 3 3V<   ( >=
  %%d4j&9&9:),QF&	   ( >=s;   C+:B'C+
CA CCCC((C++
C9c                    [        S5      R                  5          Uc   eU R                  5       n U R                  XU5        [        R                  [        U 5      R                  5         U R                  U5         S S S 5        g ! [         aE  n[        R                  [        U 5      R                  5        U(       a  [        U5      Ul        e S nAff = f! U R                  U5        f = f! , (       d  f       g = f)Nzpytorch.remote_cache.put)r   ru   rv   r2   r5   r=   r   r   r7   r8   rC   rw   rx   )r"   r+   r:   ry   r{   s        r#   r=   RemoteCache.put   s    45;;=$$$((*F	)		#f-T
 3 34   ( >=  %%d4j&9&9:),QF&	   ( >=s;   C/:B,C/
CA CCCC,,C//
C=c                8    U R                   R                  U5      $ r(   )rq   rR   )r"   r1   ry   s      r#   _decodeRemoteCache._decode   s    zz  &&r&   c                8    U R                   R                  U5      $ r(   )rq   rO   )r"   r:   ry   s      r#   _encodeRemoteCache._encode   s    zz  ''r&   c                V    U R                  U5      =n(       a  U R                  X25      $ g r(   )_backend_getr   )r"   r+   ry   r1   s       r#   r,   RemoteCache._get   s*    $$S))4)<<--r&   c                8    U R                   R                  U5      $ r(   )rp   r6   r*   s     r#   r   RemoteCache._backend_get   s    ||$$r&   c                H    U R                  X#5      nU R                  X5        g r(   )r   _backend_put)r"   r+   r:   ry   r1   s        r#   r2   RemoteCache._put   s    ||E*#$r&   c                :    U R                   R                  X5        g r(   )rp   r=   r0   s      r#   r   RemoteCache._backend_put   s    #r&   c                    g r(   r)   r!   s    r#   rv   RemoteCache._create_sample   s    r&   c                    g r(   r)   )r"   ry   s     r#   rx   RemoteCache._log_sample   s    r&   )rp   rq   )rp   zRemoteCacheBackend[_U]rq   zRemoteCacheSerde[_T, _U]r@   rA   rB   )r+   rC   r:   r   r@   rA   )r1   r   ry   Sample | Noner@   r   )r:   r   ry   r   r@   object)r+   rC   ry   r   r@   rD   )r+   rC   r@   r   )r+   rC   r:   r   ry   r   r@   rA   )r+   rC   r1   r   r@   rA   )r@   r   )ry   r   r@   rA   )r   rE   rF   rG   rm   __annotations__r$   r6   r=   r   r   r,   r   r2   r   rv   rx   rI   r)   r&   r#   rk   rk      s]    IMFM	-	6N			$) '(
%
%$
r&   rk   c                  h   ^  \ rS rSr% SrSrS\S'   S
U 4S jjr\SS j5       r	\SS j5       r
S	rU =r$ )RedisRemoteCacheBackend   z7
A Redis implementation of a remote/distributed cache.
Nzredis.Redis | None_redisc           	       > [         TU ]  5         [        (       d  [        S5      eS[        R
                  ;   a6  [        R                  R                  [        R
                  S   5      U l        g [        R                  " [        R
                  R                  SS5      [        [        R
                  R                  SS5      5      S9U l        g )Nz1redis not available but required for remote cacheTORCHINDUCTOR_REDIS_URLTORCHINDUCTOR_REDIS_HOST	localhostTORCHINDUCTOR_REDIS_PORTi  )hostport)superr$   redisRuntimeErrorosenvironRedisfrom_urlr   r6   int)r"   cache_idro   s     r#   r$    RedisRemoteCacheBackend.__init__   s    uRSS$

2++..rzz:S/TUDK++ZZ^^$>L(BDIJDKr&   c                    U R                   (       d  g  U R                   R                  U5      nUb  [        U[        5      (       d   eU$ ! [        R                  R                   a
    S U l          g f = fr(   )r   r6   r   
exceptionsConnectionError
isinstancerZ   r9   s      r#   r,   RedisRemoteCacheBackend._get  sj    {{	KKOOC(E }
5% 8 888 // 	 DK		s   A %A32A3c                    U R                   (       d  g  U R                   R                  X5        g ! [        R                  R                   a
    S U l          g f = fr(   )r   setr   r   r   r0   s      r#   r2   RedisRemoteCacheBackend._put!  sE    {{	KKOOC&// 	 DK	s   0 %AA)r   r   rC   r@   rA   )r+   rC   r@   zbytes | None)r+   rC   r1   rZ   r@   rA   )r   rE   rF   rG   rH   r   r   r$   r
   r,   r2   rI   __classcell__ro   s   @r#   r   r      sB    
 "&F%  &  r&   r   c                  j   ^  \ rS rSrSU 4S jjrSS jr\S	U 4S jj5       r\S
U 4S jj5       rSr	U =r
$ )RedisRemoteCachei1  c                   > U R                   R                  (       a#  [        R                  " [        [
           S 5      nO[        U5      n[        5       n[        TU ]%  X#5        SnSU SU 3U l
        g )N   zpt2:z	::{key}:c)ro   rm   typingcastr   rZ   r   rV   r   r$   _key_fmt)r"   r   rp   rq   versionro   s        r#   r$   RedisRemoteCache.__init__2  s`     >>..kk"4U";TBG-h7G$&(xjG9=r&   c                4    U R                   R                  US9$ )N)r+   )r   formatr*   s     r#   _get_keyRedisRemoteCache._get_key?  s    }}###,,r&   c                D   > U R                  U5      n[        TU ]	  X5      $ r(   )r   r   r,   )r"   r+   ry   ro   s      r#   r,   RedisRemoteCache._getB  s     mmC w|C((r&   c                H   > U R                  U5      n[        TU ]	  XU5        g r(   )r   r   r2   )r"   r+   r:   ry   ro   s       r#   r2   RedisRemoteCache._putG  s    mmC S(r&   )r   r   )r+   rC   r@   rC   )r+   rC   ry   r   r@   zJsonDataTy | None)r+   rC   r:   rT   ry   r   r@   rA   )r   rE   rF   rG   r$   r   r
   r,   r2   rI   r   r   s   @r#   r   r   1  s5    >- ) ) ) )r&   r   c                      \ rS rSrSrg)RemoteAutotuneCacheiM  r)   Nr   rE   rF   rG   rI   r)   r&   r#   r   r   M      r&   r   c                      \ rS rSrSrg)RemoteBundledAutotuneCacheiQ  r)   Nr   r)   r&   r#   r   r   Q  r   r&   r   c                      \ rS rSrSrg)RemoteFxGraphCacheiU  r)   Nr   r)   r&   r#   r   r   U  r   r&   r   c                      \ rS rSrSrg)RemoteAOTAutogradCacheiY  r)   Nr   r)   r&   r#   r   r   Y  r   r&   r   c                      \ rS rSrSrg)RemoteDynamoPGOCachei]  r)   Nr   r)   r&   r#   r   r   ]  r   r&   r   c                    U(       a6  SS K n[        UR                  R                  R                  U5      nU" U 5      $ [
        R                  [           n[        Xc5      nU" U 5      $ ! [         a    [        R                  SSS9   g f = f)Nr   zUnable to create a remote cacheT)exc_info)torch._inductor.fb.remote_cachegetattr	_inductorfbremote_cachesysmodulesr   r7   logwarning)r+   	is_fbcodefb_cache_clsoss_cache_clstorch	cache_clsthis_modules          r#   create_cacher   a  sx    2 2 2 ? ?NIS>!++h/K;IS>! 5Es   <A) )A) )B
	B
c                  X    \ rS rSr% SrS\S'   SrS\S'   SrS\S'   SrS\S'   SS jr	S	r
g
)
_CacheStatiy  r   r   misshitr=   r8   c           	     p    SU R                    SU R                   SU R                   SU R                   S3	$ )Nz{hit: z, miss: z, put: z, exception: })r   r   r=   r8   r!   s    r#   __str___CacheStat.__str__  s8    
(499+WTXXJmTXTbTbScceffr&   r)   N)r@   rC   )r   rE   rF   rG   r   r   r   r=   r8   r   rI   r)   r&   r#   r   r   y  s-    D#MCLCLIsgr&   r   c                  l    \ rS rSr% S\S'   SS jrSSS jjrSSS jjrSS jrSSS jjr	SSS	 jjr
S
rg)_CacheStatsi  zdict[str, _CacheStat]_statsc                B    [         R                  " [        5      U l        g r(   )collectionsdefaultdictr   r   r!   s    r#   r$   _CacheStats.__init__  s    !--j9r&   c                H    U R                   U   =R                  U-  sl        g r(   )r   r   r"   namecounts      r#   r   _CacheStats.miss  s    D%'r&   c                H    U R                   U   =R                  U-  sl        g r(   )r   r   r   s      r#   r   _CacheStats.hit      D&r&   c                P    Uc  U R                  U5        g U R                  U5        g r(   )r   r   )r"   r   r:   s      r#   r6   _CacheStats.get  s    =IIdOHHTNr&   c                H    U R                   U   =R                  U-  sl        g r(   )r   r=   r   s      r#   r=   _CacheStats.put  r   r&   c                H    U R                   U   =R                  U-  sl        g r(   )r   r8   r   s      r#   r8   _CacheStats.exception  s    D##u,#r&   )r   Nr?   )r   )r   rC   r   r   r@   rA   )r   rC   r:   zobject | Noner@   rA   )r   rE   rF   rG   r   r$   r   r   r6   r=   r8   rI   r)   r&   r#   r   r     s+    !!:(''- -r&   r   c                    [         R                  [        R                  5      (       d  g SS Kn U R                  5       n[        R                  (       d  [        SUS9  OI[        US9  [        [        R                  R                  5       5       H  u  p#[        SU SU 3US9  M     [         R                  SUR                  5       5        g )Nr   z None)filez  z: zCache Metrics:%s)r   isEnabledForloggingINFOioStringIOr5   r   printsorteditemsinfogetvalue)r  outkvs       r#   dump_cache_statsr    s    GLL))
++-CgC 3;--3356DABqcA3-c* 7 HH0r&   )
r+   rC   r   boolr   rC   r   rC   r@   zRemoteCache[JsonDataTy] | Noner?   )I
__future__r   atexitr   dataclasses	functoolsr[   r  r   r   r   abcr   r   r   r   r   r	   typing_extensionsr
   torch._dynamo.utilsr   torch._inductorr   torch.monitorr   TYPE_CHECKINGcollections.abcr   r   ImportError	getLoggerr   r   r   rfe.scubadata.scubadata_py3r   Sample_r   r   r   r   r   partialremote_fx_cache_get_timedremote_fx_cache_put_timedr   rK   r   floatrC   r  dictlistrT   rZ   rV   rc   rk   r   r   r   r   r   r   r   r   	dataclassr   r   r5   registerr  r)   r&   r#   <module>r*     s   "       	 
   : : & , " & 
(
 ! 
  FIVFI$ T]T] &--*@  &--*@    Hwr2v  T4\ 12D4FL
I 
 +J,=>  "22r6": >Y'"+ Yx607 6r){:. )8	* 		!1 		) 		- 		+ 		  	
 $0 g g g- -2 m 1 1M  Es   0G4 4H ?H 