o
    "i-                     @   sD   d dl mZ ddlmZ ddlmZ ddlmZ G dd deZd	S )
    )getattr_static   )create_call_function)Unsupported   )VariableTrackerc                       sZ   e Zd ZdZedd Z fddZdd Zdd	 Zd
e	de
f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.c                 C   s   ddl m} ddlm} ddlm} ddlm} || ||d|j}|| ||d	|j	}|| ||d
|j
}	|| ||d|j}
|| ||d|j}|| ||d|j}|||	|
||g}||| |i S )Nr   
SDPAParamsr   
AttrSourcer   )VariableBuilder)TorchInGraphFunctionVariablequerykeyvalue	attn_maskdropout	is_causal)torch.backends.cudar
   sourcer   builderr   torchr   r   r   r   r   r   r   call_function)txr   r   r
   r   r   r   	query_varkey_var	value_varattn_mask_vardropout_varis_causal_var
param_vars r"   Z/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/torch/_dynamo/variables/sdpa.pycreate   s0   zSDPAParamsVariable.createc                    s"   || _ || _t jdi | d S )Nr"   )proxyr!   super__init__)selfr%   r!   kwargs	__class__r"   r#   r'   +   s   zSDPAParamsVariable.__init__c                 C   sN   | j d u sJ | jd usJ |dd || j |tt| jd d S )Nztorch._C_SDPAParamsT)r   r!   load_import_fromforeachextend_outputr   len)r(   codegenr"   r"   r#   reconstruct0   s
   zSDPAParamsVariable.reconstructc                 C   s   | j S )N)r%   )r(   r"   r"   r#   as_proxy7   s   zSDPAParamsVariable.as_proxynamereturnc                 C   s   dd l }ddlm} ddlm} ddlm} z	t|jj	| W n t
y.   td| d w ||  |}| jd urG||||| j|dS |||d	S )
Nr   r   r   r   )wrap_fx_proxy)GetAttrVariablez+Unsupported torch._C._SDPAParams attribute )r   r%   r   )r   r%   )torch._Cr   r   r   r6   miscr7   r   _Cr,   AttributeErrorr   create_getattr_proxyr3   )r(   r   r4   r   r   r6   r7   r%   r"   r"   r#   var_getattr:   s&   
zSDPAParamsVariable.var_getattrc                 C   s   ddl m} | |u S )Nr   r	   )r   r
   )r   r
   r"   r"   r#   is_sdpa_paramsP   s   z!SDPAParamsVariable.is_sdpa_params)__name__
__module____qualname____doc__staticmethodr$   r'   r2   r3   strr   r=   r>   __classcell__r"   r"   r*   r#   r   
   s    
r   N)	inspectr   bytecode_transformationr   excr   baser   r   r"   r"   r"   r#   <module>   s
   