a
    h	                     @   s   d dl mZ d dlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ erdd d	lmZ d d
lmZ d ZG dd deZdS )    )getattr_static)TYPE_CHECKING   )create_call_function)Unsupported)
AttrSource   )VariableTracker)	PyCodegen)InstructionTranslatorz6query key value attn_mask dropout is_causal enable_gqac                       sl   e Zd ZdZeddddZdd fdd	Zd
dddZdd Zde	e
dddZedd Z  ZS )SDPAParamsVariablezeRepresents the c++ params struct for scaled dot product attention.
    This is a read-only container.r   )txc                    s@   ddl m} ddlm}  fddtD }|||i S )Nr   
SDPAParamsr   )TorchInGraphFunctionVariablec              	      s&   g | ]}t t|t |qS  )r	   buildgetattrr   ).0psourcer   valuer   J/var/www/auris/lib/python3.9/site-packages/torch/_dynamo/variables/sdpa.py
<listcomp>   s   z-SDPAParamsVariable.create.<locals>.<listcomp>)torch.backends.cudar   torchr   PARAM_NAMEScall_function)r   r   r   r   r   paramsr   r   r   create   s    zSDPAParamsVariable.createN)returnc                    s"   || _ || _t jf i | d S N)proxy
param_varssuper__init__)selfr#   r$   kwargs	__class__r   r   r&   #   s    zSDPAParamsVariable.__init__r
   codegenc                    sT   | j d u sJ | jd usJ   fdd  | j  tt| jd d S )Nc                      s     ddS )Nztorch._C_SDPAParams)Zload_import_fromr   r+   r   r   <lambda>,       z0SDPAParamsVariable.reconstruct.<locals>.<lambda>F)r   r$   Zadd_push_nullZforeachZextend_outputr   len)r'   r,   r   r+   r   reconstruct(   s    
zSDPAParamsVariable.reconstructc                 C   s   | j S r"   )r#   )r'   r   r   r   as_proxy1   s    zSDPAParamsVariable.as_proxy)r   namer!   c                 C   s   dd l }ddlm} ddlm} zt|jj| W n" tyT   t	d| d Y n0 |
|  |}| jd ur|||t| j|dS |||dS d S )Nr   r   )wrap_fx_proxy)GetAttrVariablez+Unsupported torch._C._SDPAParams attribute )r   r#   r   )r   r#   )Ztorch._CZbuilderr4   miscr5   r   Z_Cr-   AttributeErrorr   Zcreate_getattr_proxyr2   r   r   )r'   r   r3   r   r4   r5   r#   r   r   r   var_getattr4   s"    
zSDPAParamsVariable.var_getattrc                 C   s   ddl m} | |u S )Nr   r   )r   r   )r   r   r   r   r   is_sdpa_paramsJ   s    z!SDPAParamsVariable.is_sdpa_params)__name__
__module____qualname____doc__staticmethodr    r&   r1   r2   strr	   r8   r9   __classcell__r   r   r)   r   r      s   	r   N)inspectr   typingr   Zbytecode_transformationr   excr   r   r   baser	   Ztorch._dynamo.codegenr
   Ztorch._dynamo.symbolic_convertr   splitr   r   r   r   r   r   <module>   s   