Ë
    ÛéñiDP  ã                  óÂ  — d dl mZ d dlZd dlZddlmZmZ ddlmZ ddlm	Z	 ddlm
Z
mZ ddlmZmZ dd	lmZ dd
lmZmZmZmZ ddlmZ ddlmZ 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Z!de!iZ"dZ#de#iZ$d„ Z% G d„ d«      Z& G d„ d«      Z' ejP                  «       d„ «       Z)d„ Z*d$d„Z+ G d„ d«      Z,d%d„Z-d&d„Z. G d„ d«      Z/ G d„ d e0«      Z1d!„ Z2 G d"„ d#«      Z3y)'é    )Ú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                óÐ   — t        j                  d| «      }t        j                  d| «      }|�yt        j                  dd| «      } |�dt        |j	                  d«      «      z   S | S )Nz!tt\.ptr<([^,]+)ztt.nv_tma_desc = 1Ú	nvTmaDescz {[^}]+}Ú Ú*é   )ÚreÚsearchÚsubÚconvert_type_reprÚgroup)ÚxÚmatchÚtmas      úZ/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/triton/compiler/compiler.pyr   r   '   sd   € ô �I‰IÐ)¨1Ó-€EÜ
�)‰)Ð)¨1Ó
-€CØ
€ØÜ
�‰ˆ{˜B Ó"€AØÐØÔ& u§{¡{°1£~Ó6Ñ6Ð6Ø€Hó    c                  ó*   — e Zd Zddd„Zd„ Zdd„Zd„ Zy)	Ú	ASTSourceNc                ó  — || _         t        j                  | _        d| _        |j
                  | _        || _        t        «       | _	        |�g|j                  «       D ]T  \  }}t        |t        «      r|j                  j                  |«      fn|}t        |t        «      sJ ‚|| j                  |<   ŒV |xs
 t        «       | _        | j                  j#                  «       D ]  }t        |t        «      rŒt%        d«      ‚ y )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)   r/   Ú
constexprsr8   ÚkÚvs          r#   Ú__init__zASTSource.__init__6   sÛ   € ØˆŒÜ Ÿ™ˆŒØˆŒØ—K‘KˆŒ	Ø"ˆŒÜ›ˆŒØÐ!Ø"×(Ñ(Ó*ò &‘��1Ü1;¸A¼sÔ1C�R—\‘\×'Ñ'¨Ó*Ñ-È�Ü! !¤UÔ+Ð+Ð+Ø$%�—‘˜qÒ!ð&ð ’_œd›fˆŒ
Ø—‘×$Ñ$Ó&ò 	AˆAÜ˜a¤Õ%ÜÐ ?Ó@Ð@ñ	Ar$   c           	     óì  — t        | j                  j                  «       «      D ��cg c]  \  }}|‘Œ	 }}}d„ }dj                  t        | j                  j                  «       «      D ��cg c]  \  }} ||«      ‘Œ c}}«      }| j
                  j                  › dt        | j                  «      › d|› d|› �}t        j                  |j                  d«      «      j                  «       S c c}}w c c}}w )Nc                óH   — t        | d«      r| j                  S t        | «      S )NÚ	cache_key)ÚhasattrrB   r4   )r    s    r#   ú<lambda>z ASTSource.hash.<locals>.<lambda>I   s   € ¬7°1°kÔ+B˜AŸK™K€ ÌÈAË€ r$   ú-úutf-8)Úsortedr/   r2   Újoinr1   r)   rB   r4   r8   ÚhashlibÚsha256ÚencodeÚ	hexdigest)r;   r=   r>   Ú
sorted_sigÚget_keyÚconstants_keyÚkeys          r#   ÚhashzASTSource.hashG   s½   € Ü$*¨4¯>©>×+?Ñ+?Ó+AÓ$B×C™D˜A˜q’aÐCˆ
ÑCÙNˆØŸ™¼ÀÇÁ×@TÑ@TÓ@VÓ9W×!X±°°A¡'¨!¥*Ó!XÓYˆØ—‘×"Ñ"Ð# 1¤S¨¯©£_Ð$5°Q°z°lÀ!ÀMÀ?ÐSˆÜ�~‰~˜cŸj™j¨Ó1Ó2×<Ñ<Ó>Ð>ùó	 Dùã!Xs   §C*Á*C0
c                ó>   — ddl m}  || j                  | ||||¬«      S )Nr   )Úast_to_ttir)ÚcontextÚoptionsÚcodegen_fnsÚ
module_map)Úcode_generatorrS   r)   )r;   ÚtargetrU   rV   rW   rT   rS   s          r#   Úmake_irzASTSource.make_irN   s$   € Ý/Ù˜4Ÿ7™7 D°'À7ÐXcØ&0ô2ð 	2r$   c                ó   — t        «       S ©N)r0   ©r;   s    r#   Úparse_optionszASTSource.parse_optionsS   s	   € Ü‹vˆr$   )NN©ÚreturnÚNone©rY   r
   ©r-   Ú
__module__Ú__qualname__r?   rQ   rZ   r^   © r$   r#   r&   r&   4   s   „ ôAò"?ó2ó
r$   r&   c                  ó&   — e Zd Zd„ Zd„ Zdd„Zd„ Zy)ÚIRSourcec                óä  — || _         t        |«      }|j                  dd  | _        t        j
                  | _        |j                  «       | _        t        j                  |«       |j                  |«       | j                  dk(  r¼t        j                  t        | j                     | j                  t        j                  «      }|j                  d«      | _        |j                  d«      }t        j"                  t$        | j                     |«      }t'        |«      D ��ci c]  \  }}|t)        |«      “Œ c}}| _        y t        j,                  | j                   |«      | _        | j.                  j1                  «       }	d|	z   | _        | j.                  j3                  |	«      }
| j.                  j5                  |
«      }t'        |«      D ��ci c]  \  }}||“Œ
 c}}| _        y c c}}w c c}}w )Nr   r   r   ú@)Úpathr   Úsuffixr,   r   r*   r+   Ú	read_textÚsrcr   Úload_dialectsr   r   Úprototype_patternÚ	MULTILINEr   r.   ÚfindallÚarg_type_patternÚ	enumerater   r/   Úparse_mlir_moduleÚmoduleÚget_entry_func_nameÚget_functionÚget_function_signature)r;   rk   rT   Úbackendr!   r/   Útypesr=   ÚtyÚfn_nameÚfuncOpÚfunc_tys               r#   r?   zIRSource.__init__Y   sn  € ØˆŒ	Ü�D‹zˆØ—;‘;˜q˜r�?ˆŒÜ Ÿ™ˆŒØ—>‘>Ó#ˆŒÜ
×Ñ˜Ô!Ø×Ñ˜gÔ&ð �8‰8�uÒÜ—I‘IÔ/°·±Ñ9¸4¿8¹8ÄRÇ\Á\ÓRˆEØŸ™ A›ˆDŒIØŸ™ A›ˆIÜ—J‘JÔ/°·±Ñ9¸9ÓEˆEÜDMÈeÓDT×U¹5¸1¸b˜aÔ!2°2Ó!6Ñ6ÓUˆD�Nä×.Ñ.¨t¯y©y¸'ÓBˆDŒKØ—k‘k×5Ñ5Ó7ˆGØ˜g™ˆDŒIØ—[‘[×-Ñ-¨gÓ6ˆFØ—k‘k×8Ñ8¸Ó@ˆGÜ1:¸7Ó1C×D©¨¨2˜a ™eÓDˆD�Nùó Vùó Es   Ä"G&ÇG,c                óz   — t        j                  | j                  j                  d«      «      j	                  «       S )NrF   )rI   rJ   rn   rK   rL   r]   s    r#   rQ   zIRSource.hashr   s'   € Ü�~‰~˜dŸh™hŸo™o¨gÓ6Ó7×AÑAÓCÐCr$   c                ó<   — || j                   _        | j                   S r\   )rv   rT   )r;   rY   rU   rV   rW   rT   s         r#   rZ   zIRSource.make_iru   s   € Ø%ˆ�‰ÔØ�{‰{Ðr$   c                óÌ   — | j                   dk(  rL| j                  j                  d«      }|€J d«       ‚d|i}| j                  j                  d«      }|�||d<   |S t        «       S )NÚttgirzttg.num-warpsz'Unable to parse ttg.num-warps attributeÚ	num_warpszttg.num-ctasÚnum_ctas)r,   rv   Úget_int_attrr0   )r;   r„   rU   r…   s       r#   r^   zIRSource.parse_optionsy   sn   € Ø�8‰8�wÒØŸ™×0Ñ0°ÓAˆIØÐ(ÐSÐ*SÓSÐ(Ø" IÐ.ˆGØ—{‘{×/Ñ/°Ó?ˆHØÐ#Ø&.�˜
Ñ#ØˆNÜ‹vˆr$   Nrb   rc   rf   r$   r#   rh   rh   W   s   „ òEò2Dóó	r$   rh   c                óZ   — t         j                  j                  j                  | «      d   S )NÚmax_shared_mem)r   ÚactiveÚutilsÚget_device_properties)Údevices    r#   rˆ   rˆ   …   s#   € ä�=‰=×Ñ×4Ñ4°VÓ<Ð=MÑNÐNr$   c                óì   — |dk(  s|dk(  rt        j                  | |«      }||_        |S |dk(  s
|dk(  s|dk(  rt        | «      j	                  «       S |dk(  s|dk(  rt        | «      j                  «       S y )Nr(   rƒ   Úllirr   ÚamdgcnÚcubinÚhsaco)r   ru   rT   r   rm   Ú
read_bytes)Ú	full_namer,   rT   rv   s       r#   Úparser”   Š   sx   € Ø
ˆf‚}˜˜wšÜ×%Ñ% i°Ó9ˆØ ˆŒØˆØ
ˆf‚}˜˜uš¨¨xªÜ�I‹×(Ñ(Ó*Ð*Ø
ˆg‚~˜ šÜ�I‹×)Ñ)Ó+Ð+ð (r$   c                ó,  ‡— t         j                  j                  ry| j                  �t	        | j                  «       | j
                  �t	        | j
                  «       ddg}|D �cg c]"  }|j                  dt        j                  «      ‘Œ$ }}| j                  Šg }‰�4t        ˆfd„|D «       «      s|j                  ‰«       ‰j                  Š‰�Œ4t        ||dd «      D ]  \  }}||_        Œ |sd| _	        yd|d   _        |d   | _	        yc c}w )	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  ó‚   •K  — | ]6  }‰j                   j                  j                  j                  |«      sŒ3|–— Œ8 y ­wr\   )Útb_frameÚf_codeÚco_filenameÚendswith)Ú.0ÚfÚtbs     €r#   ú	<genexpr>z#filter_traceback.<locals>.<genexpr>­   s/   øè ø€ ÒV˜¨2¯;©;×+=Ñ+=×+IÑ+I×+RÑ+RÐSTÕ+U”1ÑVùs   ƒ4?¸?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ÖI°8�×!Ñ! #¤r§v¡vÕ.ÐI€IÐIà	
�‰€BØ€FØ
ˆ.ÜÓV˜iÔVÔVØ�M‰M˜"ÔØ�Z‰Zˆð ‰.ô
 $' v¨v°a°b¨zÓ#:ò 'Ñˆ�JØ&ˆ	Õð'ñ Øˆ�à!ˆˆr‰
ÔØ  ™)ˆ�ùò! Js   Á''Dc                  ó,   — e Zd Zdd„Zdd„Zdd„Zdd„Zy)	ÚCompileTimerc                ó`   — t        j                   «       | _        d | _        g | _        d | _        y r\   )ÚtimeÚstartÚir_initialization_endÚlowering_stage_endsÚstore_results_endr]   s    r#   r?   zCompileTimer.__init__½   s'   € Ü ŸI™I›KˆŒ
Ø37ˆÔ"Ø<>ˆÔ Ø/3ˆÕr$   c                ó6   — t        j                   «       | _        y r\   )r·   r¹   r]   s    r#   Úfinished_ir_initializationz'CompileTimer.finished_ir_initializationÃ   s   € Ü%)§Y¡Y£[ˆÕ"r$   c                ób   — | j                   j                  |t        j                  «       f«       y r\   )rº   r«   r·   )r;   Ú
stage_names     r#   Ústage_finishedzCompileTimer.stage_finishedÆ   s!   € Ø× Ñ ×'Ñ'¨´T·Y±Y³[Ð(AÕBr$   c                ól  — t        j                   «       }| j                  €|| _        n|| _        dd„}g }| j                  }| j                  D ]!  \  }}|j	                  | |||«      f«       |}Œ# t        j                   || j                  | j                  «      | ||| j                  «      ¬«      S )Nc                ó*   — |€yt        || z
  dz  «      S )Nr   i@B )Úint)r¸   Úends     r#   ÚdeltazCompileTimer.end.<locals>.deltaÐ   s   € Øˆ{ØÜ˜˜e™ wÑ.Ó/Ð/r$   )Úir_initializationÚlowering_stagesÚstore_results)r¸   ÚfloatrÄ   zfloat | Noner`   rÃ   )r·   r¹   r»   rº   r«   r   ÚCompileTimesr¸   )r;   Ú	timestamprÅ   Úlowering_stage_durationsÚstage_startr¿   Ú	stage_ends          r#   rÄ   zCompileTimer.endÉ   s¶   € Ü—I‘I“Kˆ	Ø×%Ñ%Ð-Ø)2ˆDÕ&à%.ˆDÔ"ó	0ð
 $&Ð Ø×0Ñ0ˆØ%)×%=Ñ%=ò 	$Ñ!ˆJ˜	Ø$×+Ñ+¨Z¹¸{ÈIÓ9VÐ,WÔXØ#‰Kð	$ô ×!Ñ!Ù# D§J¡J°×0JÑ0JÓKØ4Ù ¨T×-CÑ-CÓDô
ð 	
r$   Nr_   )r¿   r4   r`   ra   )r`   zknobs.CompileTimes)r-   rd   re   r?   r½   rÀ   rÄ   rf   r$   r#   rµ   rµ   »   s   „ ó4ó1óCô
r$   rµ   c                ó¢  — t         j                  j                  }|r
t        «       }|€t        j
                  j                  «       }t        |t        «      sJ d«       ‚t        |«      }t        | t        «       }|r8t        | t        «      sJ d«       ‚t        j                  «       }t        | ||«      } | j                  «       }	|j                  t!        |xs
 t!        «       fi |	¤Ž«      }|€
t#        «       n|}
t%        | |||
¬«      }t'        j(                  |j+                  d«      «      j-                  «       }t/        |«      }t         j                  j0                  }t         j                  j2                  }t         j                  j4                  }|rt7        | j9                  «       «      nd }|rt;        | j9                  «       «      nd }| j<                  d d }|› d�}|j?                  |«      xs i }|jA                  |«      }t         j                  jB                  }|sF|�DtE        | ||«      }|r3 || |jF                  jI                  «       |jK                  «       d¬«       |S ||d	œ|jL                  ¥|
¥}tN        |d
<   t!        «       }|jQ                  ||| jR                  «       tU        |jW                  «       «      jY                  | jZ                  «      }|r|dz  }t        | t        «      s:t        j                  «       }t        j\                  |«       |j]                  |«       |j_                  |«      }|ja                  «       }	 | jc                  ||||«      }|r'|› d| jZ                  › �} |ji                  || «      || <   n|› d�} |ji                  || «      || <   t         j                  jj                  }!|r5|!r3|jm                  | jn                  «       tq        d| jn                  › �«       |rjs                  «        tU        |ju                  «       «      |d  D �]  \  }"}# |#||«      }$|› d|"› �} |€6|jA                  dd «      x}%rP|%jw                  d|"› �«      r<ty        |%|"|«      }$n.|j{                  | «      x}&rtq        d|&› �«       ty        |&|"|«      }$|r|"dv r|ji                  |$| «      || <   |�7|ji                  |$| «       |"dk(  r t}        |$«      }'|ji                  |'|dz   «       |!|"k(  r0|j{                  | «      }(|$jm                  |(«       tq        d|(› �«       |$}|s�Œj                  |"«       �Œ |ji                  t�        j‚                  |t„        ¬«      |d¬«      ||<   |j‡                  ||«       |r || ||jK                  «       d¬«       tE        | ||«      S # td        $ r}tg        |«       ‚ d }~ww xY w)Nz target must be of GPUTarget typez'source must be either AST or a filepath)Úenv_varsrF   é–   ú.jsonT)rn   ÚmetadataÚmetadata_groupÚtimesÚ	cache_hit)rQ   rY   Útriton_versionr   ú.z.sourcezCreating new locations for Úir_overridez
Overriding kernel with file )r�   r‘   Újsonr�   z.sass)ÚdefaultF)Úbinary)Dr   r¡   Úlistenerrµ   r   r‰   Úget_current_targetr3   r
   Úmake_backendr&   r4   r   rT   rh   r^   r0   r   r   rI   rJ   rK   rL   r   ÚoverrideÚdump_irÚstore_binary_onlyr   rQ   r   r.   Ú	get_groupÚgetÚalways_compileÚCompiledKernelrÓ   Ú_asdictrÄ   Ú__dict__r   Ú
add_stagesr+   Úlistr9   r6   r,   ro   Úget_codegen_implementationÚget_module_maprZ   Ú	Exceptionr¤   ÚputÚ
use_ir_locÚcreate_location_snapshotrk   Úprintr½   r2   r›   r”   Úget_filer   rÀ   rÚ   ÚdumpsÚvarsÚ	put_group))rn   rY   rU   Ú	_env_varsÚcompilation_listenerÚtimerrz   Ú	ir_sourcerT   Úextra_optionsrÐ   rP   rQ   Ú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_stagerV   rW   rv   r®   Úir_filenamerï   r,   Ú
compile_irÚnext_modulerÙ   r“   ÚsassÚir_full_names)                                            r#   Úcompiler  â   s‘  € Ü ×,Ñ,×5Ñ5ÐÙÜ“ˆà€~Ü—‘×1Ñ1Ó3ˆÜ�fœiÔ(ÐLÐ*LÓLÐ(Ü˜6Ó"€GÜ˜s¤IÓ.Ð.€IáÜ˜#œsÔ#ÐNÐ%NÓNÐ#Ü—*‘*“,ˆÜ�s˜G WÓ-ˆà×%Ñ%Ó'€MØ×#Ñ#¤D¨Ò):´D³FÑ$L¸mÑ$LÓM€Gà4=Ð4EÔ.Ô0È9€HÜ
˜˜W g¸Ô
A€CÜ�>‰>˜#Ÿ*™* WÓ-Ó.×8Ñ8Ó:€DÜ(¨Ó.Ðô ×'Ñ'×0Ñ0€OÜ×&Ñ&×.Ñ.€NÜ×)Ñ)×;Ñ;ÐÙ>MÔ.¨s¯x©x«zÔ:ÐSWÐÙ6DÔ& s§x¡x£zÔ2È$€Oð
 —‘˜˜#�€IØ$˜+ UÐ+ÐØ%×/Ñ/Ð0AÓBÒHÀb€NØ"×&Ñ&Ð'8Ó9€MÜ×&Ñ&×5Ñ5€NÙ˜mÐ7ä˜S .°$Ó7ˆÙÙ ØØŸ™×-Ñ-Ó/Ø-Ø—i‘i“kØõð ˆ
ð Øñð ×
Ñ
ðð ð	€Hô "-€HÐÑä‹V€FØ×Ñ�v˜w¨¯©Ô5Ü�v—{‘{“}Ó%×+Ñ+¨C¯G©GÓ4€KáØ�qÑˆô �cœ8Ô$Ü—*‘*“,ˆÜ
×Ñ˜Ô!Ø×Ñ˜gÔ&à×4Ñ4°WÓ=€KØ×'Ñ'Ó)€JðØ—‘˜V W¨k¸:ÀwÓOˆñ
 Ø"˜ 1 S§W¡W IÐ.ˆØ&6×&:Ñ&:¸6À;Ó&Oˆ�{Ò#à"˜ 7Ð+ˆØ&6×&:Ñ&:¸6À;Ó&Oˆ�{Ñ#ä×"Ñ"×-Ñ-€JÙ‘ZØ×'Ñ'¨¯©Ô1ÜÐ+¨C¯H©H¨:Ð6Ô7áØ×(Ñ(Ô*Ü §¡£Ó/°°Ð=ó &‰ˆˆZÙ  ¨Ó2ˆØ"˜ 1 S EÐ*ˆØÐ&ð  (Ÿ|™|¨M¸4Ó@Ð@�Ð@Àk×FZÑFZÐ]^Ð_bÐ^cÐ[dÔFeÜ# K°°gÓ>‘Ø-×6Ñ6°{ÓCÐCˆYÐCÜÐ2°9°+Ð>Ô?Ü 	¨3°Ó8ˆKá! sÐ.HÑ'HØ*:×*>Ñ*>¸{ÈKÓ*XˆN˜;Ñ'ØÐ&Ø×Ñ ¨[Ô9Ø�gŠ~Ü Ó,�Ø×#Ñ# D¨)°gÑ*=Ô>à˜ÒØ+×4Ñ4°[ÓAˆLØ×0Ñ0°Ô>ÜÐ/°¨~Ð>Ô?ØˆÛØ× Ñ  Ö%ð5&ð8 )9×(<Ñ(<¼T¿Z¹ZÈÔZ^Ô=_ÐarØDIð )=ó )K€NÐ$Ñ%à×ÑÐ0°.ÔAñ Ù ¨xÈÐ^c×^gÑ^gÓ^iØ',õ	.ô ˜#˜~¨tÓ4Ð4øôo ò Ü˜ÔØûðús   ÍV4 Ö4	WÖ=W	×	Wc                ó  — t        j                  «       D �cg c]*  }|j                  j                  | «      sŒ|j                  ‘Œ, }}t	        |«      dk7  r't        t	        |«      › d| j                  › d|› d�«      ‚ |d   | «      S c c}w )Nr   z! compatible backends for target (z) (z). There should only be one.r   )r   ÚvaluesÚcompilerÚsupports_targetÚlenÚRuntimeErrorrz   )rY   r    Úactivess      r#   rß   rß   k  s‡   € Ü#+§?¡?Ó#4Ö[˜a¸¿
¹
×8RÑ8RÐSYÕ8Zˆq�z‹zÐ[€GÐ[Ü
ˆ7ƒ|�qÒÜÜ�7‹|ˆnÐ=¸f¿n¹nÐ=MÈSÐQXÐPYÐYuÐvóxð 	xàˆ7�1‰:�fÓÐùò	 \s
   — B¸Bc                  ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚLazyDictc                ó    — || _         g | _        y r\   )ÚdataÚextras)r;   r  s     r#   r?   zLazyDict.__init__u  s   € ØˆŒ	Øˆ�r$   c                ó¤   — | j                   D ]  \  }}| j                   ||Ž z  | _        Œ | j                   j                  «        | j                  S r\   )r  r  Úclear©r;   ÚfuncÚargss      r#   rä   zLazyDict.gety  sG   € ØŸ+™+ò 	0‰JˆD�$ØŸ	™	¡D¨$ KÑ/ˆD�Ið	0à�‰×ÑÔØ�y‰yÐr$   c                ó>   — | j                   j                  ||f«       y r\   )r  r«   r  s      r#   ÚaddzLazyDict.add  s   € Ø�‰×Ñ˜D $˜<Õ(r$   N)r-   rd   re   r?   rä   r  rf   r$   r#   r  r  s  s   „ òòó)r$   r  c                  ó   — e Zd Zd„ Zy)ÚAsmDictc                óT   — |dk(  rt        | d   «      }nt        d|z  «      ‚|| |<   |S )Nr
  r�   zUnknown key: '%s')r   ÚKeyError)r;   rP   Úvalues      r#   Ú__missing__zAsmDict.__missing__…  s6   € à�&Š=Ü˜T '™]Ó+‰EäÐ.°Ñ4Ó5Ð5àˆˆS‰	Øˆr$   N)r-   rd   re   r%  rf   r$   r#   r!  r!  ƒ  s   „ ór$   r!  c                ó,   — t        j                  | «      ‚r\   )ÚcopyÚdeepcopy)Úerrr  Úkwargss      r#   Ú_raise_errorr+  �  s   € Ü
�-‰-˜Ó
Ðr$   c                  ó4   — e Zd Zd„ Zd„ Zed„ «       Zd„ Zd„ Zy)ræ   c           	     óÎ  — ddl m} t        d„ |j                  «       D «       «      }t	        j
                  |j                  «       «      }|d   }t        |d   |d   |d   «      |d<    |dt        t        |j                  «       «      «      «      } |di |¤Ž| _        t        | j                  j                  «      }	|	j                  | j                  «      | _        || _        || _        | j                  j$                  | _        |j                  «       D �
�cg c]"  \  }
}|
j'                  d	«      rŒt)        |«      ‘Œ$ }}
}|	j*                  }t-        |D �ci c]B  }|j.                  d
d  |j.                  d
d  |k(  r|j1                  «       n|j                  «       “ŒD c}«      | _        || _        | j2                  |   | _        d | _        d | _        d | _        y c c}}
w c c}w )Nr   )Ú
namedtuplec              3  ó\   K  — | ]$  \  }}|j                  d «      sŒt        |«      –— Œ& y­w)rÒ   N)r›   r   )rœ   ÚcÚps      r#   rŸ   z*CompiledKernel.__init__.<locals>.<genexpr>˜  s$   è ø€ Ò`©$¨!¨QÈAÏJÉJÐW^ÕL_œd 1ŸgÑ`ùs   ‚,œ,rY   rz   ÚarchÚ	warp_sizeÚKernelMetadatarÒ   r   rf   )Úcollectionsr.  Únextr2   rÚ   Úloadsrm   r
   rG   rê   r9   rÓ   rß   rY   Úpack_metadataÚpacked_metadatarn   rQ   r.   r›   r   Ú
binary_extr!  rl   r’   ÚasmrÔ   Úkernelrv   ÚfunctionÚ_run)r;   rn   rÔ   rQ   r.  r  rÓ   rY   r4  rz   r0  r1  Ú	asm_filesr:  Úfiles                  r#   r?   zCompiledKernel.__init__–  s£  € Ý*ÜÑ`°.×2FÑ2FÓ2HÔ`ÓaˆÜ—:‘:˜m×5Ñ5Ó7Ó8ˆà˜(Ñ#ˆÜ& v¨iÑ'8¸&À¹.È&ÐQ\ÑJ]Ó^ˆ�ÑÙ#Ð$4´f¼TÀ(Ç-Á-Ã/Ó=RÓ6SÓTˆÙ&Ñ2¨Ñ2ˆŒÜ˜tŸ}™}×3Ñ3Ó4ˆØ&×4Ñ4°T·]±]ÓCˆÔØˆŒØˆŒ	Ø—M‘M×&Ñ&ˆŒ	à)7×)=Ñ)=Ó)?×[¡  AÀqÇzÁzÐRYÕGZ”T˜!•WÐ[ˆ	Ñ[Ø×'Ñ'ˆ
Üà!ö
àð �K‰K˜˜ˆO°$·+±+¸a¸b°/ÀZÒ2O˜TŸ_™_Ô.ÐUY×UcÑUcÓUeÑeò
ó ˆŒð -ˆÔØ—h‘h˜zÑ*ˆŒð ˆŒØˆŒØˆ�	ùó \ùò
s   ÄGÄ3GÅAG"c                óò  ‡ — ‰ j                   �y ˆ fd„}t        j                  j                  «       }t        j                  j	                  ‰ j
                  ‰ j                  «      ‰ _        t        |«      }‰ j                  j                  |kD  r' |t        ‰ j                  j                  |d«      «       t        ‰ j                  d«      rX‰ j                  j                  �Bd}‰ j                  j                  |kD  r' |t        ‰ j                  j                  |d«      «       t        j                  j                  �Ut        j                  j                  ‰ j                   ‰ j                   ‰ j"                  ‰ j$                  ‰ j&                  «       t        j                  j(                  j+                  ‰ j"                  ‰ j,                  ‰ j                  j                  |«      \  ‰ _         ‰ _        ‰ _        ‰ _        ‰ _        t        j                  j5                  «       j6                  }‰ j                  j8                  |z  ‰ j2                  kD  r4 |t        ‰ j                  j8                  |z  ‰ j2                  d«      «       t        j                  j:                  �Vt        j                  j;                  ‰ j                   ‰ j                   ‰ j"                  ‰ j$                  ‰ j&                  «       y y )Nc                óp   •— t        j                  | «      }t        j                  t        |«      ‰_        | ‚r\   )r'  r(  Ú	functoolsÚpartialr+  r>  )r)  Ú
cloned_errr;   s     €r#   Úraise_z,CompiledKernel._init_handles.<locals>.raise_¸  s,   ø€ ô Ÿ™ sÓ+ˆJÜ!×)Ñ)¬,¸
ÓCˆDŒIØˆIr$   zshared memoryÚ	tmem_sizei   ztensor memoryÚthreads)rv   r   r‰   Úget_current_deviceÚlauncher_clsrn   rÓ   r>  rˆ   Úsharedr   rC   rG  r   ÚruntimeÚkernel_load_start_hookr=  r.   rÔ   rQ   rŠ   Úload_binaryr<  Ún_regsÚn_spillsÚn_max_threadsrÞ   r3  r„   Úkernel_load_end_hook)r;   rF  rŒ   Ú
max_sharedÚmax_tmem_sizer3  s   `     r#   Ú_init_handleszCompiledKernel._init_handles´  s  ø€ Ø�;‰;Ð"Øô	ô —‘×1Ñ1Ó3ˆä—M‘M×.Ñ.¨t¯x©x¸¿¹ÓGˆŒ	ä# FÓ+ˆ
Ø�=‰=×Ñ *Ò,Ù”> $§-¡-×"6Ñ"6¸
ÀOÓTÔUÜ�4—=‘= +Ô.°4·=±=×3JÑ3JÐ3VàˆMØ�}‰}×&Ñ&¨Ò6Ù”~ d§m¡m×&=Ñ&=¸}ÈoÓ^Ô_Ü�=‰=×/Ñ/Ð;Ü�M‰M×0Ñ0°·±¸d¿m¹mÈTÏYÉYÐX\×XkÑXkÐmq×mvÑmvÔwäU[×UbÑUb×UhÑUh×UtÑUtØ�I‰I�t—{‘{ D§M¡M×$8Ñ$8¸&óVBÑRˆŒ�T”] D¤K°´ÀÔ@Rä—M‘M×4Ñ4Ó6×@Ñ@ˆ	Ø�=‰=×"Ñ" YÑ.°×1CÑ1CÒCÙ”> $§-¡-×"9Ñ"9¸IÑ"EÀt×GYÑGYÐ[dÓeÔfÜ�=‰=×-Ñ-Ð9Ü�M‰M×.Ñ.¨t¯{©{¸D¿M¹MÈ4Ï9É9ÐVZ×ViÑViÐko×ktÑktÕuð :r$   c                óR   — | j                   €| j                  «        | j                   S r\   )r>  rU  r]   s    r#   ÚrunzCompiledKernel.runÙ  s"   € à�9‰9ÐØ×ÑÔ Ø�y‰yÐr$   c                ó  — t         j                  j                  €y | j                  «        t	        | j
                  | j                  |dœ«      }t        | j                  t        «      r | j                  j                  j                  €|S t        | j                  j                  j                  |«      D ��ci c]  \  }}||“Œ
 }}}|j                  | j                  j                  j                  || j                  |f«       |S c c}}w )N)r.   r=  Ústream)r   rL  Úlaunch_enter_hookrU  r  r.   r=  r3   rn   r&   r)   Úlaunch_metadatar­   r5   r  rÓ   )r;   ÚgridrY  r  Úretr.   ÚargÚarg_dicts           r#   r[  zCompiledKernel.launch_metadataß  sÃ   € Ü�=‰=×*Ñ*Ð2ØØ×ÑÔÜ §	¡	°t·}±}ÐPVÑWÓXˆÜ˜$Ÿ(™(¤IÔ.°$·(±(·+±+×2MÑ2MÐ2UØˆJÜ/2°4·8±8·;±;×3HÑ3HÈ$Ó/O×P¡) $¨�D˜#‘IÐPˆÑPØ�‰�—‘—‘×+Ñ+¨d°D·M±MÀ8Ð-LÔMØˆ
ùó Qs   Â8Dc                ó<   ‡ ‡— ‰ j                  «        d dœˆˆ fd„
}|S )N)rY  c                ó|  •— | €=t         j                  j                  «       }t         j                  j                  |«      }  ‰j                  ‰| g|¢­Ž } ‰j
                  ‰d   ‰d   ‰d   | ‰j                  ‰j                  |t        j                  j                  t        j                  j                  g	|¢­Ž  y )Nr   r   r   )r   r‰   rI  Úget_current_streamr[  rW  r=  r9  r   rL  rZ  Úlaunch_exit_hook)rY  r  rŒ   r[  r\  r;   s       €€r#   Úrunnerz*CompiledKernel.__getitem__.<locals>.runnerí  s�   ø€ Øˆ~ÜŸ™×9Ñ9Ó;�ÜŸ™×9Ñ9¸&ÓA�Ø2˜d×2Ñ2°4¸ÐGÀ$ÒGˆOØˆD�H‰H�T˜!‘W˜d 1™g t¨A¡w°¸¿¹Àt×G[ÑG[Ð]lÜ—]‘]×4Ñ4´e·m±m×6TÑ6Tð]ØW[ô]r$   )rU  )r;   r\  rd  s   `` r#   Ú__getitem__zCompiledKernel.__getitem__ê  s   ù€ Ø×ÑÔà!%÷ 	]ð ˆr$   N)	r-   rd   re   r?   rU  ÚpropertyrW  r[  re  rf   r$   r#   ræ   ræ   ”  s,   „ òò<#vðJ ñó ðò
	ór$   ræ   )r®   ÚBaseException)NNN)rY   r
   r`   r	   )4Ú
__future__r   rI   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   rC  r§   r·   r'  Úptx_prototype_patternrp   Úptx_arg_type_patternrs   r   r&   rh   Ú	lru_cacherˆ   r”   r¤   rµ   r  rß   r  r0   r!  r+  ræ   rf   r$   r#   ú<module>rs     sð   ðÝ "Û Û ß >Ý Ý (ß 6ß !Ý .ß dÓ dÝ #Ý #Ý Û 	Û Û 	Û Û ð YÐ à	Ð ðÐ ð ,Ð à	ÐðÐ ò

÷ ñ  ÷F+ñ +ð\ €×ÑÓñOó ðOò,ó#$÷L$
ñ $
óNF5óR÷)ñ )ô 
ˆdô 
ò÷aò ar$   