o
    ,iE	                     @   sx   d dl Z d dlZe ddefddZe ddef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 uW S  ty   Y dS w )Nr   F)tritonImportErrorr    r   Q/home/ubuntu/SoloSpeech/.venv/lib/python3.10/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   )Worker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)cudaxpuc                     s4     D ]\} } | }| r||r dS qdS )NTF)itemsis_available)deviceextra_checkr   r	   triton_supported_devicesr   r    is_device_compatible_with_triton   s   z4has_triton.<locals>.is_device_compatible_with_triton)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   triton.runtime.driverr   active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   r2   c                 C   sZ   | j drd| j dd   }d| S | j dr&d| j dd   }d| S | j }d| S )Nfpfloat   bfbfloatztriton.language.)name
startswith)dtypesuffixr   r   r   dtype_to_stringF   s   r<   c                  C   s   dd l } dd | jj_d S )Nr   c                 S   s   t | S )N)r<   )selfr   r   r   <lambda>W   s    z)patch_triton_dtype_repr.<locals>.<lambda>)r   languager:   __repr__r   r   r   r   patch_triton_dtype_reprP   s   rA   )
	functoolsr+   	lru_cacheboolr   r   r'   r2   r<   rA   r   r   r   r   <module>   s   	


