U
    MhE	                     @   sx   d dl Z d dlZe dedddZe dedddZe ddd Ze dd	d
 Zdd Zdd Z	dS )    N)returnc                  C   s.   zdd l } | d k	W S  tk
r(   Y dS X d S )Nr   F)tritonImportErrorr    r   E/var/www/html/venv/lib/python3.8/site-packages/torch/utils/_triton.pyhas_triton_package   s
    
r   c                     s@   ddl m  dd } dd }| |d fdd	}| o>t S )
Nr   )get_interface_for_devicec                 S   s   | j  jdkS )N   )ZWorkerZget_device_propertiesmajordevice_interfacer   r   r   cuda_extra_check   s    z$has_triton.<locals>.cuda_extra_checkc                 S   s   dS )NTr   r   r   r   r   _return_true   s    z has_triton.<locals>._return_true)cudaZxpuc                     s4     D ]&\} } | }| r||r dS qdS )NTF)itemsZis_available)ZdeviceZextra_checkr   r	   Ztriton_supported_devicesr   r    is_device_compatible_with_triton   s
    z4has_triton.<locals>.is_device_compatible_with_triton)Ztorch._dynamo.device_interfacer	   r   )r   r   r   r   r   r   
has_triton   s    
r   c                  C   s>   dd l } | jjrd S ddlm} ddlm} |j }||S )Nr   )make_backend)driver)	torchversionhiptriton.compiler.compilerr   Ztriton.runtime.driverr   ZactiveZget_current_target)r   r   r   targetr   r   r   triton_backend&   s    
r   c                  C   sR   dd l } | jjrd S ddlm} t }|  d|  }t|	d
  S )Nr   )
triton_key-zutf-8)r   r   r   r   r   r   hashhashlibsha256encode	hexdigestupper)r   r   backendkeyr   r   r   triton_hash_with_backend5   s    r'   c                 C   sN   | j dr d| j dd   }n&| j dr@d| j dd   }n| j }d| S )Nfpfloat   bfZbfloatztriton.language.)name
startswith)dtypesuffixr   r   r   dtype_to_stringF   s    r0   c                  C   s   dd l } dd | jj_d S )Nr   c                 S   s   t | S )N)r0   )selfr   r   r   <lambda>W       z)patch_triton_dtype_repr.<locals>.<lambda>)r   languager.   __repr__r   r   r   r   patch_triton_dtype_reprP   s    r6   )
	functoolsr    	lru_cacheboolr   r   r   r'   r0   r6   r   r   r   r   <module>   s   	


