
    sg                     f    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rd dl
mZ  G d	 d
e	      Zy)    )getattr_static)TYPE_CHECKING   )create_call_function)Unsupported   )VariableTracker)InstructionTranslatorc                   f     e Zd ZdZedd       Zd fdZd Zd Zddd	e	de
fd
Zed        Z xZS )SDPAParamsVariablezeRepresents the c++ params struct for scaled dot product attention.
    This is a read-only container.txr
   c                 6   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                        }  ||  ||d            |j                        }|||	|
|||g} ||      j                  | |i       S )Nr   
SDPAParamsr   
AttrSourcer   )VariableBuilder)TorchInGraphFunctionVariablequerykeyvalue	attn_maskdropout	is_causal
enable_gqa)torch.backends.cudar   sourcer   builderr   torchr   r   r   r   r   r   r   r   call_function)r   r   r   r   r   r   r   	query_varkey_var	value_varattn_mask_vardropout_varis_causal_varenable_gqa_var
param_varss                  O/var/www/html/venv/lib/python3.12/site-packages/torch/_dynamo/variables/sdpa.pycreatezSDPAParamsVariable.create   s0   2',7DOB
67(CDU[[Q	@/"j&?@KDOB
67(CDU[[Q	LJv{,KLOO
 Iob*VY*GHWLJv{,KLOO
 OZ-MN
 

 ,J7EE
B
 	
    returnc                 @    || _         || _        t        |   di | y )N )proxyr(   super__init__)selfr/   r(   kwargs	__class__s       r)   r1   zSDPAParamsVariable.__init__5   s!    
$"6"r+   c                     | j                   J | j                  J j                  fd       j                  | j                         j	                  t        t        | j                        d             y )Nc                  (     j                  dd      S )Nztorch._C_SDPAParams)load_import_from)codegens   r)   <lambda>z0SDPAParamsVariable.reconstruct.<locals>.<lambda>>   s    G,,ZG r+   F)r   r(   add_push_nullforeachextend_outputr   len)r2   r9   s    `r)   reconstructzSDPAParamsVariable.reconstruct:   se    {{"""***G	
 	(23t3GOPr+   c                     | j                   S )N)r/   )r2   s    r)   as_proxyzSDPAParamsVariable.as_proxyC   s    zzr+   namec                 L   dd l }ddlm} ddlm} ddlm} 	 t        |j                  j                  |       |j                  | j                         |      }| j                   ||| || j                  |            S  |||	      S # t        $ r t        d|       d w xY w)
Nr   r   r   r   )wrap_fx_proxy)GetAttrVariablez+Unsupported torch._C._SDPAParams attribute )r   r/   r   )r   r/   )torch._Cr   r   r   rD   miscrE   r   _Cr7   AttributeErrorr   create_getattr_proxyrA   )r2   r   rB   r   r   rD   rE   r/   s           r)   var_getattrzSDPAParamsVariable.var_getattrF   s    '*)	588//6  44T]]_dK;;" U:dkk4+H  !Be44  	=dVD	s    B
 
B#c                     ddl m} | |u S )Nr   r   )r   r   )r   r   s     r)   is_sdpa_paramsz!SDPAParamsVariable.is_sdpa_params]   s    2
""r+   )r   r
   )r,   N)__name__
__module____qualname____doc__staticmethodr*   r1   r?   rA   strr	   rK   rM   __classcell__)r4   s   @r)   r   r      s\    & 
 
B#
Q55 5S 5_ 5. # #r+   r   N)inspectr   typingr   bytecode_transformationr   excr   baser	   torch._dynamo.symbolic_convertr
   r   r.   r+   r)   <module>r[      s,    #   :  ! DR# R#r+   