
    3j                        S SK r S SKrS SKrS SKJr  S SKJr  SSKJr	  SSK
JrJrJrJr  SSKJrJr  SS	KJrJrJr  \R.                  " \5      rS
rSrSr\ R:                  S\\\S-  4   4S j5       r S\4S jr!SS\-  4S jr"\ R:                  S\4S j5       r#SS jrSSS.S\$S\$S\$S\S\S\SS4S jjr\RJ                  " S
\" \\RL                  \   5      5        g)    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                      [         R                  " 5       (       d  gS/n [        U 5      nUc  Sn[        S5      nX#4$ [        R                  SU5        SnSnX#4$ )zC
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versions       T/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/_native/triton_utils.py_check_runtime_availabler      so     >> 	D !&F~	$X.
  	@&I	    c                      [        5       u  pU $ Nr   )r   _s     r   runtime_availabler%   8   s    +-LIr    c                      [        5       u  pU$ r"   r#   )r$   r   s     r   runtime_versionr'   =   s    )+JANr    c                      [        5       u  pUc  gUR                  [        :H  nUR                  [        :  nU(       a  U(       d  [        5       (       a  g[        R                  SU[        [        5        g)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_sufficientr/   B   sd    )+JA }} >>H}} ==HX";"="=KK	<&% r    c                      [        [        S9  g)z#
Deregister all ops through triton
)disable_dsl_namesN)_deregister_op_overrides_impl_TRITON_DSL_NAME r    r   r   r   Z   s     "4DEr    Fallow_multiple_overrideunconditional_override
lib_symbol	op_symboldispatch_keyimplr6   r7   c          
          [        5       u  pgU(       a  [        5       (       a  g[        5       (       d  g[        [        U UUUUUS9  g)z
See torch/_native/registry.py for the underlying implementation
and arguments. This is a thin, DSL-checking wrapper over
_register_op_override_impl
Nr5   )r   r
   r/   _register_op_override_implr3   )r8   r9   r:   r;   r6   r7   r   r   s           r   r   r   a   sG     23I35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   r2   r   r=   	getLogger__name__r   r3   r*   r,   cachetupleboolr   r%   r'   r/   strregister_dslmodulesr4   r    r   <module>rN      s7     
  3 $  :  !  !"  !  %gn(<"=  04 
 
   .F %*#(  	 " ! 
D   (D):CKK<Q$R Sr    