Ë
    Q/æj�  ã                   ó  — U d Z ddlZddlmZmZ ddlmZ ddlmZ	 ddl
mZmZmZmZmZmZmZmZmZmZmZ g d¢Zee   ed<   d	Ze	Z		 ee	_        d
e	_        deddfd„Zej:                  deee	   e	f   fd„«       Zdefd„Zy)zx This module contains functions and classes that alter the behavior of torch.nn.functional.scaled_dot_product_attention é    N)ÚListÚUnion)Úwarn)Ú_SDPBackend)Úcan_use_efficient_attentionÚcan_use_flash_attentionÚcudnn_sdp_enabledÚenable_cudnn_sdpÚenable_flash_sdpÚenable_math_sdpÚenable_mem_efficient_sdpÚflash_sdp_enabledÚmath_sdp_enabledÚmem_efficient_sdp_enabledÚ
SDPAParams)Ú
SDPBackendÚsdpa_kernelÚWARN_FOR_UNFUSED_KERNELSÚ__all__Fr   ÚparamsÚreturnc                 óœ   — t         rFt        | «      st        d«       t        | d«       t        | «      st        d«       t        | d«       yyy)zž
    If WARN_FOR_UNFUSED_KERNELS is set to True, this will raise warnings
    for all the reasons why the fused kernels can't be run. If using subclasses
    z*Efficient attention can't be used because:Tz&Flash attention can't be used because:N)r   r   r   r   )r   s    ú^/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/nn/attention/__init__.pyÚ_raise_kernel_warningsr   8   sG   € õ
  Ü*¨6Ô2ÜÐ=Ô>Ü'¨°Ô5Ü& vÔ.ÜÐ9Ô:Ü# F¨DÕ1ð /ð	  ó    Úbackendsc              #   ó~  K  — t        | t        t        f«      sJ d«       ‚t        | t        «      r| g} t        | «      } t	        «       }t        «       }t        «       }t        «       }	 t        j                  | v }t        j                  | v }t        j                  | v }t        j                  | v }t        |«       t        |«       t        |«       t        |«       i –— t        |«       t        |«       t        |«       t        |«       y# t        |«       t        |«       t        |«       t        |«       w xY w­w)aè  
    Context manager to select which backend to use for scaled dot product attention.

    .. warning:: This function is beta and subject to change.

    Args:
        backend (Union[List[SDPBackend], SDPBackend]): A backend or list of backends for scaled dot product attention.

    Example:

    .. code-block:: python

        from torch.nn.functional import scaled_dot_product_attention
        from torch.nn.attention import SDPBackend, sdpa_kernel
        # Only enable flash attention backend
        with sdpa_kernel(SDPBackend.FLASH_ATTENTION):
            scaled_dot_product_attention(...)

        # Enable the Math or Efficient attention backends
        with sdpa_kernel([SDPBackend.MATH, SDPBackend.EFFICIENT_ATTENTION]):
            scaled_dot_product_attention(...)

    This context manager can be used to select which backend to use for scaled dot product attention.
    Upon exiting the context manager, the previous state of the flags will be restored, enabling all backends.
    zKBackend must be an instance of SDPBackend or a list of SDPBackend instancesN)Ú
isinstanceÚlistr   Úsetr	   r   r   r   ÚCUDNN_ATTENTIONÚFLASH_ATTENTIONÚEFFICIENT_ATTENTIONÚMATHr
   r   r   r   )	r   Úprevious_cudnnÚprevious_flashÚprevious_mem_efficientÚprevious_mathÚenable_cudnnÚenable_flashÚenable_mem_efficientÚenable_maths	            r   r   r   F   s  è ø€ ô6 Ø”4œÐ$ôð UàTóUð ô �(œJÔ'Ø�:ˆä�8‹}€HÜ,Ó.€NÜ,Ó.€NÜ#<Ó#>ÐÜ*Ó,€Mð'Ü!×1Ñ1°XÐ=ˆÜ!×1Ñ1°XÐ=ˆÜ)×=Ñ=ÀÐIÐÜ —o‘o¨Ð1ˆä˜Ô&Ü˜Ô&Ü Ð!5Ô6Ü˜Ô$ØŠä˜Ô(Ü˜Ô(Ü Ð!7Ô8Ü˜Õ&øô 	˜Ô(Ü˜Ô(Ü Ð!7Ô8Ü˜Õ&üs   ‚A$D=Á'A8D Ã-D=Ä.D:Ä:D=c                   ó   — y)zEThis returns the closest matching tag for the flash attention backendz2.5.7© r.   r   r   Ú_get_flash_versionr/      s   € àr   ) Ú__doc__Ú
contextlibÚtypingr   r   Úwarningsr   Útorch._Cr   r   Útorch.backends.cudar   r   r	   r
   r   r   r   r   r   r   r   r   ÚstrÚ__annotations__r   Ú__name__Ú
__module__r   Úcontextmanagerr   r/   r.   r   r   ú<module>r;      s¯   ðâ ~Û ß Ý å .÷÷ ÷ ñ ò O€ˆˆc‰Ó Nð !Ð ð
 €
ðð !€
Ô Ø"€
Ô ð2 :ð 2°$ó 2ð ×Ñð5'˜%  ZÑ 0°*Ð <Ñ=ò 5'ó ð5'ðp˜Cô r   