
    i9                        d dl Z d dlZd dlmZ e j                  defd       Ze j                  ddeeef   deeef   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y)    N)Anyreturnc                  ,    	 dd l } y# t        $ r Y yw xY w)Nr   TF)tritonImportError)r   s    M/var/www/html/engine/venv/lib/python3.12/site-packages/torch/utils/_triton.pyhas_triton_packager	      s     s    	fallbackc                     	 dd l }t        d |j                  j                  d      d d D              \  }}||fS # t        $ r | cY S w xY w)Nr   c              3   2   K   | ]  }t        |        y wN)int).0vs     r   	<genexpr>z%get_triton_version.<locals>.<genexpr>   s     OSVOs   .   )r   tuple__version__splitr   )r
   r   majorminors       r   get_triton_versionr      sT    OV-?-?-E-Ec-J2A-NOOuu~ s   8; A	A	c                      dd l } | j                  j                         xr6 | j                  j                         dk\  xr | j                  j
                   S )Nr   	   r   )torchcudais_availableget_device_capabilityversionhip)r   s    r   _device_supports_tmar#      sK     	

! 	"JJ,,.&8	"!!!    c                  ^    t               rt               r
	 ddlm} m} yy# t
        $ r Y yw xY w)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*   &   s9    !
    s     	,,c                  Z    t               rt               r	 ddlm}  yy# t        $ r Y yw xY w)Nr   TensorDescriptorTF)r	   r#   triton.tools.tensor_descriptorr-   r   r,   s    r   %has_triton_tensor_descriptor_host_tmar/   7   s9    !    s    	**c                  .    t               xs
 t               S r   )r/   r*    r$   r   has_triton_tmar2   G   s    02X6V6XXr$   c                  N   t               rudd l} | j                  j                         r3| j                  j	                         dk\  r| j
                  j                  r| j                  j                         r
	 ddlm	}m
} yy# t        $ r Y nw xY w	 ddlm} y# t        $ r Y yw xY w)Nr   r   )&experimental_device_tensormap_create1d&experimental_device_tensormap_create2dTmake_tensor_descriptorF)r	   r   r   r   r    r!   r"   xputriton.language.extra.cudar4   r5   r   triton.languager7   )r   r4   r5   r7   s       r   has_triton_tma_devicer;   L   s     JJ##%

002f<MM%%YY##%
    B s$   7B 	BBB 	B$#B$c                     t               rsdd l} | j                  j                         r3| j                  j	                         dk\  r| j
                  j                  r| j                  j                         r	 ddlm	} yy# t        $ r Y yw xY w)Nr   r   r6   TF)r	   r   r   r   r    r!   r"   r8   r:   r7   r   )r   r7   s     r   has_triton_stable_tma_apir=   l   sv     JJ##%

002f<MM%%YY##%B   s   7A? ?	B
Bc                      t               sy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                 P    | j                   j                         j                  dk\  S )N   )Workerget_device_propertiesr   r@   s    r   cuda_extra_checkz$has_triton.<locals>.cuda_extra_check   s"    &&<<>DDIIr$   c                 :    dd l }d|j                  j                  v S )Nr   cpu)triton.backendsbackends)r@   r   s     r   cpu_extra_checkz#has_triton.<locals>.cpu_extra_check   s    0000r$   c                      y)NTr1   rE   s    r   _return_truez has_triton.<locals>._return_true   s    r$   )r   r8   rH   mtiac                  |    j                         D ](  \  } } |       }|j                         s ||      s( y y)NTF)itemsr   )deviceextra_checkr@   r?   triton_supported_devicess      r    is_device_compatible_with_tritonz4has_triton.<locals>.is_device_compatible_with_triton   sG    #;#A#A#C 	FK7?,,.;?O3P	 r$   )r	   torch._dynamo.device_interfacer?   r   bool)rF   rK   rM   rT   r?   rS   s       @@r   
has_tritonrW      sx    GJ3 J4 J1# 1$ 1
s t  !	 d  ,--r$   c                  ^    ddl m}  ddlm} |j                  j                         } | |      S )Nr   )make_backend)driver)triton.compiler.compilerrY   triton.runtime.driverrZ   activeget_current_target)rY   rZ   targets      r   triton_backendr`      s%    5,]]--/Fr$   c                      ddl m}  t               } |         d|j                          }t	        j
                  |j                  d            j                         j                         S )Nr   )
triton_key-zutf-8)	%torch._inductor.runtime.triton_compatrb   r`   hashhashlibsha256encode	hexdigestupper)rb   backendkeys      r   triton_hash_with_backendrm      sR    @G\N!GLLN+
,C >>#**W-.88:@@BBr$   ))r   r   )	functoolsrf   typingr   cacherV   r	   r   r   r   r#   r*   r/   r2   r;   	lru_cacher=   rW   r`   strrm   r1   r$   r   <module>rs      s      D   sCx eCHo   d   $    t   Y Y Y t  > T4  $ .D . .D       C# C Cr$   