o
    j9:j                     @   s6  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mZmZmZ ddlmZmZ dd	lmZmZmZ eeZd
ZdZdZe jdeeedB f fddZ defddZ!ddeB fddZ"e jdefddZ#d"ddZdddde$de$de$dedededdfd d!Ze%d
eeej&e  dS )#    N)cast)Version   )cuda   )_available_version_unavailable_reasoncheck_native_jit_disabledcheck_native_version_skip)dsl_registryDSLModuleProtocol)_OpFnderegister_op_overridesregister_op_overridetriton      returnc                  C   sR   t  sdS dg} t| }|du rd}td}||fS td| d}d}||fS )zO
    Check if triton is available

    NOTE: must not import at this point
    )FN)r   r   NTr   z*triton native DSL ops require: `triton` %sF)_cudais_builtr   r   logwarning)depsreason	availableversion r   a/home/nk/hobo-godmode/plappi-mvp/.venv/lib/python3.10/site-packages/torch/_native/triton_utils.py_check_runtime_available   s   r   c                  C   s   t  \} }| S Nr   )r   _r   r   r   runtime_available8      
r"   c                  C   s   t  \} }|S r   r    )r!   r   r   r   r   runtime_version=   r#   r$   c                  C   sP   t  \} }|d u rdS |jtk}|jtk}|r|st rdS td|tt dS )NFTzetriton version %s is not sufficient (>= (%s.%s.*)); set TORCH_NATIVE_SKIP_VERSION_CHECK=1 to override)r   major_TRITON_REQUIRED_VERSION_MAJORminor_TRITON_MINIMUM_VERSION_MINORr
   r   r   )r!   r   major_okminor_okr   r   r   _version_is_sufficientB   s   


r+   c                   C   s   t td dS )z+
    Deregister all ops through triton
    )disable_dsl_namesN)_deregister_op_overrides_impl_TRITON_DSL_NAMEr   r   r   r   r   Z   s   r   Fallow_multiple_overrideunconditional_override
lib_symbol	op_symboldispatch_keyimplr0   r1   c             	   C   s<   t  \}}|r
t rdS t sdS tt| |||||d dS )z
    See torch/_native/registry.py for the underlying implementation
    and arguments. This is a thin, DSL-checking wrapper over
    _register_op_override_impl
    Nr/   )r   r	   r+   _register_op_override_implr.   )r2   r3   r4   r5   r0   r1   r   r   r   r   r   r   a   s   


r   )r   N)'	functoolsloggingsystypingr   torch._vendor.packaging.versionr   backendsr   r   common_utilsr   r   r	   r
   r   r   registryr   r   r-   r   r6   	getLogger__name__r   r.   r&   r(   cachetupleboolr   r"   r$   r+   strregister_dslmodulesr   r   r   r   <module>   sL    


"