
    3jh                        % 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 SS SS 35      \" S SS SS 35      1r\\   \S'   \ 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\RL                  " S
\" \\RN                  \   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cutedsl   ._CUTEDSL_REQUIRED_VERSIONSreturnc                      [         R                  " 5       (       d  gSS/n [        U 5      nUc  Sn[        S5      nX#4$ [        R                  SU5        SnSnX#4$ )	zP
Check if cutedsl (and deps) are available.

NOTE: Doesn't import at this point
)FN)nvidia_cutlass_dslcutlass)apache_tvm_ffitvm_ffiNTr   z`CuTeDSL operators require optional Python packages `nvidia-cutlass-dsl` and `apache-tvm-ffi`; %sF)_cudais_builtr	   r   logwarning)depsreason	availableversions       U/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/_native/cutedsl_utils.py_check_runtime_availabler$   #   s|     >> 	*%D !&F~	$%9:  	 		
 	    c                      [        5       u  pU $ Nr$   )r!   _s     r#   runtime_availabler*   B   s    +-LIr%   c                      [        5       u  pU$ r'   r(   r)   r"   s     r#   runtime_versionr-   G   s    )+JANr%   c                      [        5       u  p[        5       (       d
  U[        ;   a  g[        R	                  SU[        5        g)NTz`cutedsl version %s is not known-good (ok: %s); set TORCH_NATIVE_SKIP_VERSION_CHECK=1 to overrideF)r$   r   r   r   r   r,   s     r#   _version_is_okr/   L   s<    )+JA ""w2L'LKK	<"	 r%   c                      [        [        S9  g)z$
Deregister all ops through cuteDSL
)disable_dsl_namesN)_deregister_op_overrides_impl_CUTEDSL_DSL_NAME r%   r#   r   r   [   s     "4EFr%   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   b   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   set__annotations__cachetupleboolr$   r*   r-   r/   strregister_dslmodulesr4   r%   r#   <module>rP      sp     
  3 $  :  !   qc1#QqcNqc1#QqcN	, CL  %gn(<"=  <4 
 
   G %*#(  	 " ! 
D   )T*;S[[=R%S Tr%   