K i{RddlmZddlZddlZddlmZmZddlmZddlm Z ddlm Z m Z ddl m Z mZdd lmZdd lmZmZmZmZdd lmZdd lmZdd lmZddlZddlZddlZddlZddl Z dZ!de!iZ"dZ#de#iZ$dZ%GddZ&GddZ'ejPdZ)dZ*d$dZ+GddZ,d%dZ-d&dZ.GddZ/Gdd e0Z1d!Z2Gd"d#Z3y)') annotationsN)get_cache_invalidating_env_varsir)backends)Language) BaseBackend GPUTarget) __version__knobs)OutOfResources)get_cache_managerget_dump_managerget_override_manager get_cache_key)driver)get_sass)Pathz=\.(?:visible|extern)\s+\.(?:entry|func)\s+(\w+)\s*\(([^)]*)\)ptxz\.param\s+\.(\w+)ctjd|}tjd|}|ytjdd|}|dt|j dzS|S)Nz!tt\.ptr<([^,]+)ztt.nv_tma_desc = 1 nvTmaDescz {[^}]+}*)researchsubconvert_type_reprgroup)xmatchtmas ^/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/triton/compiler/compiler.pyrr'sd II)1 -E )))1 -C  {B"A &u{{1~666 Hc*eZdZdddZdZddZdZy) ASTSourceNc||_tj|_d|_|j |_||_t|_ |g|jD]T\}}t|tr|jj|fn|}t|tsJ||j|<V|xs t|_|jj#D]}t|trt%dy)NttirzSignature keys must be string)fnrTRITONlanguageext__name__name signaturedict constantsitems isinstancestr arg_namesindextupleattrskeys TypeError)selfr)r/ constexprsr8kvs r#__init__zASTSource.__init__6s  KK "  !"((* &11;As1CR\\''*-!!U+++$%q! &_df $$& AAa% ?@@ Ar$c t|jjDcgc]\}}| }}}d}djt|jjDcgc] \}}||c}}}|j j dt|jd|d|}tj|jdjScc}}wcc}}w)NcHt|dr |jSt|S)N cache_key)hasattrrBr4)r s r#z ASTSource.hash..Is71k+BAKKAr$-utf-8) sortedr/r2joinr1r)rBr4r8hashlibsha256encode hexdigest)r;r=r> sorted_sigget_key constants_keykeys r#hashzASTSource.hashGs$*4>>+?+?+A$BCDAqaC CN@T@T@V9W!XA'!*!XY ""#1S_$5Qzl!M?S~~cjj12<<>> D!Xs C**C0 c>ddlm}||j|||||S)Nr) ast_to_ttir)contextoptions codegen_fns module_map)code_generatorrSr))r;targetrUrVrWrTrSs r#make_irzASTSource.make_irNs$/477D'7Xc&02 2r$ctSN)r0r;s r# parse_optionszASTSource.parse_optionsSs v r$)NNreturnNonerYr r- __module__ __qualname__r?rQrZr^r$r#r&r&4sA"?2 r$r&c&eZdZdZdZddZdZy)IRSourcec||_t|}|jdd|_tj |_|j|_tj||j||jdk(rtjt|j|jtj}|jd|_|jd}tj"t$|j|}t'|Dcic]\}}|t)|c}}|_ytj,|j||_|j.j1} d| z|_|j.j3| } |j.j5| } t'| Dcic]\}}|| c}}|_ycc}}wcc}}w)Nrrr@)pathrsuffixr,rr*r+ read_textsrcr load_dialectsrrprototype_pattern MULTILINErr.findallarg_type_pattern enumeraterr/parse_mlir_modulemoduleget_entry_func_name get_functionget_function_signature) r;rkrTbackendr!r/typesr=tyfn_namefuncOpfunc_tys r#r?zIRSource.__init__Ysn Dz;;qr?  >># !g& 88u II/9488R\\RE ADI AIJJ/99EEDMeDTU51ba!22!66UDN..tyy'BDKkk557Gg DI[[--g6Fkk88@G1:71CD2aeDDNVEs "G& G,cztj|jjdj S)NrF)rIrJrnrKrLr]s r#rQz IRSource.hashrs'~~dhhoog67AACCr$c<||j_|jSr\)rvrT)r;rYrUrVrWrTs r#rZzIRSource.make_irus% {{r$c|jdk(r(|jjd}|Jdd|iStS)Nttgirz ttg.num-warpsz'Unable to parse ttg.num-warps attribute num_warps)r,rv get_int_attrr0)r;rs r#r^zIRSource.parse_optionsysF 88w  00AI( S*S S(+ +v r$Nrbrcrfr$r#rhrhWsE2Dr$rhcZtjjj|dS)Nmax_shared_mem)ractiveutilsget_device_properties)devices r#rrs# ==   4 4V <=M NNr$c|dk(s|dk(rtj||}||_|S|dk(s |dk(s|dk(rt|j S|dk(s|dk(rt|j Sy)Nr(rllirramdgcncubinhsaco)rrurTrrm read_bytes) full_namer,rTrvs r#parsersx f}w%%i9   f}u xI((** g~I))++(r$c,tjjry|jt |j|j t |j ddg}|Dcgc]"}|j dtj$}}|jg}4tfd|Ds|jj4t||ddD] \}}||_ |sd|_ yd|d_ |d|_ ycc}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/c3K|]6}jjjj|s3|8ywr\)tb_framef_code co_filenameendswith).0ftbs r# z#filter_traceback..s/V2;;+=+=+I+I+R+RST+U1Vs4??rr)r compilationfront_end_debugging __cause__filter_traceback __context__replaceossep __traceback__anyappendtb_nextzip)e BAD_FILESbad_fileframes cur_frame next_framers @r#rrs   ,,{{%}} ' -I@II8!!#rvv.III B F .ViVV MM"  ZZ . $'vvabz#:'J& ' !r  )!Js''Dc,eZdZddZddZddZddZy) CompileTimerc`tj|_d|_g|_d|_yr\)timestartir_initialization_endlowering_stage_endsstore_results_endr]s r#r?zCompileTimer.__init__s' IIK 37"<> /3r$c6tj|_yr\)rrr]s r#finished_ir_initializationz'CompileTimer.finished_ir_initializations%)YY["r$cb|jj|tjfyr\)rrr)r; stage_names r#stage_finishedzCompileTimer.stage_finisheds!   ''TYY[(ABr$cltj}|j||_n||_dd}g}|j}|jD]!\}}|j ||||f|}#t j ||j|j||||jS)Nc*|yt||z dzS)Nri@B)int)rends r#deltazCompileTimer.end..deltas{e w./ /r$)ir_initializationlowering_stages store_results)rfloatrz float | Noner`r)rrrrrr CompileTimesr)r; timestamprlowering_stage_durations stage_startr stage_ends r#rzCompileTimer.endsIIK  % % -)2D &%.D " 0 $& 00 %)%=%= $ !J $ + +Z{I9V,W X#K $!!#DJJ0J0JK4 T-C-CD  r$Nr_)rr4r`ra)r`zknobs.CompileTimes)r-rdrer?rrrrfr$r#rrs4 1C r$rc tjj}|r t}|tj j }t|tsJdt|}t|t }|r8t|tsJdtj}t|||}|j} |jt!|xs t!fi| }| t#n|} t%|||| } t'j(| j+dj-} t/| } tjj0}tjj2}tjj4}|rt7|j9nd}|rt;|j9nd}|j<dd}|d}| j?|xsi}|jA|}tjjB}|sF|DtE||| }|r3|||jFjI|jKd|S| |d |jL| }tN|d <t!}|jQ|||jRtU|jWjY|jZ}|r|d z }t|ts:tj}tj\||j]||j_|}|ja} |jc||||}|r'|d |jZ} | ji|| || <n|d } | ji|| || <tjjj}!|r5|!r3|jm|jntqd|jn|rjstU|ju|dD]\}"}#|#||}$|d |"} |6|jAddx}%rP|%jwd |"r>#**W- . 8 8 :D(.''00O&&..N));;>M.sxxz:SW6D&sxxz2$O #I$+U+%//0ABHbN"&&'89M&&55N m7S.$7  --/-iik        H "-H  VF vw 5v{{}%++CGG4Kq  c8 $**, !g&44W=K'')JVWk:wO " 1SWWI. &6&:&:6;&O{#" 7+ &6&:&:6;&O{#""--JZ''1 +CHH:67 ((* / =&Z 2 " 1SE*  & (||M4@@ @kFZFZ]^_b^c[dFe#Kg> -66{C CY C 29+> ? 38K!s.H'H*:*>*>{K*XN; '  &    [ 9g~ ,##D)g*=>  +44[AL  0 0 > / ~> ?    %5&8)9(<(|jj||fyr\)rrrs r#addz LazyDict.adds D$<(r$N)r-rdrer?rr rfr$r#rrzs )r$rceZdZdZy)AsmDictcT|dk(rt|d}ntd|z|||<|S)Nr rzUnknown key: '%s')rKeyError)r;rPvalues r# __missing__zAsmDict.__missing__s6 &=T']+E.45 5S  r$N)r-rdrer&rfr$r#r"r"sr$r"c,tj|r\)copydeepcopy)errrkwargss r# _raise_errorr,s -- r$c4eZdZdZdZedZdZdZy)rc ddlm}td|jD}t j |j }t|d|d<|d}t|d|d|d|d<|d tt|j}|d i||_ t|jj} | j|j|_||_||_|jj&|_|jD cgc]"\} } | j)d rt+| $} } } | j,} t/| Dcic]B}|j0d d|j0d d| k(r|j3n|j Dc}|_||_|j4| |_d|_d|_d|_ycc} } wcc}w) Nr) namedtuplec3\K|]$\}}|jdst|&yw)rN)rr)rcps r#rz*CompiledKernel.__init__..s$`$!QAJJW^L_d1g`s,, cluster_dimsrYrzarch warp_sizeKernelMetadatarrrf) collectionsr/nextr2rloadsrmr7r rGrr9rrrY pack_metadatapacked_metadatarnrQr.rr binary_extr"rlrasmrkernelrvfunction_run)r;rnrrQr/rrrYr6rzr1r2 asm_filesr<files r#r?zCompiledKernel.__init__s*`.2F2F2H`a ::m5578#(.)A#B (#&vi'8&.&Q\J]^#$4fT(--/=R6ST&22 t}}334&44T]]C MM&& )7)=)=)?[AqzzRYGZT!W[ ['' !  KKO$++ab/Z2OT__.UYUcUcUe e  -hhz*    \ s*G- G-)AG3cjyfd}tjj}tjj j j _t|}j j|kDr'|tj j|dtj drXj jBd}j j|kDr'|tj j|dtjjUtjjjj j"j$j&tjj(j+j"j,j j|\_____tjj5j6}j j8|zj2kDr4|tj j8|zj2dtjj:Vtjj;jj j"j$j&yy)Ncptj|}tjt|_|r\)r(r) functoolspartialr,r@)r* cloned_errr;s r#raise_z,CompiledKernel._init_handles..raise_s, s+J!)), CDIIr$z shared memory tmem_sizeiz tensor memorythreads)rvrrget_current_device launcher_clsrnrr@rsharedr rCrIr runtimekernel_load_start_hookr?r.rrQr load_binaryr>n_regsn_spills n_max_threadsrr5rkernel_load_end_hook)r;rHr max_shared max_tmem_sizer5s` r# _init_handleszCompiledKernel._init_handless ;; "  113MM..txxG #F+ ==  * , >$--"6"6 OT U 4==+ .4==3J3J3VM}}&&6~dmm&=&=}o^_ == / / ; MM 0 0dmmTYYX\XkXkmqmvmv wU[UbUbUhUhUtUt IIt{{DMM$8$8&VBR T]DK@RMM446@@ == " "Y .1C1C C >$--"9"9I"EtGYGY[de f == - - 9 MM . .t{{DMM499VZViVikoktkt u :r$cR|j|j|jSr\)r@rWr]s r#runzCompiledKernel.runs" 99     yyr$ctjjy|jt |j |j |d}t|jtr |jjj|St|jjj|Dcic]\}}|| }}}|j|jjj||j|f|Scc}}w)N)r.r?stream)r rNlaunch_enter_hookrWrr.r?r3rnr&r)launch_metadatarr5r r)r;gridr[rretr.argarg_dicts r#r]zCompiledKernel.launch_metadatas == * * 2  t}}PVWX$((I.$((++2M2M2UJ/2488;;3H3H$/OP)$D#IPP  ++dDMM8-LM Qs8 Dc<jddfd }|S)N)r[c ||=tjj}tjj|}j|g|}j ddd|j j|tjjtjjg |y)Nrrr) rrrKget_current_streamr]rYr?r;r rNr\launch_exit_hook)r[rrr]r^r;s r#runnerz*CompiledKernel.__getitem__..runners~99;99&A2d224G$GO DHHT!Wd1gtAw tG[G[]l]]44emm6T6T ]W[ ]r$)rW)r;r^rfs`` r# __getitem__zCompiledKernel.__getitem__s !% ] r$N) r-rdrer?rWpropertyrYr]rgrfr$r#rrs,>#vJ  r$r)r BaseException)NNN)rYr r`r )4 __future__rrIr _C.libtritonrrrbackends.compilerrr r rr r runtime.autotunerr runtime.cacherrrrruntime.driverr tools.disasmrpathlibrrrErrr(ptx_prototype_patternrpptx_arg_type_patternrsrr&rh lru_cacherrrrr rrr0r"r,rrfr$r#rus" >(6!.dd##  Y ,     F''TOO,#$L$ $ NQ5h ) ) d bbr$