
    9j3                       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e)         Z: G d# d$e.e7         Z; G d% d&e:e6         Z< G d' d(e<      Z= G d) d*e<      Z> G d+ d,e<      Z? G d- d.e<      Z@ G d/ d0e<      ZA	 	 	 	 	 	 	 	 	 	 d7d1ZBej                   G d2 d3             ZD G d4 d5      ZE eE       ZFej                  d8d6       ZHy# e$ r dZY w xY w)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                  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 accessing a remote/distributed cache.  Only
    works with bytes in/out.  For structured data use a RemoteCache.
    c                >    dt        |       j                   | _        y )Nzbackend:)type__name___nameselfs    \/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/torch/_inductor/remote_cache.py__init__zRemoteCacheBackend.__init__H   s    T
 3 345
    c                     y N r!   keys     r"   _getzRemoteCacheBackend._getK       r$   c                     y r&   r'   r!   r)   datas      r"   _putzRemoteCacheBackend._putO   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.getS   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.encodeg   r+   r$   c                     y r&   r'   rE   s     r"   decodezRemoteCacheSerde.decodek   r+   r$   N)r.   r   r:   r   )r.   r   r:   r   )r   r?   r@   r   rF   rH   r'   r$   r"   rC   rC   f   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.encodev   s    TZZ%w//r$   c                ,    t        j                  |      S r&   )rO   loadsrE   s     r"   rH   zRemoteCacheJsonSerde.decodey   s    zz$r$   N)r.   rI   r:   rN   )r.   rN   r:   rI   r   r?   r@   rF   rH   r'   r$   r"   rK   rK   u   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                      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__r[   backendserde)r!   r^   r_   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   rb   rc   r/   r1   r8   r   r   r3   r4   r=   rd   re   )r!   r)   r6   rf   rh   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&   )r_   rH   )r!   r.   rf   s      r"   _decodezRemoteCache._decode   s    zz  &&r$   c                8    | j                   j                  |      S r&   )r_   rF   )r!   r6   rf   s      r"   _encodezRemoteCache._encode   s    zz  ''r$   c                N    | j                  |      x}r| j                  ||      S y r&   )_backend_getrk   )r!   r)   rf   r.   s       r"   r*   zRemoteCache._get   s,    $$S))4)<<f--r$   c                8    | j                   j                  |      S r&   )r^   r2   r(   s     r"   ro   zRemoteCache._backend_get   s    ||$$r$   c                L    | j                  ||      }| j                  ||       y r&   )rm   _backend_put)r!   r)   r6   rf   r.   s        r"   r/   zRemoteCache._put   s"    ||E6*#t$r$   c                <    | j                   j                  ||       y r&   )r^   r8   r-   s      r"   rr   zRemoteCache._backend_put   s    d#r$   c                     y r&   r'   r    s    r"   rc   zRemoteCache._create_sample   s    r$   c                     y r&   r'   )r!   rf   s     r"   re   zRemoteCache._log_sample   s    r$   )r^   zRemoteCacheBackend[_U]r_   zRemoteCacheSerde[_T, _U]r:   r;   r<   )r)   r=   r6   r   r:   r;   )r.   r   rf   Sample | Noner:   r   )r6   r   rf   rv   r:   object)r)   r=   rf   rv   r:   r>   )r)   r=   r:   rw   )r)   r=   r6   r   rf   rv   r:   r;   )r)   r=   r.   rw   r:   r;   )r:   rv   )rf   rv   r:   r;   )r   r?   r@   r[   __annotations__r#   r2   r8   rk   rm   r*   ro   r/   rr   rc   re   r'   r$   r"   rZ   rZ      s]    IMFM	-	6N			$) '(
%
%$
r$   rZ   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RuntimeErrorosenvironRedisfrom_urlr{   r2   int)r!   cache_idr]   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._put!  sG    {{	KKOOC&// 	 DK	s   , $AAr   r=   r:   r;   )r)   r=   r:   zbytes | None)r)   r=   r.   rN   r:   r;   )r   r?   r@   rA   r{   rx   r#   r
   r*   r/   __classcell__r]   s   @r"   rz   rz      sB    
 "&F%  &  r$   rz   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)r]   r[   typingcastr   rN   rz   rK   r   r#   _key_fmt)r!   r   r^   r_   versionr]   s        r"   r#   zRedisRemoteCache.__init__2  sb     >>..kk"4U";TBG-h7G$&%(xjG9=r$   c                :    | j                   j                  |      S )N)r)   )r   formatr(   s     r"   _get_keyzRedisRemoteCache._get_key?  s    }}###,,r$   c                F    | j                  |      }t        | 	  ||      S r&   )r   r   r*   )r!   r)   rf   r]   s      r"   r*   zRedisRemoteCache._getB  s"    mmC w|C((r$   c                J    | j                  |      }t        | 	  |||       y r&   )r   r   r/   )r!   r)   r6   rf   r]   s       r"   r/   zRedisRemoteCache._putG  s!    mmC S%(r$   r   )r)   r=   r:   r=   )r)   r=   rf   rv   r:   zJsonDataTy | None)r)   r=   r6   rI   rf   rv   r:   r;   )	r   r?   r@   r#   r   r
   r*   r/   r   r   s   @r"   r   r   1  s5    >- ) ) ) )r$   r   c                      e Zd Zy)RemoteAutotuneCacheNr   r?   r@   r'   r$   r"   r   r   M      r$   r   c                      e Zd Zy)RemoteBundledAutotuneCacheNr   r'   r$   r"   r   r   Q  r   r$   r   c                      e Zd Zy)RemoteFxGraphCacheNr   r'   r$   r"   r   r   U  r   r$   r   c                      e Zd Zy)RemoteAOTAutogradCacheNr   r'   r$   r"   r   r   Y  r   r$   r   c                      e Zd Zy)RemoteDynamoPGOCacheNr   r'   r$   r"   r   r   ]  r   r$   r   c                   	 |r6dd l }t        |j                  j                  j                  |      } ||       S t
        j                  t           }t        ||      } ||       S # t        $ r t        j                  dd       Y y w xY w)Nr   zUnable to create a remote cacheT)exc_info)torch._inductor.fb.remote_cachegetattr	_inductorfbremote_cachesysmodulesr   r3   logwarning)r)   	is_fbcodefb_cache_clsoss_cache_clstorch	cache_clsthis_modules          r"   create_cacher   a  sz    2 2 2 ? ?NIS>!++h/K];IS>! 5Es   7A% *A% % 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   rx   r   r8   r4   r   r'   r$   r"   r   r   y  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@   rx   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$   )
r)   r=   r   boolr   r=   r   r=   r:   zRemoteCache[JsonDataTy] | Noner9   )I
__future__r   atexitr   dataclasses	functoolsrO   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_rx   r   rw   r   r   partialremote_fx_cache_get_timedremote_fx_cache_put_timedr   rC   r   floatr=   r   dictlistrI   rN   rK   rU   rZ   rz   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--*@    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   +G. .G98G9