§
    9˜º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    �rT ee¬¦  «        Ze                     d	d
¬¦  «         e                     ddeddd¬¦  «         e                     ddedd¬¦  «         e                     ddedd¬¦  «         e                     ddedd¬¦  «         e                     ddedd ¬¦  «         e                     d!d"ed#d¬$¦  «         e                     d%d&ed'd¬$¦  «         e                     ¦   «         Zej        rej        nej        Zej        rej        n
 ee¦  «        Z eej        ¦  «        Zej                             d  eej        ¦  «        ¦  «         ej                             ej         e¦  «        Z!ej         "                    e!¦  «        Z#e!j$         %                    e#¦  «          e&e#ej        ¦  «        Z'ej(         )                    d(¦  «        Z( e*e(¦  «        dk    sJ ‚ e+ e,d)„ ej-         )                    d(¦  «        ¦  «        ¦  «        Z-d*e
e         fd+„Z.d,ej/        › d-ej0        › �Z1 e.e-e1gz   ¦  «        Z2d.„ Z3d/„  e4e-¦  «        D ¦   «         Z5d0„ e5 6                    ¦   «         D ¦   «         Z5d1„  e4e-¦  «        D ¦   «         Z7d2„ e7 6                    ¦   «         D ¦   «         Z7e5 6                    ¦   «         D ]!\  Z8Z9e9dk    re9e7e'j:        e8d                   <   Œ"d3„  e4e-¦  «        D ¦   «         Z-e7D ]Z8d4e-e8<   Œd5 ;                    d6„ e7 <                    ¦   «         D ¦   «         ¦  «        Z=d7„ e7 6                    ¦   «         D ¦   «         Z>e>d8ej/        › �d9ej0        › �gz  Z>e5 <                    ¦   «         D ]Z?e?d:v sJ d;e?› �¦   «         ‚Œd<„ e5 6                    ¦   «         D ¦   «         Z@ejA         B                    e'e7e-e@¬=¦  «        ZCej/        ej0        d>œZD ejE        eCeD¬?¦  «        ZFeFjG        jH        d k    r eId@¦  «        ‚g Z:g ZJg ZKg ZL e4e'j:        ¦  «        D ]¯\  ZMZNeNe7vrae: O                    eN¦  «         eJ O                    e-eN         ¦  «         eK O                    eN¦  «         eL O                    e-eN         ¦  «         Œje5 P                    eMfd¦  «        dk    r*e: O                    eN¦  «         eJ O                    dA¦  «         Œ°dZQ e4e- <                    ¦   «         ¦  «        D ]S\  ZMZReQ eeM¦  «        z  ZQe5 P                    eMfd¦  «        dk    reQdBz  ZQe5 P                    eMfd¦  «        dCk    reQdDz  ZQŒTdE ;                    ee2eQg¦  «        ZSeFjT        dF         ZT e e jU        eT¦  «        ¦  «        dGdH…         ZVi dIeS“dJej        “dK e*eT¦  «        “dLdM ;                    dN„  eWeVdddG…         eVdddG…         ¦  «        D ¦   «         ¦  «        “d*dM ;                    dO„  eWeKeL¦  «        D ¦   «         ¦  «        “dPdM ;                    dQ„  eWe:eJ¦  «        D ¦   «         ¦  «        “dRdM ;                    dS„ eKD ¦   «         dTgz   ¦  «        “dU e*eK¦  «        dz   “dVe>“dWeFjG        jX        “dXej/        “dYdE ;                    e=e1g¦  «        “dZe(d          “d[e(d         “d\e(dG         “d]d“ZYd^D ]¤ZZ ee[¦  «        j        d_z  d`z  daeZ› �z  Z\e ]                    dbe2› dEeQ› dbeZ› �¦  «         ^                    dc¦  «        5 Z_e_ `                      ee\¦  «         a                    ¦   «         jb        ddi eY¤Ž¦  «         ddd¦  «         n# 1 swxY w Y   Œ£dS dS )eé    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                 ó,   — |                       d¦  «        S )Nú )Ústrip)Úss    ú\/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/triton/tools/compile.pyú<lambda>r   F   s   €  1§7¢7¨3¡<¤<€ ó    Ú	signaturec                 óÔ   — t          j        ¦   «         }|                     d                     | ¦  «                             ¦   «         ¦  «         |                     ¦   «         d d…         S )Nr   é   )ÚhashlibÚsha256ÚupdateÚjoinÚencodeÚ	hexdigest)r   Úms     r   Úhash_signaturer$   H   sP   € ÝŒNÑÔˆØ	�Š�—’˜)Ñ$Ô$×+Ò+Ñ-Ô-Ñ.Ô.Ð.Ø�{Š{‰}Œ}˜R˜a˜RÔ Ð r   ÚwarpsÚxstagesc                 óŽ   — 	 t          | ¦  «        }|S # t          $ r Y nw xY w	 t          | ¦  «        }|S # t          $ r Y nw xY wd S ©N)ÚintÚ
ValueErrorÚfloat)r   Úrets     r   Ú	constexprr-   P   sq   € ð	Ý�a‘&”&ˆCØˆJøÝð 	ð 	ð 	ØˆDð	øøøð	Ý˜‘(”(ˆCØˆJøÝð 	ð 	ð 	ØˆDð	øøøàˆts   ‚ “
 Ÿ ¤5 µ
AÁAc                 óp   — i | ]3\  }}d |v ¯	|ft          |                     d ¦  «        d         ¦  «        “Œ4S )ú:r   )r-   Úsplit©Ú.0Úir   s      r   ú
<dictcomp>r4   ]   sB   € Ð\Ð\Ð\±4°1°aÐSVÐZ[ÐS[ÐS[ˆaˆU•I˜aŸgšg c™lœl¨1œoÑ.Ô.ÐS[ÐS[ÐS[r   c                 ó   — i | ]
\  }}|®||“ŒS r(   © ©r2   ÚkÚvs      r   r4   r4   ^   s   € Ð=Ð=Ð=‘d�a˜¨q¨}ˆQ�¨}¨}¨}r   c                 óT   — i | ]%\  }}t           j        |         t          |¦  «        “Œ&S r6   )ÚkernelÚ	arg_namesr-   r1   s      r   r4   r4   _   s,   € ÐTÐTÐT±t°q¸!•Ô! !Ô$¥i°¡l¤lÐTÐTÐTr   c                 ó   — i | ]
\  }}|®||“ŒS r(   r6   r7   s      r   r4   r4   `   s   € ÐEÐEÐE™$˜!˜Q°q°}��A°}°}°}r   c                 ól   — i | ]1\  }}t           j        |         |                     d ¦  «        d         “Œ2S )r/   r   )r;   r<   r0   r1   s      r   r4   r4   d   s4   € ÐWÐWÐW¹$¸!¸Q•Ô! !Ô$ a§g¢g¨c¡l¤l°1¤oÐWÐWÐWr   r-   Úxc                 ó,   — g | ]}t          |¦  «        ‘ŒS r6   )Ústr)r2   r9   s     r   ú
<listcomp>rB   g   s   € Ð=Ð=Ð= Q�#˜a™&œ&Ð=Ð=Ð=r   c                 ó"   — g | ]\  }}|› d |› �‘ŒS )ú=r6   r7   s      r   rB   rB   h   s&   € Ð;Ð;Ð;¡  A�Q�*�*˜�*�*Ð;Ð;Ð;r   z
num_warps=znum_stages=)r   é   z#Only 1 and 16 are valid hints, got c                 ó,   — i | ]\  }}|d k    ¯|dd gg“ŒS )rE   ztt.divisibilityr6   r7   s      r   r4   r4   m   s,   € ÐOÐOÐO©d¨a°ÀqÈBÂwÀwˆQÐ# RÐ(Ð)ÀwÀwÀwr   )ÚfnÚ
constexprsr   Úattrs)Ú	num_warpsÚ
num_stages)ÚoptionszMAOT compiling kernels with global scratch requirements is not yet implementedÚi32ÚcrE   ÚdÚ_Úcubiné   éÿÿÿÿÚkernel_nameÚtriton_kernel_nameÚbin_sizeÚbin_dataz, c                 ó"   — g | ]\  }}d |› |› �‘ŒS )Ú0xr6   )r2   r?   Úys      r   rB   rB   ‘   s&   € ÐRÐRÐR©t¨q°!˜{ A˜{ q˜{˜{ÐRÐRÐRr   c                 ó<   — g | ]\  }}t          |¦  «        › d |› �‘ŒS ©r   r   ©r2   ÚnameÚtys      r   rB   rB   ’   s0   € ÐpÐpÐp¹h¸dÀB¥9¨R¡=¤=Ð 9Ð 9°4Ð 9Ð 9ÐpÐpÐpr   Úfull_signaturec                 ó<   — g | ]\  }}t          |¦  «        › d |› �‘ŒS r\   r   r]   s      r   rB   rB   “   s0   € Ð$iÐ$iÐ$iÁ8À4È­	°"©¬Ð%>Ð%>¸Ð%>Ð%>Ð$iÐ$iÐ$ir   Úarg_pointersc                 ó   — g | ]}d |› �‘ŒS )ú&r6   )r2   Úargs     r   rB   rB   ”   s   € Ð"HÐ"HÐ"H° 9 s 9 9Ð"HÐ"HÐ"Hr   z&global_scratchÚnum_argsÚkernel_docstringÚsharedrJ   Ú	algo_infoÚgridXÚgridYÚgridZÚ_placeholder)ÚhrN   ÚextraÚcudazcompile.ú.Úwr6   )cÚbinasciir   Úimportlib.utilÚ	importlibÚsysÚargparser   Úpathlibr   Útypingr   ÚtritonÚtriton.backendsÚtriton.backends.nvidia.driverr   ÚdescÚ__name__ÚparserÚadd_argumentrA   r)   Ú
parse_argsÚargsÚout_namerT   Úout_pathr
   Úarg_pathÚinsertÚparentÚutilÚspec_from_file_locationÚstemÚspecÚmodule_from_specÚmodÚloaderÚexec_moduleÚgetattrr;   Úgridr0   ÚlenÚlistÚmapr   r$   rJ   rK   Úmeta_sigÚsig_hashr-   Ú	enumerateÚhintsÚitemsÚ	constantsÚkeyÚvaluer<   r    ÚvaluesÚ	const_sigÚ
doc_stringrn   rI   ÚcompilerÚ	ASTSourceÚsrcÚoptsÚcompileÚccinfoÚmetadataÚglobal_scratch_sizeÚRuntimeErrorÚ	arg_typesÚarg_names_not_1Úarg_types_not_1r3   Úarg_nameÚappendÚgetÚsuffixr_   Ú	func_nameÚasmÚhexlifyÚhex_Úziprh   ÚparamsÚextÚ__file__Útemplate_pathÚwith_suffixÚopenÚfpÚwriteÚ	read_textÚformatr6   r   r   ú<module>r¿      sð	  ðØ €€€Ø €€€Ø Ð Ð Ð Ø 
€
€
€
Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ð€ð4 ˆzÒÑð ˆ^¨Ð-Ñ-Ô-€FØ
×Ò˜Øsð ñ uô uð uà
×Ò˜¨°CÀÐJiØ!%ð ñ 'ô 'ð 'à
×Ò˜ t°#¸qÐGmÐÑnÔnÐnØ
×Ò˜¨°CÀØNð ñ Pô Pð Pà
×Ò˜ e°#¸tÐJlÐÑmÔmÐmØ
×Ò˜ d°¸tÈ.ÐÑYÔYÐYØ
×Ò˜ t°#Ð<UÐ`dÐÑeÔeÐeØ
×Ò˜ $¨SÐ7RÐ]aÐÑbÔbÐbØ×ÒÑÔ€Dà $¤ÐCˆtŒ}ˆ}°4Ô3C€HØ $¤ÐAˆtŒ}ˆ}°4°4¸±>´>€Hð ˆt�D”I‰Œ€HØ„H‡O‚O�A�s�s˜8œ?Ñ+Ô+Ñ,Ô,Ð,ØŒ>×1Ò1°(´-ÀÑJÔJ€DØ
Œ.×
)Ò
)¨$Ñ
/Ô
/€CØ„K×Ò˜CÑ Ô Ð ØˆW�S˜$Ô*Ñ+Ô+€FØŒ9�?Š?˜3ÑÔ€DØˆ3ˆt‰9Œ9˜Š>ˆ>ˆ>ˆ>ð ��S�SÐ/Ð/°´×1EÒ1EÀcÑ1JÔ1JÑKÔKÑLÔL€Ið! $ s¤)ð !ð !ð !ð !ð
 @�t”~Ð?Ð?¨d¬oÐ?Ð?€HØˆ~˜i¨8¨*Ñ4Ñ5Ô5€Hðð ð ð ]Ð\¸9¸9ÀYÑ;OÔ;OÐ\Ñ\Ô\€EØ=Ð=˜eŸkšk™mœmÐ=Ñ=Ô=€EØTÐT¸y¸yÈÑ?SÔ?SÐTÑTÔT€IØEÐE )§/¢/Ñ"3Ô"3ÐEÑEÔE€IØ—k’k‘m”mð 8ð 8‰
ˆˆUØ�AŠ:ˆ:Ø27ˆI�fÔ& s¨1¤vÔ.Ñ/øØWÐWÀ)À)ÈIÑBVÔBVÐWÑWÔW€IØð %ð %ˆØ$ˆ	�#‰ˆØ—’Ð=Ð=¨)×*:Ò*:Ñ*<Ô*<Ð=Ñ=Ô=Ñ>Ô>€IØ;Ð;¨¯ªÑ):Ô):Ð;Ñ;Ô;€JØÐ0 ¤Ð0Ð0Ð2QÀÄÐ2QÐ2QÐRÑR€Jà�\Š\‰^Œ^ð Gð GˆØ�Gˆ|ˆ|ˆ|ÐFÀ1ÐFÐF‰|Œ|ˆ|ˆ|ØOÐO°e·k²k±m´mÐOÑOÔO€EØ
Œ/×
#Ò
# v¸)ÈyÐ`eÐ
#Ñ
fÔ
f€CØœ°t´ÐGÐG€DØˆVŒ^˜C¨Ð.Ñ.Ô.€FØ„Ô*¨QÒ.Ð.ØˆlÐjÑkÔkÐkà€IØ€IØ€OØ€OØ �y Ô!1Ñ2Ô2ð $ð $‰ˆˆ8Ø˜9Ð$Ð$Ø×Ò˜XÑ&Ô&Ð&Ø×Ò˜Y xÔ0Ñ1Ô1Ð1Ø×"Ò" 8Ñ,Ô,Ð,Ø×"Ò" 9¨XÔ#6Ñ7Ô7Ð7Ð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Ô6€IØ
Œ*�WÔ
€CØˆ3ÐˆxÔ Ñ$Ô$Ñ%Ô% a¨ dÔ+€DðØ�yðà˜dÔ.ðð 	�C�C˜‘H”Hðð 	�D—I’IÐRÐR°s°s¸4ÀÀÀ!À¼9ÀdÈ1È4ÈaÈ4ÄjÑ7QÔ7QÐRÑRÔRÑSÔSð	ð
 	�T—Y’YÐpÐpÈ#È#ÈoÐ_nÑJoÔJoÐpÑpÔpÑqÔqðð 	˜$Ÿ)š)Ð$iÐ$iÈsÈsÐS\Ð^gÑOhÔOhÐ$iÑ$iÔ$iÑjÔjðð 	˜Ÿ	š	Ð"HÐ"H¸Ð"HÑ"HÔ"HÐL]ÐK^Ñ"^Ñ_Ô_ðð 	�C�C˜Ñ(Ô(¨1Ñ,ðð 	˜Jðð 	�&”/Ô(ðð 	�T”^ðð 	�S—X’X˜y¨(Ð3Ñ4Ô4ðð 	��a”ðð 	��a”ðð 	��a”ðð  	˜ð!€Fð$ ð Gð GˆØ˜˜X™œÔ-°Ñ7¸&Ñ@ÐCSÈcÐCSÐCSÑSˆØ×!Ò!Ð"? hÐ"?Ð"?°Ð"?Ð"?¸#Ð"?Ð"?Ñ@Ô@×EÒEÀcÑJÔJð 	GÈbØ�HŠHÐ;�T�T˜-Ñ(Ô(×2Ò2Ñ4Ô4Ô;ÐEÐE¸fÐEÐEÑFÔFÐFð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gøðu ÐðpGð Gs   Ü:<^Þ^	Þ	^	