Ë
    L²jh  ã                   óú  — U 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j.                  e«      Zd
Z ed› dd› dd› �«       ed› dd› dd› �«      hZee   ed<   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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)Ú_OpFnÚderegister_op_overridesÚregister_op_overrideÚcutedslé   ú.Ú_CUTEDSL_REQUIRED_VERSIONSÚreturnc                  ó¬   — t        j                  «       syddg} t        | «      }|€d}t        d«      }||fS t        j                  d|«       d}d}||fS )	z\
    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       úZ/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/_native/cutedsl_utils.pyÚ_check_runtime_availabler$   #   s}   € ô �>‰>ÔØð 	*Ø%ð€Dô ! Ó&€FØ€~Øˆ	Ü$Ð%9Ó:ˆð �gÐÐô 	�‰ðð ô		
ð ˆ	ØˆØ�gÐÐó    c                  ó    — t        «       \  } }| S ©N©r$   )r!   Ú_s     r#   Úruntime_availabler*   B   s   € Ü+Ó-�L€IˆqØÐr%   c                  ó    — t        «       \  } }|S r'   r(   ©r)   r"   s     r#   Úruntime_versionr-   G   s   € Ü)Ó+�J€A€wØ€Nr%   c                  óz   — t        «       \  } }t        «       s|t        v ryt        j	                  d|t        «       y)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;   € ä)Ó+�J€A€wÜ Ô" wÔ2LÑ'LØä‡K�Kð	<àÜ"ô	ð r%   c                  ó$   — t        t        ¬«       y)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          	      óz   — 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
    Nr5   )r$   r
   r/   Ú_register_op_override_implr3   )r8   r9   r:   r;   r6   r7   r!   r"   s           r#   r   r   b   sC   € ô 2Ó3Ñ€IˆwÙÔ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   r2   r   r=   Ú	getLoggerÚ__name__r   r3   r   ÚsetÚ__annotations__ÚcacheÚtupleÚboolr$   r*   r-   r/   ÚstrÚregister_dslÚmodulesr4   r%   r#   ú<module>rP      st  ðÜ Û Û 
Ý å 3å $÷ó ÷ :÷ñ ð €g×Ñ˜Ó!€ð Ð ñ ˆqˆc��1�#�Q�q�cˆNÓÙˆqˆc��1�#�Q�q�cˆNÓð	,Ð ˜C ™Ló ð ‡�ð %¨¨g¸©nÐ(<Ñ"=ò ó ðð<˜4ó ð
˜ ™ó ð
 ‡�ð˜ò ó ðóGð %*Ø#(òØðàðð ðð ð	ð "ðð !ðð 
óðD €× Ñ ˜)¡TÐ*;¸S¿[¹[ÈÑ=RÓ%SÕ Tr%   