
    Vhl!                    V   d dl mZ d dlZd dlZd dlZd dlZd dl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 e
rd dlmZ ej,                   G d	 d
             Z G d de      Z G d dej2                        Z e       Z G d dee         ZdZ G d dej<                        Zy)    )annotationsN)AnyCallableOptionalTYPE_CHECKING)overrideSelf)patch)config)RemoteCacheBackend)TracebackTypec                  X    e Zd ZU dZded<   dZded<   dZded<   ddZddZddZ	dd	Z
y
)Statsr   intnum_putnum_get_hitnum_get_missc                    | xj                   |j                   z  c_         | xj                  |j                  z  c_        | xj                  |j                  z  c_        | S Nr   r   r   selfothers     J/home/dcms/DCMS/lib/python3.12/site-packages/torch/_inductor/mock_cache.py__iadd__zStats.__iadd__   sG    %E---U///    c                .    d| _         d| _        d| _        y )Nr   r   r   s    r   resetzStats.reset!   s    r   c                ~    dj                  d| j                   dd| j                   dd| j                   df      S )N zputs: z, zmisses: zhits: )joinr   r   r   r   s    r   __str__zStats.__str__&   sN    wwb)4,,-R0))*"-
 	
r   c                    t        |t        t        f      xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r   )
isinstancer   _GlobalItemStatsr   r   r   r   s     r   __eq__zStats.__eq__/   sb     uu&678 8-8  E$5$558 !!U%7%77		
r   N)r   r   returnr	   r(   None)r(   str)r   objectr(   bool)__name__
__module____qualname__r   __annotations__r   r   r   r   r#   r'    r   r   r   r      s4    GSKL#


r   r   c                  8     e Zd ZU ded<   d fdZd fdZ xZS )r&   zdict[str, object]cachec                0    t         |           i | _        y r   )super__init__r4   r   	__class__s    r   r7   z_GlobalItemStats.__init__=   s    
r   c                0    t         |           i | _        y r   )r6   r   r4   r8   s    r   r   z_GlobalItemStats.resetA   s    
r   r)   )r.   r/   r0   r1   r7   r   __classcell__)r9   s   @r   r&   r&   :   s     r   r&   c                  *    e Zd ZddZddZddZd Zy)_GlobalStatsc                    t               | _        t               | _        t               | _        t               | _        t               | _        t               | _        t               | _        y r   )r&   autotune_localautotune_remotebundled_autotunefx_graphtritonaot_autograd
dynamo_pgor   s    r   r7   z_GlobalStats.__init__M   sL    .0/1 0 2(*&(,.*,r   c                p   | j                   j                          | j                  j                          | j                  j                          | j                  j                          | j
                  j                          | j                  j                          | j                  j                          y r   )r?   r   r@   rA   rB   rC   rD   rE   r   s    r   r   z_GlobalStats.resetV   sz    !!#""$##%!r   c                    t        | |      S r   )getattrr   names     r   get_statz_GlobalStats.get_stat_   s    tT""r   c                   d| j                   fd| j                  fd| j                  fd| j                  fd| j                  fd| j
                  fd| j                  ff}t        dt        j                  	       |D ]&  \  }}t        d
| d| t        j                  	       ( t        dt        j                  	       |D ]  \  }}|j                  st        d
| dt        j                  	       t        |j                  j                               D ]G  \  }}t        |      }t        |      dkD  r|d d dz   }t        d|d| t        j                  	       I  y )Nr?   r@   rA   rB   rC   rD   rE   zCache Stats:)filez  z: zCache Entries::d   z...z    )r?   r@   rA   rB   rC   rD   rE   printsysstderrr4   sorteditemsreprlen)r   subsrJ   subkvs         r   reportz_GlobalStats.reportb   sE   t223 4 45!6!67't{{#T../4??+
 	n3::. 	7ID#BtfBse$3::6	7 	SZZ0 	>ID#yy4&l4"399??#45 >DAqQA1v|dsGeODRs+#**=	>	>r   Nr)   )rJ   r+   r(   r&   )r.   r/   r0   r7   r   rK   r[   r2   r   r   r=   r=   L   s    - #>r   r=   c                  J    e Zd ZddZedd       Zedd       Zed	d       Zy)
MockBackendc                    || _         y r   )_namerI   s     r   r7   zMockBackend.__init__   s	    
r   c                     d fd}|S )Nc                     t               S r   )r]   )rJ   s   r   wrapperz&MockBackend.with_name.<locals>.wrapper   s    t$$r   )r(   r]   r2   )rJ   rb   s   ` r   	with_namezMockBackend.with_name   s    	% r   c                    t         j                  | j                        }||j                  v r*|t	        d      z  }|j                  j                  |      S |t	        d      z  }y )N   )r   )r   )global_statsrK   r_   r4   r   get)r   keystats      r   _getzMockBackend._get   sV    $$TZZ0$**Ea((D::>>#&&Eq))Dr   c                ~    t         j                  | j                        }|t        d      z  }||j                  |<   y )Nre   )r   )rf   rK   r_   r   r4   )r   rh   datari   s       r   _putzMockBackend._put   s2    $$TZZ0a  

3r   N)rJ   r+   r(   r*   )rJ   r+   r(   zCallable[[], MockBackend])rh   r+   r(   zOptional[Any])rh   r+   rl   r   r(   r*   )	r.   r/   r0   r7   staticmethodrc   r   rj   rm   r2   r   r   r]   r]      sC          r   r]   )fx_graph_cachefx_graph_remote_cacheautotune_local_cacheautotune_remote_cachebundled_autotune_remote_cachec                  T    e Zd Zed        Zed        ZddZddZ	 	 	 	 	 	 	 	 d	dZy)
PatchCachesc                    i | _         t        D ]@  }t        t        |      rt	        t        |      | j                   |<   t        t        |d       B y )NF)_savedCacheState_CACHE_CONFIG_ENhasattrr   rH   setattrclsrJ   s     r   setUpzPatchCaches.setUp   sH    
  "$ 	)Dvt$-4VT-B$$T*FD%(	)r   c                    t         D ]?  }t        t        |       || j                  v s"t	        t        || j                  |          A y r   )rx   delattrr   rw   rz   r{   s     r   tearDownzPatchCaches.tearDown   sD     % 	BDFD!s+++c&:&:4&@A	Br   c                6    t        j                         | _        y r   )
contextlib	ExitStack_stackr   s    r   r7   zPatchCaches.__init__   s     **,r   c                   t         j                          | j                  j                          t	        dt
        j                  d            }| j                  j                  |       t	        dt
        j                  d            }| j                  j                  |       t	        dt
        j                  d            }| j                  j                  |       t	        dt
        j                  d            }| j                  j                  |       t	        d	t
        j                  d
            }| j                  j                  |       t	        dt
        j                  d            }| j                  j                  |       t        j                         r\t	        dt
        j                  d            }| j                  j                  |       t	        dt
        j                  d            }| j                  j                  |       t	        dt
        j                  d            }| j                  j                  |       t	        dt
        j                  d            }| j                  j                  |       t	        dt
        j                  d
            }| j                  j                  |       t	        dt
        j                  d            }| j                  j                  |       | S )NzNtorch._inductor.runtime.autotune_cache.LocalAutotuneCache.backend_override_clsr?   zEtorch._inductor.remote_cache.RemoteAutotuneCache.backend_override_clsr@   zLtorch._inductor.remote_cache.RemoteBundledAutotuneCache.backend_override_clsrA   zDtorch._inductor.remote_cache.RemoteFxGraphCache.backend_override_clsrB   zHtorch._inductor.remote_cache.RemoteAOTAutogradCache.backend_override_clsrD   zFtorch._inductor.remote_cache.RemoteDynamoPGOCache.backend_override_clsrE   zJtorch._inductor.fb.remote_cache.FbRemoteAutotuneCache.backend_override_clszQtorch._inductor.fb.remote_cache.FbRemoteBundledAutotuneCache.backend_override_clszItorch._inductor.fb.remote_cache.FbRemoteFxGraphCache.backend_override_clszFtriton.fb.fb_memcache.FbMemcacheRemoteKernelCache.backend_override_clsrC   zMtorch._inductor.fb.remote_cache.FbRemoteAOTAutogradCache.backend_override_clszKtorch._inductor.fb.remote_cache.FbRemoteDynamoPGOCache.backend_override_cls)
rf   r   r   	__enter__r
   r]   rc   enter_contextr   	is_fbcode)r   ctxs     r   r   zPatchCaches.__enter__   sh   \!!"23
 	!!#&S!!"34
 	!!#&Z!!"45
 	!!#&R!!*-
 	!!#&V!!.1
 	!!#&T!!,/
 	!!#&\%%&78C KK%%c*c%%&89C KK%%c*[%%j1C KK%%c*X%%h/C KK%%c*_%%n5C KK%%c*]%%l3C KK%%c*r   c                >    | j                   j                  |||       y r   )r   __exit__)r   exc_type	exc_value	tracebacks       r   r   zPatchCaches.__exit__  s     	Xy)<r   Nr)   )r(   r	   )r   zOptional[type[BaseException]]r   zOptional[BaseException]r   zOptional[TracebackType]r(   r*   )	r.   r/   r0   classmethodr}   r   r7   r   r   r2   r   r   ru   ru      sa    ) ) B B-M^=/= += +	=
 
=r   ru   ) 
__future__r   r   dataclassesrQ   	threadingtypingr   r   r   r   typing_extensionsr   r	   unittest.mockr
   torch._inductorr   torch._inductor.remote_cacher   typesr   	dataclassr   r&   localr=   rf   r]   rx   AbstractContextManagerru   r2   r   r   <module>r      s    #   
  9 9 ,  " ; # !
 !
 !
H	u 	$->9?? ->` ~$S) : l=*33 l=r   