§
    NŠtj 4  ã                   ó˜  — 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mZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ ej                             ej                             e¦  «        ¦  «        Zej                             ed¦  «        gZej                             ed	¦  «        Zd
gZdadadadada e j        ¦   «         d„ ¦   «         Z e j        ¦   «         d„ ¦   «         Z G d„ de ¦  «        Z!d„ Z"d„ Z#d„ Z$d„ Z% e&d„  e'd¦  «        D ¦   «         ¦  «        Z(de(d<   de(d<   de(d<   dZ)d„ Z*d„ Z+ G d„ de ¦  «        Z, G d„ de¦  «        Z-dS )é    N)ÚPath)Úknobs)Úcompile_module_from_src)Ú_allocation)Ú	GPUTarget)Ú	GPUDriverÚincludeÚlibúlibcuda.so.1c                  óà  — t           j        j        x} r| gS t          j        ddg¦  «                             d¬¦  «        }d„ |                     ¦   «         D ¦   «         }d„ |D ¦   «         }t          j        d¦  «        }|r!|sd„ | 	                    d	¦  «        D ¦   «         }d
}|r|dt          |¦  «        z  z  }|dz  }n
|dz  }|dz  }t          d„ |D ¦   «         ¦  «        s
J |¦   «         ‚|S )Nz/sbin/ldconfigz-pÚignore)Úerrorsc                 óJ   — g | ] }d |v ¯|                      ¦   «         d         ‘Œ!S )r   éÿÿÿÿ)Úsplit)Ú.0Úlines     ú[/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/triton/backends/nvidia/driver.pyú
<listcomp>z libcuda_dirs.<locals>.<listcomp>    s0   € ÐUÐUÐU ¸nÐPTÐ>TÐ>TˆD�JŠJ‰LŒL˜ÔÐ>TÐ>TÐ>Tó    c                 óL   — g | ]!}t           j                             |¦  «        ‘Œ"S © )ÚosÚpathÚdirname)r   Úlocs     r   r   z libcuda_dirs.<locals>.<listcomp>!   s&   € Ð1Ð1Ð1 S�BŒG�OŠO˜CÑ Ô Ð1Ð1Ð1r   ÚLD_LIBRARY_PATHc                 óŒ   — g | ]A}t           j                             t           j                             |d ¦  «        ¦  «        ¯?|‘ŒBS )r   ©r   r   ÚexistsÚjoin)r   Údirs     r   r   z libcuda_dirs.<locals>.<listcomp>$   sA   € ÐsÐsÐs˜ÅÄÇÂÕPRÔPW×P\ÒP\Ð]`ÐbpÑPqÔPqÑArÔArÐs�ÐsÐsÐsr   ú:zlibcuda.so cannot found!
z!Possible files are located at %s.z:Please create a symlink of libcuda.so to any of the files.z<Please make sure GPU is set up and then run "/sbin/ldconfig"z- (requires sudo) to refresh the linker cache.c              3   ó�   K  — | ]A}t           j                             t           j                             |d ¦  «        ¦  «        V — ŒBdS )r   Nr   )r   r   s     r   ú	<genexpr>zlibcuda_dirs.<locals>.<genexpr>,   s@   è è € ÐSÐSÀd�rŒw�~Š~�bœgŸlšl¨4°Ñ@Ô@ÑAÔAÐSÐSÐSÐSÐSÐSr   )r   ÚnvidiaÚlibcuda_pathÚ
subprocessÚcheck_outputÚdecodeÚ
splitlinesr   Úgetenvr   ÚstrÚany)Úenv_libcuda_pathÚlibsÚlocsÚdirsÚenv_ld_library_pathÚmsgs         r   Úlibcuda_dirsr5      s3  € å œ<Ô4Ð4Ðð "Ø Ð!Ð!åÔ"Ð$4°dÐ#;Ñ<Ô<×CÒCÈ8ÐCÑTÔT€Dð VÐU¨¯ªÑ):Ô):ÐUÑUÔU€DØ1Ð1¨DÐ1Ñ1Ô1€DÝœ)Ð$5Ñ6Ô6ÐØð t 4ð tØsÐsÐ2×8Ò8¸Ñ=Ô=ÐsÑsÔsˆØ
&€CØð ?ØÐ2µS¸±Y´YÑ>Ñ>ˆØÐKÑKˆˆàÐMÑMˆØÐ>Ñ>ˆÝÐSÐSÈdÐSÑSÔSÑSÔSÐXÐXÐUXÑXÔXÐSØ€Kr   c                  ó.   — t           gt          ¦   «         ¢S ©N)Úlibdevice_dirr5   r   r   r   Úlibrary_dirsr9   0   s   € åÐ+�L™NœNÐ+Ð+r   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú	CudaUtilsc                 óŒ   •— t          | d¦  «        s-t          t          | ¦  «                             | ¦  «        | _        | j        S )NÚinstance)ÚhasattrÚsuperr;   Ú__new__r=   )ÚclsÚ	__class__s    €r   r@   zCudaUtils.__new__<   s<   ø€ Ý�s˜JÑ'Ô'ð 	>Ý ¥¨CÑ0Ô0×8Ò8¸Ñ=Ô=ˆCŒLØŒ|Ðr   c                 óä  — t          t          t          j                             t
          d¦  «        ¦  «                             ¦   «         dt          ¦   «         t          t          ¬¦  «        }|j
        a
|j        a|j        a|j        a|j        a|j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        d S )Nzdriver.cÚ
cuda_utils)ÚsrcÚnamer9   Úinclude_dirsÚ	libraries)r   r   r   r   r!   r   Ú	read_textr9   rG   rH   ÚPyCUtensorMapÚPyKernelArgÚARG_CONSTEXPRÚ
ARG_KERNELÚ	ARG_TUPLEÚload_binaryÚget_device_propertiesÚcuOccupancyMaxActiveClustersÚset_printf_fifo_sizeÚfill_tma_descriptor_tiledÚfill_tma_descriptor_im2colÚlaunchÚbuild_signature_metadata)ÚselfÚmods     r   Ú__init__zCudaUtils.__init__A   sÏ   € Ý%Ý•R”W—\’\¥'¨:Ñ6Ô6Ñ7Ô7×AÒAÑCÔCØÝ%™œÝ%Ýð
ñ 
ô 
ˆð Ô)ˆØ”oˆØÔ)ˆØ”^ˆ
Ø”Mˆ	Øœ?ˆÔØ%(Ô%>ˆÔ"Ø,/Ô,LˆÔ)Ø$'Ô$<ˆÔ!Ø),Ô)FˆÔ&Ø*-Ô*HˆÔ'Ø”jˆŒØ(+Ô(DˆÔ%Ð%Ð%r   )Ú__name__Ú
__module__Ú__qualname__r@   rY   Ú__classcell__©rB   s   @r   r;   r;   :   sN   ø€ € € € € ðð ð ð ð ð
Eð Eð Eð Eð Eð Eð Er   r;   c                 ó¼   — | d         dk    rdS |                       d¦  «        rdS i dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“|          S )Nr   Ú*ÚCUdeviceptrÚ
tensordescÚCUtensorMapÚi1Úint8_tÚi8Úi16Úint16_tÚi32Úint32_tÚi64Úint64_tÚu1Úuint8_tÚu8Úu16Úuint16_tÚu32Úuint32_tÚu64Úuint64_tÚfp16ÚdoubleÚbf16Úfp32Úf32Úfp64Ú	nvTmaDesc)Ú
startswith)Útys    r   Ú	ty_to_cppr   b   sý   € Ø	ˆ!„u�‚|€|Øˆ}Ø	‡}‚}�\Ñ"Ô"ð Øˆ}ðØˆhðàˆhðð 	ˆyðð 	ˆyð	ð
 	ˆyðð 	ˆiðð 	ˆiðð 	ˆzðð 	ˆzðð 	ˆzðð 	�ðð 	�ðð 	�ðð 	ˆxðð 	�ðð  	�]ð!ð" 	ô#
ð 
r   c                 óD  — g }d}| D �]€}t          |t          ¦  «        �rR|                     d¦  «        �r<|r||         nd }|dz  }t          j        d|¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        dz   }	|€m|                     d|z   ¦  «         t          d|	z  ¦  «        D ]}
|                     d¦  «         Œ|                     d	¦  «         |                     d	¦  «         n|                     d
¦  «         t          |	¦  «        D ]}
|                     d¦  «         Œt          |	¦  «        D ]}
|                     d¦  «         Œ�Œk|                     |¦  «         �Œ‚|r|t          |¦  «        k    sJ ‚|S )Nr   rb   é   ztensordesc<([^[>]*)\[([^]]*)\]é   ú,r`   rk   rd   r|   ri   )
Ú
isinstancer-   r}   ÚreÚmatchÚgroupÚcountÚappendÚrangeÚlen)Ú	signatureÚtensordesc_metaÚoutputÚtensordesc_idxÚsigÚmetar†   ÚdtypeÚshapeÚndimÚ_s              r   Úexpand_signaturer–   {   s½  € Ø€FØ€Nð ð ñ ˆÝ�c�3ÑÔñ 	 C§N¢N°<Ñ$@Ô$@ñ 	Ø6EÐO�? >Ô2Ð2È4ˆDØ˜aÑˆNå”HÐ?ÀÑEÔEˆEØ—K’K ‘N”NˆEØ—K’K ‘N”NˆEØ—;’;˜sÑ#Ô# aÑ'ˆDàˆ|Ø—’˜c E™kÑ*Ô*Ð*õ ˜q 4™x™œð )ð )�AØ—M’M %Ñ(Ô(Ð(Ð(Ø—’˜dÑ#Ô#Ð#Ø—’˜dÑ#Ô#Ð#Ð#à—’˜kÑ*Ô*Ð*å˜4‘[”[ð %ð %�Ø—’˜eÑ$Ô$Ð$Ð$Ý˜4‘[”[ð %ð %�Ø—’˜eÑ$Ô$Ð$Ð$ñ%ð �MŠM˜#ÑÔÐÑàÐH .µC¸Ñ4HÔ4HÒ"HÐ"HÐ"HÐHØ€Mr   c                 ó¨   ‡— ˆfd„Šg }| D ]} ‰||¦  «         Œd„ |D ¦   «         }t           j        j        j        j                             |¦  «        S )zj
    Creates a kernel signature in C to be able to efficiently extract
    arguments in the launcher.
    c                 ó‚   •— t          | t          ¦  «        r| D ]} ‰||¦  «         Œd S |                     | ¦  «         d S r7   )r„   Útupler‰   )r�   rŽ   ÚxÚ_flatten_signatures      €r   r›   z1make_kernel_signature.<locals>._flatten_signatureª   s^   ø€ å�c�5Ñ!Ô!ð 	Øð .ð .�Ø"Ð" 1 fÑ-Ô-Ð-Ð-ð.ð .ð �MŠM˜#ÑÔÐÐÐr   c                 ó   — g | ]
}|d k    ¯|‘ŒS )Ú	constexprr   )r   rš   s     r   r   z)make_kernel_signature.<locals>.<listcomp>µ   s"   € ÐFÐFÐF˜a°Q¸+Ò5EÐ5E˜Ð5EÐ5EÐ5Er   )ÚtritonÚruntimeÚdriverÚactiveÚutilsrV   )rŒ   Úflat_signaturer�   Úkernel_signaturer›   s       @r   Úmake_kernel_signaturer¥   ¤   s|   ø€ ðð ð ð ð ð €NØð 0ð 0ˆØÐ˜3 Ñ/Ô/Ð/Ð/ØFÐF >ÐFÑFÔFÐåŒ>Ô Ô'Ô-×FÒFÐGWÑXÔXÐXr   c                 ó^  — g }| D ]§}t          |t          ¦  «        r7|                     t          t	          |¦  «        t
          ¬¦  «        ¦  «         ŒN|dk    r*|                     t          dt          ¬¦  «        ¦  «         Œ~|                     t          dt          ¬¦  «        ¦  «         Œ¨|S )z¤
    This recreates the signature with annotations as C objects which can then
    be used to efficiently flatten tuples, and remove constexpr in the launcher.
    )Únested_tupleÚtyper�   N)r„   r™   r‰   rK   Úannotate_argumentsrN   rM   rL   )rŒ   Úannotated_argumentsr�   s      r   r©   r©   º   s¶   € ð
 ÐØð [ð [ˆÝ�c�5Ñ!Ô!ð 	[Ø×&Ò&­ÕASÐTWÑAXÔAXÕ_hÐ(iÑ(iÔ(iÑkÔkÐkÐkØ�KÒÐØ×&Ò&¥{ÀÍ:Ð'VÑ'VÔ'VÑWÔWÐWÐWà×&Ò&¥{ÀÍ=Ð'YÑ'YÔ'YÑZÔZÐZÐZØÐr   c              #   ó   K  — | ]}||fV — Œ	d S r7   r   )r   Úis     r   r%   r%   Ë   s&   è è € Ð:Ð:¨1  A Ð:Ð:Ð:Ð:Ð:Ð:r   é   é
   é   é	   é   c           
      ó8  — |€6| j         g| j        ¢| j        ¢| j        dk    ‘| j        ‘| j        ¢| j        ¢S |d         }|d         }|d         }|d         }|d         }| j        }| j        }|d         dk    sJ ‚| j        dk    rdnd	}	|r t          |¦  «        }
|
dxx         d
z  cc<   n|}
| j        rt          }t          j        j	        j
        j                             | j                              ¦   «         ||t          |         ||
||	¦  «        }|g|¢|¢S )NÚnanÚswizzleÚ	elem_sizeÚ	elem_typeÚ
block_sizeÚ
fp4_paddedr   r�   r   r‚   )Úbaser“   ÚstridesÚpaddingÚround_f32_to_tf32ÚlistÚTMA_TF32rž   rŸ   r    r¡   r¢   rS   Údata_ptrÚTMA_DTYPE_DEVICE_TO_HOST)ÚargÚmetadatar´   rµ   r¶   r·   r¸   r“   rº   r»   Úexpanded_shapeÚcu_tensor_maps               r   Úmake_tensordesc_argrÅ   Ò   sx  € ØÐð ŒHð
àŒYð
ð Œ[ð
ð ŒK˜5Ò ð	
ð
 Ô!ð
ð ŒYð
ð Œ[ð
ð 	
ð �yÔ!€GØ˜Ô%€IØ˜Ô%€IØ˜,Ô'€JØ˜,Ô'€JàŒI€EØŒk€GØ�2Œ;˜!ÒÐÐÐØ”; %Ò'Ð'ˆaˆa¨Q€Gàð Ý˜e™œˆØ�rÐÐÔ˜aÑÐÐÑÐàˆà
Ôð Ýˆ	å”NÔ)Ô0Ô6×PÒPØŒ×ÒÑÔØØÝ  Ô+ØØØØñ	ô 	€Mð Ð,˜EÐ, GÐ,Ð,r   c                 óZ  ‡ ‡‡— t          d„ |                     ¦   «         D ¦   «         ¦  «        }|s‰ S t          d„ t          |                     ¦   «         ¦  «        D ¦   «         ¦  «        Š‰r"t	          ‰¦  «        t	          ‰¦  «        k    sJ ‚‰sd gt	          ‰¦  «        z  Šˆ ˆˆfd„}|S )Nc              3   ój   K  — | ].}t          |t          ¦  «        o|                     d ¦  «        V — Œ/dS )rb   N©r„   r-   r}   )r   r�   s     r   r%   z)wrap_handle_tensordesc.<locals>.<genexpr>  s>   è è € ÐrÐrÐX[�j¨­cÑ2Ô2ÐS°s·~²~ÀlÑ7SÔ7SÐrÐrÐrÐrÐrÐrr   c                 ól   — g | ]1\  }}t          |t          ¦  «        ¯|                     d ¦  «        ¯/|‘Œ2S )rb   rÈ   )r   r¬   r�   s      r   r   z*wrap_handle_tensordesc.<locals>.<listcomp>  s@   € ÐpÐpÐp‰vˆq�#½*ÀSÍ#Ñ:NÔ:NÐpÐSV×SaÒSaÐbnÑSoÔSoÐpˆÐpÐpÐpr   c                  óþ   •— | d d…         }| d         }g }d}t          |¦  «        D ]M\  }}|‰v r/|                     t          |‰	|         ¦  «        ¦  «         |dz  }Œ8|                     |¦  «         ŒN ‰g |¢|‘R Ž S )Nr   r   r�   )Ú	enumerateÚextendrÅ   r‰   )
ÚargsÚ	base_argsÚkernel_argsÚfinal_kernel_argsr�   r¬   rÁ   ÚlauncherÚtensordesc_indicesr�   s
          €€€r   Úinnerz%wrap_handle_tensordesc.<locals>.inner  s¯   ø€ Ø˜˜"˜”Iˆ	Ø˜2”hˆàÐØˆÝ Ñ,Ô,ð 	.ð 	.‰FˆAˆsØÐ&Ð&Ð&Ø!×(Ò(Õ)<¸SÀ/ÐR`ÔBaÑ)bÔ)bÑcÔcÐcØ !Ñ#��à!×(Ò(¨Ñ-Ô-Ð-Ð-àˆxÐ6˜Ð6Ð$5Ð6Ð6Ð6Ð6r   )r.   ÚvaluesÚsetrË   r‹   )rÑ   rŒ   r�   Úhas_tensor_desc_argrÓ   rÒ   s   ` `  @r   Úwrap_handle_tensordescr×     sá   øøø€ ÝÐrÐrÐ_h×_oÒ_oÑ_qÔ_qÐrÑrÔrÑrÔrÐØð ØˆåØpÐp� 9×#3Ò#3Ñ#5Ô#5Ñ6Ô6ÐpÑpÔpñrô rÐàÐQ¥# oÑ"6Ô"6½#Ð>PÑ:QÔ:QÒ"QÐ"QÐ"QÐQØð ;Ø˜&¥3Ð'9Ñ#:Ô#:Ñ:ˆð7ð 7ð 7ð 7ð 7ð 7ð 7ð €Lr   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚCudaLauncherc                 óÂ  ‡‡— t          ‰d¦  «        r‰j        nt          ¦   «         }ˆfd„Šˆfd„|                     ¦   «         D ¦   «         }d„ ‰j                             ¦   «         D ¦   «         }t          |dd ¦  «        }t          j        j        j	        j
        j        }t          |                     ¦   «         |¦  «        }t          |¦  «        | _        t!          |¦  «        | _        t          |dd¦  «        | _        t'          |||¦  «        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        d S )NÚ	constantsc                 ór   •— t          | t          ¦  «        r ‰j        j                             | ¦  «        fn| S r7   )r„   r-   ÚfnÚ	arg_namesÚindex)rš   rE   s    €r   ú<lambda>z'CudaLauncher.__init__.<locals>.<lambda>'  s2   ø€ ½ZÈÍ3Ñ=OÔ=OÐV˜SœVÔ-×3Ò3°AÑ6Ô6Ð9Ð9ÐUV€ r   c                 ó.   •— i | ]\  }} ‰|¦  «        |“ŒS r   r   )r   ÚidxÚvalueÚarg_idxs      €r   ú
<dictcomp>z)CudaLauncher.__init__.<locals>.<dictcomp>(  s'   ø€ ÐMÐMÐM©Z¨S°%�W�W˜S‘\”\ 5ÐMÐMÐMr   c                 ó   — i | ]\  }}||“Œ	S r   r   )r   râ   rã   s      r   rå   z)CudaLauncher.__init__.<locals>.<dictcomp>)  s   € ÐHÐHÐH¡J C¨�S˜%ÐHÐHÐHr   r�   Únum_ctasr�   )r>   rÛ   ÚdictÚitemsrŒ   Úgetattrrž   rŸ   r    r¡   r¢   rU   r–   rÔ   r©   Úarg_annotationsr¥   r¤   rç   r×   Úglobal_scratch_sizeÚglobal_scratch_alignÚprofile_scratch_sizeÚprofile_scratch_alignÚlaunch_cooperative_gridÚ
launch_pdl)	rW   rE   rÂ   rÛ   rŒ   r�   rÑ   Úexpanded_signaturerä   s	    `      @r   rY   zCudaLauncher.__init__%  sB  øø€ Ý%,¨S°+Ñ%>Ô%>ÐJ�C”M�MÅDÁFÄFˆ	ØVÐVÐVÐVˆØMÐMÐMÐM¸9¿?º?Ñ;LÔ;LÐMÑMÔMˆ	ØHÐH°#´-×2EÒ2EÑ2GÔ2GÐHÑHÔHˆ	Ý! (Ð,=¸tÑDÔDˆå”>Ô(Ô/Ô5Ô<ˆÝ-¨i×.>Ò.>Ñ.@Ô.@À/ÑRÔRÐÝ1Ð2DÑEÔEˆÔÝ 5Ð6HÑ IÔ IˆÔÝ ¨*°aÑ8Ô8ˆŒÝ,¨X°yÀ/ÑRÔRˆŒØ#+Ô#?ˆÔ Ø$,Ô$AˆÔ!Ø$,Ô$AˆÔ!Ø%-Ô%CˆÔ"Ø'/Ô'GˆÔ$Ø"Ô-ˆŒˆˆr   c
                 ó  ‡ ‡‡‡‡— ˆˆˆˆ ˆfd„} |‰ j         ‰ j        t          j        ¦  «        } |‰ j        ‰ j        t          j        ¦  «        }‰                      ‰‰‰‰|‰ j        ‰ j	        ||||	||‰ j
        ‰ j        |
¦  «         d S )Nc                 ó€   •— | dk    r6‰‰z  ‰z  }|‰	j         z  | z  }|                     ¦   «         } |||‰
¦  «        S d S ©Nr   )rç   Úget)ÚsizeÚalignÚ	allocatorÚ	grid_sizeÚ
alloc_sizeÚalloc_fnÚgridXÚgridYÚgridZrW   Ústreams         €€€€€r   Úallocate_scratchz/CudaLauncher.__call__.<locals>.allocate_scratch<  sQ   ø€ Ø�aŠxˆxØ! E™M¨EÑ1�	Ø&¨¬Ñ6¸Ñ=�
Ø$Ÿ=š=™?œ?�Ø�x 
¨E°6Ñ:Ô:Ð:Ø�4r   )rì   rí   r   Ú
_allocatorrî   rï   Ú_profile_allocatorrU   rð   rñ   rë   r¤   )rW   rý   rþ   rÿ   r   ÚfunctionÚkernel_metadataÚlaunch_metadataÚlaunch_enter_hookÚlaunch_exit_hookrÍ   r  Úglobal_scratchÚprofile_scratchs   `````         r   Ú__call__zCudaLauncher.__call__9  sÒ   øøøøø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð *Ð)¨$Ô*BÀDÔD]Õ_jÔ_uÑvÔvˆØ*Ð*¨4Ô+DÀdÔF`Ý+6Ô+IñKô Kˆð 	�Š�E˜5 %¨°¸4Ô;WÐY]ÔYhØ# _Ð6GÐIYÐ[iØ# TÔ%9¸4Ô;PÐRVñ	Xô 	Xð 	Xð 	Xð 	Xr   N)rZ   r[   r\   rY   r  r   r   r   rÙ   rÙ   #  s7   € € € € € ð.ð .ð .ð(Xð Xð Xð Xð Xr   rÙ   c                   óh   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zed„ ¦   «         Zde	de	fd„Z
d	„ Zd
„ Zd„ Zˆ xZS )Ú
CudaDriverc                 ó†   •— t          ¦   «         | _        t          | _        t	          ¦   «                              ¦   «          d S r7   )r;   r¢   rÙ   Úlauncher_clsr?   rY   )rW   rB   s    €r   rY   zCudaDriver.__init__O  s2   ø€ Ý‘[”[ˆŒ
Ý(ˆÔÝ‰Œ×ÒÑÔÐÐÐr   c                 ó¢   — |                       ¦   «         }|                      |¦  «        }|d         dz  |d         z   }d}t          d||¦  «        S )Nr   r®   r�   é    Úcuda)Úget_current_deviceÚget_device_capabilityr   )rW   ÚdeviceÚ
capabilityÚ	warp_sizes       r   Úget_current_targetzCudaDriver.get_current_targetT  sT   € Ø×(Ò(Ñ*Ô*ˆØ×/Ò/°Ñ7Ô7ˆ
Ø ”] RÑ'¨*°Q¬-Ñ7ˆ
Øˆ	Ý˜ ¨YÑ7Ô7Ð7r   c                 óZ   — dd l }|                     d|                      ¦   «         ¦  «        S )Nr   r  )Útorchr  r  ©rW   r  s     r   Úget_active_torch_devicez"CudaDriver.get_active_torch_device[  s+   € ØˆˆˆØ�|Š|˜F D×$;Ò$;Ñ$=Ô$=Ñ>Ô>Ð>r   c                 ó   — dd l }|j        S rõ   )r  r  r  s     r   Úget_device_interfacezCudaDriver.get_device_interface_  s   € ØˆˆˆØŒzÐr   c                  ó|   — 	 dd l } | j                             ¦   «         o| j        j        d u S # t
          $ r Y dS w xY w)Nr   F)r  r  Úis_availableÚversionÚhipÚImportError)r  s    r   Ú	is_activezCudaDriver.is_activec  sU   € ð	ØˆLˆLˆLØ”:×*Ò*Ñ,Ô,ÐL°%´-Ô2CÀtÐ2KÐLøÝð 	ð 	ð 	Ø�5�5ð	øøøs   ‚*- ­
;º;r~   Úreturnc                 ó    — t          |¦  «        S r7   )r   )rW   r~   s     r   Úmap_python_to_cpp_typez!CudaDriver.map_python_to_cpp_typek  s   € Ý˜‰}Œ}Ðr   c                 ó   — ddl m} |S )Nr   )Údo_bench)Útriton.testingr)  )rW   r)  s     r   Úget_benchmarkerzCudaDriver.get_benchmarkern  s   € Ø+Ð+Ð+Ð+Ð+Ð+Øˆr   c                 óh   — dd l }d}|                     t          |dz  ¦  «        |j        d¬¦  «        S )Nr   i   é   r  )r’   r  )r  ÚemptyÚint)rW   r  Ú
cache_sizes      r   Úget_empty_cache_for_benchmarkz(CudaDriver.get_empty_cache_for_benchmarkr  s8   € Øˆˆˆð
 'ˆ
Ø�{Š{�3˜z¨Q™Ñ/Ô/°u´yÈˆ{ÑPÔPÐPr   c                 ó.   — |                      ¦   «          d S r7   )Úzero_)rW   Úcaches     r   Úclear_cachezCudaDriver.clear_cache{  s   € Ø�Š‰Œˆˆˆr   )rZ   r[   r\   rY   r  r  r  Ústaticmethodr$  r-   r'  r+  r1  r5  r]   r^   s   @r   r  r  M  sÒ   ø€ € € € € ðð ð ð ð ð
8ð 8ð 8ð?ð ?ð ?ðð ð ð ðð ñ „\ðð¨ð °ð ð ð ð ðð ð ðQð Qð Qðð ð ð ð ð ð r   r  ).Ú	functoolsr   r(   rž   r…   Úpathlibr   r   Útriton.runtime.buildr   Útriton.runtimer   Útriton.backends.compilerr   Útriton.backends.driverr   r   r   ÚrealpathÚ__file__r!   rG   r8   rH   rJ   rK   rL   rM   rN   Ú	lru_cacher5   r9   Úobjectr;   r   r–   r¥   r©   rè   rŠ   rÀ   r¾   rÅ   r×   rÙ   r  r   r   r   ú<module>rA     s«  ðØ Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø &Ð &Ð &Ð &Ð &Ð &Ø .Ð .Ð .Ð .Ð .Ð .Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,à
Œ'�/Š/˜"œ'×*Ò*¨8Ñ4Ô4Ñ
5Ô
5€Ø”—’˜W iÑ0Ô0Ð1€Ø”—’˜W eÑ,Ô,€ØÐ€	Ø€Ø€Ø€Ø€
Ø€	ð €ÔÑÔðð ñ Ôðð. €ÔÑÔð,ð ,ñ Ôð,ð Eð  Eð  Eð  Eð  E�ñ  Eô  Eð  EðP
ð 
ð 
ð2&ð &ð &ðRYð Yð Yð,ð ð ð"  ˜4Ð:Ð:°°°b±	´	Ð:Ñ:Ô:Ñ:Ô:Ð Ø Ð ˜Ñ ØÐ ˜Ñ Ø Ð ˜Ñ Ø€ð1-ð 1-ð 1-ðhð ð ð:'Xð 'Xð 'Xð 'Xð 'X�6ñ 'Xô 'Xð 'XðT/ð /ð /ð /ð /�ñ /ô /ð /ð /ð /r   