Ë
    6^(hãK  ã                   óN  — d dl mZ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Zd dlmZmZmZ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 dlZd dlmZ d dlZd	efd
„Z ej<                  «       defd„«       Z  ej<                  «       de!fd„«       Z" ej<                  «       de!fd„«       Z# ej<                  «       de!fd„«       Z$de!fd„Z% ej<                  «       de!fd„«       Z& ej<                  d«      d„ «       Z'de!fd„Z( ed¬«       G d„ d«      «       Z) G d„ de«      Z*y)é    )ÚBaseBackendÚ	GPUTarget)ÚirÚpassesÚllvmÚnvidia)Ú
PTXASError)Ú	dataclassN)ÚAnyÚDictÚTupleÚOptional)Ú
ModuleType)ÚPathÚtargetc                 ó>   — dt         t        t        t        f   fd„}|S )NÚreturnc                 ó€   — | j                   j                  }|j                   j                  }||k(  sJ d«       ‚|dk(  ryy)Nz%lhs and rhs bitwidth must be the sameé   )é   r   é    )r   r   r   )ÚscalarÚprimitive_bitwidth)Úlhs_typeÚrhs_typeÚlhs_bitwidthÚrhs_bitwidths       ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/triton/backends/nvidia/compiler.pyÚcheck_dot_compatibilityz-min_dot_size.<locals>.check_dot_compatibility   sB   € Ø—‘×9Ñ9ˆØ—‘×9Ñ9ˆØ˜|Ò+ÐTÐ-TÓTÐ+Ø˜1ÒØàó    )r   Úint)r   r   s     r   Úmin_dot_sizer"      s!   € ð ´u¼SÄ#Äs¸]Ñ7Kó  ð #Ð"r    Úbinaryc                 ó°  — | t        j                  d«      z  } t        j                  j	                  d| j                  «       › d�d«      t        j                  j                  t        j                  j                  t        «      d| «      g}|D ]¸  }t        j                  j                  |«      sŒ#t        j                  j                  |«      sŒCt        j                  |dgt        j                  ¬«      }|€Œmt        j                   d|j#                  d	«      t        j$                  ¬
«      }|€Œ¥||j'                  d«      fc S  t)        d| › �«      ‚)NÚEXEÚTRITON_Ú_PATHÚ Úbinú	--version)Ústderrz.*release (\d+\.\d+).*úutf-8©Úflagsé   zCannot find )Ú	sysconfigÚget_config_varÚosÚenvironÚgetÚupperÚpathÚjoinÚdirnameÚ__file__ÚexistsÚisfileÚ
subprocessÚcheck_outputÚSTDOUTÚreÚsearchÚdecodeÚ	MULTILINEÚgroupÚRuntimeError)r#   Úpathsr6   ÚresultÚversions        r   Ú_path_to_binaryrH   !   s  € à
Œi×&Ñ& uÓ-Ñ-€Fä
�
‰
�‰˜ §¡£Ð 0°Ð6¸Ó;Ü
�‰�‰”R—W‘W—_‘_¤XÓ.°°vÓ>ð€Eð
 ò 2ˆÜ�7‰7�>‰>˜$Õ¤B§G¡G§N¡N°4Õ$8Ü×,Ñ,¨d°KÐ-@Ì×IZÑIZÔ[ˆFØÑ!ÜŸ)™)Ð$=¸v¿}¹}ÈWÓ?UÔ]_×]iÑ]iÔj�ØÑ&Ø §¡¨qÓ!1Ð1Ò1ð2ô ˜ f XÐ.Ó
/Ð/r    Úarchc                 ó*   — | dk\  rdnd}t        |«      S )Néd   zptxas-blackwellÚptxas)rH   )rI   Únames     r   Ú	get_ptxasrN   3   s   € à $¨¢Ñ°€DÜ˜4Ó Ð r    c                 ó°   — t         j                  j                  d«      }|�|S t        j                  t        | «      d   dg«      j                  d«      }|S )NÚTRITON_MOCK_PTX_VERSIONr   r*   r,   )r2   r3   r4   r<   r=   rN   rA   )rI   Úmock_verrG   s      r   Úget_ptxas_versionrR   9   sO   € ä�z‰z�~‰~Ð7Ó8€HØÐØˆÜ×%Ñ%¤y°£°qÑ'9¸;Ð&GÓH×OÑOÐPWÓX€GØ€Nr    r   c                 óÜ   — t        | t        «      sJ ‚t        t        | j	                  d«      «      \  }}|dk(  r|dk  rd|z   S d|z   dz
  S |dk(  rd|z   S |dk(  rd	|z   S t        d
| z   «      ‚)zK
    Get the highest PTX version supported by the current CUDA driver.
    ú.é   é   éP   r/   é   éF   é
   é?   z?Triton only support CUDA 10.0 or higher, but got CUDA version: )Ú
isinstanceÚstrÚmapr!   ÚsplitrD   )Úcuda_versionÚmajorÚminors      r   Úptx_get_versionrc   B   s‰   € ô
 �l¤CÔ(Ð(Ð(Ü”s˜L×.Ñ.¨sÓ3Ó4�L€Eˆ5Ø�‚{Ø�1Š9Ø˜‘:Ðà˜‘: ‘>Ð!Ø�‚{Ø�E‰zÐØ�‚{Ø�E‰zÐÜ
ÐXÐ[gÑgÓ
hÐhr    c                 óT   — | j                   }|€t        |«      \  }}t        |«      }|S ©N)Úptx_versionrN   rc   )ÚoptionsrI   rf   Ú_r`   s        r   Úget_ptx_version_from_optionsri   U   s0   € Ø×%Ñ%€KØÐÜ# D›/‰ˆˆ<Ü% lÓ3ˆØÐr    c                 ó@   — t        | |«      }t        d|«      }d|› �}|S )NéV   z+ptx)ri   Úmin)rg   rI   rf   Úllvm_ptx_versionÚfeaturess        r   Úget_featuresro   ]   s0   € ä.¨w¸Ó=€Kô ˜2˜{Ó+ÐØÐ&Ð'Ð(€HØ€Or    c                 ó¨   — t        | d«      5 }t        j                  |j                  «       «      j	                  «       cd d d «       S # 1 sw Y   y xY w)NÚrb)ÚopenÚhashlibÚsha256ÚreadÚ	hexdigest)r6   Úfs     r   Ú	file_hashrx   k   s>   € ä	ˆd�DÓ	ð 4˜QÜ�~‰~˜aŸf™f›hÓ'×1Ñ1Ó3÷4÷ 4ò 4ús   �1AÁAÚ
capabilityc                 ó"   — | dk\  rdnd}d| › |› �S )NéZ   Úar(   Úsm_© )ry   Úsuffixs     r   Úsm_arch_from_capabilityr€   q   s!   € à "Ò$‰S¨"€FØ��˜V˜HÐ%Ð%r    T)Úfrozenc                   óf  — e Zd ZU dZeed<   dZeed<   dZeed<   dZeed<   dZ	eed	<   dZ
eed
<   dZeed<   dZee   ed<   dZeed<   dZeed<   dZeed<   dZeed<   dZee   ed<   dZee   ed<   dZeed<   dZee   ed<   dZeed<   dZeed<   dZeed<   d Zeed!<   dZeed"<   dZ eed#<   d$„ Z!d%„ Z"y)&ÚCUDAOptionsé   Ú	num_warpsr/   Únum_ctasé   Ú
num_stagesr   Únum_buffers_warp_specÚnum_consumer_groupsÚreg_dec_producerÚreg_inc_consumerNÚmaxnreg)r/   r/   r/   Úcluster_dimsrf   TÚenable_fp_fusionFÚlaunch_cooperative_grid)Úfp8e5Úfp8e4b15Úsupported_fp8_dtypesr~   Údeprecated_fp8_dtypesÚtf32Údefault_dot_input_precision)r•   Útf32x3ÚieeeÚallowed_dot_input_precisionsÚmax_num_imprecise_acc_defaultÚextern_libsÚdebugÚcudaÚbackend_nameÚsanitize_overflowrI   c                 ó¶  — t        t        «      j                  dz  }| j                  €i nt	        | j                  «      }|j                  dd «      s%t        j                  dt        |dz  «      «      |d<   t        j                  | dt        |j                  «       «      «       | j                  dkD  r| j                  | j                  dz
  z  dk(  sJ d«       ‚y )	NÚlibÚ	libdeviceÚTRITON_LIBDEVICE_PATHzlibdevice.10.bcr›   r   r/   znum_warps must be a power of 2)r   r9   Úparentr›   Údictr4   r2   Úgetenvr]   ÚobjectÚ__setattr__ÚtupleÚitemsr…   )ÚselfÚdefault_libdirr›   s      r   Ú__post_init__zCUDAOptions.__post_init__’   s»   € Üœh›×.Ñ.°Ñ6ˆØ ×,Ñ,Ð4‘b¼$¸t×?OÑ?OÓ:PˆØ�‰˜{¨DÔ1Ü')§y¡yÐ1HÌ#ÈnÐ_pÑNpÓJqÓ'rˆK˜Ñ$Ü×Ñ˜4 ´°k×6GÑ6GÓ6IÓ0JÔKØ�~‰~ Ò! t§~¡~¸¿¹È!Ñ9KÑ'LÐQRÒ&Rð 	0Ø/ó	0ÐRÐ&Rr    c           	      ó^  — t        | j                  «      }t        d„ t        |d   «      D «       «      |d<   dj	                  t        |j                  «       «      D ��cg c]  \  }}|› d|› �‘Œ c}}«      }t        j                  |j                  d«      «      j                  «       S c c}}w )Nc              3   ó<   K  — | ]  \  }}|t        |«      f–— Œ y ­wre   )rx   )Ú.0ÚkÚvs      r   ú	<genexpr>z#CUDAOptions.hash.<locals>.<genexpr>�   s   è ø€ Ò(h¹t¸qÀ!¨!¬Y°q«\Ô):Ñ(hùs   ‚r›   rh   ú-r,   )
r¥   Ú__dict__r©   Úsortedr7   rª   rs   rt   Úencoderv   )r«   Ú	hash_dictrM   ÚvalÚkeys        r   ÚhashzCUDAOptions.hash›   sŠ   € Ü˜Ÿ™Ó'ˆ	Ü#(Ñ(hÄvÈiÐXeÑNfÓGgÔ(hÓ#hˆ	�-Ñ Ø�h‰h¼À	ÇÁÓ@QÓ9R×S©I¨D°#˜4˜&  # šÓSÓTˆÜ�~‰~˜cŸj™j¨Ó1Ó2×<Ñ<Ó>Ð>ùó Ts   ÁB)
)#Ú__name__Ú
__module__Ú__qualname__r…   r!   Ú__annotations__r†   rˆ   r‰   rŠ   r‹   rŒ   r�   r   rŽ   r©   rf   r�   Úboolr�   r“   r   r]   r”   r–   r™   rš   r›   r¥   rœ   rž   rŸ   rI   r­   r»   r~   r    r   rƒ   rƒ   w   s  … à€IˆsÓØ€HˆcÓØ€J�ÓØ!"Ð˜3Ó"Ø Ð˜Ó ØÐ�cÓØÐ�cÓð "€GˆX�c‰]Ó!Ø#€L�%Ó#Ø€K�ÓØ!Ð�dÓ!Ø$)Ð˜TÓ)Ø'<Ð˜% ™*Ó<Ø(*Ð˜5 ™:Ó*Ø'-Ð Ó-Ø/IÐ  %¨¡*ÓIØ*.Ð! 4Ó.Ø€K�ÓØ€Eˆ4ÓØ€L�#ÓØ"Ð�tÓ"Ø€Dˆ#Óò0ó?r    rƒ   c                   óÞ   ‡ — e Zd Zedefd„«       Zd„ Zdeddfˆ fd„Zdefd„Z	d„ Z
d	„ Zdeeef   fd
„Zd„ Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Z ej0                  «       d„ «       Zˆ xZS )ÚCUDABackendr   c                 ó    — | j                   dk(  S )Nr�   )Úbackend)r   s    r   Úsupports_targetzCUDABackend.supports_target¤   s   € à�~‰~ Ñ'Ð'r    c                 ó†   — d}t        j                  ||«      }|st        d|› �«      ‚t        |j	                  d«      «      S )Nz	^sm(\d+)$z(TRITON_OVERRIDE_ARCH must have the form r/   )r?   Ú	fullmatchÚ
ValueErrorr!   rC   )r«   rI   ÚpatternÚmatchs       r   Ú_parse_archzCUDABackend._parse_arch¨   s@   € ØˆÜ—‘˜W dÓ+ˆÙÜÐGÈÀyÐQÓRÐRÜ�5—;‘;˜q“>Ó"Ð"r    r   Nc                 ó2   •— t         ‰| �  |«       d| _        y )NÚcubin)ÚsuperÚ__init__Ú
binary_ext)r«   r   Ú	__class__s     €r   rÏ   zCUDABackend.__init__¯   s   ø€ Ü‰Ñ˜Ô Ø!ˆ�r    c                 óV  — dt        j                  dd| j                  j                  › �«      i}|j	                  t
        j                  j                  «       D �ci c]  }||v sŒ||   €Œ|||   “Œ c}«       t        | j                  |d   «      «      }d|vrFt        t
        j                  «      }|dk\  r|j                  d«       t        t        |«      «      |d<   d|vr
|dk\  rd	|d<   d
|vrt        j                  dd«      dk(  |d
<   |dk(  rdnd|d<   t        di |¤ŽS c c}w )NrI   ÚTRITON_OVERRIDE_ARCHÚsmr“   éY   Úfp8e4nvr”   r{   )r’   r�   ÚTRITON_DEFAULT_FP_FUSIONÚ1i   @r   rš   r~   )r2   r¦   r   rI   Úupdaterƒ   Ú__dataclass_fields__Úkeysr!   rË   Úsetr“   Úaddr©   r¶   )r«   ÚoptsÚargsr±   ry   r“   s         r   Úparse_optionszCUDABackend.parse_options³   s3  € ØœŸ	™	Ð"8¸B¸t¿{¹{×?OÑ?OÐ>PÐ:QÓRÐSˆØ�‰¬×)IÑ)I×)NÑ)NÓ)PÖu AÐTUÐY]ÒT]ÐaeÐfgÑahÑat�Q˜˜Q™‘ZÒuÔvÜ˜×)Ñ)¨$¨v©,Ó7Ó8ˆ
à!¨Ñ-Ü#&¤{×'GÑ'GÓ#HÐ Ø˜RÒØ$×(Ñ(¨Ô3Ü+0´Ð8LÓ1MÓ+NˆDÐ'Ñ(à"¨$Ñ.Ø˜RÒØ0>�Ð,Ñ-à TÑ)Ü')§y¡yÐ1KÈSÓ'QÐUXÑ'XˆDÐ#Ñ$à9CÀrÒ9I±ÈqˆÐ,Ñ-äÑ"˜TÑ"Ð"ùò% vs   Á	D&Á%D&Á+D&c                 óœ   — |j                   |j                  |j                  |j                  d   |j                  d   |j                  d   fS )Nr   r/   é   )r…   r†   ÚsharedrŽ   )r«   Úmetadatas     r   Úpack_metadatazCUDABackend.pack_metadataÉ   sO   € à×ÑØ×ÑØ�O‰OØ×!Ñ! !Ñ$Ø×!Ñ! !Ñ$Ø×!Ñ! !Ñ$ð
ð 	
r    c                 óÌ   — dd l mc mc m} t	        | j                  |j                  «      «      }|dk\  r|j                  n|j                  t        | j                  «      dœ}|S )Nr   rW   )Úconvert_custom_typesr"   )Útriton.language.extra.cudaÚlanguageÚextrar�   r!   rË   rI   Úconvert_custom_float8_sm80Úconvert_custom_float8_sm70r"   r   )r«   rg   r�   ry   Úcodegen_fnss        r   Úget_codegen_implementationz&CUDABackend.get_codegen_implementationÓ   sV   € ß1Ó1Ü˜×)Ñ)¨'¯,©,Ó7Ó8ˆ
ð 0:¸RÒ/?ˆD×+Ò+ÀT×EdÑEdÜ˜Ÿ™Ó%ñ
ˆð
 Ðr    c                 ó   — ddl m} d|iS )Nr   )r¢   ztriton.language.extra.libdevice)rè   r¢   )r«   r¢   s     r   Úget_module_mapzCUDABackend.get_module_mapÝ   s   € Ý8Ø1°9Ð=Ð=r    c                 ó.   — t        j                  |«       y re   )r   Úload_dialects)r«   Úctxs     r   rò   zCUDABackend.load_dialectsá   s   € Ü×Ñ˜SÕ!r    c                 óv  — t        j                  | j                  «      }|j                  «        t        j
                  j                  |«       t        j                  j                  |«       t        j
                  j                  |«       t        j                  j                  |«       t        j                  j                  |«       t        j
                  j                  |«       t        j
                  j                  |«       t        j                  j                  |«       |j                  | «       | S re   )r   Úpass_managerÚcontextÚenable_debugr   ÚcommonÚadd_inlinerÚttirÚadd_rewrite_tensor_pointerÚadd_canonicalizerÚadd_combineÚadd_reorder_broadcastÚadd_cseÚadd_symbol_dceÚadd_loop_unrollÚrun)Úmodrä   ÚoptÚpms       r   Ú	make_ttirzCUDABackend.make_ttirä   s¾   € ä�_‰_˜SŸ[™[Ó)ˆØ
�‰ÔÜ�‰×!Ñ! "Ô%Ü�‰×.Ñ.¨rÔ2Ü�‰×'Ñ'¨Ô+Ü�‰×Ñ Ô#Ü�‰×)Ñ)¨"Ô-Ü�‰×Ñ˜bÔ!Ü�‰×$Ñ$ RÔ(Ü�‰×#Ñ# BÔ'Ø
�‰ˆsŒØˆ
r    c                 óf  — t        j                  «       }|j                  �<|j                  d   |_        |j                  d   |_        |j                  d   |_        t        j                  | j                  «      }|j                  «       }t        j                  j                  |d|› �|j                  d|j                  «       t        j                  j!                  |«       |dz  dk\  rt        j                  j#                  |«       t         j                  j$                  j'                  ||«       t        j                  j)                  |«       t        j                  j+                  |«       t        j                  j-                  |«       t        j                  j)                  |«       t        j                  j/                  ||dk\  «       t        j0                  j3                  |«       |dz  d	v �rt        j                  j5                  |«       t        j0                  j7                  |«       t        j0                  j9                  |«       t        j                  j;                  |«       t        j0                  j7                  |«       t        j                  j=                  |«       t        j                  j?                  ||j@                  «       t        j                  jC                  ||j@                  «       t        j                  jE                  ||j@                  «       t        j                  jG                  ||jH                  |j@                  |jJ                  |jL                  «       t        j                  jO                  ||jP                  |«       t        j                  jS                  ||j@                  «       t        j                  jU                  ||j@                  «       �nS|dz  dk\  �r+t        j                  j5                  |«       t        j0                  j7                  |«       t        j0                  j9                  |«       t        j                  j;                  |«       t        j                  j?                  ||j@                  «       t        j                  jC                  ||j@                  «       t        j                  jE                  ||j@                  «       t        j                  jG                  ||jH                  |j@                  |jJ                  |jL                  «       t        j                  jO                  ||jP                  |«       t        j                  j=                  |«       t         j                  j$                  jW                  |«       t         j                  j$                  jY                  |«       t        j                  jU                  ||j@                  «       t        j0                  j7                  |«       nt        j0                  j9                  |«       t        j                  j[                  |«       t        j                  j/                  ||dk\  «       t        j                  j]                  |«       t        j                  j)                  |«       t        j                  j_                  |«       t        j                  ja                  |«       t        j0                  j3                  |«       t        j0                  jc                  |«       |dz  d
k\  rRt         j                  j$                  je                  |«       t         j                  j$                  jg                  |«       t        j0                  j7                  |«       |dz  d
k\  r*t        j                  ji                  ||j@                  «       |jk                  | «       |j                  |j                  |j
                  f|d<   | S )Nr   r/   râ   zcuda:r   rZ   r   rW   )r   é	   r  rŽ   )6r   ÚClusterInforŽ   ÚclusterDimXÚclusterDimYÚclusterDimZr   rõ   rö   r÷   r   rú   Úadd_convert_to_ttgpuirr…   r†   ÚttgpuirÚadd_coalesceÚadd_f32_dot_tcÚ	ttnvgpuirÚadd_plan_ctaÚadd_remove_layout_conversionsÚadd_optimize_thread_localityÚadd_accelerate_matmulÚadd_optimize_dot_operandsrø   rÿ   Úadd_fuse_nested_loopsrü   Úadd_licmÚadd_optimize_accumulator_initÚ add_combine_tensor_select_and_ifÚadd_ws_task_partitionrŠ   Úadd_taskid_propagateÚadd_ws_data_partitionÚadd_ws_code_partitionr‰   r‹   rŒ   Úadd_pipelinerˆ   Úadd_ping_pong_syncÚadd_ws_loweringÚadd_promote_lhs_to_tmemÚadd_keep_acc_in_tmemÚadd_prefetchÚadd_coalesce_async_copyÚadd_reduce_data_duplicationÚadd_reorder_instructionsr   Úadd_fence_insertionÚadd_tma_loweringÚadd_ws_canonicalizationr  )r  rä   r  ry   Úcluster_infor  Údump_enableds          r   Ú
make_ttgirzCUDABackend.make_ttgiró   s_  € ä×)Ñ)Ó+ˆØ×ÑÐ'Ø'*×'7Ñ'7¸Ñ':ˆLÔ$Ø'*×'7Ñ'7¸Ñ':ˆLÔ$Ø'*×'7Ñ'7¸Ñ':ˆLÔ$Ü�_‰_˜SŸ[™[Ó)ˆØ—‘Ó(ˆÜ�‰×*Ñ*¨2°°z°lÐ/CÀSÇ]Á]ÐTVÐX[×XdÑXdÔeä�‰×#Ñ# BÔ'Ø˜Ñ˜qÒ Ü�N‰N×)Ñ)¨"Ô-ä�‰×Ñ×,Ñ,¨R°Ô>Ü�‰×4Ñ4°RÔ8Ü�‰×3Ñ3°BÔ7Ü�‰×,Ñ,¨RÔ0Ü�‰×4Ñ4°RÔ8Ü�‰×0Ñ0°°ZÀ2Ñ5EÔFÜ�‰×Ñ˜bÔ!Ø˜Ñ˜vÒ%Ü�N‰N×0Ñ0°Ô4Ü�M‰M×+Ñ+¨BÔ/Ü�M‰M×"Ñ" 2Ô&Ü�N‰N×8Ñ8¸Ô<Ü�M‰M×+Ñ+¨BÔ/Ü�N‰N×;Ñ;¸BÔ?Ü�N‰N×0Ñ0°°S×5LÑ5LÔMÜ�N‰N×/Ñ/°°C×4KÑ4KÔLÜ�N‰N×0Ñ0°°S×5LÑ5LÔMÜ�N‰N×0Ñ0°°S×5NÑ5NÐPS×PgÑPgØ14×1EÑ1EÀs×G[ÑG[ô]ä�N‰N×'Ñ'¨¨C¯N©N¸LÔIÜ�N‰N×-Ñ-¨b°#×2IÑ2IÔJÜ�N‰N×*Ñ*¨2¨s×/FÑ/FÖGØ˜2Ñ Ó#Ü�N‰N×0Ñ0°Ô4Ü�M‰M×+Ñ+¨BÔ/Ü�M‰M×"Ñ" 2Ô&Ü�N‰N×8Ñ8¸Ô<Ü�N‰N×0Ñ0°°S×5LÑ5LÔMÜ�N‰N×/Ñ/°°C×4KÑ4KÔLÜ�N‰N×0Ñ0°°S×5LÑ5LÔMÜ�N‰N×0Ñ0°°S×5NÑ5NÐPS×PgÑPgØ14×1EÑ1EÀs×G[ÑG[ô]ä�N‰N×'Ñ'¨¨C¯N©N¸LÔIÜ�N‰N×;Ñ;¸BÔ?Ü�M‰M×#Ñ#×;Ñ;¸BÔ?Ü�M‰M×#Ñ#×8Ñ8¸Ô<Ü�N‰N×*Ñ*¨2¨s×/FÑ/FÔGÜ�M‰M×+Ñ+¨BÕ/ä�M‰M×"Ñ" 2Ô&Ü�‰×#Ñ# BÔ'Ü�‰×0Ñ0°°ZÀ2Ñ5EÔFÜ�‰×.Ñ.¨rÔ2Ü�‰×4Ñ4°RÔ8Ü�‰×2Ñ2°2Ô6Ü�‰×/Ñ/°Ô3Ü�‰×Ñ˜bÔ!Ü�‰×$Ñ$ RÔ(Ø˜Ñ˜qÒ Ü�M‰M×#Ñ#×7Ñ7¸Ô;Ü�M‰M×#Ñ#×4Ñ4°RÔ8Ü�‰×'Ñ'¨Ô+Ø˜Ñ˜qÒ Ü�N‰N×2Ñ2°2°s×7NÑ7NÔOØ
�‰ˆsŒØ$0×$<Ñ$<¸l×>VÑ>VÐXd×XpÑXpÐ#qˆ�Ñ Øˆ
r    c                 ó^	  — t        || j                  j                  «      }|}t        j                  |j
                  «      }|j                  «        t        j                  j                  j                  |«       t        j                  j                  |«       t        j                  j                  |«       t        j                  j                  |«       t        j                  j!                  |«       t        j                  j                  j#                  |«       t        j                  j%                  |«       t        j                  j                  j'                  |||«       t        j(                  j+                  |«       t        j(                  j-                  |«       t        j                  j                  j/                  |«       t        j                  j                  j1                  |«       t        j(                  j+                  |«       t        j(                  j-                  |«       t        j(                  j3                  |«       t4        j6                  j9                  dd«      dk(  rt        j:                  j=                  |«       |j?                  |«       tA        jB                  «        tA        j
                  «       }t4        j6                  j9                  dd«      dk(  rtE        d«      ‚tA        jF                  ||«      }	tI        |«      }
tK        || j                  j                  «      }d}tA        jL                  |	||
|«       t        jN                  |	«       |jP                  �R|	jS                  «       D ]?  }|jU                  «       rŒ|jW                  «       sŒ%|jY                  |jP                  «       ŒA |jZ                  r4|jZ                  D ��cg c]  \  }}|‘Œ	 }}}tA        j\                  |	|«       tA        j^                  |	t@        j`                  «       |jc                  d«      }|�||d<   |jc                  d	«      |d
<   |jc                  d«      |d<   |jc                  d«      |d<   |jc                  d«      |d<   te        |	«      }~	~|S c c}}w )NÚTRITON_DISABLE_LINE_INFOÚ0ÚTRITON_ENABLE_ASANrØ   zYAddress Sanitizer Error: Address sanitizer is currently only supported on the AMD backendúnvptx64-nvidia-cudazttg.total-num-warpsr…   z
ttg.sharedrã   zttg.tensor_memory_sizeÚ	tmem_sizezttg.global_scratch_memory_sizeÚglobal_scratch_sizez#ttg.global_scratch_memory_alignmentÚglobal_scratch_align)3ri   r   rI   r   rõ   rö   r÷   r   r   r  Úadd_lower_mmar  r  Úadd_allocate_warp_groupsÚconvertÚadd_scf_to_cfÚadd_allocate_shared_memoryÚadd_allocate_tensor_memoryÚ"add_allocate_global_scratch_memoryÚadd_to_llvmirrø   rü   rÿ   Úadd_nvgpu_to_llvmÚadd_warp_specialize_to_llvmr   r2   r3   r4   ÚllvmirÚadd_di_scoper  r   Úinit_targetsrD   Ú	to_moduler€   ro   Úattach_datalayoutÚset_nvvm_reflect_ftzr�   Úget_functionsÚis_declarationÚis_external_linkageÚset_nvvm_maxnregr›   Úlink_extern_libsÚoptimize_moduleÚOPTIMIZE_O3Úget_int_attrr]   )r«   Úsrcrä   rg   ry   rf   r  r  rö   Úllvm_modÚprocrn   Útripler±   rM   r6   rE   Útotal_num_warpsÚrets                      r   Ú	make_llirzCUDABackend.make_llir<  sg  € Ü2°7¸D¿K¹K×<LÑ<LÓMˆàˆä�_‰_˜SŸ[™[Ó)ˆØ
�‰Ôä�‰×Ñ×-Ñ-¨bÔ1Ü�‰×7Ñ7¸Ô;Ü�‰×/Ñ/°Ô3Ü�‰×$Ñ$ RÔ(Ü�‰×1Ñ1°"Ô5Ü�‰×Ñ×:Ñ:¸2Ô>Ü�‰×9Ñ9¸"Ô=Ü�‰×Ñ×+Ñ+¨B°
¸KÔHÜ�‰×'Ñ'¨Ô+Ü�‰×Ñ˜bÔ!Ü�‰×Ñ×1Ñ1°"Ô5Ü�‰×Ñ×;Ñ;¸BÔ?Ü�‰×'Ñ'¨Ô+Ü�‰×Ñ˜bÔ!Ü�‰×$Ñ$ RÔ(Ü�:‰:�>‰>Ð4°cÓ:¸cÒAÜ�M‰M×&Ñ& rÔ*Ø
�‰ˆsŒä×ÑÔÜ—,‘,“.ˆÜ�:‰:�>‰>Ð.°Ó4¸Ò;ÜØkómð mä—>‘> # wÓ/ˆÜ& zÓ2ˆÜ ¨¯©×)9Ñ)9Ó:ˆØ&ˆÜ×Ñ˜x¨°°xÔ@Ü×#Ñ# HÔ-ð �?‰?Ð&Ø×+Ñ+Ó-ò 8�Ø×'Ñ'Õ)¨a×.CÑ.CÕ.EØ×&Ñ& w§¡Õ7ð8ð ×ÒØ.5×.AÑ.A×B™l˜t T’TÐBˆEÑBÜ×!Ñ! (¨EÔ2ä×Ñ˜X¤t×'7Ñ'7Ô8ð ×*Ñ*Ð+@ÓAˆØÐ&Ø$3ˆH�[Ñ!Ø ×-Ñ-¨lÓ;ˆ�ÑØ #× 0Ñ 0Ð1IÓ Jˆ�ÑØ*-×*:Ñ*:Ð;[Ó*\ˆÐ&Ñ'Ø+.×+;Ñ+;Ð<aÓ+bˆÐ'Ñ(Ü�(‹mˆØØØˆ
ùó# Cs   Ï)R)c           	      óª  — t        || j                  j                  «      }d}t        |«      }t	        || j                  j                  «      }t        j                  ||||dg|j                  d«      }	t        j                  d|	«      }
t        |
«      dk(  sJ ‚|
d   |d<   |dz  › d	|dz  › �}t        j                  d
d|› �|	t        j                  ¬«      }	t        j                  dd|› �|	t        j                  ¬«      }	t        j                  dd|	«      }	t        j                  j                  dd«      dk(  rt!        d«       t!        |	«       |	S )Nr2  znvptx-short-ptrFz(.visible .entry ([a-zA-Z_][a-zA-Z0-9_]*)r/   r   rM   rZ   rT   z\.version \d+\.\d+z	.version r-   z\.target sm_\d+z.target sm_z,\s*debug|debug,\s*r(   ÚNVPTX_ENABLE_DUMPr0  rØ   z // -----// NVPTX Dump //----- //)ri   r   rI   r€   ro   r   Útranslate_to_asmr�   r?   ÚfindallÚlenÚsubrB   r2   r3   r4   Úprint)r«   rN  rä   r  ry   rf   rQ  rP  rn   rS  Únamess              r   Úmake_ptxzCUDABackend.make_ptx}  s4  € Ü2°3¸¿¹×8HÑ8HÓIˆà&ˆÜ& zÓ2ˆÜ  T§[¡[×%5Ñ%5Ó6ˆÜ×#Ñ# C¨°°xÐBSÐATÐVY×VjÑVjÐlqÓrˆä—
‘
ÐFÈÓLˆÜ�5‹z˜QŠÐˆØ  ™8ˆ�Ñà$ b™Ð)¨¨;°r©>Ð*:Ð;ˆÜ�f‰fÐ*¨i¸°}Ð,EÀsÔRT×R^ÑR^Ô_ˆÜ�f‰fÐ'¨;°z°lÐ)CÀSÔPR×P\ÑP\Ô]ˆä�f‰fÐ+¨R°Ó5ˆÜ�:‰:�>‰>Ð-¨sÓ3°sÒ:ÜÐ4Ô5Ü�#ŒJØˆ
r    c                 óª  — t        | j                  j                  «      \  }}t        j                  ddd¬«      5 }t        j                  ddd¬«      5 }|j                  |«       |j                  «        |j                  dz   }	t        j                  j                  dd	«      d
k(  rddgndg}
|j                  rg ndg}t        |«      }t        j                  j                  dd	«      d
k(  rdd	gng }|g|
¢|¢d‘|¢d|› �‘|j                  ‘d‘|	‘}	 t        j                  |dd|¬«       t        j                  j!                  |j                  «      rt        j"                  |j                  «       t        j                  j!                  |j                  «      rt        j"                  |j                  «       t'        |	d«      5 }|j)                  «       }d d d «       t        j                  j!                  |	«      rt        j"                  |	«       d d d «       d d d «       S # t        j$                  $ rï}t'        |j                  «      5 }|j)                  «       }d d d «       n# 1 sw Y   nxY wt        j                  j!                  |j                  «      rt        j"                  |j                  «       |j*                  dk(  rd}n2|j*                  dt,        j.                  z   k(  rd}nd|j*                  › �}t1        |› d› ddj3                  |«      › d�«      ‚d }~ww xY w# 1 sw Y   �ŒUxY w# 1 sw Y   �Œ&xY w# 1 sw Y   S xY w)NFÚwz.ptx)ÚdeleteÚmoder   Úrz.logz.or/  r0  rØ   z	-lineinfoz-suppress-debug-infoz--fmad=falseÚDISABLE_PTXAS_OPTz--opt-levelz-vz--gpu-name=z-oT)ÚcheckÚ	close_fdsr+   éÿ   z!Internal Triton PTX codegen erroré€   z`ptxas` raised SIGSEGVz`ptxas` failed with error code z
`ptxas` stderr:
z
Repro command: ú ú
rq   )rN   r   rI   ÚtempfileÚNamedTemporaryFileÚwriteÚflushrM   r2   r3   r4   r�   r€   r<   r  r6   r:   ÚremoveÚCalledProcessErrorrr   ru   Ú
returncodeÚsignalÚSIGSEGVr	   r7   )r«   rN  rä   r  ry   rL   rh   ÚfsrcÚflogÚfbinÚ	line_infoÚfmadrI   Ú	opt_levelÚ	ptxas_cmdÚeÚlog_fileÚlogÚerrorrw   rÍ   s                        r   Ú
make_cubinzCUDABackend.make_cubin“  sÞ  € Ü˜TŸ[™[×-Ñ-Ó.‰ˆˆqÜ×(Ñ(°¸CÈÔOð &	 ÐSWÜ×'Ñ'¨u¸3ÀvÔNð&	 ØRVØ�J‰J�sŒOØ�J‰JŒLØ—9‘9˜tÑ#ˆDäACÇÁÇÁÐPjØPSóBUØX[òB\˜Ð&<Ñ=ØbmÐanð à×-Ò-‘2°NÐ3CˆDÜ*¨:Ó6ˆDÜ02·
±
·±Ð?RÐTWÓ0XÐ\_Ò0_˜¨Ñ,ÐegˆIØÐq Ðq¨TÐq°4Ðq¸)ÐqÀ{ÐSWÐRXÐEYÐqÐ[_×[dÑ[dÐqÐfjÐqÐlpÐqˆIðLÜ—‘˜y°ÀÈdÕSÜ—7‘7—>‘> $§)¡)Ô,Ü—I‘I˜dŸi™iÔ(Ü—7‘7—>‘> $§)¡)Ô,Ü—I‘I˜dŸi™iÔ(ô$ �d˜DÓ!ð ! QØŸ™›�÷!ä�w‰w�~‰~˜dÔ#Ü—	‘	˜$”÷M&	 ÷ &	 ðN ˆøô+ ×0Ñ0ò LÜ˜$Ÿ)™)“_ð *¨Ø"Ÿ-™-›/�C÷*÷ *ñ *úä—7‘7—>‘> $§)¡)Ô,Ü—I‘I˜dŸi™iÔ(à—<‘< 3Ò&Ø?‘EØ—\‘\ S¬6¯>©>Ñ%9Ò9Ø4‘Eà=¸a¿l¹l¸^ÐL�Eä  E 7ð +5Ø58°Eð :3Ø36·8±8¸IÓ3FÐ2GÀrð"Kó Lð LûðLú÷"!ñ !ú÷G&	 ñ &	 ú÷ &	 ðN ˆúsz   »MÁC L;ÄB)H)Æ>L;Ç
L.Ç<L;ÈMÈ)L+È<L&ÉI+	É"	L&É+I4É0B6L&Ì&L+Ì+L;Ì.L8Ì3L;Ì;M	Í MÍMc                 óž   ‡ ‡‡— ‰ j                  ‰j                  «      Šˆˆ fd„|d<   ˆˆˆ fd„|d<   ˆˆˆ fd„|d<   ˆˆ fd„|d<   ˆˆ fd	„|d
<   y )Nc                 ó*   •— ‰j                  | |‰«      S re   )r  ©rN  rä   rg   r«   s     €€r   ú<lambda>z(CUDABackend.add_stages.<locals>.<lambda>À  s   ø€ ¨t¯~©~¸cÀ8ÈWÓ/U€ r    rú   c                 ó,   •— ‰j                  | |‰‰«      S re   )r-  ©rN  rä   ry   rg   r«   s     €€€r   r‚  z(CUDABackend.add_stages.<locals>.<lambda>Á  s   ø€ °·±ÀÀXÈwÐXbÓ0c€ r    Úttgirc                 ó,   •— ‰j                  | |‰‰«      S re   )rT  r„  s     €€€r   r‚  z(CUDABackend.add_stages.<locals>.<lambda>Â  s   ø€ ¨t¯~©~¸cÀ8ÈWÐV`Ó/a€ r    Úllirc                 óT   •— ‰j                  | |‰‰j                  j                  «      S re   )r]  r   rI   r�  s     €€r   r‚  z(CUDABackend.add_stages.<locals>.<lambda>Ã  s#   ø€ ¨d¯m©m¸CÀÈ7ÐTX×T_ÑT_×TdÑTdÓ.e€ r    Úptxc                 óT   •— ‰j                  | |‰‰j                  j                  «      S re   )r~  r   rI   r�  s     €€r   r‚  z(CUDABackend.add_stages.<locals>.<lambda>Ä  s#   ø€ °·±ÀÀXÈwÐX\×XcÑXc×XhÑXhÓ0i€ r    rÍ   )rË   rI   )r«   Ústagesrg   ry   s   ` `@r   Ú
add_stageszCUDABackend.add_stages¾  sD   ú€ Ø×%Ñ% g§l¡lÓ3ˆ
ÜUˆˆv‰Ýcˆˆw‰Ýaˆˆv‰Üeˆˆu‰ÜiˆˆwŠr    c                 óv   — t        | j                  j                  «      }|› d| j                  j                  › �S )Nr´   )rR   r   rI   )r«   rG   s     r   r»   zCUDABackend.hashÆ  s2   € ä# D§K¡K×$4Ñ$4Ó5ˆØ�˜!˜DŸK™K×,Ñ,Ð-Ð.Ð.r    )r¼   r½   r¾   Ústaticmethodr   rÅ   rË   rÏ   r   rà   rå   rî   r   r]   r   rð   rò   r  r-  rT  r]  r~  rŒ  Ú	functoolsÚ	lru_cacher»   Ú__classcell__)rÑ   s   @r   rÂ   rÂ   ¢   sÅ   ø„ àð( 	ò (ó ð(ò#ð"˜yð "¨Tõ "ð# Só #ò,
òð>  S¨* _Ñ 5ó >ò"ð ñó ðð ñFó ðFòP?òBò,)òVjð €Y×ÑÓñ/ó ô/r    rÂ   )+Útriton.backends.compilerr   r   Útriton._C.libtritonr   r   r   r   Útriton.runtime.errorsr	   Údataclassesr
   r�  Útypingr   r   r   r   Útypesr   rs   r?   rj  rq  r2   r<   Úpathlibr   r0   r"   r�  r]   rH   r!   rN   rR   rc   ri   ro   rx   r€   rƒ   rÂ   r~   r    r   ú<module>r™     sk  ðß ;ß 8Ó 8Ý ,å !Û ß -Ó -Ý Û Û 	Û Û Û 	Û Ý Û ð#˜ó #ð €×ÑÓð0˜Cò 0ó ð0ð" €×ÑÓð!�Cò !ó ð!ð
 €×ÑÓð˜Cò ó ðð €×ÑÓði Sò ió ðið$°ó ð €×ÑÓð
 ò 
ó ð
ð €×Ñ�TÓñ4ó ð4ð
&¨ó &ñ �$Ô÷'?ð '?ó ð'?ôTg/�+õ g/r    