
    |rh8              	         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      Z" e"       Z#dZ$de%d<   dOdZ&dPdZ'dQdZ( ed      Z) ed      Z* G d dee)e*f         Z+ G d de+e,e,f         Z- G d de+e.e.f         Z/ G d de+e0e0f         Z1 G d dee*e)f   e+ee*   ee)   f         Z2 ed      Z3 G d d ee3   e2ee3   ee3   f         Z4e G d! d"             Z5 G d# d$e+e,e5f         Z6 G d% d&e2e,e,f   e-      Z7 G d' d(e2e.e.f   e/      Z8 ed)       G d* d+             Z9 G d, d-e      Z: ed.d/0      Z; G d1 d/      Z< G d2 d3e      Z= G d4 d5e<      Z> G d6 d7e<      Z?d8e%d9<    G d: d8e<      Z@ G d; d<e<      ZA G d= d>e<      ZB G d? d@e      ZCeDee,e0f      ZE G dA dBe      ZF G dC dDe      ZG G dE dFe<      ZH G dG dHe<      ZI G dI dJe<      ZJ G dK dLe<      ZK G dM dNe<      ZL e>       ZM e?       ZN e@       ZO eA       ZP eB       ZQ eH       ZR eI       ZS eJ       ZT eK       ZU eL       ZVy)R    )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y)EnvN__name__
__module____qualname__     _/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/triton/knobs.pyr   r          r!   r   Tboolpropagate_envc                T    t        j                  |       }||j                         S |S N)osgetenvstrip)keyress     r"   r)   r)      s$    
))C.C/399;2s2r!   c                    t         sy ||t        j                  | <   y | t        j                  v rt        j                  | = y y r'   )r%   r(   environ)r+   values     r"   setenvr0   !   s7    

3	

	JJsO 
r!   c                ~    | yt        |       }|t        u r| rdfS dfS |t        u r| fS |t        u rt        |       fS y )Nr'   10)typer$   strint)valts     r"   toenvr9   +   sQ    
{S	ADy&&&&CxwCxC|r!   SetTypeGetTypec                  ^    e Zd ZddZddZddZedd       ZddZddZ	ddZ
ddZdd	Zy
)env_basec                N    || _         t              r| _        y fd| _        y )Nc                      S r'   r    )defaults   r"   <lambda>z#env_base.__init__.<locals>.<lambda>F   s    X_ r!   )r+   callabler@   )selfr+   r@   s     `r"   __init__zenv_base.__init__D   s    9A'9JgP_r!   c                    || _         y r'   )name)rC   objclassrF   s      r"   __set_name__zenv_base.__set_name__H   s	    	r!   c                    |t        dt        |        d      | j                  |j                  v r(| j	                  |j                  | j                           S | j                         S )NzCannot access z on non-instance)AttributeErrorr4   rF   __dict__	transformget)rC   objrG   s      r"   __get__zenv_base.__get__K   sX    ; >$t*=M!NOO99$>>#,,tyy"9::88:r!   c                ,    t        | j                        S r'   )r)   r+   rC   s    r"   env_valzenv_base.env_valT   s    dhhr!   c                    | j                   }| j                  || j                               S | j                  |            S r'   )rR   rL   r@   from_env)rC   envs     r"   rM   zenv_base.getX   s5    ll~~dllnTTsASTTr!   c                    t        |t              r'|j                  j                  | j                  d        y ||j                  | j                  <   t        |      x}rt        | j                  |d          y y )Nr   )
isinstancer   rK   poprF   r9   r0   r+   )rC   rN   r/   rR   s       r"   __set__zenv_base.__set__\   s\    eS!LLTYY-&+CLL#,&w&txx, 'r!   c                P    |j                   j                  | j                  d        y r'   )rK   rX   rF   )rC   rN   s     r"   
__delete__zenv_base.__delete__d   s    D)r!   c                "    t        t        |      S r'   )r   r;   rC   r7   s     r"   rL   zenv_base.transformg   s     GS!!r!   c                    t               r'   )NotImplementedErrorr]   s     r"   rT   zenv_base.from_envl   s    !##r!   N)r+   r5   r@   z%Union[SetType, Callable[[], SetType]]returnNone)rG   zType[object]rF   r5   r`   ra   )rN   zOptional[object]rG   zOptional[Type[object]]r`   r;   )r`   z
str | None)r`   r;   )rN   objectr/   zUnion[SetType, Env]r`   ra   )rN   rb   r`   ra   )r7   r:   r`   r;   )r7   r5   r`   r:   )r   r   r   rD   rH   rO   propertyrR   rM   rY   r[   rL   rT   r    r!   r"   r=   r=   B   s@    `    U-*"
$r!   r=   c                      e Zd ZddZy)env_strc                    |S r'   r    r]   s     r"   rT   zenv_str.from_envr       
r!   Nr7   r5   r`   r5   )r   r   r   rT   r    r!   r"   re   re   p   s    r!   re   c                  *     e Zd Zdd fdZddZ xZS )env_boolc                &    t         |   ||       y r'   superrD   rC   r+   r@   	__class__s      r"   rD   zenv_bool.__init__x       g&r!   c                &    |j                         dv S )N)r2   trueyesony)lowerr]   s     r"   rT   zenv_bool.from_env{   s    yy{===r!   )F)r+   r5   r@   zUnion[bool, Callable[[], bool]]r`   ra   )r7   r5   r`   r$   r   r   r   rD   rT   __classcell__ro   s   @r"   rj   rj   v   s    '>r!   rj   c                  *     e Zd Zdd fdZddZ xZS )env_intc                &    t         |   ||       y r'   rl   rn   s      r"   rD   zenv_int.__init__   rp   r!   c                v    	 t        |      S # t        $ r"}t        d| j                   d| d      |d }~ww xY w)NzUnable to use =z: expected int)r6   
ValueErrorRuntimeErrorr+   )rC   r7   excs      r"   rT   zenv_int.from_env   sD    	Ys8O 	Yz3%~NOUXX	Ys   
 	838)r   )r+   r5   r@   zUnion[int, Callable[[], int]]r`   ra   )r7   r5   r`   r6   rw   ry   s   @r"   r{   r{      s    'Yr!   r{   c                        e Zd Zd fdZ xZS )env_opt_basec                &    t         |   |d        y r'   rl   )rC   r+   ro   s     r"   rD   zenv_opt_base.__init__   s    d#r!   )r+   r5   r`   ra   )r   r   r   rD   rx   ry   s   @r"   r   r      s    $ $r!   r   	ClassTypec                  (     e Zd Zd fdZddZ xZS )	env_classc                2    t         |   |       || _        y r'   )rm   rD   r4   )rC   r+   r4   ro   s      r"   rD   zenv_class.__init__   s    	r!   c           	         |j                  dd      }t        |      dk7  rt        d j                   d| d      t	        t        j                  |d         |d         }t         fd|j                         D              s)t        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  P   K   | ]  }|j                   j                  k(    y wr'   )r   r4   ).0crC   s     r"   	<genexpr>z%env_class.from_env.<locals>.<genexpr>   s     ?AJJ$))+?s   #&zUnable to use 'z' from z: not of type '')splitlenr   r+   getattr	importlibimport_moduleanymror4   r   r   r   )rC   r7   compsclss   `   r"   rT   zenv_class.from_env   s    		#q!u:?
#cUBbcddi--eAh7qB?SWWY?@WTXXJoVZV_V_U``abccDOS))r!   )r+   r5   r4   r5   r`   ra   )r7   r5   r`   zType[ClassType]rw   ry   s   @r"   r   r      s    
	*r!   r   c                  4    e Zd ZU ded<   ded<   edd       Zy)
NvidiaToolr5   pathversionc                0   	 t        j                  | dgt         j                        }|y t        j                  d|j                  d      t        j                        }|y t        | |j                  d            S # t         j                  $ r Y y w xY w)Nz	--version)stderrz.*release (\d+\.\d+).*zutf-8)flagsr   )

subprocesscheck_outputSTDOUTresearchdecode	MULTILINEr   groupCalledProcessError)r   resultr   s      r"   	from_pathzNvidiaTool.from_path   s    		,,dK-@IZIZ[F~ii 96==;QY[YeYefGdGMM!$455,, 		s   )A? 7A? $A? ?BBN)r   r5   r`   zOptional[NvidiaTool])r   r   r   __annotations__staticmethodr   r    r!   r"   r   r      s    
IL
 
r!   r   c                  0     e Zd Zd fdZddZddZ xZS )env_nvidia_toolc                     |t        j                  d      z  }| _        t           d|j                          d fd       y )NEXETRITON__PATHc                     t         j                  j                  t         j                  j                  t              ddd j
                        S )Nbackendsnvidiabin)r(   r   joindirname__file__binaryrQ   s   r"   rA   z*env_nvidia_tool.__init__.<locals>.<lambda>   s5    "'',,GGOOH%KKC
 r!   )	sysconfigget_config_varr   rm   rD   upper)rC   r   ro   s   ` r"   rD   zenv_nvidia_tool.__init__   sC    )**51176<<>"2%8 ;
 	r!   c                    || j                         g}|D ]D  }|r$t        j                  |t        j                        s*t        j                  |      x}sB|c S  t        d| j                         )NzCannot find )r@   r(   accessX_OKr   r   r   r   )rC   r   pathstools       r"   rL   zenv_nvidia_tool.transform   sr     LLN	
  	Dryyrww7!++D11t1		 \$++788r!   c                    |S r'   r    r]   s     r"   rT   zenv_nvidia_tool.from_env   rg   r!   )r   r5   r`   ra   )r   r5   r`   r   rh   )r   r   r   rD   rL   rT   rx   ry   s   @r"   r   r      s    	9r!   r   c                      e Zd Zy)env_opt_strNr   r    r!   r"   r   r      r#   r!   r   c                      e Zd Zy)env_opt_boolNr   r    r!   r"   r   r      r#   r!   r   )frozenc                  T    e Zd ZU dZded<   ded<   ded<   ed
d       Zed
d       Zy	)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_resultsc                :    t        d | j                  D              S )Nc              3  &   K   | ]	  }|d      yw)r   Nr    )r   stages     r"   r   z.CompileTimes.total_lowering.<locals>.<genexpr>   s     ?E!H?s   )sumr   rQ   s    r"   total_loweringzCompileTimes.total_lowering   s    ?$*>*>?@@r!   c                N    | j                   | j                  z   | j                  z   S r'   )r   r   r   rQ   s    r"   totalzCompileTimes.total   s$    %%(;(;;d>P>PPPr!   N)r`   r6   )r   r   r   __doc__r   rc   r   r   r    r!   r"   r   r      sI      +* A A Q Qr!   r   c                       e Zd Z	 	 	 	 	 	 ddZy)CompilationListenerc                    y r'   r    )rC   srcmetadatametadata_grouptimes	cache_hits         r"   __call__zCompilationListener.__call__       r!   N)r   zUnion[ASTSource, IRSource]r   dict[str, Any]r   zdict[str, str]r   r   r   r$   r`   ra   r   r   r   r   r    r!   r"   r   r      s    $15:>r!   r   
knobs_type
base_knobs)boundc                  R    e Zd Zedd       Zedd       Zd	dZd	dZed
d       Z	y)r   c                    t        |       j                  j                         D ci c]  \  }}t        |t              r|| c}}S c c}}w r'   )r4   rK   itemsrW   r=   )rC   kvs      r"   knob_descriptorszbase_knobs.knob_descriptors
  sK    
 T
++113
 1!X& qD
 	
 
s   Ac                r    | j                   j                         D ci c]  }|t        | |       c}S c c}w r'   )r   keysr   )rC   r   s     r"   knobszbase_knobs.knobs  s1    -1-B-B-G-G-IJ74##JJJs   4c                p     t        |              }|j                  j                  | j                         |S r'   )r4   rK   update)rC   r,   s     r"   copyzbase_knobs.copy  s*    d4jlDMM*
r!   c                \    | j                   j                         D ]  }t        | |        | S r'   )r   r   delattr)rC   knobs     r"   resetzbase_knobs.reset  s/    ))..0 	 DD$	 r!   c              #    K   	 | j                   j                         D ci c]  }|j                  |j                   }}t	        | j
                        }d  | j
                  j                          | j
                  j                  |       |j                         D ]?  \  }}||t        j                  |<   |t        j                  v s/t        j                  |= A y c c}w # | j
                  j                          | j
                  j                         j                         D ]?  \  }}||t        j                  |<   |t        j                  v s/t        j                  |= A w xY wwr'   )r   valuesr+   rR   dictrK   clearr   r   r(   r.   )rC   r   initial_envorigr   r   s         r"   scopezbase_knobs.scope!  s     	&>B>S>S>Z>Z>\]d488T\\1]K]&DMM!MM  &#))+ &1=$%BJJqM"**_

1	& ^ MM!MM  &#))+ &1=$%BJJqM"**_

1	&s:   E2C& C!C& A3E2E2!C& &A4E/E//E2N)r`   zdict[str, env_base])r`   r   )rC   r   r`   r   )r`   zGenerator[None, None, None])
r   r   r   rc   r   r   r   r   r   r   r    r!   r"   r   r     sH    
 
 K K

 & &r!   c                      e Zd Z	 	 	 	 ddZy)	BuildImplc                    y r'   r    )rC   rF   r   srcdirlibrary_dirsinclude_dirs	librariess          r"   r   zBuildImpl.__call__4  r   r!   N)rF   r5   r   r5   r   r5   r  	list[str]r  r  r  r  r`   r5   r   r    r!   r"   r   r   2  s    %-0r!   r   c                      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       Zy	)build_knobsz<Configuration controlling how the native compiler is invokedCCr   ccTRITON_CUDACRT_PATHcudacrt_pathTRITON_CUDART_PATHcudart_pathNzOptional[BuildImpl]implc                ^    | j                   | j                  fD ch c]  }||	 c}S c c}w r'   )r
  r  )rC   r   s     r"   backend_dirszbuild_knobs.backend_dirsB  s,    "&"3"3T5E5E!F[$JZ[[[s   **)r`   zset[str])r   r   r   r   r   r  r   r
  r  r  rc   r  r    r!   r"   r  r  9  sS    F!$'B' +,A BL+B*+?@K@ $D
$\ \r!   r  c                  b    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<   y)redis_knobsTRITON_REDIS_KEY_FORMATztriton:{key}:{filename}re   
key_formatTRITON_REDIS_HOST	localhosthostTRITON_REDIS_PORTi  r{   portN)	r   r   r   re   r  r   r  r{   r  r    r!   r"   r  r  G  s9    !";=VWJW/=D'=/6D'6r!   r  cache_knobscachec                      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
<    edd       Zded<    e	dd      Z
ded<    e	dd      Zded<   ddZy)r  TRITON_HOMEc                 @    t         j                  j                  d      S )Nz~/)r(   r   
expanduserr    r!   r"   rA   zcache_knobs.<lambda>Q  s    rww7I7I$7O r!   re   home_dirTRITON_DUMP_DIRc                 ,    t         j                  d      S )Ndumpr  get_triton_dirr    r!   r"   rA   zcache_knobs.<lambda>S  s    5;O;OPV;W r!   dump_dirTRITON_OVERRIDE_DIRc                 ,    t         j                  d      S )Noverrider#  r    r!   r"   rA   zcache_knobs.<lambda>T  s    5CWCWXbCc r!   override_dirTRITON_CACHE_DIRc                 ,    t         j                  d      S )Nr  r#  r    r!   r"   rA   zcache_knobs.<lambda>U  s    u7K7KG7T r!   dirTRITON_CACHE_MANAGERr   zenv_class[CacheManager]manager_classTRITON_REMOTE_CACHE_BACKENDr   zenv_class[RemoteCacheBackend]remote_manager_classc                X    t         j                  j                  | j                  d|      S )Nz.triton)r(   r   r   r  )rC   r   s     r"   r$  zcache_knobs.get_triton_dirZ  s    ww||DMM9g>>r!   N)r   r5   r`   r5   )r   r   r   re   r  r   r%  r)  r,  r   r.  r0  r$  r    r!   r"   r  r  P  sz    /OPHgP 13WXHgX#$9;cdL'd-/TUCU-67M~-^M*^:CDacw:x7x?r!   c                     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<   y)compilation_knobsTRITON_KERNEL_OVERRIDErj   r(  TRITON_KERNEL_DUMPdump_irTRITON_STORE_BINARY_ONLYstore_binary_onlyTRITON_ALWAYS_COMPILEalways_compile
USE_IR_LOCr   
use_ir_locTRITON_ENABLE_ASANenable_asanTRITON_DISABLE_LINE_INFOdisable_line_infoTRITON_FRONT_END_DEBUGGINGfront_end_debugging"TRITON_ALLOW_NON_CONSTEXPR_GLOBALSallow_non_constexpr_globalsNz Union[CompilationListener, None]listener)r   r   r   rj   r(  r   r6  r8  r:  r   r<  r>  r@  rB  rD  rE  r    r!   r"   r3  r3  ^  s    !":;Hh; !56GX6"*+E"FxF'(?@NH@),7J7$%9:K:"*+E"FxF$,-I$JJ,45Y,ZZ15H.5r!   r3  c                  B    e Zd ZU  ed      Zded<    ed      Zded<   y)autotuning_knobsTRITON_CACHE_AUTOTUNINGrj   r  TRITON_PRINT_AUTOTUNINGprintN)r   r   r   rj   r  r   rJ  r    r!   r"   rG  rG  l  s"    89E8989E89r!   rG  c                      e Zd ZddZy)
LaunchHookc                     y r'   r    )rC   r   s     r"   r   zLaunchHook.__call__s  s    r!   N)r   r   r`   ra   r   r    r!   r"   rL  rL  q  s    r!   rL  c                      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<   y)JITHookCompileInfor5   r+   zdict[KernelParam, str]	signaturer6   devicera   	constants	num_warpsnum_ctas
num_stagesr$   enable_fp_fusionlaunch_cooperative_gridztuple[tuple[str, str], ...]extern_libsz-list[dict[tuple[int, ...], list[KernelAttr]]]configsspecialization_data	is_warmupN)r   r   r   r   r    r!   r"   rO  rO  |  sI    	H%%KONMO!!,,::Or!   rO  c                      e Zd Z	 	 	 	 ddZy)JITHookc                    y r'   r    )rC   r+   reprfncompileis_manual_warmupalready_compileds          r"   r   zJITHook.__call__  r   r!   N)r+   r5   r_  r5   r`  r   ra  rO  rb  r$   rc  r$   r`   zOptional[bool]r   r    r!   r"   r]  r]    s    #',:r!   r]  c                      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<   y	)runtime_knobsTRITON_INTERPRETrj   	interpretTRITON_DEBUGdebug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   rj   rg  r   ri  r   rk  rl  rm  rn  ro  r    r!   r"   re  re    sd    "#56Ix6~.E8.!,-C!DM;D.2+2-1*1 )-N%, 04,3r!   re  c                  D    e Zd ZU  ed      Zded<    edd      Zded<   y)	language_knobsTRITON_F32_DEFAULTr   fp32_defaultTRITON_DEFAULT_FP_FUSIONTrj   default_fp_fusionN)r   r   r   r   rs  r   rj   ru  r    r!   r"   rq  rq    s%     +,@ AL+A"*+Et"LxLr!   rq  c                      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<   y)nvidia_knobs	cuobjdumpr   nvdisasmptxasNVPTX_ENABLE_DUMPrj   
dump_nvptxDISABLE_PTXAS_OPTdisable_ptxas_optTRITON_MOCK_PTX_VERSIONr   mock_ptx_versionTRITON_LIBDEVICE_PATHlibdevice_pathTRITON_LIBCUDA_PATHlibcuda_pathN)r   r   r   r   rx  r   ry  rz  rj   r|  r~  r   r  r  r  r    r!   r"   rw  rw    s    !0!=I= /
 ;Ho;,W5E?5#$78J8"*+>"?x?$/0I$JkJ"-.E"FNKF +,A BL+Br!   rw  c                     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<   y)	amd_knobsAMDGCN_USE_BUFFER_OPSrj   use_buffer_opsAMDGCN_ENABLE_DUMPdump_amdgcnTRITON_LIBHIP_PATHr   libhip_pathTRITON_HIP_LLD_PATHlld_pathTRITON_HIP_USE_BLOCK_PINGPONGr   use_block_pingpong"TRITON_HIP_USE_IN_THREAD_TRANSPOSEuse_in_thread_transposeTRITON_HIP_GLOBAL_PREFETCHr{   global_prefetchTRITON_HIP_LOCAL_PREFETCHlocal_prefetchTRITON_HIP_USE_ASYNC_COPYuse_async_copyAMDGCN_SCALARIZE_PACKED_FOPSscalarize_packed_fopsN)r   r   r   rj   r  r   r  r   r  r  r   r  r  r{   r  r  r  r  r    r!   r"   r  r    s    '(?@NH@$%9:K:*+?@K@'(=>Hk> (44S'TT,89],^\^&'CDOWD%&ABNGB'(CDNHD&./M&N8Nr!   r  c                  (    e Zd ZU  ed      Zded<   y)proton_knobsTRITON_CUPTI_LIB_PATHr   	cupti_dirN)r   r   r   r   r  r   r    r!   r"   r  r    s    ()@AI{Ar!   r  )r+   r5   r`   Optional[str])r+   r5   r/   r  r`   ra   )r7   r   r`   z!Union[None, tuple[Optional[str]]])W
__future__r   r   r(   r   r   r   dataclassesr   
contextlibr   typingr   r   r   r	   r
   r   r   r   r   r   r   r   runtime.cacher   r   runtime.jitr   r   compiler.compilerr   r   r   r   rU   r%   r   r)   r0   r9   r:   r;   r=   r5   re   r$   rj   r6   r{   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r3  rG  rL  list
KernelAttrrO  r]  re  rq  rw  r  r  buildredisr  compilation
autotuningruntimelanguager   amdprotonr    r!   r"   <module>r     s   "  	 	   ! % ~ ~ ~ ~?9@@	 	 
et 3
& )

)
+$ww'( +$\hsCx  >xd
# >	YhsCx  	Y$77G+,hx7H(SZJ[7[.\ $ K 	*	"Li$y/1Q$R *&   $hsJ/ B	,sCx(' 		<d
+X 	 $Q Q Q4(  \6
'& '&T \* \7* 7  ?* ?6
 6:z :
  %S/"
  h 4J 4MZ M

C: 
CO
 O B: B 	!

/	k	r!   