
    Vh1              	         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mZ d dlmZmZ d dlmZ d dlmZ d dlmZ 	 d dlZ ej<                  e      Z  ejB                         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jT                  eddddd      Z+ ejT                  eddddd      Z, G d dee(         Z- G d dee(e)f         Z.eee/e0e1e2e3e1df   e4d   f      Z5 G d de.e5e6f         Z7 G d de.e(e(f         Z8 G d  d!ee(         Z9 G d" d#e-e6         Z: G d$ d%e9e5         Z; G d& d'e;      Z< G d( d)e;      Z= G d* d+e;      Z> G d, d-e;      Z? G d. d/e;      Z@	 	 	 	 	 	 	 	 	 	 d6d0ZAej                   G d1 d2             ZC G d3 d4      ZD eD       ZEej                  d7d5       ZGy# e$ r dZY w xY w)8    )annotationsN)abstractmethod)AnyCallableGenericOptionalTypeVarUnion)override	TypeAlias)dynamo_timed)config)_WaitCounter)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    L/home/dcms/DCMS/lib/python3.12/site-packages/torch/_inductor/remote_cache.py__init__zRemoteCacheBackend.__init__D   s    T
 3 345
    c                     y N r"   keys     r#   _getzRemoteCacheBackend._getG       r%   c                     y r'   r(   r"   r*   datas      r#   _putzRemoteCacheBackend._putK   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#   r3   zRemoteCacheBackend.getO   sS    	IIcNEOODJJ.   	!!$**-	s	   15 *Ac                    	 | j                  ||       t        j                  | j                         y # t        $ r! t        j                  | j                          w xY wr'   )r0   r2   putr    r4   r5   r.   s      r#   r9   zRemoteCacheBackend.putX   sI    	IIc4 OODJJ' 	!!$**-	s	   14 *ANreturnNoner*   strr;   Optional[_T])r*   r>   r/   r   r;   r<   )
r   
__module____qualname____doc__r$   r   r+   r0   r3   r9   r(   r%   r#   r   r   >   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.encodec   r,   r%   c                     y r'   r(   rF   s     r#   decodezRemoteCacheSerde.decodeg   r,   r%   N)r/   r   r;   r   )r/   r   r;   r   )r   r@   rA   r   rG   rI   r(   r%   r#   rD   rD   b   s(       r%   rD   
JsonDataTyc                      e Zd ZddZddZy)RemoteCacheJsonSerdec                @    t        t        j                  |      d      S )Nascii)bytesjsondumpsrF   s     r#   rG   zRemoteCacheJsonSerde.encoder   s    TZZ%w//r%   c                ,    t        j                  |      S r'   )rP   loadsrF   s     r#   rI   zRemoteCacheJsonSerde.decodeu   s    zz$r%   N)r/   rJ   r;   rO   )r/   rO   r;   rJ   r   r@   rA   rG   rI   r(   r%   r#   rL   rL   q   s    0 r%   rL   c                      e Zd ZddZddZy)RemoteCachePassthroughSerdec                    |S r'   r(   rF   s     r#   rG   z"RemoteCachePassthroughSerde.encodez       r%   c                    |S r'   r(   rF   s     r#   rI   z"RemoteCachePassthroughSerde.decode}   rX   r%   N)r/   r   r;   r   rT   r(   r%   r#   rV   rV   y   s    r%   rV   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/Optional[Callable[[], RemoteCacheBackend[Any]]]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                          w xY w# 1 sw Y   y xY w)Nzpytorch.remote_cache.get)r   guard_create_sampler+   r2   r3   r   r   r4   r5   _log_sample)r"   r*   sampleresults       r#   r3   zRemoteCache.get   s    45;;= 		((*F3/T
 3 3V< V$		 		
  %%d4j&9&9:		 		s"   B9;B'B93B66B99Cc                   t        d      j                         5  |J | j                         }	 | j                  |||       t        j                  t        |       j                         | j                  |       d d d        y # t        $ r* t        j                  t        |       j                          w xY w# 1 sw Y   y xY w)Nzpytorch.remote_cache.put)r   rc   rd   r0   r2   r9   r   r   r4   r5   re   )r"   r*   r7   rf   s       r#   r9   zRemoteCache.put   s    45;;= 		%$$$((*F		#uf-T
 3 34 V$		% 		%  %%d4j&9&9:		% 		%s"   B;;B+B;3B88B;;Cc                8    | j                   j                  |      S r'   )r`   rI   )r"   r/   rf   s      r#   _decodezRemoteCache._decode   s    zz  &&r%   c                8    | j                   j                  |      S r'   )r`   rG   )r"   r7   rf   s      r#   _encodezRemoteCache._encode   s    zz  ''r%   c                N    | j                  |      x}r| j                  ||      S y r'   )_backend_getrj   )r"   r*   rf   r/   s       r#   r+   zRemoteCache._get   s,    $$S))4)<<f--r%   c                8    | j                   j                  |      S r'   )r_   r3   r)   s     r#   rn   zRemoteCache._backend_get   s    ||$$r%   c                L    | j                  ||      }| j                  ||       y r'   )rl   _backend_put)r"   r*   r7   rf   r/   s        r#   r0   zRemoteCache._put   s"    ||E6*#t$r%   c                <    | j                   j                  ||       y r'   )r_   r9   r.   s      r#   rq   zRemoteCache._backend_put   s    d#r%   c                     y r'   r(   r!   s    r#   rd   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>   r7   r   r;   r<   )r/   r   rf   Optional[Sample]r;   r   )r7   r   rf   ru   r;   object)r*   r>   rf   ru   r;   r?   )r*   r>   r;   rv   )r*   r>   r7   r   rf   ru   r;   r<   )r*   r>   r/   rv   r;   r<   )r;   ru   )rf   ru   r;   r<   )r   r@   rA   r\   __annotations__r$   r3   r9   rj   rl   r+   rn   r0   rq   rd   re   r(   r%   r#   r[   r[      s]    LPIP-6N	

%'(
%
%$
r%   r[   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Optional[redis.Redis]_redisc           	        t         |           t        sy 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 )NTORCHINDUCTOR_REDIS_URLTORCHINDUCTOR_REDIS_HOST	localhostTORCHINDUCTOR_REDIS_PORTi  )hostport)
superr$   redisosenvironRedisfrom_urlrz   r3   int)r"   cache_idr^   s     r#   r$   z RedisRemoteCacheBackend.__init__   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'   )rz   r3   r   
exceptionsConnectionError
isinstancerO   r6   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'   )rz   setr   r   r   r.   s      r#   r0   zRedisRemoteCacheBackend._put  sG    {{	KKOOC&// 	 DK	s   , $AAr   r>   r;   r<   )r*   r>   r;   zOptional[bytes])r*   r>   r/   rO   r;   r<   )r   r@   rA   rB   rz   rw   r$   r   r+   r0   __classcell__r^   s   @r#   ry   ry      sB     %)F!(  " 
 
r%   ry   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   rO   ry   rL   r   r$   _key_fmt)r"   r   r_   r`   versionr^   s        r#   r$   zRedisRemoteCache.__init__#  sb     >>..kk"4U";TBG-h7G$&%(xjG9=r%   c                :    | j                   j                  |      S )N)r*   )r   formatr)   s     r#   _get_keyzRedisRemoteCache._get_key0  s    }}###,,r%   c                F    | j                  |      }t        | 	  ||      S r'   )r   r   r+   )r"   r*   rf   r^   s      r#   r+   zRedisRemoteCache._get3  s"    mmC w|C((r%   c                J    | j                  |      }t        | 	  |||       y r'   )r   r   r0   )r"   r*   r7   rf   r^   s       r#   r0   zRedisRemoteCache._put8  s!    mmC S%(r%   r   )r*   r>   r;   r>   )r*   r>   rf   ru   r;   zOptional[JsonDataTy])r*   r>   r7   rJ   rf   ru   r;   r<   )	r   r@   rA   r$   r   r   r+   r0   r   r   s   @r#   r   r   "  s5    >- ) ) ) )r%   r   c                      e Zd Zy)RemoteAutotuneCacheNr   r@   rA   r(   r%   r#   r   r   >      r%   r   c                      e Zd Zy)RemoteBundledAutotuneCacheNr   r(   r%   r#   r   r   B  r   r%   r   c                      e Zd Zy)RemoteFxGraphCacheNr   r(   r%   r#   r   r   F  r   r%   r   c                      e Zd Zy)RemoteAOTAutogradCacheNr   r(   r%   r#   r   r   J  r   r%   r   c                      e Zd Zy)RemoteDynamoPGOCacheNr   r(   r%   r#   r   r   N  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   r4   logwarning)r*   	is_fbcodefb_cache_clsoss_cache_clstorch	cache_clsthis_modules          r#   create_cacher   R  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hitr9   r5   c           	     p    d| j                    d| j                   d| j                   d| j                   d	S )Nz{hit: z, miss: z, put: z, exception: })r   r   r9   r5   r!   s    r#   __str__z_CacheStat.__str__q  s8    
(499+WTXXJmTXTbTbScceffr%   N)r;   r>   )	r   r@   rA   r   rw   r   r9   r5   r   r(   r%   r#   r   r   j  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__x  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   r7   s      r#   r3   z_CacheStats.get  s    =IIdOHHTNr%   c                H    | j                   |   xj                  |z  c_        y r'   )r   r9   r   s      r#   r9   z_CacheStats.put  r   r%   c                H    | j                   |   xj                  |z  c_        y r'   )r   r5   r   s      r#   r5   z_CacheStats.exception  s    D##u,#r%   Nr:   )r   )r   r>   r   r   r;   r<   )r   r>   r7   zOptional[object]r;   r<   )
r   r@   rA   rw   r$   r   r   r3   r9   r5   r(   r%   r#   r   r   u  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StringIOr2   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!Optional[RemoteCache[JsonDataTy]]r:   )H
__future__r   atexitr   dataclasses	functoolsrP   r   r   r   r   abcr   r   r   r   r   r	   r
   typing_extensionsr   r   torch._dynamo.utilsr   torch._inductorr   torch.monitorr   r   ImportError	getLoggerr   r   r   rfe.scubadata.scubadata_py3r   Sample_rw   r   rv   r   r   partialremote_fx_cache_get_timedremote_fx_cache_put_timedr   rD   r   floatr>   r   dictlistrJ   rO   rL   rV   r[   ry   r   r   r   r   r   r   r   	dataclassr   r   r2   registerr   r(   r%   r#   <module>r      sv   "       	 
   C C 1 , " &
 g! 6  FIVFI$ T]T] .I--*@  .I--*@    Hwr2v  	#uc4c<&7!8$|:L
LM

 +J,=>  "22r6": >R'"+ Rj207 2j){:. )8	* 		!1 		) 		- 		+ 		  	
 '0 g g g- -2 m 1 1w  Es   G G('G(