o
    iw
                     @   sv   d dl mZmZmZmZ d dlmZmZ d dlm	Z	 	ddddde
dee d	ee
ee
 f d
ee
 def
ddZdS )    )OptionalCallableIterableUnion)	custom_opCustomOpDefset_wrap_triton_enabledNT)schemaallow_decompositionnamefnmutates_argsr
   returnc                  s8   dt dtf dtf fdd}|d u r|S ||S )Nr   .r   c                    sR    fdd}t |d}ddlm} |  r' fdd}||| |S )Nc                     s:   t d  | i |W  d    S 1 sw   Y  d S )NFr   )argskwargsr    N/home/ubuntu/vllm_env/lib/python3.10/site-packages/flash_attn/utils/library.py
backend_fn   s   
$z*triton_op.<locals>.dec.<locals>.backend_fn)r   r
   r   )FunctionalTensorModec                    sX   ddl m} | r| ||||S |   |i |W  d    S 1 s%w   Y  d S )Nr   )(custom_triton_ops_decomposition_disabled)torch.export._tracer   __torch_dispatch__)modeoptypesr   r   r   r   r   r   functional_decomp0   s   $z1triton_op.<locals>.dec.<locals>.functional_decomp)r   #torch._subclasses.functional_tensorr   register_fakeregister_torch_dispatch)r   r   resultr   r   r   r   r   r
   r   r   dec   s   
ztriton_op.<locals>.dec)r   objectr   )r   r   r   r
   r   r#   r   r"   r   	triton_op
   s   $)r%   )N)typingr   r   r   r   torch.libraryr   r   torch._library.tritonr	   strr%   r   r   r   r   <module>   s$   