Ë
    7^(hÙ  ã                   ó¦  — 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
 d dlZd dlZd dlmZ dZedk(  �rÇ ee¬«      Zej%                  d	d
¬«       ej%                  ddeddd¬«       ej%                  ddedd¬«       ej%                  ddedd¬«       ej%                  ddedd¬«       ej%                  ddedd ¬«       ej%                  d!d"ed#d¬$«       ej%                  d%d&ed'd¬$«       ej+                  «       Zej.                  rej.                  nej0                  Zej2                  rej2                  n ee«      Z eej4                  «      Zej4                  j9                  d  eej:                  «      «       ej<                  j?                  ej@                  e«      Z!ej<                  jE                  e!«      Z#e!jH                  jK                  e#«        e&e#ej0                  «      Z'ejP                  jS                  d(«      Z( e*e(«      dk(  sJ ‚ e+ e,d)„ ejZ                  jS                  d(«      «      «      Z-d*e
e   fd+„Z.d,ej^                  › d-ej`                  › �Z1 e.e-e1gz   «      Z2d.„ Z3 e4e-«      D � �ci c]&  \  } }d/|v sŒ| f e3|jS                  d/«      d   «      “Œ( c}} Z5e5jm                  «       D ��ci c]  \  }}|€Œ	||“Œ c}}Z5 e4e-«      D � �ci c]  \  } }e'jn                  |     e3|«      “Œ c}} Z8e8jm                  «       D ��ci c]  \  }}|€Œ	||“Œ c}}Z8e5jm                  «       D ]   \  Z9Z:e:dk(  sŒe:e8e'jn                  e9d       <   Œ"  e4e-«      D � �ci c]'  \  } }e'jn                  |    |jS                  d/«      d    “Œ) c}} Z-e8D ]  Z9d0e-e9<   Œ	 d1jw                  e8jy                  «       D �cg c]
  } e|«      ‘Œ c}«      Z=e8jm                  «       D ��cg c]  \  }}|› d2|› �‘Œ c}}Z>e>d3ej^                  › �d4ej`                  › �gz  Z>e5jy                  «       D ]  Z?e?d5v rŒJ d6e?› �«       ‚ e5jm                  «       D ��ci c]  \  }}|d7k(  sŒ|d8d7gg“Œ c}}Z@ej‚                  j…                  e'e8e-e@¬9«      ZCej^                  ej`                  d:œZD ejŠ                  eCeD¬;«      ZFeFjŽ                  j�                  d kD  r eId<«      ‚g Z7g ZJg ZKg ZL e4e'jn                  «      D ]�  \  ZMZNeNe8vrKe7jŸ                  eN«       eJjŸ                  e-eN   «       eKjŸ                  eN«       eLjŸ                  e-eN   «       ŒUe5j¡                  eMfd«      dk(  sŒle7jŸ                  eN«       eJjŸ                  d=«       Œ� dZQ e4e-jy                  «       «      D ]G  \  ZMZReQ eeM«      z  ZQe5j¡                  eMfd«      dk(  reQd>z  ZQe5j¡                  eMfd«      d7k(  sŒCeQd?z  ZQŒI d@jw                  ee2eQg«      ZSeFj¨                  dA   ZT e e jª                  eT«      «      dBdC ZVi dDeS“dEej0                  “dF e*eT«      “dGdHjw                   eWeVdddB…   eVdddB…   «      D ��cg c]  \  }}dI|› |› �‘Œ c}}«      “d*dHjw                   eWeKeL«      D ��cg c]  \  }} e|«      › dJ|› �‘Œ c}}«      “dKdHjw                   eWe7eJ«      D ��cg c]  \  }} e|«      › dJ|› �‘Œ c}}«      “dLdHjw                  eKD �cg c]  }dM|› �‘Œ	 c}dNgz   «      “dO e*eK«      dz   “dPe>“dQeFjŽ                  j°                  “dRej^                  “dSd@jw                  e=e1g«      “dTe(d    “dUe(d   “dVe(dB   “dWd“ZYdXD ]‡  ZZ ee[«      j:                  dYz  dZz  d[eZ› �z  Z\ej»                  d\e2› d@eQ› d\eZ› �«      j½                  d]«      5 Z_e_jÁ                    ee\«      jÃ                  «       jÄ                  d^i eY¤Ž«       ddd«       Œ‰ yyc c}} w c c}}w c c}} w c c}}w c c}} w c c}w c c}}w c c}}w c c}}w c c}}w c c}}w c c}w # 1 sw Y   ŒÛxY w)_é    N)ÚArgumentParser)ÚPath)ÚList)Ú	ty_to_cppa½  
Triton ahead-of-time compiler:

This program compiles the kernel with name `kernel-name` in the file at the
provided `path` into self-contained C source-code that embeds the `cubin`
data along with utilities to load, unload and launch the kernel.

signature is provided as a list of (optionally divisibility-hinted) types
or constexpr values, e.g.

`compile.py --kernel-name kernel --signature "*fp32:16, i32:16, 1024, i32" --out-name kernel /path/to/kernel.py`

will compile triton.JITFunction of name `kernel` inside the file `/path/to/kernel.py`.
Said kernel will be specialized such that argument 0, 1 are assumed to be multiple of 16,
and argument 2 is assumed to be a compile-time constant of value 1024, i.e. it won't be part of the generated prototype.

The resulting entry point will have signature

CUresult kernel_{specialization_suffix}(CUstream stream, unsigned gX, unsigned gY, unsigned gZ, float* arg0, int32_t arg1, int32_t arg2)

Different such specialized entry points can be combined using the `linker.py` script.

NOTE: when resolving the scope of /path/to/kernel.py, the file will be executed from within its parent directory with the python interpreter
used to run this `compile.py` script
Ú__main__)ÚdescriptionÚpathzTPath to Python source containing desired kernel in its scope. File will be executed.)Úhelpz--kernel-namez-nÚ zName of the kernel to compileT)ÚtypeÚdefaultr
   Úrequiredz--num-warpsz-wé   z$Number of warps to launch the kernel)r   r   r
   z--num-stagesz-nsé   z/Number of stages (meta-parameter of the kernel)z
--out-namez-onz Out name for the compiled kernelz
--out-pathz-ozOut filenamez--signaturez-szSignature of the kernel)r   r
   r   z--gridz-gzLaunch grid of the kernelú,c                 ó$   — | j                  d«      S )Nú )Ústrip)Úss    úR/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/triton/tools/compile.pyú<lambda>r   F   s   €  1§7¡7¨3£<€ ó    Ú	signaturec                 ó¬   — t        j                  «       }|j                  dj                  | «      j	                  «       «       |j                  «       d d S )Nr   é   )ÚhashlibÚsha256ÚupdateÚjoinÚencodeÚ	hexdigest)r   Úms     r   Úhash_signaturer#   H   s?   € Ü�N‰NÓˆØ	�‰�—‘˜)Ó$×+Ñ+Ó-Ô.Ø�{‰{‹}˜R˜aÐ Ð r   ÚwarpsÚxstagesc                 óv   — 	 t        | «      }|S # t        $ r Y nw xY w	 t        | «      }|S # t        $ r Y y w xY w)N)ÚintÚ
ValueErrorÚfloat)r   Úrets     r   Ú	constexprr+   P   sO   € ð	Ü�a“&ˆCØˆJøÜò 	Ùð	úð	Ü˜“(ˆCØˆJøÜò 	ØØð	ús   ‚ �	šŸ, ¬	8·8ú:r+   Úxú=z
num_warps=znum_stages=)r   é   z#Only 1 and 16 are valid hints, got r/   ztt.divisibility)ÚfnÚ
constexprsr   Úattrs)Ú	num_warpsÚ
num_stages)ÚoptionszMAOT compiling kernels with global scratch requirements is not yet implementedÚi32ÚcÚdÚ_Úcubiné   éÿÿÿÿÚkernel_nameÚtriton_kernel_nameÚbin_sizeÚbin_dataz, Ú0xr   Úfull_signatureÚarg_pointersú&z&global_scratchÚnum_argsÚkernel_docstringÚsharedr3   Ú	algo_infoÚgridXÚgridYÚgridZÚ_placeholder)Úhr7   ÚextraÚcudazcompile.ú.Úw© )cÚbinasciir   Úimportlib.utilÚ	importlibÚsysÚargparser   Úpathlibr   Útypingr   ÚtritonÚtriton.backendsÚtriton.backends.nvidia.driverr   ÚdescÚ__name__ÚparserÚadd_argumentÚstrr'   Ú
parse_argsÚargsÚout_namer=   Úout_pathr	   Úarg_pathÚinsertÚparentÚutilÚspec_from_file_locationÚstemÚspecÚmodule_from_specÚmodÚloaderÚexec_moduleÚgetattrÚkernelÚgridÚsplitÚlenÚlistÚmapr   r#   r3   r4   Úmeta_sigÚsig_hashr+   Ú	enumerateÚhintsÚitemsÚ	arg_namesÚ	constantsÚkeyÚvaluer   ÚvaluesÚ	const_sigÚ
doc_stringrM   r2   ÚcompilerÚ	ASTSourceÚsrcÚoptsÚcompileÚccinfoÚmetadataÚglobal_scratch_sizeÚRuntimeErrorÚ	arg_typesÚarg_names_not_1Úarg_types_not_1ÚiÚarg_nameÚappendÚgetÚsuffixÚtyÚ	func_nameÚasmÚhexlifyÚhex_ÚziprG   ÚparamsÚextÚ__file__Útemplate_pathÚwith_suffixÚopenÚfpÚwriteÚ	read_textÚformat)	r�   r   ÚkÚvr-   ÚyÚnamer•   Úargs	   000000000r   ú<module>rª      sÍ  ðÛ Û Û Û 
Ý #Ý Ý ã Û Ý 3ð€ð4 ˆzÓñ ¨Ô-€FØ
×Ñ˜Øsð ô uà
×Ñ˜¨°CÀÐJiØ!%ð ô 'à
×Ñ˜ t°#¸qÐGmÐÔnØ
×Ñ˜¨°CÀØNð ô Pà
×Ñ˜ e°#¸tÐJlÐÔmØ
×Ñ˜ d°¸tÈ.ÐÔYØ
×Ñ˜ t°#Ð<UÐ`dÐÔeØ
×Ñ˜ $¨SÐ7RÐ]aÐÔbØ×ÑÓ€Dà $§¢ˆt�}Š}°4×3CÑ3C€HØ $§¢ˆt�}Š}±4¸³>€Hñ �D—I‘I‹€HØ‡H�H‡O�O�A‘s˜8Ÿ?™?Ó+Ô,Ø�>‰>×1Ñ1°(·-±-ÀÓJ€DØ
�.‰.×
)Ñ
)¨$Ó
/€CØ‡K�K×Ñ˜CÔ Ù�S˜$×*Ñ*Ó+€FØ�9‰9�?‰?˜3Ó€DÙˆt‹9˜Š>Ðˆ>ñ ‘SÑ/°·±×1EÑ1EÀcÓ1JÓKÓL€Ið! $ s¡)ó !ð
 �t—~‘~Ð& g¨d¯o©oÐ->Ð?€HÙ˜i¨8¨*Ñ4Ó5€Hòñ <EÀYÓ;O×\±4°1°aÐSVÐZ[ÒS[ˆaˆU‘I˜aŸg™g c›l¨1™oÓ.Ñ.Ó\€EØ#Ÿk™k›m×=‘d�a˜¨q©}ˆQ�‰TÓ=€EÙ?HÈÓ?S×T±t°q¸!�×!Ñ! !Ñ$¡i°£lÑ2ÓT€IØ"+§/¡/Ó"3×E™$˜!˜Q°q±}��A‘ÓE€IØ—k‘k“mò 8‰
ˆˆUØ�A‹:Ø27ˆI�f×&Ñ& s¨1¡vÑ.Ò/ð8ñ CLÈIÓBV×W¹$¸!¸Q�×!Ñ! !Ñ$ a§g¡g¨c£l°1¡oÑ5ÓW€IØò %ˆØ$ˆ	�#Šð%à—‘¨)×*:Ñ*:Ó*<Ö= Q™#˜a�&Ò=Ó>€IØ)2¯©Ó):×;¡  A�Q�C�q˜˜’*Ó;€JØ�Z §¡Ð/Ð0°KÀÇÁÐ?PÐ2QÐRÑR€Jà�\‰\‹^ò GˆØ�GŠ|ÐFÐBÀ1À#ÐFÓFˆ|ðGà6;·k±k³m×O©d¨a°ÀqÈBÃwˆQÐ# RÐ(Ð)Ñ)ÓO€EØ
�/‰/×
#Ñ
# v¸)ÈyÐ`eÐ
#Ó
f€CØŸ™°t·±ÑG€DØˆV�^‰^˜C¨Ô.€FØ‡�×*Ñ*¨QÒ.ÙÐjÓkÐkà€IØ€IØ€OØ€OÙ  ×!1Ñ!1Ó2ò $‰ˆˆ8Ø˜9Ñ$Ø×Ñ˜XÔ&Ø×Ñ˜Y xÑ0Ô1Ø×"Ñ" 8Ô,Ø×"Ñ" 9¨XÑ#6Õ7Ø�Y‰Y˜�u˜dÓ# qÓ(Ø×Ñ˜XÔ&Ø×Ñ˜UÕ#ð$ð €FÙ˜9×+Ñ+Ó-Ó.ò ‰ˆˆ2Ø‘#�a“&ÑˆØ�9‰9�a�U˜DÓ! QÒ&Ø�c‰MˆFØ�9‰9�a�U˜DÓ! RÓ'Ø�c‰M‰Fðð —‘˜( H¨fÐ5Ó6€IØ
�*‰*�WÑ
€CÙÐˆx×Ñ Ó$Ó% a¨Ð+€DðØ�yðà˜d×.Ñ.ðð 	‘C˜“Hðð 	�D—I‘I±s¸4ÁÀ!À¹9ÀdÈ1È4ÈaÈ4ÁjÓ7Q×R©t¨q°!  A 3 q cš{ÓRÓSð	ð
 	�T—Y‘YÉ#ÈoÐ_nÓJo×p¹h¸dÀB¡9¨R£= /°°4°&Ò 9ÓpÓqðð 	˜$Ÿ)™)ÉsÐS\Ð^gÓOh×$iÁ8À4È©	°"« °a¸°vÒ%>Ó$iÓjðð 	˜Ÿ	™	¸Ö"H° Q s e¢9Ò"HÐL]ÐK^Ñ"^Ó_ðð 	‘C˜Ó(¨1Ñ,ðð 	˜Jðð 	�&—/‘/×(Ñ(ðð 	�T—^‘^ðð 	�S—X‘X˜y¨(Ð3Ó4ðð 	��a‘ðð 	��a‘ðð 	��a‘ðð  	˜ð!€Fð$ ò GˆÙ˜X›×-Ñ-°Ñ7¸&Ñ@ÀXÈcÈUÐCSÑSˆØ×!Ñ! A h Z¨q°°¸¸#¸Ð"?Ó@×EÑEÀcÓJð 	GÈbØ�H‰HÐ;‘T˜-Ó(×2Ñ2Ó4×;Ñ;ÑE¸fÑEÔF÷	Gð 	GñGðq ùól ]ùÛ=ùÛTùÛEùó Xùò >ùÛ;ùó
 PùóH SùÛpùÛ$iùÚ"H÷	Gð 	Gúsl   Ê`Ê`Ë
`Ë`Ë" `Ì
`Ì$`Í+,`Ï`Ï-`$Ñ`*Ñ'`*Ù(`0Ú`6Û`<Û?aÞ?6aáa	