
    ^j                        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mZ  ej0                  e      Zd
ZdZdZe j<                  dee edz  f   fd       Z!de fdZ"ddez  fdZ#e j<                  de fd       Z$ddZdddde%de%de%dedz  dede de ddfdZ ejL                  d
 eeejN                  e                y)    N)cast)Version   )cuda   )_available_version_unavailable_reasoncheck_native_jit_disabledcheck_native_version_skip)dsl_registryDSLModuleProtocol)	_OpCondFn	_OpImplFnderegister_op_overridesregister_op_overridetriton      returnc                      t        j                         sydg} t        |       }|d}t        d      }||fS t        j                  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info)depsreason	availableversions       e/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_native/triton_utils.py_check_runtime_availabler        sp     >> 	D !&F~	$X. g 	=vF	g    c                       t               \  } }| S Nr    )r   _s     r   runtime_availabler&   <   s    +-LIqr!   c                       t               \  } }|S r#   r$   )r%   r   s     r   runtime_versionr(   A   s    )+JAwNr!   c                      t               \  } }|y|j                  t        k(  }|j                  t        k\  }|r|s
t               ryt        j                  d|t        t               y)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_oks       r   _version_is_sufficientr0   F   sc    )+JAw }} >>H}} ==HX";"=HH	<&% r!   c                  $    t        t               y)z+
    Deregister all ops through triton
    )disable_dsl_namesN)_deregister_op_overrides_impl_TRITON_DSL_NAME r!   r   r   r   ^   s     "4DEr!   Fallow_multiple_overrideunconditional_override
lib_symbol	op_symboldispatch_keycondimplr7   r8   c          
      |    t               \  }}|r
t               ryt               syt        t        | ||||||       y)z
    See torch/_native/registry.py for the underlying implementation
    and arguments. This is a thin, DSL-checking wrapper over
    _register_op_override_impl
    Nr6   )r    r
   r0   _register_op_override_implr4   )	r9   r:   r;   r<   r=   r7   r8   r   r   s	            r   r   r   e   sF     23Iw35!# 75	r!   )r   N)(	functoolsloggingsystypingr   torch._vendor.packaging.versionr   backendsr   r   common_utilsr   r	   r
   r   r   r   registryr   r   r   r3   r   r?   	getLogger__name__r   r4   r+   r-   cachetupleboolr    r&   r(   r0   strregister_dslmodulesr5   r!   r   <module>rP      sJ     
  3 $  :  g!  !"  !  %gn(<"=  64 
 
   .F %*#(  d
	
  " ! 
H   (D):CKK<Q$R Sr!   