
    ΅i,B              !       
   S SK r S SKrS SKrS SKJr  S SKJrJr  S SKJ	r	  S SK
Jr  S SKJrJr  S SKJrJrJr  S SKJr  S S	KJrJr  S
 rS rS rS rS r/ SQr\R<                  R?                  SS\R@                  RB                  S9  \R<                  RE                  SS5      S 5       r#\R<                  RE                  SS5      S 5       r$\R<                  RE                  SS5      S 5       r%\R<                  RM                  S5      S 5       r'S r(S r)S r*\S 5       r+S r,S r-S  r.S! r/S" r0S# r1S$ r2S% r3S& r4S' r5S( r6\" 5       r7S) r8S* r9\" S+S,\6\5\" \Rt                  \Rv                  5      S-S-S-S-S-S-S-S.9\" S/S,\,\*\" \Rt                  \Rv                  5      S-S-S-S-S-S0S-S.9\" S1S,\\\" \Rt                  \Rv                  5      S-S-S-S-S-S29
\" S1S3\\\" \Rt                  \Rv                  5      S-S-S-S-S-S29
\" S1S4\\\" \Rt                  \Rv                  5      S-S-S-S-S-S29
\" S5S,\)\(\" \Rt                  \Rv                  5      S-S-S-S-S-S0S-S.9\" S6S,\8\*\" \Rt                  \Rv                  5      S-S-S-S-S-S0\" \Rx                  S7S85      \" \Rx                  S7S95      \" \Rx                  S7S:5      \" \Rx                  S7S;5      4S-S<9\" S=S,\9\*\" \Rt                  \Rv                  5      S-S-S-S-S-S0S-S.9\" S>S,\1\0\" \Rt                  \Rv                  5      S-S-S-S-S-S-S?9\" S@S,\2\0\" \Rt                  \Rv                  5      S-S-S-S-S-S-S?9\" SAS,\.\-\" \Rt                  \Rv                  5      S-S-S-S-S-S-S?9\" SBS,\\/\" \Rz                  \R|                  5      S-S-S-S-S-\" \Rx                  S7S85      \" \Rx                  S7S95      \" \Rx                  S7S:5      \" \Rx                  S7S;5      4\/SC9\" SDS,\\/\" \Rz                  \R|                  5      S-S-S-S-S-\" \Rx                  S7S85      \" \Rx                  S7S95      \" \Rx                  S7S:5      \" \Rx                  S7S;5      4\/SC9\" SES,\4\3\" \Rz                  \R|                  5      S-S-S-S-S-\" \Rx                  S7S85      \" \Rx                  S7S95      \" \Rx                  S7S:5      \" \Rx                  S7S;5      4\\R~                  " \R                  R                  5       (       + SF5      /SC9/rBg)G    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              +      #    [         R                  " [        XUS9n[        U" SSSSSS9U" SSSSSS9/U" SSSS9U" SSSS94S9v   g 7f)Ndevicedtyperequires_grad   皙?lowhigh   )args	functoolspartialr   r   opinfor   r   r   kwargsmake_args         X/home/james-whalen/.local/lib/python3.13/site-packages/torch/testing/_internal/hop_db.pysample_inputs_mapr%      sg       F}H 	!Qs	+XaA3Q-OPqc*HQCa,HI s   AA
c                     U S   R                  5       R                  S5      U-  U S   UR                  5       -   R                  5       R	                  U S   R                  5       5      /$ )Nr   g      ?r   )cosadd_sincos_viewsizexy0y1s      r$   inner_fr1      sQ    aDHHJOOC 2%!rvvx'='='?'D'DQqTYY['QRR    c                      S n[        X0X5      $ )Nc                     [        XU5      $ Nr1   r-   s      r$   fsimple_map.<locals>.f    s    qb!!r2   r   )xsr/   r0   r7   s       r$   
simple_mapr:      s    " qbr2   c                      S n[        X0X5      $ )Nc                      S n[        X0X5      $ )Nc                     [        XU5      $ r5   r6   r-   s      r$   f2"nested_map.<locals>.f1.<locals>.f2(   s    1"%%r2   r   xxr/   r0   r>   s       r$   f1nested_map.<locals>.f1'   s    	& 22""r2   r   r9   r/   r0   rB   s       r$   
nested_maprE   &   s    # rrr2   c                      S n[        X0X5      $ )Nc                      S n[        X0X5      $ )Nc                      S n[        X0X5      $ )Nc                     [        XU5      $ r5   r6   r-   s      r$   r>   5triple_nested_map.<locals>.f0.<locals>.f1.<locals>.f23   s    qb))r2   r   r@   s       r$   rB   )triple_nested_map.<locals>.f0.<locals>.f12   s    * rr&&r2   r   rD   s       r$   f0triple_nested_map.<locals>.f01   s    	' 22""r2   r   )r9   r/   r0   rL   s       r$   triple_nested_maprN   0   s    # rrr2   ) 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_delegateprintinductor_compiled_codeztestlib::mutating_custom_opz8(Tensor(a!) x, Tensor(b!) z) -> (Tensor, Tensor, Tensor))tagscpuc                     U R                  S5        UR                  S5        U R                  5       UR                  5       X-   4$ N   r(   cloner.   zs     r$   foo_impl_cpurw   u   3    FF1IFF1I779aggi&&r2   cudac                     U R                  S5        UR                  S5        U R                  5       UR                  5       X-   4$ rq   rs   ru   s     r$   foo_impl_cudar{   |   rx   r2   xpuc                     U R                  S5        UR                  S5        U R                  5       UR                  5       X-   4$ rq   rs   ru   s     r$   foo_impl_xpur~      rx   r2   c                 H    U R                  5       UR                  5       X-   4$ r5   rt   ru   s     r$   foo_impl_abstractr      s    779aggi&&r2   c           
   +   j   #    [         R                  " [        XUS9n[        U" SSSSSS95      v   g 7fNr   r   r   r   r   r    s         r$   sample_inputs_condr      6       F}H hq!QCa8
99   13c                 \    [         R                  " U R                  5       S:  S S U /5      $ )Nr   c                 $    U R                  5       4$ r5   r'   r.   s    r$   <lambda>simple_cond.<locals>.<lambda>   s    aeegZr2   c                 $    U R                  5       4$ r5   )r)   r   s    r$   r   r      s    AEEG:r2   )torchcondsumr   s    r$   simple_condr      s&    ::aeegk#79MPQsSSr2   c           
   +   j   #    [         R                  " [        XUS9n[        U" SSSSSS95      v   g 7fr   r   r    s         r$   sample_inputs_invoke_subgraphr      r   r   c                 .    [         R                  " U 5      $ r5   r   r)   r   s    r$   fn_for_invoke_subgraphr      s    99Q<r2   c                     [        U 5      $ r5   )r   r   s    r$   simple_invoke_subgraphr      s    !!$$r2   c              +   |   #    [         R                  " [        XSS9n[        U" SSSSSS9U" SSSSSS95      v   g 7f)NFr   r   r   r   r   r    s         r$    sample_inputs_auto_functionalizer      sJ       FuH Aqc*HQ1#A,N    :<c                 T    [         R                  R                  R                  X5      $ r5   )r   opstestlibmutating_custom_opru   s     r$   simple_auto_functionalizer      s    99//55r2   c              +      ^
#    [         R                  " [        XUS9m
S nU
4S j[        S5       5       u  pgn[	        Xg5      n	[        XgXU	5      v   g 7f)Nr   c                 
    X-   $ r5    )scorebhmns        r$   	score_mod/sample_inputs_flex_attention.<locals>.score_mod   s
    yr2   c           
   3   :   >#    U  H  nT" S S SSSS S9v   M     g7f)r         r   r   Nr   ).0_r#   s     r$   	<genexpr>/sample_inputs_flex_attention.<locals>.<genexpr>   s      I1x1c1#A6s      )r   r   r   ranger   r   )r!   r   r   r   r"   r   qkv
block_maskr#   s             @r$   sample_inputs_flex_attentionr      sP       F}H JaIGA!)!/J
aA*
55s   AAc              +      #    [         R                  " [        XSS9n[        [        R
                  " S5      U" SSSSSS95      v   g 7f)NFr   r   r      r   r   )r   r   r   r   r   tensorr    s         r$   sample_inputs_while_loopr      sF       FuH QAqc* s   AAc                 P    S nS n[         R                  R                  X#X45      $ )Nc                     U S:  $ Nr   r   iter_tr.   s     r$   cond_fn"simple_while_loop.<locals>.cond_fn       zr2   c                 ,    U S-
  UR                  5       4$ Nr   r   r   s     r$   body_fn"simple_while_loop.<locals>.body_fn       z1557""r2   )r   _higher_order_ops
while_loopr   r.   r   r   s       r$   simple_while_loopr      s)    # ""--gLLr2   c                 b    S nS n[         R                  R                  X#X4[        5       5      $ )Nc                     U S:  $ r   r   r   s     r$   r   /simple_while_loop_stack_output.<locals>.cond_fn   r   r2   c                 ,    U S-
  UR                  5       4$ r   r   r   s     r$   r   /simple_while_loop_stack_output.<locals>.body_fn   r   r2   )r   r   while_loop_stack_outputtupler   s       r$   simple_while_loop_stack_outputr      s2    # ""::6+uw r2   c              +   |   #    [         R                  " [        XSS9n[        U" SSSSSS9U" SSSSSS95      v   g 7f)NFr   r   r   r   r   r   r   r    s         r$   sample_inputs_local_map_hopr      sK       FuH Aqc*Aqc* r   c                 J   S n[         R                  R                  U5      n[         R                  R	                  5       (       d   eSSKJn  U" 5       U" 5       U" 5       4U" 5       U" 5       U" 5       44S.UR                  S'   [         R                  R                  X0U5      $ )Nc                 D    U R                  5       UR                  5       -   $ r5   )r'   r)   )inp1inp2s     r$   body_gm%simple_local_map_hop.<locals>.body_gm   s    xxzDHHJ&&r2   r   )	Replicate)in_placementsout_placementslocal_map_kwargs)
r   fxsymbolic_tracedistributedis_available(torch.distributed.tensor.placement_typesr   metar   local_map_hop)r   r   r   gmr   s        r$   simple_local_map_hopr      s    ' 
	 	 	)B))++++B $+y{IK@%KikBD#BGG ""004@@r2   c              +   z   #    [         R                  " [        XUS9n[        U" SSSSS9U" SSSSSS95      v   g 7fr   r   r    s         r$   sample_inputs_scanr     sI       F}H A3Q'Aqc* s   9;c                 H    S n[         R                  R                  X U5      $ )Nc                 2    X-  U-   nX R                  5       4$ r5   r   )carryr.   results      r$   
combine_fnsimple_scan.<locals>.combine_fn  s    Q{{}$$r2   )r   r   scan)initr9   r   s      r$   simple_scanr     s"    % ""''
"==r2   c                 ,    S n[        XU 5      S   S-  $ )Nc                 6    [         R                  " U 5      U-  4$ r5   r   )r.   ys     r$   fnsimple_invoke_quant.<locals>.fn  s    		!q ""r2   r          @)quant_tracerr.   r   s     r$   simple_invoke_quantr     s     # q!!$s**r2   c                 *    S n[        X5      S   S-  $ )Nc                 0    [         R                  " U 5      4$ r5   r   r   s    r$   r   &simple_invoke_quant_packed.<locals>.fn  s    		!r2   r   r   )r   r   s     r$   simple_invoke_quant_packedr    s     r%a(3..r2   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_backwardr   zrequires distributed build)Cr   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%   r1   r:   rE   rN   0FIXME_hop_that_doesnt_have_opinfo_test_allowlistlibrarydefineTagpt2_compliant_tagimplrw   r{   r~   register_faker   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  boolhalfexpectedFailurefloat16float32skipIfr   r   hop_dbr   r2   r$   <module>r4     sJ      3 V % ? L Q Q G DS
6!4 0F   !>		$	$   159' :' 16:' ;' 159' :' :;' <':T:  %6
6M	A$> }+/ "-UZZ4 $#(+0 "!8UZZ4 $#(+0 ",UZZ4 $#(+0 ",UZZ4 $#(+0 ),UZZ4 $#(+0 "-UZZ4 $#(+0 "8UZZ4 $#(+0 119>OP(()5O 119>UV119>ST
  -0 ""%8UZZ4 $#(+0 "3UZZ4 $#(+0 &")3UZZ4 $#(+0 !"$;UZZ4 $#(+0 "7EMM5==9 $#(+0119>OP(()5O 119>UV119>ST
 :'* &"7EMM5==9 $#(+0119>OP(()5O 119>UV119>ST
 :'* "6EMM5==9 $#(+0119>OP(()5O 119>UV119>ST
 OO%%22446R
'Ud
r2   