
    sgt!                        d dl Z d dlZd dlmZ d dlZd dlmZ d dlmZm	Z	 d dl
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.                  j1                  dde j2                  j4                         e j.                  j7                  dd      d        Ze j.                  j7                  dd      d        Ze j.                  j=                  d      d        Zd Z d Z!d Z"d Z#d Z$d Z%d Z& eddee ee jN                  e jP                        ddddd 
       edd!ee ee jN                  e jP                        ddddd 
       edd"ee ee jN                  e jP                        ddddd 
       ed#de!e  ee jN                  e jP                        dddddd$d%       ed&de&e% ee jN                  e jP                        dddddd'       ed(de#e" ee jN                  e jP                        dddddd'       ed)dee$ ee jR                  e jT                        ddddd eejV                  d*d+       eejV                  d*d,       eejV                  d*d-       eejV                  d*d.      f/       ed0dee$ ee jR                  e jT                        ddddd eejV                  d*d+       eejV                  d*d,       eejV                  d*d-       eejV                  d*d.      f/      gZ,y)1    N)make_tensormap)OpInfoSampleInput)all_types_andcustom_types)DecorateInfo)flex_attention_create_empty_block_maskc           
   +      K   t        j                  t        |||      }t         |ddddd       |ddddd      g |ddd       |ddd      f       y w)Ndevicedtyperequires_grad   皙?lowhigh   )args	functoolspartialr   r   opinfor   r   r   kwargsmake_args         Q/var/www/html/venv/lib/python3.12/site-packages/torch/testing/_internal/hop_db.pysample_inputs_mapr!      sm       F%}NH
x1aSq98Aq!QT[\;]^$QCa8(1#TU:VWY Ys   AAc                     | d   j                         j                  d      |z  | d   |j                         z   j                         j	                  | d   j                               gS )Nr   g      ?r   )cosadd_sincos_viewsizexy0y1s      r    inner_fr-      sQ    aDHHJOOB"$qtbffh&<&<&>&C&CAaDIIK&PQQ    c                 $    d }t        || ||      S )Nc                     t        | ||      S Nr-   r)   s      r    fzsimple_map.<locals>.f   s    q"b!!r.   r   )xsr+   r,   r3   s       r    
simple_mapr5      s    "q"b"r.   c                 $    d }t        || ||      S )Nc                 $    d }t        || ||      S )Nc                     t        | ||      S r1   r2   r)   s      r    f2z"nested_map.<locals>.f1.<locals>.f2    s    1b"%%r.   r   xxr+   r,   r9   s       r    f1znested_map.<locals>.f1   s    	&2r2r""r.   r   r4   r+   r,   r<   s       r    
nested_mapr>      s    # r2r2r.   c                 $    d }t        || ||      S )Nc                 $    d }t        || ||      S )Nc                 $    d }t        || ||      S )Nc                     t        | ||      S r1   r2   r)   s      r    r9   z5triple_nested_map.<locals>.f0.<locals>.f1.<locals>.f2(   s    q"b))r.   r   r:   s       r    r<   z)triple_nested_map.<locals>.f0.<locals>.f1'   s    *r2r2&&r.   r   r=   s       r    f0ztriple_nested_map.<locals>.f0&   s    	' 2r2r""r.   r   )r4   r+   r,   rC   s       r    triple_nested_maprD   %   s    # r2r2r.   )custom_function_callautograd_function_applyrun_and_save_rng_staterun_with_rng_state	out_dtypetrace_wrappedr   map_implwith_effectsstrict_mode_export_tracepointcall_torchbindtriton_kernel_wrapper_mutation triton_kernel_wrapper_functionalhints_wrapperztestlib::mutating_custom_opz8(Tensor(a!) x, Tensor(b!) z) -> (Tensor, Tensor, Tensor))tagscpuc                 V    | j                  d       |j                  d       | || |z   fS N   r$   r*   zs     r    foo_impl_cpur[   J   (    FF1IFF1IaQ;r.   cudac                 V    | j                  d       |j                  d       | || |z   fS rV   rX   rY   s     r    foo_impl_cudar_   Q   r\   r.   c                     | || |z   fS r1    rY   s     r    foo_impl_abstractrb   X   s    aQ;r.   c           	   +   v   K   t        j                  t        |||      }t         |ddddd             y w)Nr   r   r   r   r   r   s         r    sample_inputs_condrd   ]   s9       F%}H hq!QCa8
99s   79c                 Z    t        j                  | j                         dkD  d d | g      S )Nr   c                 $    | j                         fS r1   r#   r*   s    r    <lambda>zsimple_cond.<locals>.<lambda>e   s    aeegZ r.   c                 $    | j                         fS r1   )r%   rh   s    r    ri   zsimple_cond.<locals>.<lambda>e   s    AEEG: r.   )torchcondsumrh   s    r    simple_condrn   d   s&    ::aeegk#79MPQsSSr.   c           
   +      K   t        j                  t        ||d      }t         |ddddd       |ddddd             y w)NFr   r   r   r   r   r   s         r     sample_inputs_auto_functionalizerp   h   sJ       F%uH hq!QCa8(1aPSZ[:\
]]s   AAc                 V    t         j                  j                  j                  | |      S r1   )rk   opstestlibmutating_custom_oprY   s     r    simple_auto_functionalizeru   o   s    99//155r.   c              +      
K   t        j                  t        |||      
d }
fdt        d      D        \  }}}t	        ||      }	t        |||||	       y w)Nr   c                     | |z   S r1   ra   )scorebhmns        r    	score_modz/sample_inputs_flex_attention.<locals>.score_modx   s    qyr.   c           	   3   :   K   | ]  } d d dddd         yw)r         r   r   Nra   ).0_r   s     r    	<genexpr>z/sample_inputs_flex_attention.<locals>.<genexpr>{   s#     I1x1c1#A66Is      )r   r   r   ranger   r   )r   r   r   r   r   r}   qkv
block_maskr   s             @r    sample_inputs_flex_attentionr   s   sd       F%}H JaIGAq!)!Q/J
			 s   AAc           
   +      K   t        j                  t        ||d      }t        t	        j
                  d       |ddddd             y w)NFr   r   r      r   r   )r   r   r   r   rk   tensorr   s         r    sample_inputs_while_loopr      sI       F%uH QAqc* s   AAc                 T    d }d }t         j                  j                  ||| |f      S )Nc                     | dkD  S )Nr   ra   iter_tr*   s     r    cond_fnz"simple_while_loop.<locals>.cond_fn   s    zr.   c                 ,    | dz
  |j                         fS )Nr   rg   r   s     r    body_fnz"simple_while_loop.<locals>.body_fn   s    z1557""r.   )rk   _higher_order_ops
while_loop)r   r*   r   r   s       r    simple_while_loopr      s-    # ""--gwLLr.   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nestedtriple_nestedrl   T)r   r   r   r   r   r   r   r   r   r   supports_autogradsupports_gradgradr   )r   r   r   r   r   r   r   r   r   r   r   auto_functionalizer   TestHOPtest_aot_exporttest_pre_dispatch_exporttest_serialize_exporttest_retrace_export)r   r   r   r   r   r   r   r   r   r   skipsflex_attention_backward)-rk   r   torch.testingr   unittest#functorch.experimental.control_flowr   #torch.testing._internal.opinfo.corer   r   $torch.testing._internal.common_dtyper   r	   r
   !torch.nn.attention.flex_attentionr   r   r!   r-   r5   r>   rD   *hop_that_doesnt_have_opinfo_test_allowlistlibrarydefineTagpt2_compliant_tagimplr[   r_   register_fakerb   rd   rn   rp   ru   r   r   r   boolhalffloat16float32expectedFailurehop_dbra   r.   r    <module>r      s{     %  3 M < VYR
. *$   !>		$	$   159 : 16: ; :; <:T^6$M ",UZZ4 $#(+0 ",UZZ4 $#(+0 ),UZZ4 $#(+0 "-UZZ4 $#(+0 "3UZZ4 $#(+0 !"$;UZZ4 $#(+0 "7EMM5==9 $#(+0119>OP119>XY119>UV119>ST	
$ &"7EMM5==9 $#(+0119>OP119>XY119>UV119>ST	
Ar
r.   