
    ϦiID                       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	J
r
  SSKJr  SSKJr  SS	KJrJrJr  SS
K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rSr\\\S.r Sr!Sr"\!\!\"S.r#S r$S%S jr% " S S5      r& " S S5      r'\RP                  " 5       S 5       r)S r*S&S jr+S'S jr,S r- " S S 5      r. " S! S"\/5      r0 " S# S$5      r1g)(    )annotationsN   )get_cache_invalidating_env_varsir)backends)	GPUTargetAttrsDescriptor)__version__)OutOfResources)get_cache_managerget_dump_managerget_override_manager)driver)get_sass   )ast_to_ttir)Pathz^\s*tt\.func\s+(?:public\s+)?(@\w+)(\((?:%\w+: [\S\s]+(?: \{\S+ = \S+ : \S+\})?(?:, )?)*\))\s*(attributes \{[\S\s]+\})?\s+\{\s*$z=\.(?:visible|extern)\s+\.(?:entry|func)\s+(\w+)\s*\(([^)]*)\))ttirttgirptxz-%\w+: ((?:[^,\s<)]+|<[^>]+>)+(?: {[^}]+})?),?z\.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 {[^}]+} *r   )researchsubconvert_type_reprgroup)xmatchtmas      W/var/www/html/ai-image-ml/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                ~    Sn[         R                  " X5      n[        U5      S:X  d   S5       e[        US   5      nU$ )Nz&"triton_gpu.num-warps"\s?=\s?(\d+)\s?:r   z(Expected exactly one match for num_warpsr   )r   findalllenint)srcttgir_num_warps_patternnum_warps_matches	num_warpss       r#   _get_num_warps_from_ir_strr-   9   sJ    G 

#:@ !Q&R(RR&%a()Ir$   c                  4    \ rS rSrSS	S jjrS rS rS rSrg)
	ASTSourceC   Nc                   Xl         SU l        UR                  U l        X l        X0l        X@l        [        U R                  [        5      (       aM  [        U R                  R                  S5      5       VVs0 s H  u  pVXVR                  5       _M     snnU l        OAU R                  R                  5        H#  n[        U[        5      (       a  M  [        S5      e   U R
                  c  0 U l        OAU R
                  R                  5        H#  n[        U[        5      (       a  M  [        S5      e   U R                  c  [        5       U l        g g s  snnf )Nr   ,zSignature keys must be stringzConstants keys must be string)fnext__name__name	signature	constantsattrs
isinstancestr	enumeratesplitstripkeys	TypeErrorr	   )selfr3   r7   r8   r9   kvs          r#   __init__ASTSource.__init__E   s   KK	""
dnnc**7@AUAUVYAZ7[\7[tqal7[\DN^^((*!!S))#$CDD + >>!DN^^((*!!S))#$CDD + ::(*DJ  ]s   7Ec                   [        U R                  R                  5       5       VVs/ s H  u  pUPM	     nnn[        S U R                  R                  5        5       5      nU R                  R
                   SU R                  R                  5        SU SU 3n[        R                  " UR                  S5      5      R                  5       $ s  snnf )Nc              3  @   #    U  H  u  p[        U5      U4v   M     g 7fN)r;   ).0rB   rC   s      r#   	<genexpr>!ASTSource.hash.<locals>.<genexpr>_   s     !Q:P$!3q61+:Ps   -utf-8)sortedr7   itemsr8   r3   	cache_keyr9   hashhashlibsha256encode	hexdigest)rA   rB   rC   
sorted_sigsorted_constantskeys         r#   rQ   ASTSource.hash[   s    $*4>>+?+?+A$BC$BDAa$B
C "!Q$..:N:N:P!QQ""#1TZZ__%6$7qAFVEWX~~cjj12<<>> Ds   Cc           	     .    [        U R                  XXUS9$ )N)contextoptionscodegen_fns
module_map)r   r3   )rA   r\   r]   r^   r[   s        r#   make_irASTSource.make_irc   s    477D7&02 	2r$   c                    [        5       $ rH   )dictrA   s    r#   parse_optionsASTSource.parse_optionsg   s	    vr$   )r9   r8   r4   r3   r6   r7   NNreturnNone	r5   
__module____qualname____firstlineno__rD   rQ   r_   rd   __static_attributes__ r$   r#   r/   r/   C   s    +,?2r$   r/   c                  ,    \ rS rSrS rS rS rS rSrg)IRSourcek   c                   Xl         [        U5      nUR                  SS  U l        UR	                  5       U l        [        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  pVU[        U5      _M     snnU l        g s  snnf )Nr   r   )pathr   suffixr4   	read_textr)   r   r   prototype_pattern	MULTILINEr   r6   r&   arg_type_patternr<   r   r7   )rA   rt   r!   r7   typesrB   tys          r#   rD   IRSource.__init__m   s    	Dz;;qr?>>#		+DHH5txxNKKN	KKN	

+DHH5yA@I%@PQ@Puq!.r22@PQQs   C;c                |    [         R                  " U R                  R                  S5      5      R	                  5       $ )NrM   )rR   rS   r)   rT   rU   rc   s    r#   rQ   IRSource.hashx   s'    ~~dhhoog67AACCr$   c                T    [         R                  " U R                  U5      nXEl        U$ rH   )r   parse_mlir_modulert   r[   )rA   r\   r]   r^   r[   modules         r#   r_   IRSource.make_ir{   s"    %%dii9 r$   c                d    U R                   S:X  a  S[        U R                  5      0$ [        5       $ )Nr   r,   )r4   r-   r)   rb   rc   s    r#   rd   IRSource.parse_options   s*    88w!;DHH!EFFvr$   )r4   r6   rt   r7   r)   Nrj   ro   r$   r#   rq   rq   k   s    	RD
r$   rq   c                 p   SS K n [        R                  R                  [        R                  R                  [        R                  R	                  [
        5      5      5      n/ n[        [
        S5       nU[        R                  " UR                  5       5      R                  5       /-  nS S S 5        [        R                  R                  US5      S4[        R                  R                  US5      S4/nU H  u  pVU R                  U/US9 H{  n[        UR                  R                  UR                  5      R                   S5       nU[        R                  " UR                  5       5      R                  5       /-  nS S S 5        M}     M     [        R                  " 5       n[        [        R                  R                  US5      S5       n UR                  S	5      n	U	(       d  OUR#                  U	5        M,  S S S 5        UR%                  UR                  5       5        [        R                  R                  US
5      n
U R                  U
/SS9 H{  n[        UR                  R                  UR                  5      R                   S5       nU[        R                  " UR                  5       5      R                  5       /-  nS S S 5        M}     [&         SR                  U5      -   $ ! , (       d  f       GNK= f! , (       d  f       GM  = f! , (       d  f       GN= f! , (       d  f       M  = f)Nr   rbcompilerztriton.compiler.r   ztriton.backends.)prefixz_C/libtriton.soi   languageztriton.language.rL   )pkgutilosrt   dirnameabspath__file__openrR   rS   readrU   joinwalk_packagesmodule_finder	find_specr6   originupdateappendr
   )r   TRITON_PATHcontentsfpath_prefixesrt   r   liblibtriton_hashchunklanguage_paths              r#   
triton_keyr      s[   ''//"''//"''//(2K"LMKH	h	W^^AFFH-779:: 
 
k:	.0BC	k:	.0BCM &(($(?Cc''11#((;BBDIQW^^AFFH5??ABB JI @ & ^^%N	bggll;(9:D	AQFF7OE!!%(	  
B OON,,./GGLLj9M$$m_=O$P###--chh7>>E1;;=>>H FE Q ]chhx0005 
	 JI
 
B	A FEs0   47K/7L.L7L&/
K>
L
L#&
L5	c                    US:X  d  US:X  a  [         R                  " X5      nX#l        U$ US:X  d  US:X  a  [        U 5      R	                  5       $ US:X  a  [        U 5      R                  5       $ g )Nr   r   llirr   cubin)r   r   r[   r   rv   
read_bytes)	full_namer4   r[   r   s       r#   parser      sh    
f}w%%i9 
f}uI((**
g~I))++ r$   c                  ^ [         R                  " SS5      S:X  a  gU R                  b  [        U R                  5        U R                  b  [        U R                  5        SS/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<  [        X"SS 5       H  u  p4XCl        M     U(       d  SU l        gSUS	   l        US
   U l        g)z
Removes code_generator.py and related files from tracebacks.

These are uninteresting to the user -- "just show me *my* code!"
TRITON_FRONT_END_DEBUGGING01Nz"/triton/compiler/code_generator.pyz/ast.pyc              3     >#    U  H=  nTR                   R                  R                  R                  U5      (       d  M9  Uv   M?     g 7frH   )tb_framef_codeco_filenameendswith)rI   r   tbs     r#   rJ   #filter_traceback.<locals>.<genexpr>   s1     Vi2;;+=+=+I+I+R+RST+U11is
   8A	Ar   r   )
r   getenv	__cause__filter_traceback__context____traceback__anyr   tb_nextzip)e	BAD_FILESframes	cur_frame
next_framer   s        @r#   r   r      s     
yy-s3s:{{%}} ' 	-I
 
BF
.ViVVVMM"ZZ .
 $'vabz#:& $; !r
 )r$   c                	   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[        U 5      n U R                  5       nUR                  [        U=(       d
    [        5       40 UD65      n[        5       n[        5        SU R                  5        SUR                  5        SUR                  5        S[        [        UR                  5       5      5       3	n[         R"                  " UR%                  S5      5      R'                  5       n[)        U5      n	[*        R,                  R/                  SS5      S:H  n
[*        R,                  R/                  SS5      S:H  nU
(       a  [1        U R                  5       5      OS nU(       a  [3        U R                  5       5      OS nU R4                  S S	 nU S
3nU	R7                  U5      =(       d    0 nUR/                  U5      n[*        R,                  R/                  SS5      S:H  nU(       d=  Ub:  [8        R:                  " [=        U5      R?                  5       5      n[A        U UU5      $ UUS.URB                  EUEn[        5       nURE                  UU5        [G        URI                  5       5      RK                  U RL                  5      nU(       a  US-  n[N        RP                  " 5       n[N        RR                  " U5        URS                  U5        URU                  5       nURW                  5       n U RY                  UUUU5      n[*        R,                  R/                  SS 5      n[G        UR                  5       5      US   H  u  nnU" UU5      nU SU 3nUb/  UR_                  U5      =n b  [a        SU  35        [c        U UU5      nU	Re                  UU5      UU'   Ub  URe                  UU5        UU:X  a0  U	R_                  U5      n!URg                  U!5        [a        SU! 35        UnM     U	Re                  [8        Rh                  " U[j        S9USS9UU'   U	Rm                  UU5        URo                  5         [A        U UU5      $ ! [Z         a  n[]        U5        e S nAff = f)Nz target must be of GPUTarget typez'source must be either AST or a filepathrL   rM   TRITON_KERNEL_OVERRIDEr   r   TRITON_KERNEL_DUMP   .jsonTRITON_ALWAYS_COMPILE)rQ   targetr   
USE_IR_LOC.z
Overriding kernel with file zCreating new locations for )defaultF)binary)8r   activeget_current_targetr:   r   make_backendr/   r;   rq   rd   rb   r   r   rQ   rN   rO   rR   rS   rT   rU   r   r   environgetr   r   r6   	get_groupjsonloadsr   rv   CompiledKernel__dict__
add_stageslistr?   indexr4   r   r[   load_dialectsget_codegen_implementationget_module_mapr_   	Exceptionr   get_fileprintr   putcreate_location_snapshotdumpsvars	put_groupdisable_multithreading)"r)   r   r\   backend	ir_sourceextra_optionsenv_varsrX   rQ   fn_cache_managerenable_overrideenable_ir_dumpfn_override_managerfn_dump_manager	file_namemetadata_filenamemetadata_groupmetadata_pathalways_compilemetadatastagesfirst_stager[   r]   r^   r   r   
use_ir_locr4   
compile_irnext_moduleir_filenamer   ir_full_names"                                     r#   compiler      sO   ~113fi((L*LL(6"GsI..I#s##N%NN#sm%%'M##D):DF$Lm$LMG.0H\N!CHHJ<q(8',,.9I3vV^VdVdVfOgKhJi
jC>>#**W-.88:D(. jjnn%=sCsJOZZ^^$8#>#EN>M.sxxz:SW6D&sxxz2$O
 #I$+U+%//0ABHbN"&&'89MZZ^^$;SASHNm7::d=1;;=>c>488  

 	H VFvw'v{{}%++CGG4KqjjlGW'"446K'')JWk:wG d3J/=Z 2"1SE*+>Q>Z>Z[f>g1g0t29+>?	38K&6&:&:;&T{#&[9+44[AL00>/~>? >  )9(<(<TZZZ^=_arDI )= )KN$%0.A
 ""$#~t44;  s   ,S 
SSS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   valuesr   supports_targetr'   RuntimeErrorr   )r   r    activess      r#   r   r   2  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S jrS rSrg)LazyDicti:  c                    Xl         / U l        g rH   dataextras)rA   r  s     r#   rD   LazyDict.__init__<  s    	r$   c                    U R                    H  u  pU R                  U" U6 -  U l        M     U R                   R                  5         U R                  $ rH   )r  r  clearrA   funcargss      r#   r   LazyDict.get@  s@    ++JD		D$K/DI &yyr$   c                <    U R                   R                  X45        g rH   )r  r   r	  s      r#   addLazyDict.addF  s    D<(r$   r  Nrg   )r5   rk   rl   rm   rD   r   r  rn   ro   r$   r#   r  r  :  s    )r$   r  c                      \ rS rSrS rSrg)AsmDictiJ  c                T    US:X  a  [        U S   5      nO[        SU-  5      eX U'   U$ )Nsassr   zUnknown key: '%s')r   KeyError)rA   rX   values      r#   __missing__AsmDict.__missing__L  s4    &=T']+E.455S	r$   ro   N)r5   rk   rl   rm   r  rn   ro   r$   r#   r  r  J  s    r$   r  c                  H   ^  \ rS rSrSrSrS rS rU 4S jrS r	S r
SrU =r$ )	r   iW  Nc           	        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        U R4                  U   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   )rI   cps      r#   rJ   *CompiledKernel.__init__.<locals>.<genexpr>`  s(     `2H$!AJJW^L_gd1gg2Hs   44cluster_dimsr   r   arch	warp_sizeKernelMetadatar   r   ro   )collectionsr  nextrO   r   r   rv   tupler   rN   r   r?   r   r   r   pack_metadatapacked_metadatar)   rQ   r6   r   r   
binary_extr  ru   r   asmkernelr   function)rA   r)   r   rQ   r  r   r   r   r"  r   r  r  	asm_filesr(  files                  r#   rD   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   )G*	G*0AG0c                v   U R                   b  g [        R                  R                  5       n[        R                  R	                  U R
                  U R                  5      U l        [        R                  R                  R                  U5      S   nU R                  R                  U:  a!  [        U R                  R                  US5      e[        R                  R                  R                  U R                  U R                  U R                  R                  U5      u  U l         U l        U l        U l        g )Nmax_shared_memzshared memory)r   r   r   get_current_devicelauncher_clsr)   r   runutilsget_device_propertiessharedr   load_binaryr6   r*  r+  n_regsn_spills)rA   device
max_shareds      r#   _init_handlesCompiledKernel._init_handles{  s    ;;"113==--dhhF]]((>>vFGWX
==*, !5!5z?SSAGATATA`A`IIt{{DMM$8$8&BB>T]DKr$   c                N   > US:X  a  U R                  5         [        TU ]	  U5      $ )Nr3  )r<  super__getattribute__)rA   r6   	__class__s     r#   r@  CompiledKernel.__getattribute__  s&    5= w'--r$   c                n   [         R                  c  g [        U R                  U R                  US.5      n[        U R                  [        5      (       a!  U R                  R                  R                  c  U$ 0 nSn[        U R                  R                  R                  5       HP  u  pxXpR                  R                  R                  ;   a  U R                  R                  U   XX'   ME  X6   XX'   US-  nMR     UR                  U R                  R                  R                  XR                  U45        U$ )N)r6   r+  streamr   r   )r   launch_enter_hookr  r6   r+  r:   r)   r/   r3   launch_metadatar<   	arg_names
constexprsr8   r  r   )	rA   gridrD  r  retarg_dictarg_idxiarg_names	            r#   rF  CompiledKernel.launch_metadata  s    ++3		t}}PVWX$((I..$((++2M2M2UJ$TXX[[%:%:;KAHHKK***%)XX%7%7%A"%)]"1 < 	++dMM8-LM
r$   c                @   ^ ^ T R                  5         S S.UU 4S jjnU$ )N)rD  c                V  > 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                  /	UQ76   g )Nr   r   r   )r   r   r1  get_current_streamrF  r3  r+  r'  r   rE  launch_exit_hook)rD  r  r:  rF  rI  rA   s       r#   runner*CompiledKernel.__getitem__.<locals>.runner  s    ~99;99&A"224G$GOHHT!Wd1gtAwtG[G[]l#55~7V7V_Y]_r$   )r<  )rA   rI  rT  s   `` r#   __getitem__CompiledKernel.__getitem__  s%    !% 	_ 	_ r$   )r)  r+  rQ   r*  r   r   r8  r9  r6   r'  r3  r)   )r5   rk   rl   rm   rE  rS  rD   r<  r@  rF  rV  rn   __classcell__)rA  s   @r#   r   r   W  s0     :B.
" r$   r   )r)   r;   )r   BaseExceptionrf   )2
__future__r   rR   r   _C.libtritonr   r   r   backends.compilerr   r	   r   r
   runtime.autotunerr   runtime.cacher   r   r   runtime.driverr   tools.disasmr   code_generatorr   pathlibr   r   	functoolsr   mlir_prototype_patternptx_prototype_patternrw   mlir_arg_type_patternptx_arg_type_patternry   r   r-   r/   rq   	lru_cacher   r   r   r   r   r  rb   r  r   ro   r$   r#   <module>ri     s    "   >  :  . U U # # '  	  	 ] X "#   I + !" 
% %P 6 1 1D,"$JV5r) ) 
d 
S Sr$   