o
    h8                     @  s  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mZ d dl	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZmZ er_ddlmZmZ ddlmZmZ dd	lmZm Z m!Z! G d
d dZ"e" Z#dZ$de%d< d[ddZ&d\ddZ'd]ddZ(edZ)edZ*G d d! d!ee)e*f Z+G d"d# d#e+e,e,f Z-G d$d% d%e+e.e.f Z/G d&d' d'e+e0e0f Z1G d(d) d)ee*e)f e+ee* ee) f Z2ed*Z3G d+d, d,ee3 e2ee3 ee3 f Z4eG d-d. d.Z5G d/d0 d0e+e,e5f Z6G d1d2 d2e2e,e,f e-Z7G d3d4 d4e2e.e.f e/Z8edd5G d6d7 d7Z9G d8d9 d9eZ:ed:d;d<Z;G d=d; d;Z<G d>d? d?eZ=G d@dA dAe<Z>G dBdC dCe<Z?dDe%dE< G dFdD dDe<Z@G dGdH dHe<ZAG dIdJ dJe<ZBG dKdL dLeZCeDee,e0f  ZEG dMdN dNeZFG dOdP dPeZGG dQdR dRe<ZHG dSdT dTe<ZIG dUdV dVe<ZJG dWdX dXe<ZKG dYdZ dZe<ZLe> ZMe? ZNe@ ZOeA ZPeB ZQeH ZReI ZSeJ ZTeK ZUeL ZVdS )^    )annotationsN)	dataclass)contextmanager)castAnyCallable	GeneratorGenericOptionalProtocolTypeTypeVar	TypedDictTYPE_CHECKINGUnion   )CacheManagerRemoteCacheBackend)JitFunctionInfoKernelParam)	ASTSourceLazyDictIRSourcec                   @     e Zd ZdS )EnvN__name__
__module____qualname__ r   r   R/home/www/facesmatcher.com/frenv_anti/lib/python3.10/site-packages/triton/knobs.pyr          r   Tboolpropagate_envkeystrreturnOptional[str]c                 C  s   t | }|d ur| S |S N)osgetenvstrip)r$   resr   r   r    r*      s   
r*   valueNonec                 C  s8   t sd S |d ur|tj| < d S | tjv rtj| = d S d S r(   )r#   r)   environ)r$   r-   r   r   r    setenv!   s   
r0   valr   !Union[None, tuple[Optional[str]]]c                 C  sP   | d u rdS t | }|tu r| rdfS dfS |tu r| fS |tu r&t| fS d S )Nr(   10)typer"   r%   int)r1   tr   r   r    toenv+   s   
r8   SetTypeGetTypec                   @  sj   e Zd Zd'ddZd(ddZd)ddZed*ddZd+ddZd,ddZ	d-ddZ
d.d"d#Zd/d$d%Zd&S )0env_baser$   r%   default%Union[SetType, Callable[[], SetType]]r&   r.   c                   s*   || _ t r | _d S  fdd| _d S )Nc                     s    S r(   r   r   r<   r   r    <lambda>F   s    z#env_base.__init__.<locals>.<lambda>)r$   callabler<   selfr$   r<   r   r>   r    __init__D   s   $zenv_base.__init__objclassType[object]namec                 C  s
   || _ d S r(   )rF   )rB   rD   rF   r   r   r    __set_name__H   s   
zenv_base.__set_name__objOptional[object]Optional[Type[object]]r:   c                 C  sB   |d u rt dt|  d| j|jv r| |j| j S |  S )NzCannot access z on non-instance)AttributeErrorr5   rF   __dict__	transformget)rB   rH   rD   r   r   r    __get__K   s
   zenv_base.__get__
str | Nonec                 C  s
   t | jS r(   )r*   r$   rB   r   r   r    env_valT   s   
zenv_base.env_valc                 C  s(   | j }| |d u r|  S | |S r(   )rR   rM   r<   from_env)rB   envr   r   r    rN   X   s   "zenv_base.getobjectr-   Union[SetType, Env]c                 C  sN   t |tr|j| jd  d S ||j| j< t| }r%t| j|d  d S d S )Nr   )
isinstancer   rL   poprF   r8   r0   r$   )rB   rH   r-   rR   r   r   r    __set__\   s   
zenv_base.__set__c                 C  s   |j | jd  d S r(   )rL   rX   rF   )rB   rH   r   r   r    
__delete__d   s   zenv_base.__delete__r1   r9   c                 C  s
   t t|S r(   )r   r:   rB   r1   r   r   r    rM   g   s   
zenv_base.transformc                 C  s   t  r(   )NotImplementedErrorr[   r   r   r    rS   l   s   zenv_base.from_envN)r$   r%   r<   r=   r&   r.   )rD   rE   rF   r%   r&   r.   )rH   rI   rD   rJ   r&   r:   )r&   rP   )r&   r:   )rH   rU   r-   rV   r&   r.   )rH   rU   r&   r.   )r1   r9   r&   r:   )r1   r%   r&   r9   )r   r   r   rC   rG   rO   propertyrR   rN   rY   rZ   rM   rS   r   r   r   r    r;   B   s    


	



r;   c                   @  s   e Zd ZdddZdS )env_strr1   r%   r&   c                 C     |S r(   r   r[   r   r   r    rS   r      zenv_str.from_envNr1   r%   r&   r%   )r   r   r   rS   r   r   r   r    r^   p       r^   c                      *   e Zd Zdd fdd	ZdddZ  ZS )env_boolFr$   r%   r<   Union[bool, Callable[[], bool]]r&   r.   c                      t  || d S r(   superrC   rA   	__class__r   r    rC   x      zenv_bool.__init__r1   r"   c                 C  s   |  dv S )N)r3   trueyesony)lowerr[   r   r   r    rS   {   s   zenv_bool.from_env)F)r$   r%   r<   re   r&   r.   )r1   r%   r&   r"   r   r   r   rC   rS   __classcell__r   r   ri   r    rd   v       rd   c                      rc   )env_intr   r$   r%   r<   Union[int, Callable[[], int]]r&   r.   c                   rf   r(   rg   rA   ri   r   r    rC      rk   zenv_int.__init__r1   r6   c              
   C  s>   zt |W S  ty } ztd| j d| d|d }~ww )NzUnable to use =z: expected int)r6   
ValueErrorRuntimeErrorr$   )rB   r1   excr   r   r    rS      s   
zenv_int.from_env)r   )r$   r%   r<   ru   r&   r.   )r1   r%   r&   r6   rq   r   r   ri   r    rt      rs   rt   c                      s   e Zd Zd fddZ  ZS )env_opt_baser$   r%   r&   r.   c                   s   t  |d  d S r(   rg   )rB   r$   ri   r   r    rC      rk   zenv_opt_base.__init__)r$   r%   r&   r.   )r   r   r   rC   rr   r   r   ri   r    rz      s    rz   	ClassTypec                      s(   e Zd Zd fddZdd
dZ  ZS )	env_classr$   r%   r5   r&   r.   c                   s   t  | || _d S r(   )rh   rC   r5   )rB   r$   r5   ri   r   r    rC      s   
zenv_class.__init__r1   Type[ClassType]c                   s   | dd}t|dkrtd j d| dtt|d |d }t fdd	| D sAtd
| d j d j	 dt
tt |S )N:r      zUnable to read z: 'z ' isn't of the form MODULE:CLASSr   c                 3  s    | ]	}|j  jkV  qd S r(   )r   r5   ).0crQ   r   r    	<genexpr>   s    z%env_class.from_env.<locals>.<genexpr>zUnable to use 'z' from z: not of type '')splitlenrx   r$   getattr	importlibimport_moduleanymror5   r   r   r{   )rB   r1   compsclsr   rQ   r    rS      s    zenv_class.from_env)r$   r%   r5   r%   r&   r.   )r1   r%   r&   r}   rq   r   r   ri   r    r|      s    r|   c                   @  s,   e Zd ZU ded< ded< ed	ddZdS )

NvidiaToolr%   pathversionr&   Optional[NvidiaTool]c                 C  sr   z-t j| dgt jd}|d u rW d S tjd|dtjd}|d u r%W d S t| |dW S  t j	y8   Y d S w )Nz	--version)stderrz.*release (\d+\.\d+).*zutf-8)flagsr   )

subprocesscheck_outputSTDOUTresearchdecode	MULTILINEr   groupCalledProcessError)r   resultr   r   r   r    	from_path   s   zNvidiaTool.from_pathN)r   r%   r&   r   )r   r   r   __annotations__staticmethodr   r   r   r   r    r      s
   
 r   c                      s2   e Zd Zd fddZdd	d
ZdddZ  ZS )env_nvidia_toolbinaryr%   r&   r.   c                   s:   |t d7 }| _t d|  d fdd d S )NEXEZTRITON_Z_PATHc                     s   t jt jtddd jS )Nbackendsnvidiabin)r)   r   joindirname__file__r   r   rQ   r   r    r?      s    
z*env_nvidia_tool.__init__.<locals>.<lambda>)	sysconfigget_config_varr   rh   rC   upper)rB   r   ri   rQ   r    rC      s   &zenv_nvidia_tool.__init__r   r   c                 C  sP   ||   g}|D ]}|rt|tjsqt| }r|  S qtd| j )NzCannot find )r<   r)   accessX_OKr   r   rx   r   )rB   r   pathsZtoolr   r   r    rM      s   zenv_nvidia_tool.transformr1   c                 C  r_   r(   r   r[   r   r   r    rS      r`   zenv_nvidia_tool.from_env)r   r%   r&   r.   )r   r%   r&   r   ra   )r   r   r   rC   rM   rS   rr   r   r   ri   r    r      s    
r   c                   @  r   )env_opt_strNr   r   r   r   r    r      r!   r   c                   @  r   )env_opt_boolNr   r   r   r   r    r      r!   r   )frozenc                   @  sF   e Zd ZU dZded< ded< ded< eddd	Zedd
dZdS )CompileTimeszm
    Model holding timing information for an invocation of the compiler.

    All times in microseconds.
    r6   ir_initializationzlist[tuple[str, int]]lowering_stagesstore_resultsr&   c                 C  s   t dd | jD S )Nc                 s  s    | ]}|d  V  qdS )r   Nr   )r   Zstager   r   r    r      s    z.CompileTimes.total_lowering.<locals>.<genexpr>)sumr   rQ   r   r   r    total_lowering   s   zCompileTimes.total_loweringc                 C  s   | j | j | j S r(   )r   r   r   rQ   r   r   r    total   s   zCompileTimes.totalN)r&   r6   )r   r   r   __doc__r   r]   r   r   r   r   r   r    r      s   
 r   c                   @     e Zd ZdddZdS )CompilationListenersrcUnion[ASTSource, IRSource]metadatadict[str, Any]metadata_groupdict[str, str]timesr   	cache_hitr"   r&   r.   c                C     d S r(   r   )rB   r   r   r   r   r   r   r   r    __call__      zCompilationListener.__call__N)r   r   r   r   r   r   r   r   r   r"   r&   r.   r   r   r   r   r   r   r   r    r      rb   r   
knobs_type
base_knobs)boundc                   @  sJ   e Zd ZedddZedddZdd
dZdddZedddZ	dS )r   r&   dict[str, env_base]c                 C  s   dd t | j D S )Nc                 S  s    i | ]\}}t |tr||qS r   )rW   r;   )r   kvr   r   r    
<dictcomp>  s    z/base_knobs.knob_descriptors.<locals>.<dictcomp>)r5   rL   itemsrQ   r   r   r    knob_descriptors
  s   zbase_knobs.knob_descriptorsr   c                   s    fdd j  D S )Nc                   s   i | ]}|t  |qS r   )r   )r   r   rQ   r   r    r         z$base_knobs.knobs.<locals>.<dictcomp>)r   keysrQ   r   rQ   r    knobs  s   zbase_knobs.knobsrB   r   c                 C  s   t |  }|j| j |S r(   )r5   rL   update)rB   r,   r   r   r    copy  s   
zbase_knobs.copyc                 C  s   | j  D ]}t| | q| S r(   )r   r   delattr)rB   knobr   r   r    reset  s   zbase_knobs.resetGenerator[None, None, None]c              
   c  s    z<dd | j  D }t| j}d V  W | j  | j| | D ]\}}|d ur2|tj|< q$|tjv r;tj|= q$d S | j  | j| | D ]\}}|d ur[|tj|< qM|tjv rdtj|= qMw )Nc                 S  s   i | ]}|j |jqS r   )r$   rR   )r   r   r   r   r    r   $  s    z$base_knobs.scope.<locals>.<dictcomp>)	r   valuesdictrL   clearr   r   r)   r/   )rB   Zinitial_envorigr   r   r   r   r    scope!  s.   




zbase_knobs.scopeN)r&   r   )r&   r   )rB   r   r&   r   )r&   r   )
r   r   r   r]   r   r   r   r   r   r   r   r   r   r    r     s    

c                   @  s   e Zd Zdd
dZdS )	BuildImplrF   r%   r   srcdirlibrary_dirs	list[str]include_dirs	librariesr&   c                C  r   r(   r   )rB   rF   r   r   r   r   r   r   r   r    r   4  r   zBuildImpl.__call__N)rF   r%   r   r%   r   r%   r   r   r   r   r   r   r&   r%   r   r   r   r   r    r   2  rb   r   c                   @  s\   e Zd ZU dZedZded< edZded< edZded< d	Z	d
ed< e
dddZd	S )build_knobsz<Configuration controlling how the native compiler is invokedCCr   ccZTRITON_CUDACRT_PATHcudacrt_pathZTRITON_CUDART_PATHcudart_pathNzOptional[BuildImpl]implr&   set[str]c                 C  s   dd | j | jfD S )Nc                 S  s   h | ]}|d ur|qS r(   r   )r   r   r   r   r    	<setcomp>D  r   z+build_knobs.backend_dirs.<locals>.<setcomp>)r   r   rQ   r   r   r    backend_dirsB  s   zbuild_knobs.backend_dirs)r&   r   )r   r   r   r   r   r   r   r   r   r   r]   r   r   r   r   r    r   9  s   
 r   c                   @  sD   e Zd ZU eddZded< eddZded< edd	Zd
ed< dS )redis_knobsZTRITON_REDIS_KEY_FORMATztriton:{key}:{filename}r^   
key_formatZTRITON_REDIS_HOST	localhosthostZTRITON_REDIS_PORTi  rt   portN)	r   r   r   r^   r   r   r   rt   r   r   r   r   r    r   G  s   
 r   cache_knobscachec                   @  s   e Zd ZU eddd Zded< eddd Zded< ed	d
d Zded< eddd Zded< e	ddZ
ded< e	ddZded< dddZdS )r   ZTRITON_HOMEc                   C  s   t jdS )Nz~/)r)   r   
expanduserr   r   r   r    r?   Q  s    zcache_knobs.<lambda>r^   home_dirZTRITON_DUMP_DIRc                   C  
   t dS )Ndumpr   get_triton_dirr   r   r   r    r?   S     
 dump_dirZTRITON_OVERRIDE_DIRc                   C  r   )Noverrider   r   r   r   r    r?   T  r   override_dirZTRITON_CACHE_DIRc                   C  r   )Nr   r   r   r   r   r    r?   U  r   dirZTRITON_CACHE_MANAGERr   zenv_class[CacheManager]manager_classZTRITON_REMOTE_CACHE_BACKENDr   zenv_class[RemoteCacheBackend]remote_manager_classr   r%   r&   c                 C  s   t j| jd|S )Nz.triton)r)   r   r   r   )rB   r   r   r   r    r   Z  rk   zcache_knobs.get_triton_dirN)r   r%   r&   r%   )r   r   r   r^   r   r   r   r   r   r|   r   r  r   r   r   r   r    r   P  s   
 c                   @  s   e Zd ZU edZded< edZded< edZded< edZded	< e	d
Z
ded< edZded< edZded< edZded< edZded< dZded< dS )compilation_knobsZTRITON_KERNEL_OVERRIDErd   r   ZTRITON_KERNEL_DUMPdump_irZTRITON_STORE_BINARY_ONLYstore_binary_onlyZTRITON_ALWAYS_COMPILEalways_compileZ
USE_IR_LOCr   
use_ir_locZTRITON_ENABLE_ASANenable_asanZTRITON_DISABLE_LINE_INFOdisable_line_infoZTRITON_FRONT_END_DEBUGGINGfront_end_debuggingZ"TRITON_ALLOW_NON_CONSTEXPR_GLOBALSallow_non_constexpr_globalsNz Union[CompilationListener, None]listener)r   r   r   rd   r   r   r  r  r  r   r  r  r  r	  r
  r  r   r   r   r    r  ^  s   
 r  c                   @  s.   e Zd ZU edZded< edZded< dS )autotuning_knobsZTRITON_CACHE_AUTOTUNINGrd   r   ZTRITON_PRINT_AUTOTUNINGprintN)r   r   r   rd   r   r   r  r   r   r   r    r  l  s   
 r  c                   @  s   e Zd ZdddZdS )	
LaunchHookr   r   r&   r.   c                 C  r   r(   r   )rB   r   r   r   r    r   s  r`   zLaunchHook.__call__N)r   r   r&   r.   r   r   r   r   r    r  q  rb   r  c                   @  sv   e Zd ZU ded< ded< ded< ded< ded	< ded
< ded< ded< ded< ded< ded< ded< ded< dS )JITHookCompileInfor%   r$   zdict[KernelParam, str]	signaturer6   Zdevicer.   	constantsZ	num_warpsZnum_ctasZ
num_stagesr"   Zenable_fp_fusionZlaunch_cooperative_gridztuple[tuple[str, str], ...]Zextern_libsz-list[dict[tuple[int, ...], list[KernelAttr]]]ZconfigsZspecialization_dataZ	is_warmupN)r   r   r   r   r   r   r   r    r  |  s   
 r  c                   @  r   )JITHookr$   r%   reprfnr   compiler  is_manual_warmupr"   already_compiledr&   Optional[bool]c                C  r   r(   r   )rB   r$   r  r  r  r  r  r   r   r    r     r   zJITHook.__call__N)r$   r%   r  r%   r  r   r  r  r  r"   r  r"   r&   r  r   r   r   r   r    r    rb   r  c                   @  sn   e Zd ZU edZded< edZded< edZded< d	Z	d
ed< d	Z
d
ed< d	Zded< d	Zded< d	S )runtime_knobsZTRITON_INTERPRETrd   	interpretZTRITON_DEBUGdebugZTRITON_OVERRIDE_ARCHr   override_archNzOptional[LaunchHook]launch_enter_hooklaunch_exit_hookzOptional[JITHook]jit_cache_hookjit_post_compile_hook)r   r   r   rd   r  r   r  r   r  r  r  r  r   r   r   r   r    r    s   
 r  c                   @  s0   e Zd ZU edZded< eddZded< dS )	language_knobsZTRITON_F32_DEFAULTr   fp32_defaultZTRITON_DEFAULT_FP_FUSIONTrd   default_fp_fusionN)r   r   r   r   r"  r   rd   r#  r   r   r   r    r!    s   
 r!  c                   @  s   e Zd ZU edZded< edZded< edZded< edZ	ded< edZ
ded	< ed
Zded< edZded< edZded< dS )nvidia_knobs	cuobjdumpr   nvdisasmptxasZNVPTX_ENABLE_DUMPrd   
dump_nvptxZDISABLE_PTXAS_OPTdisable_ptxas_optZTRITON_MOCK_PTX_VERSIONr   mock_ptx_versionZTRITON_LIBDEVICE_PATHlibdevice_pathZTRITON_LIBCUDA_PATHlibcuda_pathN)r   r   r   r   r%  r   r&  r'  rd   r(  r)  r   r*  r+  r,  r   r   r   r    r$    s   
 r$  c                   @  s   e Zd ZU edZded< edZded< edZded< ed	Z	ded
< e
dZded< e
dZded< edZded< edZded< edZded< edZded< dS )	amd_knobsZAMDGCN_USE_BUFFER_OPSrd   use_buffer_opsZAMDGCN_ENABLE_DUMPdump_amdgcnZTRITON_LIBHIP_PATHr   libhip_pathZTRITON_HIP_LLD_PATHlld_pathZTRITON_HIP_USE_BLOCK_PINGPONGr   use_block_pingpongZ"TRITON_HIP_USE_IN_THREAD_TRANSPOSEuse_in_thread_transposeZTRITON_HIP_GLOBAL_PREFETCHrt   global_prefetchZTRITON_HIP_LOCAL_PREFETCHlocal_prefetchZTRITON_HIP_USE_ASYNC_COPYuse_async_copyZAMDGCN_SCALARIZE_PACKED_FOPSscalarize_packed_fopsN)r   r   r   rd   r.  r   r/  r   r0  r1  r   r2  r3  rt   r4  r5  r6  r7  r   r   r   r    r-    s   
 r-  c                   @  s   e Zd ZU edZded< dS )proton_knobsZTRITON_CUPTI_LIB_PATHr   	cupti_dirN)r   r   r   r   r9  r   r   r   r   r    r8    s   
 r8  )r$   r%   r&   r'   )r$   r%   r-   r'   r&   r.   )r1   r   r&   r2   )W
__future__r   r   r)   r   r   r   dataclassesr   
contextlibr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   Zruntime.cacher   r   Zruntime.jitr   r   Zcompiler.compilerr   r   r   r   rT   r#   r   r*   r0   r8   r9   r:   r;   r%   r^   r"   rd   r6   rt   rz   r{   r|   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  listZ
KernelAttrr  r  r  r!  r$  r-  r8  buildZredisr   ZcompilationZ
autotuningZruntimelanguager   ZamdZprotonr   r   r   r    <module>   s    8



.	*&!*
