
    9i{R                       S SK Jr  S SKrS SKrSSKJrJr  SSKJr  SSKJ	r	  SSKJ
r
Jr  SSKJrJr  SS	KJr  SS
KJrJrJrJr  SSKJr  SSKJr  S SKJr  S SKrS SKrS SKrS SKrS SK r Sr!S\!0r"Sr#S\#0r$S r% " S S5      r& " S S5      r'\RP                  " 5       S 5       r)S r*S$S jr+ " S S5      r,S%S jr-S&S jr. " S S5      r/ " S S \05      r1S! r2 " S" S#5      r3g)'    )annotationsN   )get_cache_invalidating_env_varsir)backends)Language)BaseBackend	GPUTarget)__version__knobs)OutOfResources)get_cache_managerget_dump_managerget_override_managerget_cache_key)driver)get_sass)Pathz=\.(?:visible|extern)\s+\.(?:entry|func)\s+(\w+)\s*\(([^)]*)\)ptxz\.param\s+\.(\w+)c                    [         R                  " SU 5      n[         R                  " SU 5      nUb  g[         R                  " SSU 5      n Ub  S[        UR	                  S5      5      -   $ U $ )Nz!tt\.ptr<([^,]+)ztt.nv_tma_desc = 1	nvTmaDescz {[^}]+} *   )researchsubconvert_type_reprgroup)xmatchtmas      X/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/triton/compiler/compiler.pyr   r   '   sd     II)1-E
)))1
-C

{B"A&u{{1~666H    c                  8    \ rS rSrSS	S jjrS rS
S jrS rSrg)	ASTSource4   Nc                .   Xl         [        R                  U l        SU l        UR
                  U l        X l        [        5       U l	        Ubq  UR                  5        H]  u  pV[        U[        5      (       a  UR                  R                  U5      4OUn[        U[        5      (       d   eX`R                  U'   M_     U=(       d
    [        5       U l        U R                  R#                  5        H#  n[        U[        5      (       a  M  [%        S5      e   g )NttirzSignature keys must be string)fnr   TRITONlanguageext__name__name	signaturedict	constantsitems
isinstancestr	arg_namesindextupleattrskeys	TypeError)selfr*   r0   
constexprsr9   kvs          r#   __init__ASTSource.__init__6   s     KK	"!"((*1;As1C1CR\\''*-!!U++++$%q! + _df
$$&Aa%% ?@@ 'r$   c           	        [        U R                  R                  5       5       VVs/ s H  u  pUPM	     nnnS nSR                  [        U R                  R                  5       5       VVs/ s H  u  pU" U5      PM     snn5      nU R
                  R                   S[        U R                  5       SU SU 3n[        R                  " UR                  S5      5      R                  5       $ s  snnf s  snnf )Nc                R    [        U S5      (       a  U R                  $ [        U 5      $ )N	cache_key)hasattrrD   r5   )r    s    r#   <lambda> ASTSource.hash.<locals>.<lambda>I   s     71k+B+BAKKNANr$   -utf-8)sortedr0   r3   joinr2   r*   rD   r5   r9   hashlibsha256encode	hexdigest)r<   r>   r?   
sorted_sigget_keyconstants_keykeys          r#   hashASTSource.hashG   s    $*4>>+?+?+A$BC$BDAa$B
CN@T@T@V9W!X9W'!*9W!XY""#1S_$5Qzl!M?S~~cjj12<<>>	 D!Xs   C/,C5
c           	     4    SSK Jn  U" U R                  XX#US9$ )Nr   )ast_to_ttir)contextoptionscodegen_fns
module_map)code_generatorrW   r*   )r<   targetrY   rZ   r[   rX   rW   s          r#   make_irASTSource.make_irN   s    /477D7&02 	2r$   c                    [        5       $ N)r1   r<   s    r#   parse_optionsASTSource.parse_optionsS   s	    vr$   )r9   r2   r-   r*   r,   r/   r0   )NNreturnNoner]   r
   	r.   
__module____qualname____firstlineno__r@   rT   r^   rc   __static_attributes__ r$   r#   r&   r&   4   s    A"?2
r$   r&   c                  0    \ rS rSrS rS rSS jrS rSrg)	IRSourceW   c                   Xl         [        U5      nUR                  SS  U l        [        R
                  U l        UR                  5       U l        [        R                  " U5        UR                  U5        U R                  S:X  a  [        R                  " [        U R                     U R                  [        R                  5      nUR                  S5      U l        UR                  S5      n[        R"                  " [$        U R                     U5      n['        U5       VVs0 s H  u  pxU[)        U5      _M     snnU l        g [        R,                  " U R                   U5      U l        U R.                  R1                  5       n	SU	-   U l        U R.                  R3                  U	5      n
U R.                  R5                  U
5      n['        U5       VVs0 s H  u  pxXx_M	     snnU l        g s  snnf s  snnf )Nr   r   r   @)pathr   suffixr-   r   r+   r,   	read_textsrcr   load_dialectsr   r   prototype_pattern	MULTILINEr   r/   findallarg_type_pattern	enumerater   r0   parse_mlir_modulemoduleget_entry_func_nameget_functionget_function_signature)r<   rt   rX   backendr!   r0   typesr>   tyfn_namefuncOpfunc_tys               r#   r@   IRSource.__init__Y   sr   	Dz;;qr? >>#
!g& 88uII/9488R\\READIAIJJ/99EEDMeDTUDT51a!22!66DTUDN..tyy'BDKkk557GgDI[[--g6Fkk88@G1:71CD1Cae1CDDN V Es   %G-G3c                |    [         R                  " U R                  R                  S5      5      R	                  5       $ )NrI   )rL   rM   rw   rN   rO   rb   s    r#   rT   IRSource.hashr   s'    ~~dhhoog67AACCr$   c                :    XPR                   l        U R                   $ ra   )r   rX   )r<   r]   rY   rZ   r[   rX   s         r#   r^   IRSource.make_iru   s    %{{r$   c                    U R                   S:X  a)  U R                  R                  S5      nUc   S5       eSU0$ [        5       $ )Nttgirzttg.num-warpsz'Unable to parse ttg.num-warps attribute	num_warps)r-   r   get_int_attrr1   )r<   r   s     r#   rc   IRSource.parse_optionsy   sF    88w00AI(S*SS(++vr$   )r-   r,   r   r/   rt   r0   rw   Nrh   ri   rn   r$   r#   rp   rp   W   s    E2Dr$   rp   c                Z    [         R                  R                  R                  U 5      S   $ )Nmax_shared_mem)r   activeutilsget_device_properties)devices    r#   r   r      s#    ==44V<=MNNr$   c                    US:X  d  US:X  a  [         R                  " X5      nX#l        U$ US:X  d  US:X  d  US:X  a  [        U 5      R	                  5       $ US:X  d  US:X  a  [        U 5      R                  5       $ g )Nr)   r   llirr   amdgcncubinhsaco)r   r~   rX   r   rv   
read_bytes)	full_namer-   rX   r   s       r#   parser      st    
f}w%%i9 
f}uxI((**
g~I))++ (r$   c                X  ^ [         R                  R                  (       a  gU R                  b  [	        U R                  5        U R
                  b  [	        U R
                  5        SS/nU Vs/ s H"  o"R                  S[        R                  5      PM$     nnU R                  m/ nTb<  [        U4S jU 5       5      (       d  UR                  T5        TR                  mTb  M<  [        X3SS 5       H  u  pEXTl        M     U(       d  SU l	        gSUS   l        US   U l	        gs  snf )	z
Removes code_generator.py and related files from tracebacks.

These are uninteresting to the user -- "just show me *my* code!"
Nz"/triton/compiler/code_generator.pyz/ast.py/c              3     >#    U  H=  nTR                   R                  R                  R                  U5      (       d  M9  Uv   M?     g 7fra   )tb_framef_codeco_filenameendswith).0ftbs     r#   	<genexpr>#filter_traceback.<locals>.<genexpr>   s1     Vi2;;+=+=+I+I+R+RST+U11is
   8A	Ar   r   )r   compilationfront_end_debugging	__cause__filter_traceback__context__replaceossep__traceback__anyappendtb_nextzip)e	BAD_FILESbad_fileframes	cur_frame
next_framer   s         @r#   r   r      s    ,,{{%}} ' 	-I @IIy8!!#rvv.yII	
BF
.ViVVVMM"ZZ .
 $'vabz#:& $; !r
 )! Js   .)D'c                  <    \ rS rSrSS jrSS jrS	S jrS
S jrSrg)CompileTimer   c                b    [         R                   " 5       U l        S U l        / U l        S U l        g ra   )timestartir_initialization_endlowering_stage_endsstore_results_endrb   s    r#   r@   CompileTimer.__init__   s'     IIK
37"<> /3r$   c                8    [         R                   " 5       U l        g ra   )r   r   rb   s    r#   finished_ir_initialization'CompileTimer.finished_ir_initialization   s    %)YY["r$   c                d    U R                   R                  U[        R                  " 5       45        g ra   )r   r   r   )r<   
stage_names     r#   stage_finishedCompileTimer.stage_finished   s!      ''TYY[(ABr$   c                f   [         R                   " 5       nU R                  c  Xl        OXl        SS jn/ nU R                  nU R                   H  u  pVUR	                  XR" XF5      45        UnM!     [
        R                  " U" U R                  U R                  5      UU" X@R                  5      S9$ )Nc                *    Uc  g[        X-
  S-  5      $ )Nr   i@B )int)r   ends     r#   deltaCompileTimer.end.<locals>.delta   s    {w.//r$   )ir_initializationlowering_stagesstore_results)r   floatr   zfloat | Nonerf   r   )r   r   r   r   r   r   CompileTimesr   )r<   	timestampr   lowering_stage_durationsstage_startr   	stage_ends          r#   r   CompileTimer.end   s    IIK	%%-)2&%."	0
 $& 00%)%=%=!J$++Z{9V,WX#K &> !!#DJJ0J0JK4-C-CD
 	
r$   )r   r   r   r   Nre   )r   r5   rf   rg   )rf   zknobs.CompileTimes)	r.   rj   rk   rl   r@   r   r   r   rm   rn   r$   r#   r   r      s    41C
r$   r   c                   [         R                  R                  nU(       a
  [        5       nUc  [        R
                  R                  5       n[        U[        5      (       d   S5       e[        U5      n[        U [        5      (       + nU(       a=  [        U [        5      (       d   S5       e[        R                  " 5       n[        XU5      n U R                  5       n	UR                  [!        U=(       d
    [!        5       40 U	D65      nUc
  [#        5       OUn
[%        XX*S9n[&        R(                  " UR+                  S5      5      R-                  5       n[/        U5      n[         R                  R0                  n[         R                  R2                  n[         R                  R4                  nU(       a  [7        U R9                  5       5      OS nU(       a  [;        U R9                  5       5      OS nU R<                  S S nU S3nUR?                  U5      =(       d    0 nURA                  U5      n[         R                  RB                  nU(       dI  UbF  [E        U UU5      nU(       a0  U" U URF                  RI                  5       UWRK                  5       SS9  U$ UUS	.URL                  EU
En[N        US
'   [!        5       nURQ                  UX RR                  5        [U        URW                  5       5      RY                  U RZ                  5      nU(       a  US-  n[        U [        5      (       d<  [        R                  " 5       n[        R\                  " U5        UR]                  U5        UR_                  U5      nURa                  5       n U Rc                  XUUW5      nU(       a'  U SU RZ                   3n URi                  UU 5      UU '   OU S3n URi                  UU 5      UU '   [         R                  Rj                  n!U(       a:  U!(       a3  URm                  U Rn                  5        [q        SU Rn                   35        U(       a  WRs                  5         [U        URu                  5       5      US   GH=  u  n"n#U#" UU5      n$U SU" 3n Uc@  URA                  SS 5      =n%(       a&  U%Rw                  SU" 35      (       a  [y        U%U"U5      n$O3UR{                  U 5      =n&(       a  [q        SU& 35        [y        U&U"U5      n$U(       a  U"S;   a  URi                  U$U 5      UU '   Ub8  URi                  U$U 5        U"S:X  a   [}        U$5      n'URi                  U'US-   5        U!U":X  a0  UR{                  U 5      n(U$Rm                  U(5        [q        SU( 35        U$nU(       d  GM,  WR                  U"5        GM@     URi                  [        R                  " U[        S9USS9UU'   UR                  UU5        [         R                  R                  (       d  UR                  5         U(       a  U" U UUWRK                  5       SS9  [E        U UU5      $ ! [d         a  n[g        U5        e S nAff = f)Nz target must be of GPUTarget typez'source must be either AST or a filepath)env_varsrI      .jsonT)rw   metadatametadata_grouptimes	cache_hit)rT   r]   triton_versionr   .z.sourcezCreating new locations for ir_overridez
Overriding kernel with file )r   r   jsonr   z.sass)defaultF)binary)Fr   r   listenerr   r   r   get_current_targetr4   r
   make_backendr&   r5   r   rX   rp   rc   r1   r   r   rL   rM   rN   rO   r   overridedump_irstore_binary_onlyr   rT   r   r/   	get_groupgetalways_compileCompiledKernelr   _asdictr   __dict__r   
add_stagesr,   listr:   r7   r-   rx   get_codegen_implementationget_module_mapr^   	Exceptionr   put
use_ir_loccreate_location_snapshotrt   printr   r3   r   r   get_filer   r   r   dumpsvars	put_groupenable_asandisable_multithreading))rw   r]   rY   	_env_varscompilation_listenertimerr   	ir_sourcerX   extra_optionsr   rS   rT   fn_cache_managerenable_overrideenable_ir_dumpstore_only_binaryfn_override_managerfn_dump_manager	file_namemetadata_filenamer   metadata_pathr   resr   stagesfirst_stagerZ   r[   r   r   ir_filenamer  r-   
compile_irnext_moduler   r   sassir_full_names)                                            r#   compiler!     s    ,,55~113fi((L*LL(6"GsI..I#s##N%NN#**,sW-%%'M##D):DF$Lm$LMG4=4E.09H
g
AC>>#**W-.88:D(. ''00O&&..N));;>M.sxxz:SW6D&sxxz2$O
 #I$+U+%//0ABHbN"&&'89M&&55Nm7S.$7 --/-iik 
  

 	H "-HVFvw5v{{}%++CGG4Kq c8$$**,
!g&44W=K'')JVk:wO
 "1SWWI.&6&:&:6;&O{#"7+&6&:&:6;&O{#""--JZ''1+CHH:67((*/=Z 2"1SE*&  (||M4@@@kFZFZ]^_b^c[dFeFe#Kg>-66{CCYC29+>?	38K!s.H'H*:*>*>{K*XN;'&[9g~,##D)g*=>+44[AL00>/~>?  %5 >8 )9(<(<TZZZ^=_arDI )= )KN$%0.A ((&&( x^c^g^g^i',	. #~t44E  s   Y 
Y-Y((Y-c                .   [         R                  " 5        Vs/ s H0  oR                  R                  U 5      (       d  M$  UR                  PM2     nn[	        U5      S:w  a'  [        [	        U5       SU R                   SU S35      eUS   " U 5      $ s  snf )Nr   z! compatible backends for target (z) (z). There should only be one.r   )r   valuescompilersupports_targetlenRuntimeErrorr   )r]   r    activess      r#   r   r   r  s    #+??#4[#4a

8R8RSY8Zzqzz#4G[
7|q7|n=fnn=MSQXPYYuvx 	x1:f	 \s
   #BBc                  &    \ rS rSrS rS rS rSrg)LazyDictiz  c                    Xl         / U l        g ra   dataextras)r<   r-  s     r#   r@   LazyDict.__init__|  s    	r$   c                    U R                    H  u  pU R                  U" U6 -  U l        M     U R                   R                  5         U R                  $ ra   )r.  r-  clearr<   funcargss      r#   r   LazyDict.get  s@    ++JD		D$K/DI &yyr$   c                <    U R                   R                  X45        g ra   )r.  r   r2  s      r#   addLazyDict.add  s    D<(r$   r,  N)r.   rj   rk   rl   r@   r   r7  rm   rn   r$   r#   r*  r*  z  s    )r$   r*  c                      \ rS rSrS rSrg)AsmDicti  c                T    US:X  a  [        U S   5      nO[        SU-  5      eX U'   U$ )Nr  r   zUnknown key: '%s')r   KeyError)r<   rS   values      r#   __missing__AsmDict.__missing__  s4    &=T']+E.455S	r$   rn   N)r.   rj   rk   rl   r>  rm   rn   r$   r#   r:  r:    s    r$   r:  c                .    [         R                  " U 5      era   )copydeepcopy)errr4  kwargss      r#   _raise_errorrE    s    
--
r$   c                  <    \ rS rSrS rS r\S 5       rS rS r	Sr
g)	r   i  c           	        SSK Jn  [        S UR                  5        5       5      n[        R
                  " UR                  5       5      n[        US   5      US'   US   n[        US   US   US   5      US'   U" S	[        [        UR                  5       5      5      5      nU" S0 UD6U l        [        U R                  R                  5      n	U	R                  U R                  5      U l        Xl        X0l        U R                  R&                  U l        UR                  5        V
Vs/ s H(  u  pU
R)                  S
5      (       a  M  [+        U5      PM*     nn
nU	R,                  n[/        U Vs0 s HD  nUR0                  SS  UR0                  SS  U:X  a  UR3                  5       OUR                  5       _MF     sn5      U l        X l        U R4                  U   U l        S U l        S U l        S U l        g s  snn
f s  snf )Nr   )
namedtuplec              3  l   #    U  H*  u  pUR                  S 5      (       d  M  [        U5      v   M,     g7f)r   N)r   r   )r   cps      r#   r   *CompiledKernel.__init__.<locals>.<genexpr>  s(     `2H$!AJJW^L_gd1gg2Hs   44cluster_dimsr]   r   arch	warp_sizeKernelMetadatar   r   rn   ) collectionsrH  nextr3   r   loadsrv   r8   r
   rJ   r   r:   r   r   r]   pack_metadatapacked_metadatarw   rT   r/   r   r   
binary_extr:  ru   r   asmr   kernelr   function_run)r<   rw   r   rT   rH  r  r   r]   rP  r   rJ  rK  	asm_filesrV  files                  r#   r@   CompiledKernel.__init__  s   *`.2F2F2H`a::m5578#(.)A#B (#&vi'8&.&Q\J]^#$4fT(--/=R6ST&22t}}334&44T]]C	MM&&	)7)=)=)?[)?qzzRYGZWT!W)?	[''
!
! KKO$++ab/Z2OT__.UYUcUcUee!
  -hhz* 	 \
s   )G7	G70AG=c                  ^  T R                   b  g U 4S jn[        R                  R                  5       n[        R                  R	                  T R
                  T R                  5      T l        [        U5      nT R                  R                  U:  a'  U" [        T R                  R                  US5      5        [        T R                  S5      (       aZ  T R                  R                  bC  SnT R                  R                  U:  a'  U" [        T R                  R                  US5      5        [        R                  R                  bU  [        R                  R                  T R                   T R                   T R"                  T R$                  T R&                  5        [        R                  R(                  R+                  T R"                  T R,                  T R                  R                  U5      u  T l         T l        T l        T l        T l        [        R                  R5                  5       R6                  nT R                  R8                  U-  T R2                  :  a4  U" [        T R                  R8                  U-  T R2                  S5      5        [        R                  R:                  bV  [        R                  R;                  T R                   T R                   T R"                  T R$                  T R&                  5        g g )Nc                t   > [         R                  " U 5      n[        R                  " [        U5      Tl        U era   )rA  rB  	functoolspartialrE  rZ  )rC  
cloned_errr<   s     r#   raise_,CompiledKernel._init_handles.<locals>.raise_  s,     s+J!)),
CDIIr$   zshared memory	tmem_sizei   ztensor memorythreads)r   r   r   get_current_devicelauncher_clsrw   r   rZ  r   sharedr   rE   re  r   runtimekernel_load_start_hookrY  r/   r   rT   r   load_binaryrX  n_regsn_spillsn_max_threadsr   rO  r   kernel_load_end_hook)r<   rc  r   
max_sharedmax_tmem_sizerO  s   `     r#   _init_handlesCompiledKernel._init_handles  s
   ;;"	 113MM..txxG	#F+
==*,>$--"6"6
OTU4==+..4==3J3J3VM}}&&6~dmm&=&=}o^_==//;MM00dmmTYYX\XkXkmqmvmvwU[UbUbUhUhUtUtIIt{{DMM$8$8&VBRT]DK@RMM446@@	==""Y.1C1CC>$--"9"9I"EtGYGY[def==--9MM..t{{DMM499VZViVikoktktu :r$   c                T    U R                   c  U R                  5         U R                   $ ra   )rZ  rs  rb   s    r#   runCompiledKernel.run  s"    99 yyr$   c                (   [         R                  R                  c  g U R                  5         [	        U R
                  U R                  US.5      n[        U R                  [        5      (       a!  U R                  R                  R                  c  U$ [        U R                  R                  R                  U5       VVs0 s H  u  pVXV_M	     nnnUR                  U R                  R                  R                  XR                  U45        U$ s  snnf )N)r/   rY  stream)r   rj  launch_enter_hookrs  r*  r/   rY  r4   rw   r&   r*   launch_metadatar   r6   r7  r   )r<   gridry  r4  retr/   argarg_dicts           r#   r{  CompiledKernel.launch_metadata  s    ==**2		t}}PVWX$((I..$((++2M2M2UJ/2488;;3H3H$/OP/O)$DI/OP++dMM8-LM
 Qs   ?Dc                @   ^ ^ T R                  5         S S.UU 4S jjnU$ )N)ry  c                ~  > U c=  [         R                  R                  5       n[         R                  R                  U5      n TR                  " TU /UQ76 nTR
                  " TS   TS   TS   U TR                  TR                  U[        R                  R                  [        R                  R                  /	UQ76   g )Nr   r   r   )r   r   rg  get_current_streamr{  rv  rY  rU  r   rj  rz  launch_exit_hook)ry  r4  r   r{  r|  r<   s       r#   runner*CompiledKernel.__getitem__.<locals>.runner  s    ~99;99&A"224G$GOHHT!Wd1gtAwtG[G[]l]]44emm6T6T]W[]r$   )rs  )r<   r|  r  s   `` r#   __getitem__CompiledKernel.__getitem__  s%    !% 	] 	] r$   )rZ  rW  rY  rT   rX  r   r   r   ro  rm  rn  r/   rU  rw   N)r.   rj   rk   rl   r@   rs  propertyrv  r{  r  rm   rn   r$   r#   r   r     s,    >#vJ  
	r$   r   )r   BaseException)NNN)r]   r
   rf   r	   )4
__future__r   rL   r   _C.libtritonr   r   r   backends.compilerr   r	   r
   r   r   r   runtime.autotunerr   runtime.cacher   r   r   r   runtime.driverr   tools.disasmr   pathlibr   r   r`  r   r   rA  ptx_prototype_patternry   ptx_arg_type_patternr|   r   r&   rp   	lru_cacher   r   r   r   r!  r   r*  r1   r:  rE  r   rn   r$   r#   <module>r     s    "   >  ( 6 ! . d d # #  	  	   Y 	   , 	 

   F' 'T O O,#$L$
 $
NQ5h) ) 
d 
b br$   