Ë
    ÄÓ^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   € Ü+Ó-�L€IˆqØÐr!   c                  ó    — t        «       \  } }|S r#   r$   )r%   r   s     r   Úruntime_versionr(   A   s   € Ü)Ó+�J€A€wØ€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   € ä)Ó+�J€A€wà€Øð �}‰}Ô >Ñ>€HØ�}‰}Ô =Ñ=€Há‘XÔ";Ô"=Øä‡H�Hð	<àÜ&Ü%ôð 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Ñ€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   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Ð):¸C¿K¹KÈÑ<QÓ$RÕ Sr!   