
    3jU              #          S SK r S SKrS SKrS SKJr  S SKJr  S SKJ	r	J
r
Jr  S SK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"\RF                  RI                  SS\RJ                  RL                  S9  \RF                  RO                  SS5      S 5       r(\RF                  RO                  SS5      S 5       r)\RF                  RO                  SS5      S 5       r*\RF                  RW                  S5      S 5       r,S r-S r.S r/\S 5       r0S  r1S! r2S" r3S# r4S$ r5S% r6S& r7S' r8S( r9S) r:S* r;S+ r<S, r=S- r>\" 5       r?S. r@S/ rAS0 rBS1 rC\" S2S3\>\=\" \R                  \R                  5      S4S4S4S4S4S4S4S59\" S6S3\1\/\" \R                  \R                  5      S4S4S4S4S4S7S4S59\" S8S3\\\" \R                  \R                  5      S4S4S4S4S4S99
\" S8S:\ \\" \R                  \R                  5      S4S4S4S4S4S99
\" S8S;\!\\" \R                  \R                  5      S4S4S4S4S4S99
\" S<S3\.\-\" \R                  \R                  5      S4S4S4S4S4S7S4S59\" S=S3\@\/\" \R                  \R                  5      S4S4S4S4S4S7\" \R                  S>S?5      \" \R                  S>S@5      \" \R                  S>SA5      \" \R                  S>SB5      4S4SC9\" SDS3\A\/\" \R                  \R                  5      S4S4S4S4S4S7S4S59\" SES3\9\8\" \R                  \R                  5      S4S4S4S4S4S4SF9\" SGS3\:\8\" \R                  \R                  5      S4S4S4S4S4S4SF9\" SHS3\3\2\" \R                  \R                  5      S4S4S4S4S4S4SF9\" SIS3\\4\" \R                  \R                  5      S4S4S4S4S4\" \R                  S>S?5      \" \R                  S>S@5      \" \R                  S>SA5      \" \R                  S>SB5      4\/SJ9\" SKS3\7\5\" \R                  \R                  5      S4S4S4S4S4S4S4\" \R                  S>S?5      \" \R                  S>S@5      \" \R                  S>SA5      \" \R                  S>SB5      4\/SL9\" SKSM\7\6\" \R                  \R                  5      S4S4S4S4S4S4S4\" \R                  S>S?5      \" \R                  S>S@5      \" \R                  S>SA5      \" \R                  S>SB5      4\/SL9\" SNS3\<\;\" \R                  \R                  5      S4S4S4S4S4\" \R                  S>S?5      \" \R                  S>S@5      \" \R                  S>SA5      \" \R                  S>SB5      4\\R                  " \R                  R                  5       (       + SO5      /SJ9\" SPS3\C\B\" \R                  5      S4S4S4S4S4S4\/SQ9/rLg)R    Nmap)flex_attention)_create_empty_block_maskcreate_block_maskr   )make_tensor)inline_asm_elementwise)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/wildlama/miniconda3/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         ?r   )cosadd_sincos_viewsizexy0y1s      r'   inner_fr5   #   sQ    aDHHJOOC 2%!rvvx'='='?'D'DQqTYY['QRR    c                      S n[        X0X5      $ )Nc                     [        XU5      $ Nr5   r1   s      r'   fsimple_map.<locals>.f(   s    qb!!r6   r   )xsr3   r4   r;   s       r'   
simple_mapr>   '   s    " qbr6   c                      S n[        X0X5      $ )Nc                      S n[        X0X5      $ )Nc                     [        XU5      $ r9   r:   r1   s      r'   f2"nested_map.<locals>.f1.<locals>.f20   s    1"%%r6   r   xxr3   r4   rB   s       r'   f1nested_map.<locals>.f1/   s    	& 22""r6   r   r=   r3   r4   rF   s       r'   
nested_maprI   .   s    # rrr6   c                      S n[        X0X5      $ )Nc                      S n[        X0X5      $ )Nc                      S n[        X0X5      $ )Nc                     [        XU5      $ r9   r:   r1   s      r'   rB   5triple_nested_map.<locals>.f0.<locals>.f1.<locals>.f2;   s    qb))r6   r   rD   s       r'   rF   )triple_nested_map.<locals>.f0.<locals>.f1:   s    * rr&&r6   r   rH   s       r'   f0triple_nested_map.<locals>.f09   s    	' 22""r6   r   )r=   r3   r4   rP   s       r'   triple_nested_maprR   8   s    # rrr6   )"custom_function_callautograd_function_applyrun_and_save_rng_staterun_with_rng_staterun_dtensor_rng_op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_codeinvoke_leaf_functionz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r2   zs     r'   foo_impl_cpur}      3    FF1IFF1I779aggi&&r6   cudac                     U R                  S5        UR                  S5        U R                  5       UR                  5       X-   4$ rw   ry   r{   s     r'   foo_impl_cudar      r~   r6   xpuc                     U R                  S5        UR                  S5        U R                  5       UR                  5       X-   4$ rw   ry   r{   s     r'   foo_impl_xpur      r~   r6   c                 H    U R                  5       UR                  5       X-   4$ r9   rz   r{   s     r'   foo_impl_abstractr      s    779aggi&&r6   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$ r9   r+   r2   s    r'   <lambda>simple_cond.<locals>.<lambda>   s    aeegZr6   c                 $    U R                  5       4$ r9   )r-   r   s    r'   r   r      s    AEEG:r6   )torchcondsumr   s    r'   simple_condr      s&    ::aeegk#79MPQsSSr6   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      $ r9   r   r-   r   s    r'   fn_for_invoke_subgraphr      s    99Q<r6   c                     [        U 5      $ r9   )r   r   s    r'   simple_invoke_subgraphr      s    !!$$r6   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      $ r9   )r   opstestlibmutating_custom_opr{   s     r'   simple_auto_functionalizer      s    99//55r6   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-   $ r9    scorebhmns        r'   	score_mod/sample_inputs_flex_attention.<locals>.score_mod   s
    yr6   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      )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mS nS nU4S j[        S5       5       u  pxn	[	        USSSSUS	9n
S
UR                  S5      S-  -  n[        XxXU
R                  5       U0 5      u  pn[        UXUR                  5       UR                  5       [        R                  " U5      S US U
R                  5       U0 SS4S9v   g 7f)NFr   c                     U $ r9   r   r   s        r'   r   8sample_inputs_flex_attention_backward.<locals>.score_mod       r6   c                 
    X#:  $ r9   r   )r   r   r   r   s       r'   mask_mod7sample_inputs_flex_attention_backward.<locals>.mask_mod   s	    vr6   c           
   3   :   >#    U  H  nT" S S SSSS S9v   M     g7fr   r      r   r   Nr   r   s     r'   r   8sample_inputs_flex_attention_backward.<locals>.<genexpr>         JAx1c23Q7r   r   r   r   BHQ_LENKV_LENr   r*         ?r   r   )r!   r"   r   r   r   r0   flex_attention_hopas_tupler   detachr   	rand_like)r$   r   r   r   r%   r   r   r   r   r   r   scaleout	logsumexpr   r&   s                  @r'   %sample_inputs_flex_attention_backwardr      s        FuH KqJGA!"8qASU[\J!&&*##E*	aJ//15"CA 	#**,	 0 0 2EOOC4H$tZ0022r2
 s   CCc              +     ^^#    [         R                  " [        XSS9m[        R                  " SSU[        R
                  S9mS nU4S jnU4S j[        S	5       5       u  pxn	[        US
S
SSUS9n
SUR                  S5      S-  -  n[        XxXU
R                  5       U0 5      u  pn[        UXUR                  5       UR                  5       [        R                  " U5      S US U
R                  5       U0 SS4S9v   g 7f)NFr   r   r   )r   r   c                     U $ r9   r   r   s        r'   r   Isample_inputs_flex_attention_backward_explicit_buffers.<locals>.score_mod   r   r6   c                    > UT-   U:  $ r9   r   )r   r   r   r   mask_offsets       r'   r   Hsample_inputs_flex_attention_backward_explicit_buffers.<locals>.mask_mod   s    ;!##r6   c           
   3   :   >#    U  H  nT" S S SSSS S9v   M     g7fr   r   r   s     r'   r   Isample_inputs_flex_attention_backward_explicit_buffers.<locals>.<genexpr>   r   r   r   r   r   r*   r   r   r   )r!   r"   r   r   fullint32r   r   r0   r   r   r   r   r   )r$   r   r   r   r%   r   r   r   r   r   r   r   r   r   r   r&   r   s                  @@r'   6sample_inputs_flex_attention_backward_explicit_buffersr      s        FuH **RV5;;GK$ KqJGA!"8qASU[\J!&&*##E*	aJ//15"CA 	#**,	 0 0 2EOOC4H$tZ0022r2
 s   C=Dc                 n    [         R                  R                  R                  U UUUUUUUUU	U
UUU5      $ r9   )r   r   higher_orderflex_attention_backward)querykeyvaluer   r   grad_outgrad_logsumexpfw_graphjoint_graphr   r   kernel_optionsscore_mod_other_buffersmask_mod_other_bufferss                 r'   simple_flex_attention_backwardr   	  sK      99!!99 r6   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_tr2   s     r'   cond_fn"simple_while_loop.<locals>.cond_fn6      zr6   c                 ,    U S-
  UR                  5       4$ Nr   r   r   s     r'   body_fn"simple_while_loop.<locals>.body_fn9      z1557""r6   )r   _higher_order_ops
while_loopr   r2   r   r  s       r'   simple_while_loopr
  5  s)    # ""--gLLr6   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  r6   c                 ,    U S-
  UR                  5       4$ r  r   r   s     r'   r  /simple_while_loop_stack_output.<locals>.body_fnC  r  r6   )r   r  while_loop_stack_outputtupler	  s       r'   simple_while_loop_stack_outputr  ?  s2    # ""::6+uw r6   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  K  sK       FuH Aqc*Aqc* r   c                 \   S n[         R                  R                  U5      n[         R                  R	                  5       (       d  [        S5      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       -   $ r9   )r+   r-   )inp1inp2s     r'   body_gm%simple_local_map_hop.<locals>.body_gmW  s    xxzDHHJ&&r6   z*Expected torch.distributed to be availabler   )	Replicate)in_placementsout_placementslocal_map_kwargs)r   fxsymbolic_tracedistributedis_availableAssertionError(torch.distributed.tensor.placement_typesr  metar  local_map_hop)r  r  r  gmr  s        r'   simple_local_map_hopr(  V  s    ' 
	 	 	)B))++IJJB $+y{IK@%KikBD#BGG ""004@@r6   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*  i  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$ r9   r   )carryr2   results      r'   
combine_fnsimple_scan.<locals>.combine_fnt  s    Q{{}$$r6   )r   r  scan)initr=   r/  s      r'   simple_scanr3  s  s"    % ""''
"==r6   c                 ,    S n[        XU 5      S   S-  $ )Nc                 6    [         R                  " U 5      U-  4$ r9   r   )r2   ys     r'   fnsimple_invoke_quant.<locals>.fn  s    		!q ""r6   r          @)quant_tracerr2   r7  s     r'   simple_invoke_quantr<  ~  s     # q!!$s**r6   c                 *    S n[        X5      S   S-  $ )Nc                 0    [         R                  " U 5      4$ r9   r   r   s    r'   r7  &simple_invoke_quant_packed.<locals>.fn  s    		!r6   r   r9  )r   r;  s     r'   simple_invoke_quant_packedr@    s     r%a(3..r6   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_inline_asmrB    r   r   c                     [         R                  R                  (       a  [        U SS[         R                  S9$ [        U SS[         R                  S9$ )Nzv_mov_b32_e32 $0, $1z=v, v)asm_strconstraintsr   zmov.f32 $0, $1;z=f,f)r   versionhipr	   float32r   s    r'   simple_inline_asmrI    sI    }}%*--	
 	
 "	$& r6   r1  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   )
rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  nestedtriple_nestedr   invoke_quantTestHOPtest_aot_exporttest_pre_dispatch_exporttest_serialize_exporttest_retrace_export)rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rU  skipsrV  r   r  )rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rU  r  auto_functionalizer   )rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  r`  
decoratorsr   )rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  r`  rb  explicit_buffersr&  zrequires distributed buildr	   )rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rb  )Mr!   unittestr   #functorch.experimental.control_flowr   &torch._higher_order_ops.flex_attentionr   r   !torch.nn.attention.flex_attentionr   r   torch.testingr   .torch._higher_order_ops.inline_asm_elementwiser	   *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(   r5   r>   rI   rR   0FIXME_hop_that_doesnt_have_opinfo_test_allowlistlibrarydefineTagpt2_compliant_tagimplr}   r   r   register_faker   r   r   r   r   r   r   r   r   r   r   r   r   r
  r  r  r(  r*  r3  r:  r<  r@  rB  rI  boolhalfexpectedFailurefloat16rH  skipIfr!  r"  hop_dbr   r6   r'   <module>r|     sN      3 
 & Q ? L Q Q G DS
6#4 0J   !>		$	$   159' :' 16:' ;' 159' :' :;' <':T:  %6
6:<D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
 :'* &")@EMM5==9 $#(+0119>OP(()5O 119>UV119>ST
 :+. &,)Q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
'4 %"3EMM* $#(+0:{K
r6   