
    `iC9                      .   d dl Z d dlZd dlZd dlm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 d dlmZmZmZ d dlmZ d d	lmZmZ d
 Zd Zd Zd Zd Zg dZej                            ddej         j!                   ej        "                    dd          d             Z#ej        "                    dd          d             Z$ej        %                    d          d             Z&d Z'd Z(d Z)ed             Z*d Z+d Z,d Z-d Z.d  Z/d! Z0d" Z1d# Z2d$ Z3 e            Z4d% Z5d& Z6 ed'd(e3e2 eej7        ej8                  d)d)d)d)d)d)d)*           ed+d(e+e) eej7        ej8                  d)d)d)d)d)d,d)*           ed-d(ee eej7        ej8                  d)d)d)d)d).
  
         ed-d/ee eej7        ej8                  d)d)d)d)d).
  
         ed-d0ee eej7        ej8                  d)d)d)d)d).
  
         ed1d(e(e' eej7        ej8                  d)d)d)d)d)d,d)*           ed2d(e5e) eej7        ej8                  d)d)d)d)d)d, eej9        d3d4           eej9        d3d5           eej9        d3d6           eej9        d3d7          fd)8           ed9d(e6e) eej7        ej8                  d)d)d)d)d)d,d)*           ed:d(e0e/ eej7        ej8                  d)d)d)d)d)d);           ed<d(e1e/ eej7        ej8                  d)d)d)d)d)d);           ed=d(e-e, eej7        ej8                  d)d)d)d)d)d);           ed>d(ee. eej:        ej;                  d)d)d)d)d) eej9        d3d4           eej9        d3d5           eej9        d3d6           eej9        d3d7          feg?           ed@d(ee. eej:        ej;                  d)d)d)d)d) eej9        d3d4           eej9        d3d5           eej9        d3d6           eej9        d3d7          feg?          gZ<dS )A    Nmap)_create_empty_block_maskflex_attention)make_tensor)onlyCUDA)all_types_andcustom_types)DecorateInfoOpInfoSampleInput)mark_compile_region)InvokeQuantinvoke_quant_packedc           
   +      K   t          j        t          |||          }t           |ddddd           |ddddd          g |ddd           |ddd          f          V  d S )Ndevicedtyperequires_grad   皙?lowhigh   )args	functoolspartialr   r   opinfor   r   r   kwargsmake_args         r/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torch/testing/_internal/hop_db.pysample_inputs_mapr%      s       F%}  H 	!Qs	+	+	+XXaA3Q-O-O-OPhqc***HHQCa,H,H,HI           c                    | d                                                              d          |z  | d         |                                z                                                       | d                                                   gS )Nr   g      ?r   )cosadd_sincos_viewsizexy0y1s      r$   inner_fr2      s`    aDHHJJOOC  2%!rvvxx'='='?'?'D'DQqTYY[['Q'QRRr&   c                 ,    d }t          || ||          S )Nc                 $    t          | ||          S Nr2   r.   s      r$   fzsimple_map.<locals>.f    s    q"b!!!r&   r   )xsr0   r1   r7   s       r$   
simple_mapr9      s'    " " " q"b"r&   c                 ,    d }t          || ||          S )Nc                 ,    d }t          || ||          S )Nc                 $    t          | ||          S r5   r6   r.   s      r$   f2z"nested_map.<locals>.f1.<locals>.f2(   s    1b"%%%r&   r   xxr0   r1   r=   s       r$   f1znested_map.<locals>.f1'   s'    	& 	& 	& 2r2r"""r&   r   r8   r0   r1   r@   s       r$   
nested_maprB   &   s'    # # # r2r2r&   c                 ,    d }t          || ||          S )Nc                 ,    d }t          || ||          S )Nc                 ,    d }t          || ||          S )Nc                 $    t          | ||          S r5   r6   r.   s      r$   r=   z5triple_nested_map.<locals>.f0.<locals>.f1.<locals>.f23   s    q"b)))r&   r   r>   s       r$   r@   z)triple_nested_map.<locals>.f0.<locals>.f12   s'    * * * r2r2&&&r&   r   rA   s       r$   f0ztriple_nested_map.<locals>.f01   s'    	' 	' 	' 2r2r"""r&   r   )r8   r0   r1   rG   s       r$   triple_nested_maprH   0   s'    # # # r2r2r&   )custom_function_callautograd_function_applyrun_and_save_rng_staterun_with_rng_stategraphsafe_run_with_rng_state	out_dtypetrace_wrappedtag_activation_checkpointexecutorch_call_delegatewrapwrap_with_set_grad_enabledauto_functionalized_v2associative_scan
flat_applywrap_with_autocastwrap_activation_checkpointrun_const_graphauto_functionalizedr   map_implwith_effectsstrict_mode_export_tracepointcall_torchbindtriton_kernel_wrapper_mutation triton_kernel_wrapper_functionalhints_wrapperdynamo_bypassing_wrapperforeach_mapaoti_call_delegateztestlib::mutating_custom_opz8(Tensor(a!) x, Tensor(b!) z) -> (Tensor, Tensor, Tensor))tagscpuc                 f    |                      d           |                     d           | || |z   fS N   r)   r/   zs     r$   foo_impl_cpurn   s   0    FF1IIIFF1IIIaQ;r&   cudac                 f    |                      d           |                     d           | || |z   fS ri   rk   rl   s     r$   foo_impl_cudarr   z   ro   r&   c                     | || |z   fS r5    rl   s     r$   foo_impl_abstractru      s    aQ;r&   c           	   +      K   t          j        t          |||          }t           |ddddd                    V  d S Nr   r   r   r   r   r    s         r$   sample_inputs_condrx      W       F%}  H hhq!QCa888
9
999999r&   c                 b    t          j        |                                 dk    d d | g          S )Nr   c                 ,    |                                  fS r5   r(   r/   s    r$   <lambda>zsimple_cond.<locals>.<lambda>   s    aeeggZ r&   c                 ,    |                                  fS r5   )r*   r}   s    r$   r~   zsimple_cond.<locals>.<lambda>   s    AEEGG: r&   )torchcondsumr}   s    r$   simple_condr      s/    :aeeggk#7#79M9MPQsSSSr&   c           	   +      K   t          j        t          |||          }t           |ddddd                    V  d S rw   r   r    s         r$   sample_inputs_invoke_subgraphr      ry   r&   c                 *    t          j        |           S r5   r   r*   r}   s    r$   fn_for_invoke_subgraphr      s    9Q<<r&   c                      t          |           S r5   )r   r}   s    r$   simple_invoke_subgraphr      s    !!$$$r&   c           
   +      K   t          j        t          ||d          }t           |ddddd           |ddddd                    V  d S )NFr   r   r   r   r   r    s         r$    sample_inputs_auto_functionalizer      s}       F%u  H Aqc***HHQ1#A,N,N,N      r&   c                 L    t           j        j                            | |          S r5   )r   opstestlibmutating_custom_oprl   s     r$   simple_auto_functionalizer      s    9//1555r&   c              +      
K   t          j        t          |||          
d }
fdt          d          D             \  }}}t	          ||          }	t          |||||	          V  d S )Nr   c                     | |z   S r5   rt   )scorebhmns        r$   	score_modz/sample_inputs_flex_attention.<locals>.score_mod   s    qyr&   c           	   3   :   K   | ]} d d dddd           V  dS )r         r   r   Nrt   ).0_r#   s     r$   	<genexpr>z/sample_inputs_flex_attention.<locals>.<genexpr>   s:      II1xx1c1#A666IIIIIIr&      )r   r   r   ranger   r   )r!   r   r   r   r"   r   qkv
block_maskr#   s             @r$   sample_inputs_flex_attentionr      s       F%}  H   JIIIaIIIGAq!)!Q//J
aAy*
5
555555r&   c           
   +      K   t          j        t          ||d          }t          t	          j        d           |ddddd                    V  d S )NFr   r   r      r   r   )r   r   r   r   r   tensorr    s         r$   sample_inputs_while_loopr      sq       F%u  H QAqc***      r&   c                 T    d }d }t           j                            ||| |f          S )Nc                     | dk    S Nr   rt   iter_tr/   s     r$   cond_fnz"simple_while_loop.<locals>.cond_fn       zr&   c                 4    | dz
  |                                 fS Nr   r|   r   s     r$   body_fnz"simple_while_loop.<locals>.body_fn       z15577""r&   )r   _higher_order_ops
while_loopr   r/   r   r   s       r$   simple_while_loopr      sA      # # # "--gwLLLr&   c                 n    d }d }t           j                            ||| |ft                                S )Nc                     | dk    S r   rt   r   s     r$   r   z/simple_while_loop_stack_output.<locals>.cond_fn   r   r&   c                 4    | dz
  |                                 fS r   r|   r   s     r$   r   z/simple_while_loop_stack_output.<locals>.body_fn   r   r&   )r   r   while_loop_stack_outputtupler   s       r$   simple_while_loop_stack_outputr      sK      # # # "::7GfVW[Z_ZaZabbbr&   c           
   +      K   t          j        t          |||          }t           |dddd           |ddddd                    V  d S rw   r   r    s         r$   sample_inputs_scanr      s|       F%}  H A3Q'''Aqc***      r&   c                 J    d }t           j                            || |          S )Nc                 >    | |z  |z   }||                                  fS r5   )clone)carryr/   results      r$   
combine_fnzsimple_scan.<locals>.combine_fn   s"    Qu{{}}$$r&   )r   r   scan)initr8   r   s      r$   simple_scanr      s.    % % % "''
D"===r&   c                 <    d }t          || |           d         dz  S )Nc                 2    t          j        |           |z  fS r5   r   )r/   ys     r$   fnzsimple_invoke_quant.<locals>.fn   s    	!q ""r&   r          @)quant_tracerr/   r   s     r$   simple_invoke_quantr      s/    # # # Aq!!!$r))r&   c                 :    d }t          ||           d         dz  S )Nc                 ,    t          j        |           fS r5   r   r}   s    r$   r   z&simple_invoke_quant_packed.<locals>.fn   s    	!r&   r   r   )r   r   s     r$   simple_invoke_quant_packedr      s-       r1%%a(2--r&   r   simpleF)namevariant_test_nameopsample_inputs_funcdtypessupports_outcheck_batched_gradcheck_batched_gradgradcheck_batched_forward_grad"check_inplace_batched_forward_gradsupports_autogradsupports_gradgradinvoke_subgraphTr   )
r   r   r   r   r   r   r   r   r   r   nestedtriple_nestedr   invoke_quantTestHOPtest_aot_exporttest_pre_dispatch_exporttest_serialize_exporttest_retrace_export)r   r   r   r   r   r   r   r   r   r   r   skipsr   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   auto_functionalizer   )r   r   r   r   r   r   r   r   r   r   r   
decoratorsflex_attention_backward)=r   unittestr   #functorch.experimental.control_flowr   !torch.nn.attention.flex_attentionr   r   torch.testingr   *torch.testing._internal.common_device_typer   $torch.testing._internal.common_dtyper	   r
   #torch.testing._internal.opinfo.corer   r   r   'torch._higher_order_ops.invoke_subgraphr   torch._higher_order_opsr   r   r%   r2   r9   rB   rH   0FIXME_hop_that_doesnt_have_opinfo_test_allowlistlibrarydefineTagpt2_compliant_tagimplrn   rr   register_fakeru   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   boolhalfexpectedFailurefloat16float32hop_dbrt   r&   r$   <module>r     s         3 3 3 3 3 3 V V V V V V V V % % % % % % ? ? ? ? ? ? L L L L L L L L Q Q Q Q Q Q Q Q Q Q G G G G G G D D D D D D D D  S S S    
 
 
64 4 4 0B   !>		$     1599  :9 16::  ;: :;;  <;: : :T T T: : :   % % %  6 6 6
6 
6 
6  M M Mc c c  > > > {}}* * *. . . F"-}UZ44 $#(+0   F"!8}UZ44 $#(+0   F",}UZ44 $#(+0   F",}UZ44 $#(+0   F),}UZ44 $#(+0   F"-}UZ44 $#(+0   F"8}UZ44 $#(+0 L19>OPPL()5O  L19>UVVL19>STT
  -  0 F""%8}UZ44 $#(+0   F"3}UZ44 $#(+0   F&")3}UZ44 $#(+0   F!"$;}UZ44 $#(+0   F"7|EM5=99 $#(+0L19>OPPL()5O  L19>UVVL19>STT
 :'  * F&"7|EM5=99 $#(+0L19>OPPL()5O  L19>UVVL19>STT
 :'  kJ
r&   