
    Yh                        d dl Z d dlZd dlm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	e j        defd            Z
e j        defd	            Z e j        d          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S )    N)Anyreturnc                  R    	 ddl m}  | d uS # t          $ r Y dS t          $ r Y dS w xY w)Nr   
triton_keyF)triton.compiler.compilerr   ImportErrorRuntimeErrorr   s    e/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/torch/utils/_triton.pyhas_triton_packager      s_    777777%%   uu   uus   	 
&	&&c                      dd l } | j                                        o)| j                                        dk    o| j        j         S )Nr   	   r   )torchcudais_availableget_device_capabilityversionhip)r   s    r   _device_supports_tmar      sN    LLL 	
!! 	"J,,..&8	"!!    c                  t    t                      r)t                      r	 ddlm} m} dS # t
          $ r Y nw xY wdS )Nr   create_1d_tma_descriptorcreate_2d_tma_descriptorTF)r   r   $triton.tools.experimental_descriptorr   r   r	   r   s     r    has_triton_experimental_host_tmar      sy     
!! 		       
 t    5s   ( 
55c                  p    t                      r't                      r	 ddlm}  dS # t          $ r Y nw xY wdS )Nr   TensorDescriptorTF)r   r   triton.tools.tensor_descriptorr    r	   r   s    r   %has_triton_tensor_descriptor_host_tmar"   .   so     	!! 	      t    5s   & 
33c                  :    t                      pt                      S )N)r"   r    r   r   has_triton_tmar%   >   s    022X6V6X6XXr   c                     t                      rzdd l} | j                                        r]| j                                        dk    r@| j        j        s4	 ddlm}m	} dS # t          $ r Y nw xY w	 ddlm} dS # t          $ r Y nw xY wdS )Nr   r   )&experimental_device_tensormap_create1d&experimental_device_tensormap_create2dTmake_tensor_descriptorF)r   r   r   r   r   r   r   triton.language.extra.cudar'   r(   r	   triton.languager*   )r   r'   r(   r*   s       r   has_triton_tma_devicer-   C   s      J##%%	
0022f<<M% =       
 t   BBBBBBt    5s$   A   
A-,A-1A9 9
BBc                      t                      r_dd l} | j                                        rB| j                                        dk    r%| j        j        s	 ddlm} dS # t          $ r Y nw xY wdS )Nr   r   r)   TF)
r   r   r   r   r   r   r   r,   r*   r	   )r   r*   s     r   has_triton_stable_tma_apir/   c   s      J##%%
	
0022f<<M% =BBBBBBt   5s   A 
A+*A+c                      t                      sdS ddlm dt          dt          fd} dt          dt          fd}dt          dt          fd}| ||d	dt          ffd
} |            S )NFr   )get_interface_for_devicedevice_interfacer   c                 F    | j                                         j        dk    S )N   )Workerget_device_propertiesmajorr2   s    r   cuda_extra_checkz$has_triton.<locals>.cuda_extra_check}   s    &<<>>DIIr   c                 &    dd l }d|j        j        v S )Nr   cpu)triton.backendsbackends)r2   tritons     r   cpu_extra_checkz#has_triton.<locals>.cpu_extra_check   s    000r   c                     dS )NTr$   r8   s    r   _return_truez has_triton.<locals>._return_true   s    tr   )r   xpur;   c                                                       D ]2\  } } |           }|                                r ||          r dS 3dS )NTF)itemsr   )deviceextra_checkr2   r1   triton_supported_devicess      r    is_device_compatible_with_tritonz4has_triton.<locals>.is_device_compatible_with_triton   sg    #;#A#A#C#C 	 	FK77??,,.. ;;?O3P3P ttur   )r   torch._dynamo.device_interfacer1   r   bool)r9   r?   rA   rH   r1   rG   s       @@r   
has_tritonrK   v   s     uGGGGGGJ3 J4 J J J J1# 1$ 1 1 1 1
s t     !   d        ,+---r   c                  b    ddl m}  ddlm} |j                                        } | |          S )Nr   )make_backend)driver)r   rM   triton.runtime.driverrN   activeget_current_target)rM   rN   targets      r   triton_backendrS      sI    555555,,,,,,]--//F<r   c                     ddl m}  t                      } |              d|                                 }t	          j        |                    d                                                                                    S )Nr   r   -zutf-8)	r   r   rS   hashhashlibsha256encode	hexdigestupper)r   backendkeys      r   triton_hash_with_backendr^      sv    333333GZ\\
,
,GLLNN
,
,C >#**W--..88::@@BBBr   )	functoolsrW   typingr   cacherJ   r   r   r   r"   r%   r-   	lru_cacher/   rK   rS   strr^   r$   r   r   <module>rd      s              D     d     $      t     Y Y Y Y Y t    > T4    $ .D . . . .B           C# C C C C C Cr   