
    ^j;                    V   U d dl m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 d dl
mZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ e
j4                  rd d	lmZ 	 d dlZ ej>                  e       Z! ejD                         rd d
l#m$Z% e%Z$de&d<   n
e'e(   Z$de&d<    ed      Z) ed      Z* ejV                  eddddd      Z, ejV                  eddddd      Z- G d dee)         Z. G d dee)e*f         Z/ee0e1e2e3e4e2df   e5d   df   Z6de&d<    G d de/e6e7f         Z8 G d d e/e)e)f         Z9 G d! d"e.e7         Z: G d# d$ee)         Z; G d% d&e.e7         Z< G d' d(e;e6         Z= G d) d*e;e6         Z> G d+ d,e>      Z? G d- d.e=      Z@ G d/ d0e=      ZA G d1 d2e=      ZB G d3 d4e=      ZC G d5 d6e=      ZD	 	 	 d>dd7	 	 	 	 	 	 	 	 	 	 	 d?d8ZEej                   G d9 d:             ZG G d; d<      ZH eH       ZIej                  d@d=       ZKy# e$ r dZY w xY w)A    )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                  L    e Zd ZdZddZed	d       Zed
d       Zd	dZd
dZ	y)RemoteCacheBackendz
    A backend implementation for cache storage. Most backends are remote, but
    local filesystem backends use the same bytes-oriented interface. For
    structured data use a RemoteCache.
    c                >    dt        |       j                   | _        y )Nzbackend:)type__name___nameselfs    g/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_inductor/remote_cache.py__init__zRemoteCacheBackend.__init__I   s    T
 3 345
    c                     y N r!   keys     r"   _getzRemoteCacheBackend._getL       r$   c                     y r&   r'   r!   r)   datas      r"   _putzRemoteCacheBackend._putP   r+   r$   c                    	 | j                  |      }t        j                  | j                  |       |S # t        $ r! t        j                  | j                          w xY wr&   )r*   cache_statsgetr   	Exception	exceptionr!   r)   values      r"   r2   zRemoteCacheBackend.getT   sS    	IIcNEOODJJ.   	!!$**-	s	   15 *Ac                    	 | j                  ||       t        j                  | j                         y # t        $ r! t        j                  | j                          w xY wr&   )r/   r1   putr   r3   r4   r-   s      r"   r8   zRemoteCacheBackend.put]   sI    	IIc4 OODJJ' 	!!$**-	s	   14 *ANreturnNoner)   strr:   	_T | None)r)   r=   r.   r   r:   r;   )
r   
__module____qualname____doc__r#   r   r*   r/   r2   r8   r'   r$   r"   r   r   B   s>    6    r$   r   c                  0    e Zd Zedd       Zedd       Zy)RemoteCacheSerdec                     y r&   r'   r!   r.   s     r"   encodezRemoteCacheSerde.encodeh   r+   r$   c                     y r&   r'   rE   s     r"   decodezRemoteCacheSerde.decodel   r+   r$   N)r.   r   r:   r   )r.   r   r:   r   )r   r?   r@   r   rF   rH   r'   r$   r"   rC   rC   g   s(       r$   rC   
JsonDataTyc                      e Zd ZddZddZy)RemoteCacheJsonSerdec                @    t        t        j                  |      d      S )Nascii)bytesjsondumpsrE   s     r"   rF   zRemoteCacheJsonSerde.encodew   s    TZZ%w//r$   c                ,    t        j                  |      S r&   )rO   loadsrE   s     r"   rH   zRemoteCacheJsonSerde.decodez   s    zz$r$   N)r.   rI   r:   rN   )r.   rN   r:   rI   r   r?   r@   rF   rH   r'   r$   r"   rK   rK   v   s    0 r$   rK   c                      e Zd ZddZddZy)RemoteCachePassthroughSerdec                    |S r&   r'   rE   s     r"   rF   z"RemoteCachePassthroughSerde.encode       r$   c                    |S r&   r'   rE   s     r"   rH   z"RemoteCachePassthroughSerde.decode   rW   r$   N)r.   r   r:   r   rS   r'   r$   r"   rU   rU   ~   s    r$   rU   c                  4    e Zd ZdZedd       Zedd       Zy)LocalCacheBackendzK
    A local filesystem implementation of the cache backend interface.
    c                    	 t        |d      5 }|j                         cd d d        S # 1 sw Y   y xY w# t        $ r Y y w xY w)Nrb)openreadFileNotFoundError)r!   r)   fds      r"   r*   zLocalCacheBackend._get   sA    	c4 !Bwwy! ! !  		s"   4 (	4 14 4 	A A c                    t        j                  t         j                  j                  |      d       ddlm} |j                  ||       y )NT)exist_okr   )	codecache)osmakedirspathdirnametorch._inductorrc   write_atomic)r!   r)   r.   rc   s       r"   r/   zLocalCacheBackend._put   s0    
BGGOOC(48-sD)r$   Nr)   r=   r:   zbytes | Noner)   r=   r.   rN   r:   r;   )r   r?   r@   rA   r
   r*   r/   r'   r$   r"   rZ   rZ      s/       * *r$   rZ   c                      e Zd ZU dZded<   	 	 	 	 	 	 ddZddZddZddZddZ	dd	Z
dd
ZddZddZddZddZy)RemoteCacheNz,Callable[[], RemoteCacheBackend[Any]] | Nonebackend_override_clsc                x    | j                   j                  x} |       | _        || _        y || _        || _        y r&   )	__class__rn   backendserde)r!   rq   rr   override_clss       r"   r#   zRemoteCache.__init__   s;     !NN???LL'>DL 
 #DL
r$   c                   t        d      j                         5  | j                         }	 | j                  ||      }t        j                  t        |       j                  |       	 | j                  |       |cd d d        S # t        $ r@}t        j                  t        |       j                         |rt        |      |_         d }~ww xY w# | j                  |       w xY w# 1 sw Y   y xY w)Nzpytorch.remote_cache.get)r   guard_create_sampler*   r1   r2   r   r   r3   r4   r=   fail_reason_log_sample)r!   r)   sampleresultes        r"   r2   zRemoteCache.get   s    45;;= 	((*F	)3/T
 3 3V<   (	 	
  %%d4j&9&9:),QF&	   (	 	s:   C&;B(C&	C;CCCC##C&&C/c                   t        d      j                         5  |J | j                         }	 | j                  |||       t        j                  t        |       j                         	 | j                  |       	 d d d        y # t        $ r@}t        j                  t        |       j                         |rt        |      |_         d }~ww xY w# | j                  |       w xY w# 1 sw Y   y xY w)Nzpytorch.remote_cache.put)r   ru   rv   r/   r1   r8   r   r   r3   r4   r=   rw   rx   )r!   r)   r6   ry   r{   s        r"   r8   zRemoteCache.put   s    45;;= 	)$$$((*F	)		#uf-T
 3 34   (	) 	)  %%d4j&9&9:),QF&	   (	) 	)s:   C);B,C)	C;CCCC&&C))C2c                8    | j                   j                  |      S r&   )rr   rH   )r!   r.   ry   s      r"   _decodezRemoteCache._decode   s    zz  &&r$   c                8    | j                   j                  |      S r&   )rr   rF   )r!   r6   ry   s      r"   _encodezRemoteCache._encode   s    zz  ''r$   c                N    | j                  |      x}r| j                  ||      S y r&   )_backend_getr~   )r!   r)   ry   r.   s       r"   r*   zRemoteCache._get   s,    $$S))4)<<f--r$   c                8    | j                   j                  |      S r&   )rq   r2   r(   s     r"   r   zRemoteCache._backend_get   s    ||$$r$   c                L    | j                  ||      }| j                  ||       y r&   )r   _backend_put)r!   r)   r6   ry   r.   s        r"   r/   zRemoteCache._put   s"    ||E6*#t$r$   c                <    | j                   j                  ||       y r&   )rq   r8   r-   s      r"   r   zRemoteCache._backend_put  s    d#r$   c                     y r&   r'   r    s    r"   rv   zRemoteCache._create_sample  s    r$   c                     y r&   r'   )r!   ry   s     r"   rx   zRemoteCache._log_sample
  s    r$   )rq   zRemoteCacheBackend[_U]rr   zRemoteCacheSerde[_T, _U]r:   r;   r<   )r)   r=   r6   r   r:   r;   )r.   r   ry   Sample | Noner:   r   )r6   r   ry   r   r:   object)r)   r=   ry   r   r:   r>   )r)   r=   r:   r   )r)   r=   r6   r   ry   r   r:   r;   )r)   r=   r.   r   r:   r;   )r:   r   )ry   r   r:   r;   )r   r?   r@   rn   __annotations__r#   r2   r8   r~   r   r*   r   r/   r   rv   rx   r'   r$   r"   rm   rm      s]    IMFM	-	6N			$) '(
%
%$
r$   rm   c                  X     e Zd ZU dZdZded<   d fdZed	d       Zed
d       Z	 xZ
S )RedisRemoteCacheBackendz?
    A Redis implementation of a remote/distributed cache.
    Nzredis.Redis | None_redisc           	        t         |           t        st        d      dt        j
                  v r6t        j                  j                  t        j
                  d         | _        y t        j                  t        j
                  j                  dd      t        t        j
                  j                  dd                  | _        y )Nz1redis not available but required for remote cacheTORCHINDUCTOR_REDIS_URLTORCHINDUCTOR_REDIS_HOST	localhostTORCHINDUCTOR_REDIS_PORTi  )hostport)superr#   redisRuntimeErrorrd   environRedisfrom_urlr   r2   int)r!   cache_idrp   s     r"   r#   z RedisRemoteCacheBackend.__init__  s    RSS$

2++..rzz:S/TUDK++ZZ^^$>L(BDIJDKr$   c                    | j                   sy 	 | j                   j                  |      }|t        |t              sJ |S # t        j                  j                  $ r
 d | _         Y y w xY wr&   )r   r2   r   
exceptionsConnectionError
isinstancerN   r5   s      r"   r*   zRedisRemoteCacheBackend._get#  sg    {{	KKOOC(E }
5% 888 // 	 DK		s   A   $A'&A'c                    | j                   sy 	 | j                   j                  ||       y # t        j                  j                  $ r
 d | _         Y y w xY wr&   )r   setr   r   r   r-   s      r"   r/   zRedisRemoteCacheBackend._put7  sG    {{	KKOOC&// 	 DK	s   , $AAr   r=   r:   r;   rj   rk   )r   r?   r@   rA   r   r   r#   r
   r*   r/   __classcell__rp   s   @r"   r   r     sB    
 "&F%  &  r$   r   c                  T     e Zd Zd fdZddZed fd       Zed fd       Z xZS )	RedisRemoteCachec                    | j                   j                  r"t        j                  t        t
           d       }nt        |      }t               }t        | %  ||       d}d| d| | _
        y )N   zpt2:z	::{key}:c)rp   rn   typingcastr   rN   r   rK   r   r#   _key_fmt)r!   r   rq   rr   versionrp   s        r"   r#   zRedisRemoteCache.__init__H  sb     >>..kk"4U";TBG-h7G$&%(xjG9=r$   c                :    | j                   j                  |      S )N)r)   )r   formatr(   s     r"   _get_keyzRedisRemoteCache._get_keyU  s    }}###,,r$   c                F    | j                  |      }t        | 	  ||      S r&   )r   r   r*   )r!   r)   ry   rp   s      r"   r*   zRedisRemoteCache._getX  s"    mmC w|C((r$   c                J    | j                  |      }t        | 	  |||       y r&   )r   r   r/   )r!   r)   r6   ry   rp   s       r"   r/   zRedisRemoteCache._put]  s!    mmC S%(r$   r   )r)   r=   r:   r=   r)   r=   ry   r   r:   zJsonDataTy | None)r)   r=   r6   rI   ry   r   r:   r;   )	r   r?   r@   r#   r   r
   r*   r/   r   r   s   @r"   r   r   G  s5    >- ) ) ) )r$   r   c                  6     e Zd Zd fdZed fd       Z xZS )
LocalCachec                N    t               }t               }t        |   ||       y r&   )rZ   rK   r   r#   )r!   r   rq   rr   rp   s       r"   r#   zLocalCache.__init__d  s$     $%$&%(r$   c                    	 t         |   ||      S # t        j                  t        f$ r5}t
        j                  d|t        |      j                  |       Y d }~y d }~ww xY w)Nz-Ignoring corrupt local cache entry %s: %s: %s)	r   r*   rO   JSONDecodeErrorUnicodeDecodeErrorlogwarningr   r   )r!   r)   ry   excrp   s       r"   r*   zLocalCache._getl  s\    		7<V,,$$&89 	KK?S	""	 	s    A!+AA!r   r   )r   r?   r@   r#   r
   r*   r   r   s   @r"   r   r   c  s    ) 
 
r$   r   c                      e Zd Zy)LocalAutotuneCacheNr   r?   r@   r'   r$   r"   r   r   z  s    r$   r   c                      e Zd Zy)RemoteAutotuneCacheNr   r'   r$   r"   r   r         r$   r   c                      e Zd Zy)RemoteBundledAutotuneCacheNr   r'   r$   r"   r   r     r   r$   r   c                      e Zd Zy)RemoteFxGraphCacheNr   r'   r$   r"   r   r     r   r$   r   c                      e Zd Zy)RemoteAOTAutogradCacheNr   r'   r$   r"   r   r     r   r$   r   c                      e Zd Zy)RemoteDynamoPGOCacheNr   r'   r$   r"   r   r     r   r$   r   )local_cache_clsc               R   	 t         j                  t           }|t        ||      } ||       S |r:|J dd l}t        |j
                  j                  j                  |      } ||       S |J t        ||      } ||       S # t        $ r t        j                  dd       Y y w xY w)Nr   zUnable to create cacheT)exc_info)sysmodulesr   getattrtorch._inductor.fb.remote_cache	_inductorfbremote_cacher3   r   r   )r)   	is_fbcodefb_cache_clsoss_cache_clsr   this_module	cache_clstorchs           r"   create_cacher     s    kk(+&_=IS>!+++2 2 2 ? ?NIS>! ,,,];IS>! ,t<s   ,B ;B +B  B&%B&c                  N    e Zd ZU dZded<   dZded<   dZded<   dZded<   d	dZy)

_CacheStatr   r   misshitr8   r4   c           	     p    d| j                    d| j                   d| j                   d| j                   d	S )Nz{hit: z, miss: z, put: z, exception: })r   r   r8   r4   r    s    r"   __str__z_CacheStat.__str__  s8    
(499+WTXXJmTXTbTbScceffr$   N)r:   r=   )	r   r?   r@   r   r   r   r8   r4   r   r'   r$   r"   r   r     s-    D#MCLCLIsgr$   r   c                  P    e Zd ZU ded<   d
dZdddZdddZddZdddZdddZ	y	)_CacheStatszdict[str, _CacheStat]_statsc                @    t        j                  t              | _        y r&   )collectionsdefaultdictr   r   r    s    r"   r#   z_CacheStats.__init__  s    !--j9r$   c                H    | j                   |   xj                  |z  c_        y r&   )r   r   r!   namecounts      r"   r   z_CacheStats.miss  s    D%'r$   c                H    | j                   |   xj                  |z  c_        y r&   )r   r   r   s      r"   r   z_CacheStats.hit      D&r$   c                N    || j                  |       y | j                  |       y r&   )r   r   )r!   r   r6   s      r"   r2   z_CacheStats.get  s    =IIdOHHTNr$   c                H    | j                   |   xj                  |z  c_        y r&   )r   r8   r   s      r"   r8   z_CacheStats.put  r   r$   c                H    | j                   |   xj                  |z  c_        y r&   )r   r4   r   s      r"   r4   z_CacheStats.exception  s    D##u,#r$   Nr9   )r   )r   r=   r   r   r:   r;   )r   r=   r6   zobject | Noner:   r;   )
r   r?   r@   r   r#   r   r   r2   r8   r4   r'   r$   r"   r   r     s&    !!:(''-r$   r   c                    t         j                  t        j                        sy dd l} | j                         }t        j                  st        d|       nNt        |       t        t        j                  j                               D ]  \  }}t        d| d| |        t         j                  d|j                                y )Nr   z None)filez  z: zCache Metrics:%s)r   isEnabledForloggingINFOioStringIOr1   r   printsorteditemsinfogetvalue)r   outkvs       r"   dump_cache_statsr    s    GLL)
++-CgC 3;--3356 	+DAqBqcA3-c*	+ HH0r$   )FNN)r)   r=   r   boolr   
str | Noner   r  r   r  r:   zRemoteCache[JsonDataTy] | Noner9   )L
__future__r   atexitr   dataclasses	functoolsrO   r   rd   r   r   abcr   r   r   r   r   r	   typing_extensionsr
   torch._dynamo.utilsr   rh   r   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   rC   r   floatr=   r  dictlistrI   rN   rK   rU   rZ   rm   r   r   r   r   r   r   r   r   r   r   	dataclassr   r   r1   registerr  r'   r$   r"   <module>r     s   "       	 
   : : & , " & 
(
 g! 6  FIVFI$ T]T] .I--*@  .I--*@ ! !Jwr2v  T4\ 12D4FL
I 
 +J,=>  "22r6": **51 *XY'"+ Yx607 6r){:. )8Z( .	 	
	* 		!1 		) 		- 		+ 	 # $	 #'	  	   $< g g g- -2 m 1 1}  Es   +H H('H(