
    VhH                     j   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dlZd dl	m
Z
 d dlmZ d dlmZmZmZmZ d d	lmZmZ e G d
 d             Zi d edgg      d edgg      d edgdgg      d edgg      d edgg      d edgg      d edgg      d edgdgg      d edgg      d ed      d edgg      d eddgg      d ed      d  ed      d! edgdgg      d" edgg      d# edgg      i d$ edgg      d% edgg      d& edgg      d' ed(d)gg      d* edd(d)gg      d+ ed(d)gg      d, ed(d)gg      d- edgg      d. ed      d/ ed      d0 edgg      d1 edgg      d2 edgg      d3 edgg      d4 edgg      d5 edgg      d6 edd7d8gg      i d9 ed:gg      d; edgg      d< ed      d= edgg      d> edgg      d? edgg      d@ edgg      dA edgg      dB edgg      dC edgg      dD edgg      dE edgg      dF edgg      dG edd(d)gg      dH ed:gg      dI edgg      dJ edgg      i dK edgg      dL edgg      dM edgg      dN edgg      dO edgg      dP edgg      dQ edgg      dR edgg      dS edgg      dT edgg      dU edgg      dV edgg      dW edgg      dX edgg      dY edgg      dZ edgg      d[ edgg      i d\ edgg      d] ed^d_gd`dagg      db edgg      dc edgg      dd edgg      de eddgg      df edgg      dg edgg      dh edgg      di edd:gg      dj ed      dk edgg      dl ed      dm ed      dn edgg      do ed      dp ed      i dq ed:gg      dr ed:gg      ds edgg      dt edgg      du edgg      dv edgg      dw edgg      dx edgg      dy edgg      dz eddgg      d{ edgg      d| eddgg      d} edgg      d~ edgg      d edgg      d eddgg      d eddgg      i d edgg      d eddgdgg      d edgdgg      d edgg      d edgg      d edgg      d edgg      d ed      d eddgg      d ed:gg      d ed:gg      d edgg      d eddd(gg      d edd(gg      d edgg      d edgg      d eddgg       eddgg       eddgg       edgg       edgg       edgg       eddgg       edgg       edgg       edgg       ed       ed       ed       ed      dZd Zd Zd Zd Zddej6                  dfdZdefdZd ZddZ ddZ!ddZ"d Z#	 ddZ$	 ddZ%	 	 ddZ&d Z'd Z(	 ddZ)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5ddZ6ddZ7d Z8d Z9	 ddZ:	 ddZ;d Z<d Z=	 ddZ>d Z?d Z@d ZAd ZBd ZC ee$eDj                  dë      ddŜƫ      ZFdǄ ZGdȄ ZHdɄ ZIdʄ ZJd˄ ZKd̄ ZLd̈́ ZMe7e9e1 ee&dΫ      e2dϜdD  ci c]  } d|   e3dҬӫ       c} e=e?eAeBeCeFdԜ eNdի      D ci c]  }d|  e4|׫       c} e5d ׫      e6e:e;e<e>e&e&eGeHeIeJeKeLeMd؜ZOe8 ee"e*٫      e#e#e# ee"e+٫       ee"e,٫       ee"e-٫       ee"e.٫      e!e@ ee"e/٫       ee"e0٫      dڜZPdۄ ZQeD cg c]
  } eQ|       c}ZRyc c} w c c}w c c}w )    N)copy)	dataclass)partial)Optional)is_nested_int)op_db)BinaryUfuncInfoReductionOpInfoSampleInputUnaryUfuncInfo)tree_flattentree_mapc                   \    e Zd ZU dZdZeed<   dZeee	      ed<   de
ee	   ee	   f   fdZy)ExtraOpDataz
    Contains info on top of the typical OpInfo data that is useful for NJT test generation.

    The process that converts the standard op_db -> an NJT-compatible op_db will attach this
    data onto each associated OpInfo entry.
    Fis_viewNdim_argsreturnc                     | j                   yd }d }| j                   D ]E  }t        |      dk7  r|d   j                  d      r|d   j                  dd      }|>|}A|d   }G ||fS )N)NN   r   ... )r   lenendswithreplace)selfsingle_dim_argnamedimlist_argnameoverloads       a/home/dcms/DCMS/lib/python3.12/site-packages/torch/testing/_internal/opinfo/definitions/nested.pyget_dim_argnameszExtraOpData.get_dim_argnames2   s    ==  " 		1H8}!{##E*"*1+"5"5eR"@%-)8&%-a["		1 #O44    )__name__
__module____qualname____doc__r   bool__annotations__r   liststrtupler   r     r!   r   r   r      sE     GT !%Hd49o$5%x}(D"E 5r!   r   z_segment_reduce.lengthsaxis0)r   z_segment_reduce.offsetsalldimzdim...argmaxargminamaxaminanyargsortbroadcast_toT)r   catchunk)r   r   conj
contiguouscount_nonzerocummaxcummincumprodcumsumcumulative_trapezoid
diag_embeddim1dim2diagonaldiagonal_copydiagonal_scatterdiffexpand	expand_aszfft.fftzfft.hfftzfft.ifftz	fft.ihfftz	fft.irfftzfft.rfftflatten	start_dimend_dimflipzdims...gatherimag	index_add
index_copy
index_fillzindex_reduce.amaxzindex_reduce.aminzindex_reduce.meanzindex_reduce.prodindex_selectkthvaluezlinalg.crosszlinalg.diagonalzlinalg.tensorsolvezlinalg.vecdotzlinalg.vector_normlog_softmaxlogcumsumexpzmasked.amaxzmasked.aminzmasked.argmaxzmasked.argminzmasked.logsumexpzmasked.meanzmasked.normzmasked.prodz
masked.stdz
masked.sumz
masked.varmax.reduction_with_dimmedianmeanmin.reduction_with_dimmodemovedimsourcedestinationz	source...zdestination...nanmean	nanmediannansumnarrownarrow_copyznn.functional.cosine_similarityznn.functional.glupermutepositiveprodravelrealrenormreshape
reshape_asrollrot90scatterscatter_addzscatter_reduce.amaxzscatter_reduce.aminzscatter_reduce.meanzscatter_reduce.prodzscatter_reduce.sumselectselect_scattersliceslice_scattersoftmaxsortsplitsplit_with_sizessplit_with_sizes_copysqueezesqueeze_copystackstdzstd.unbiasedsumttensor_split	tensordottiletopk	transposedim0transpose_copy	trapezoidtrapzunbind	dimension)	unflattenunfoldunfold_copyunsafe_chunkunsafe_split	unsqueezeunsqueeze_copyvarzvar.unbiasedviewview_asview_as_complexview_as_realc                  L    t        j                  ddd      j                         S )N      r+   )torchrandintitemr+   r!   r   _rndr      s    ==Ar"''))r!   c                     | j                   xr\ |j                   xrN | j                  |j                  k(  xr3 | j                  | j                     |j                  |j                     k(  S N)	is_nested_ragged_idxshape)nt1nt2s     r   _raggedness_matchesr      s[     	EMM	EOOs.	E IIcoo&#))COO*DD	r!   c                 t    | j                   }| j                         j                         j                  |      S r   )requires_graddetachclonerequires_grad_)r}   r   s     r   _cloner      s+    OOM88:,,];;r!   c                    t        | j                        }|j                  |       dj                  | j                  gd |j                         D              }t        t        | j                        | j                  ||      S )Nz, c              3   0   K   | ]  \  }}| d |   yw)=Nr+   ).0kvs      r   	<genexpr>z!_update_sample.<locals>.<genexpr>   s     )V!QQCq*)Vs   argskwargsname)
dictr   updatejoinr   itemsr   r   inputr   )sample
new_kwargs
all_kwargs	full_names       r   _update_sampler      sm    fmm$Jj!		6;;W)V:CSCSCU)VWXIv||[[	 r!   Fc                    t        | d         D cg c]!  }| dd  D cg c]  }||n	t                c}# }}t        j                  j	                  |D cg c]  }t        j
                  |  c}||||      S c c}w c c}w c c}w )Nr   r   )devicedtypelayoutr   )ranger   r   nestednested_tensorrandn)dimsr   r   r   r   dsizessizes           r   random_nt_from_dimsr      s     JOtTUwXAd12h?1=adf,?XEX<<%%(-.d	.# &   @X.s   B A;
B B;B r   c                     | j                         rdnd}| j                  | j                  |dz  }n| j                  dk7  r|dz  }d}| j                  d}| j                          d| | S )	N_contig
_noncontig_holesr   _transposed_without_seqlen_cache_with_seqlen_cacheD)is_contiguous_lengths_offsetsr   _max_seqlen_tensorr.   )njtcontig_typecached_datas      r   _describe_njtr     sx    "002)K
||CLL$<x	A	}$)K
)*ggi[+{m44r!   c                 0    |dk(  ry|| j                   k(  ryy)Nr   	batch_dim
ragged_dim
normal_dim)r   )r   r.   s     r   _describe_dimr     s    
ax		r!   c              #     K   |g d}t        |t        t        f      s|g}|D ]]  }t               d gt	        |dz
        D cg c]  }t                c}}t        || ||t        j                        }| t        |j                               }t        |j                               }	t        j                  j                  ||	      j                  |       |dkD  r|j                  d|j                         t        |j                               }t        |j                               }	t        |	j!                         dz
        }
t        j                  j                  ||	|
      j                  |       ` y c c}w w)N   r      r   r   r   r   r   r   valuesoffsetslengths)
isinstancer(   r*   r   r   r   r   jaggedr   r   r   r   nested_tensor_from_jaggedr   r   r   rF   )r   r   r   r   r.   _r   ntr   r   r   s              r   _sample_njtsr     sR    |dT5M*v   (AsQw @A @A '<<
  		$&ll44VWETT
 	

 7,,r2>>22 		$&!+,ll44 5 
 .
'		(9 ( @s   AFFD7Fc                    |j                   j                  r|j                   nt        d |j                  D              }g }t	        |j
                  d         D ]  }||fd} ||j                         }t        ||j                        }t        ||j                        }	d| j                  v rd|	v rt        |	d         dkD  r|	d   dd  D 
cg c]  }
|
|   	 c}
|	d<   n|	d   d   j                         }||v rZt        j                  t        t	        |j
                  d               t        j                  |	d   d   j                        g|	d<   n:t        j                  g t        j                  |	d   d   j                        g|	d<   ddlm} | j$                  j&                  t        d	 t)        | j$                  j&                        d         }|D ch c]	  }||	v s| c}D ]F  }t+        |d
      r|j,                  n|j/                         } |||	|   |j0                  d      |	|<   H  | j2                  |g|i |	}|j5                  |        |rt        |      dkD  rt7        |d   t        t8        f      rt        |d         t;        fd|D              sJ t	              D cg c]B  }t        j<                  j?                  |D cg c]  }||   	 c}t        j@                        D }}} tC        |d         |      S t        j<                  j?                  |t        j@                        S |S c c}
w c c}w c c}w c c}}w )Nc              3   :   K   | ]  }|j                   s|  y wr   )r   )r   as     r   r   z#unbind_reference.<locals>.<genexpr>R  s     8AKK!8s   r   c                    t        | t        j                        rt        | |      r| |   S t        | t        j                        rAt	        | d      r5| j
                  }| j                  |   dk(  r| d   S | j                  ||      S | S )N
_batch_dimr   r   )r   r   Tensorr   hasattrr   r   ro   )r}   iinpbdims       r   _slice_inputz&unbind_reference.<locals>._slice_inputX  st     !U\\*/B1c/JtAu||,L1I||774=A%Q4K88D!,,r!   	index_putindicesr   r   r   _outer_to_inner_dimc                 &    | j                  dd      S )Nr   r   )r   )r   s    r   <lambda>z"unbind_reference.<locals>.<lambda>  s    !))E2. r!   _ndimTcanonicalizec              3   :   K   | ]  }t        |      k(    y wr   r   r   onum_returnss     r   r   z#unbind_reference.<locals>.<genexpr>       Is1v,I   r   )"r   r   nextr   r   r   r   r   r   r   tolistr   tensorr(   int32r   torch.nested._internal.opsr   _extra_op_datar   r   r   r  r.   r   opappendr   r*   r-   r   as_nested_tensorr   type)r  r   wrap_output_as_njtnt_inpout_ref_componentsr   r   r   r   r   r}   sequence_putr   argnamesr   argnamendimout_ref_componentrr	  njt_returnsr
  s                        @r   unbind_referencer"  L  s>    <<!! 	 8V[[88	  6<<?# >5V 	 6<<(fkk2,6 ",,&9+>6)$%)39)3DQR3H$IaQqT$Iy!  &i03::<$ syy|!45"'++#))#4Q#7#>#>)F9% ekk&:KA:N:U:U)F9% 	C %%1.R..778;H
 (0?!1;A? '.vw'?v||VZZ\"5&/6+=+=D#w "BEE#777!!"34}>5@ !"Q&:q!D%=,
 034KI6HIIII {+	  --#56aQqT6u|| . K  /4*1-.{;;||,,-?,UUs %J: @* 7s*   M	M'M<"MM*MMc                     | j                   j                  J | j                   j                         \  }}|J |J |j                  |   dk(  r|J  || |      S t	        | |      S )Nr   )r  r   r    r   r"  )r  r   batchwise_referencer   r   s        r   unary_dimwise_referencer%    s    %%111*,*;*;*L*L*N'""")))}}'(A-"..."2v..B''r!   c                     |j                   j                  sJ | j                  j                  J | j                  j	                         \  }}|J |j
                  j                  ||j
                  j                  |d             }|j
                  j                  dd      }|dk7  sJ d       t        |t        t        f      r|j                   j                  |v }d|v }n|j                   j                  |k(  }|dk(  }|B | j                  |j                   j                         g|j                  i |j
                  S |r|rddlm} t!        |j
                        }	|J  ||j                   j#                         ||j                   j                  d      |	|<    | j                  |j                   j                         g|j                  i |	}
|rAt        |
t        t        f      r t%        |
      d |
D              }
|
S |
j'                  d      }
|
S |r|st)        | |d	      }t+        |      dkD  rt        |d   t        t        f      rxt+        |d         t-        fd
|D              sJ t/              D cg c]*  }t1        j2                  |D cg c]  }||   	 c}d      , }}} t%        |d         |      S t1        j2                  |d      S t)        | |      S c c}w c c}}w )NkeepdimFr   z4reductions over just the batch dim are not supportedr   Tr  c              3   >   K   | ]  }|j                  d         yw)r   N)r   )r   r	  s     r   r   z&reduction_reference.<locals>.<genexpr>  s     <1A<s   r  c              3   :   K   | ]  }t        |      k(    y wr   r  r  s     r   r   z&reduction_reference.<locals>.<genexpr>  r  r  r.   )r   r   r  r   r    r   getr   r*   r(   r   r  r   r   r  r   r   r.   r  r   r"  r   r-   r   r   rz   )r  r   r   r   r.   r'  reduce_on_raggedreduce_on_batchr   
ref_kwargsoutr  r   r	  stacked_returnsr
  s                  @r   reduction_referencer2    s   <<!!!! %%111*,*;*;*L*L*N')))
--

**+=tDC mm	51G!8KKK8#t}%!<<33s:s(!<<33s:(
{ruuV\\((*JV[[JFMMJJOB&--(
***&9LLV\\%=%=D'

?# beeFLL'')FFKKF:F#t}-d3i<<< 
 mmA&
-b&US!"Q&:q!E4=,
 034KI6HIIII {+ +=>aQqT>AFO  /4*1-.??{{-155 B'' ?s   K:$K50K:5K:c              +      K   |si }t        |||g d      D ]$  }t        |t        |      t        |             & y w)Nr   r   r   r   r   r   r   )r   r   r   r   op_infor   r   r   	op_kwargsr   r   s          r   #sample_inputs_elementwise_njt_unaryr9    sI      	U-i P #d9oM#<NOOPs   >A c              +   *  K   |si }t        |||g d      D ]  }t        |      }t        j                  |      }t	        t        |      |ft        |      | d       t        |j                        }	d|	|j                  <   t        j                  |	|||      }
t        |
      }d|
_        d|_        t	        t        |      |
ft        |      | d       t	        |t        |      ft        |      | d	       t        j                  t        |j                               D cg c]  }d c}|||      }
t        |
      }d|
_        d|_        t	        t        |      |
ft        |      | d
       t	        |t        |      ft        |      | d       |j                         |j                  dz   kD  rt        j                  |j                  |j                  dz   d  |||      }
t	        t        |      t        |
      ft        |      | d       t	        t        |
      t        |      ft        |      | d       t        j                  d|||      }
t	        t        |      t        |
      ft        |      | d       t	        t        |
      t        |      ft        |      | d        d}d}t        |d df|||t        j                        }t        |      }t        j                  |d||||      }
t        |
      }d|
_        d|_        t	        t        |      |
ft        |      | d       t	        |t        |      ft        |      | d       y c c}w w)Nr   r4  z
: (NT, NT)r   r   r   r   r   r   z$: (NT, T) broadcasting 1 over raggedz$: (T, NT) broadcasting 1 over raggedz: (NT, T) broadcasting all 1sz: (T, NT) broadcasting all 1sz": (NT, T) broadcasting normal dimsz": (T, NT) broadcasting normal dimsr+   z": (NT, T) broadcasting with scalarz": (T, NT) broadcasting with scalarr      r   z: (NT, T) mixed broadcastingz: (T, NT) mixed broadcasting)r   r   r   
randn_liker   r   r   r(   r   r   r   r   r   r.   r   r   )r7  r   r   r   r8  r   njt1njt_descnjt2dense_shaper}   t2r   Br   r   s                   r   $sample_inputs_elementwise_njt_binaryrD    s     	U-i h
 !&%4L	?:Z(	
 	
 4::&()D$$%KK'	
 AY4L	?:AB	
 	
 ,	?:AB	
 	
 KKdhhj)*1Q*'	
 AY4L	?::;	
 	
 ,	?::;	
 	
 88:((1,,

4++a/12+	A tQi\I z!CD	  q	Tl_I z!CD	  KK6mT4L)	?:?@	
 	
 1I,	?:?@	
 	
Gh
V 	
A
A
	
D!#||C S!HAq!F%}UA	BALBM sTIz56	  
Sk^Iz56	 s +s   D/N1	N
:INc              +     K   |si }| j                   j                  J | j                   j                         \  }}|J |d u}	t        |||g d      D ]  }
t	        |
      }|rddgnd g}|D ]  }|rd| nd}t        d|
j                               D ]D  }||
j                  k7  rdnd	}t        t        |
      i |||i|rd
|ini | d| d|        F |	sqt        t        |
      i ||d|
j                  gi|rd
|ini | d|        t        |
j                  dz   |
j                               D ]>  }t        t        |
      i ||d|
j                  |gi|rd
|ini | d| d|        @ |
j                         dkD  r_|
j                  dk(  rPt        t        |
      i |||
j                         dz
  |
j                         dz
  gi|rd
|ini | d|        t        t        |
      i ||t        t        |
j                                     i|rd
|ini | d|         t        t        |
      t        |      | d         y w)Nr   r4  FTz with keepdim=r   r   normalraggedr'  : z dim reductionr5  r   z: batch+ragged reductionz: batch+ragged+dim=z
 reductionr   r   z: two normal dim reductionz: all dim reductionz: full reduction with keepdim=)r  r   r    r   r   r   r.   r   r   r   r(   r   )r7  r   r   r   supports_keepdimr8  r   r   r   supports_dimlistr   r?  keepdim_valuesr'  keepdim_suffixr.   dim_desc	other_dims                     r   sample_inputs_njt_reductionrO    sG     	 !!**666 	//1)))&d2U-i P
 !%*:%% A	G;K~gY7QSN Q	* 
'*coo'=88!3K#*C 4DIw/
 %:Rz?OP 
  !3K#'!S__)= 4DIw/
 %:%=n=MN  "'s':CGGI!F I%s ' +a)-L  8H	73R   (j(;I; G((6'79  779q=S__%9%s ' +cggi!mSWWY]-K  8H	73R 
 !)z)CNCST  "3K#'eCGGI.>)? 4DIw/
 %:%88HI sA	N 3K	?:;G9E
 	
YP
s   CI, FI,c                     | fd}|S )Nc                      t        d| d      )NOpInfo for zn does not support NJT. Support can be added by modifying torch/testing/_internal/opinfo/definitions/nested.py.RuntimeError)r7  r   r   r   op_namer   s         r   _fz*unsupported_sample_inputs_func.<locals>._f  s"    ' #D D
 	
r!   r+   rU  rV  s     r   unsupported_sample_inputs_funcrX     s    :A 
 Ir!   c                       fd}|S )Nc                 "    t        d d      )NrR  zz does not define a ref() function. Support can be added by modifying torch/testing/_internal/opinfo/definitions/nested.py.rS  )r  r   rU  s     r   rV  z!unsupported_reference.<locals>._f  s#    ' #N N
 	
r!   r+   rW  s   ` r   unsupported_referencer[  
  s    
 Ir!   c              +   n  K   |i }| j                   J | j                   j                         \  }}|J |J t        |||g d      D ]f  }t        |j	                               D ]H  }	||	i}|j                  |       t        t        |      |t        |       dt        ||	              J h y w)Nr   r4  rH  r5  )
r  r    r   r   r.   r   r   r   r   r   )
r7  r   r   r   r8  r   r   r   r   r.   s
             r   sample_inputs_unary_dimwiser]    s      	 !!---*1*@*@*Q*Q*S')))"""U-i 
 # 	C(#.FMM)$s%c*+2mC.E-FG 	
s   B3B5c                    |j                   j                  d      }|j                  d   }t        j                  ||z        }||z  }t        |      D cg c]  }| }}||z  dk7  r|j                  ||z         t        |j                   j                               }d}	g }
|D ]  }|
j                  ||	|	|z           |	|z  }	  |
D cg c]1  }t        j                  j                  |t        j                        3 c}S c c}w c c}w )Nr   chunksr  )r   r   r   mathceilr   r  r(   r   r   r   r  r   )r  r   rC  
num_chunks
chunk_sizenum_full_chunksr   chunk_sizes
componentsstartr_  lsts               r   batchwise_reference_chunkri  .  s   !Ax(J1z>*J:oO',_'=>!:>K>:~1z>* fll))+,JEF! 
j);<=
 PVVELL))#ell)CVV ? Ws   	D
6Dc                     t         r   NotImplementedErrorr  r   s     r   batchwise_reference_narrowrn  E      
r!   c                 V    |j                   j                         |j                  d      S )Nindex)r   r   r   rm  s     r   batchwise_reference_selectrr  J  s#    << w!788r!   c                     t         r   rk  rm  s     r   batchwise_reference_splitrt  O  ro  r!   c                     t         r   rk  rm  s     r   $batchwise_reference_split_with_sizesrv  T  ro  r!   c                     t         r   rk  rm  s     r   batchwise_reference_unflattenrx  Y  ro  r!   c                     t        d      )Nz7unsqueeze() is not intended to operate on the batch dim)
ValueErrorrm  s     r   batchwise_reference_unsqueezer{  ^  s    
N
OOr!   c           	   +     K   t        |||g d      D ]  }t        |t        |              t        j                  t        j
                  fD ]  }t        j                  dd|||      }t        j                  g d|t        j                        }t        j                  g d	|t        j                        }	t        j                  j                  |||	
      }t        |      }
t        |d|i|
 d| d        y w)Nr   r4  )r   
      r;  )r   r   r   r}  r   r   )r   r   r   )r   r   memory_formatrH  )r5  )r   r   r   r   contiguous_formatpreserve_formatr   r  int64r   r   )r7  r   r   r   r   r   r  r   r   r   r?  s              r   sample_inputs_cloner  b  s     U-i 8 #M#$6778
  1153H3HI 
&]
 ,,}V5;;O,,yu{{Kll44GW 5 
 !%#]3:Ra0
 	

s   DDc              +   \   K   t        t        ddi      } || |||      E d {    y 7 w)Nvalueg      E@r8  r   r9  )r7  r   r   r   r   
unary_funcs         r   sample_inputs_fillr  |  s,     <RVXJ'65-@@@s   ",*,c                 (    t        t        d| i      S )Npr  r  r  s    r   sample_inputs_mvl_gammar        63(KKr!   c                 (    t        t        d| i      S Nnr  r  r  s    r   sample_inputs_polygamma_nr    r  r!   c                 (    t        t        d| i      S r  r  r  s    r   !sample_inputs_special_polygamma_nr    r  r!   c              +     K   t        ||g d      D ]  }fdt        j                  t        j                  t        j                  fD        }|D ]5  }|j                          d d| }	t        t        |      di|	       7 d|v szd	}
t        |       d
| d|
 }	t        t        |      d|
i|	        y w)Nr   r4  c              3   ,   K   | ]  }|us|  y wr   r+   )r   r   r   s     r   r   z#sample_inputs_to.<locals>.<genexpr>  s      
AUNA
s   	zD: z -> r   r5  cudacpurH  r   )	r   r   float32halfdoubler.   r   r   r   )r7  r   r   r   r8  r   r   other_dtypesother_dtypesample_nameother_devices     `        r   sample_inputs_tor    s     #	 
uzz5<<@
 ( 	VK WWYKs5'k]CKfSk7E2BUU	V
 V L*3/06($|nMKsX|$<; #s   BC3Cc              +   0  K   t        |||dg      D ]  }|j                  dk(  s|j                  d   |j                  d   }}|dz   }	t        j                  |||	||      }
d|
_        t        |      }t        t        |      d|
i| d	
        y w)Nr   r4  r   r   r   r   r  mat2z: (B, j, D) x (B, D, E)r5  )	r   r   r   r   r   r   r   r   r   )r7  r   r   r   r8  r   njt_3drC  r   Eotherr?  s               r   sample_inputs_bmmr    s     U-qc  "<<?FLL$4qAAAKK1aeDE E$V,Hv z!89 s   #BA0Bc                     t        |       }t        j                  |_        t        |      }|j                  d   }|j                  d= ||j                  d<   t        ||      S )Nr  r  )r   r   matmulr  r   r"  )r  r   	matmul_opmodified_sampler  s        r   reference_bmmr    sZ    RI<<IL6lO""6*Ev&&+O7#I77r!   c              +   4  K   t        | |||fi |D ]  }|j                  d   |j                  j                  k(  rt	        |ddi       :|j                  j                  |j                  d         }d|dz  |dz
  |fD ]  }t	        |d|i         y w)Nr.   r_  r   r   r   r]  r   r   r   r   r   )r7  r   r   r   r   sample_inputr   r_  s           r   sample_inputs_chunkr    s     317 
G u%););)G)GG !}== ""''(;(;E(BCAa1fa!eQ/ G$\Hf3EFFG
G   BBc              +   h  K   t        | |||      D ]1  }|j                  d   }|j                  d= ||j                  d<   | 3 t        |||dg      D ]f  }|j                  dk(  s|j                  d   }	|	dz   }
t        |      }t        t        |      dt        j                  |	|
||      i| d	
       h t        |||dg      D ]f  }|j                  dk(  s|j                  d   }
|
dz   }t        |      }t        t        |      dt        j                  |
|||      i| d
       h t        |||dg      D ]  }|j                  dk(  s|j                  d   }|j                  d   }
|
dz   }t        |      }t        j                  |||
|||      }d|_
        t        |t        |      f| d        t        |||dg      D ]  }|j                  dk(  s|j                         s$|j                  \  }}
}t        |j                               }t        j                  ||
dz   |||      }t        j                  j                  ||j!                         |j"                        }t        |      }t        t        |      dt        |      i| d
        y w)Nr  r  r   r4  r   r   r   r  z: (B, j, D) x (D, E)r5  r   z: (B, j, D, E) x (E, F)r   r;  z: (B, F, E) x (B, E, j1))r   r   )r   z: (B, E, j1) x (B, j1, F))r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r7  r   r   r   r8  r   r  r  r  r   r  r?  njt_4dFrC  dense_tr   sum_j1
other_cont	other_njts                       r   sample_inputs_matmulr    s     *'65-P ##F+'',G$ U-qc  "R AAA$V,HvQ&!NO z!56  U-qc  "R AAA$V,HvQ&!NO z!89  #S	  "QAQAAA$V,Hkk1ae=G "#GVn& z!9: !. #S	  "v';';'=llGAq!)FAfEJ >>FNN,foo ? I %V,Hv	!23 z!:; #s(   A%J2(A8J2!A8J2BJ2,J2=B5J2c           	   +      K   t        |||dg      D ]5  }t        |dt        j                  |d      dk  it	        |             7 y w)Nr   r4  maskF)r           r5  )r   r   r   r=  r   r6  s          r   sample_inputs_masked_selectr  3  s[      U-qc 
 U--cG#MOs#
 	

s   A
Ac              +   T  K   t        | |||fi |D ]  }|j                  d   |j                  j                  k(  rt	        |ddd       ;|j                  j                  |j                  d         }d|fd|dz
  fd|dz
  f|dz
  dffD ]  \  }}t	        |||d         y w)Nr.   r   r   )rg  lengthr   r  )	r7  r   r   r   r   r  r   rg  r  s	            r   sample_inputs_narrowr  @  s     317 
W u%););)G)GG a/HII ""''(;(;E(BCA#$a&1a!e*q!a%j1q5!*!M Wv$\Uf3UVVW
Ws   B&B(c              +     K   t         j                  j                  t        j                  g d      t        j                  g d      t        j                  g d      gt         j                  t         j
                  |      }d}d}t        j                  ||||      }t        t        |      j                         |f       t        t        |      j                         |fd	d
i       y w)N)r   r   r   r   )r   r   r   )      r~  r   r   r   r   r          r  )r   padding_idxr   r   r   )
r   r   r   r  r   r  r   r   r   r   )	r7  r   r   r   r   r   NUM_EMBEDDINGSEMBEDDING_DIMweights	            r   %sample_inputs_nn_functional_embeddingr  N  s      ll((LL&LL#LL)	

 ||kk ) 	G NM[[vUSF v%%'Z 
 v%%'Zq! s   C1C3c              +   V  K   t        |||g d      D ]   }t        |j                               D ]  }t        j                  t        t        |j                  d                  |j                        gt        |dz
        D cg c]6  }t        j                  dg|j                  d      z  |j                        8 c}}	t        |      }
t        t        |      |	t        j                  d|j                        d|
 d|dz
   	         t        j                  g d
|      }t        j                  g d|      }t        j                  g d|      t        j                  g d|      t        j                  g d|      g}	t        j                  j                  t        j                  dd|      ||      j                  |      }t        |      }
t        t        |      |	t        j                  d|j                        d|
 d	       y c c}w w)Nr   r4  r   )r   r   g      ?)r   r   z: up to dim r5  )r   r   r~  r  )r   r   r   )r   r   r   )r   r   r   )r   r   r   r  r   z
: all dims)r   r   r.   r   r  r(   r   r   r   r   r   r   r   zerosr   )r7  r   r   r   r8  r   r   r.   r   r   r?  r   r   r   s                 r   sample_inputs_index_putr  n  s     U-i  # 	CT%"45cjjI #37^ LL!sxx{!23::FG %S)Hs&#ll3szzB !zcAgY7 	, ll<7Gll9V4GYv.Yv.Yv.G
 	..Aq('7	n]#  QH
q	"ell3qxx.PQz$ 9s   BH);H$
E(H)c              +     K   dD ]  }dD ]  }|dk7  r|rd}d}t        j                  ||||      }	t         j                  j                  t        j                  d|d	      t        j                  d|d
	      t        j                  d|d	      gt         j
                  t         j                  |      }
d }|rt        j                  |
|      }t        |	|
f||d         y w)N)TF)r|   rX   maxr|   r}  r  r   r   )r   r   )r   )r   r  )r   )rZ   per_sample_weightsr  )	r   r   r   r   r   r   r  r=  r   )r7  r   r   r   r   generate_per_sample_weightrZ   r  r  r  r   r  s               r   )sample_inputs_nn_functional_embedding_bagr    s      '4 $"* #	Du}!;NM[[U6F ,,,,MM!^$?MM!^$?MM!^$?
 ||kk - 	C "&)%*%5%5c%G" V *< 9#	$s   C(C*c                    t        |j                        }|j                  dt        j                  dgt        j
                  |j                  j                        i       t        |j                  d   |j                  f|      }| j                  }t        j                  j                  j                  | _
        t        | |d      }|| _
        t        j                  |d      S )Nr   r   r   r  Fr)  r+  )r   r   r   r   r  r  r   r   r   r   r  nn
functionalembedding_bagr"  r6   )r  r   r   old_opoutputs        r   %reference_nn_functional_embedding_bagr    s    fmm$J	ELL!EKK@S@STU Qv||ojQFUUFHH--BEb&UCFBE99V##r!   c              +     K   t        |||g d      D ]  }t        |j                  d            rd}t        j                  ||j                  d      |||      }t        j                  ||||      }t        t        |      t        |      t        |      dt        |       d       t        t        |      d	t        |      it        |       d
        y w)N)r   r   r~  r4  r   r}  r;  )r  biasz: with biasr5  r  z: without bias)r   r   r   r   r   r   r   r   )	r7  r   r   r   r   r   
NUM_OUTPUTr  r  s	            r   "sample_inputs_nn_functional_linearr    s     U-i #
 "& 
HHRL'
 {{vU-
 3K .t "#&'{3
 	
 3K&. "#&'~6
 	
;#
s   C!C#c           
   +   ~  K   t        |||ddg      D ]  }|j                  d      }t        |      r t        j                  ||||      }t        t        |      dt        |      it        |       d       t        t        |      dt        j                  d	||
      it        |       d        y w)Nr   r   r4  r   r;  r  z: 1D weightr5  g@r  z: scalar tensor weight)	r   r   r   r   r   r   r   r   r  )r7  r   r   r   r   r   num_channelsr  s           r   !sample_inputs_nn_functional_prelur    s     U-q!f 
 xx{& '	
 3K&. "#&'{3
 	
 3K%,,s6G "#&''=>
 	
3
s   B;B=c           	   +   0  K   t        |||ddg      D ]~  }t        |j                               D ]`  }||j                  k  r|j                  |d  }t        j                  ||||      }t        t        |      ||dt        |              b  y w)Nr   r   r4  r;  )normalized_shaper  r5  )
r   r   r.   r   r   r   r   r   r   r   )	r7  r   r   r   r   r   rJ   r  r  s	            r   $sample_inputs_nn_functional_rms_normr    s      U-q!f  swwy) 	ICOO+"yy4[[ +	F s(8$ &c*+ 		s   BBz	0x1.3ap-3i)	thresholdr  r  c              +   2  K   t        | |||fi |D ]  }|j                  d   |j                  j                  k(  rt	        |ddi       :|j                  j                  |j                  d         }d|dz  |dz
  fD ]  }t	        |d|i         y w)Nr.   rq  r   r   r   r  )r7  r   r   r   r   r  r   rq  s           r   sample_inputs_selectr  A  s     317 
E u%););)G)GG |<< ""''(;(;E(BCAQ!VQU+ E$\GU3CDDE
Es   BBc              +   4  K   t        | |||fi |D ]  }|j                  d   |j                  j                  k(  rt	        |ddi       :|j                  j                  |j                  d         }d|dz  |dz
  |fD ]  }t	        |d|i         y w)Nr.   split_size_or_sectionsr   r   r   r  )r7  r   r   r   r   r  r   
split_sizes           r   sample_inputs_splitr  O  s     317  u%););)G)GG 0H!/LMM ""''(;(;E(BCA !q&!a%3 
$ #;Z"H r  c              +   R  K   t        | |||fi |D ]  }|j                  d   |j                  j                  k(  r*|j                  j	                  |j                  d         }t        j                  d|dz
  d      j                         }||z
  }t        |d||gi        y w)Nr.   r   r   r+   r  split_sizes)	r]  r   r   r   r   r   r   r   r   )	r7  r   r   r   r   r  r   split1split2s	            r   sample_inputs_split_with_sizesr  _  s     317 N
 u%););)G)GG##L$7$7$>?q!a%b1668V\MFF;K+LMMNs   B%B'c              +   R  K   fd} |       D ]  }t        |j                               D ]J  }|dk(  s||j                  k(  rt        t	        |      d|it        |       dt        ||              L t        t	        |      dit        |       d        y w)Nc               3     K   t        dt        j                        } |  | j                         j	                         j                         }| j                         j	                         j                         }t        j                  j                  ||       | j                  dd       | j                         j	                         j                         }| j                         j	                         j                         }|j                         dz
  j	                         j                         }t        j                  j                  |||       y w)N)r   Nr   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   rF   )r   r   r   r   r   r   r   s       r   	_get_njtsz(sample_inputs_squeeze.<locals>._get_njtsq  s    !'<<
 	$$&,,.++-&&(..0ll44VWEEmmAq!!$$&,,.++-&&(..0<<>A%--/557ll44 5 
 	
s   EE r   r.   rH  r5  z: multiple dims)r   r.   r   r   r   r   r   )r7  r   r   r   r   r  r   r.   s    ```    r   sample_inputs_squeezer  o  s     
4 { 
# 
	C ax3#//1ss|%c*+2mC.E-FG 
	 3K3<!#&'7
 	

s   B"B'c              +     K   t        | |||fi |D ]  }|j                  d   |j                  j                  k(  r*|j                  j	                  |j                  d         }t        |d|dgi       t        |dd|gi       |dz  dk(  st        |d|dz  dgi       t        |dd|dz  gi        y w)Nr.   r   r   r   r   )r]  r   r   r   r   r   )r7  r   r   r   r   r  r   s          r   sample_inputs_unflattenr    s     317 G
 u%););)G)GG##L$7$7$>?\GaV+<==\GaV+<==q5A: !q&!/EFF !Q!V/EFFGs   BB>-B>c              +      K   t        | |||fi |D ]a  }| t        |ddi      }t        |j                         d|_        |j                  j                         dz   |j                  _        | c y w)Nr.   r   z: add dim to the endr   )r]  r   r   r   r   r.   r  )r7  r   r   r   r   r  last_dim_samples          r   sample_inputs_unsqueezer    s     317  (r{C_22344HI 	 '6&;&;&?&?&AA&E#s   A5A7c              +      K   t        | |||fi |D ]h  }|j                  d   }d|_        ||j                  d<   |j                  dkD  |j                  d<   |j                  j                  dd      |_        | j y w)Nr   r+   r  r  	condition(z(NT, )rD  r   r   r   r   r   )r7  r   r   r   r   r   r  s          r   sample_inputs_wherer    s     617  A!&g%+\\C%7k"kk))#w7s   A<A>)rI  )bmmr7   r   r:   fill)r   r   r~  zmvlgamma.mvlgamma_p_r   r  )znn.functional.embeddingnn.functional.embedding_bagznn.functional.linearznn.functional.preluznn.functional.rms_normznn.functional.thresholdr~  zpolygamma.polygamma_n_r  )z'special.polygamma.special_polygamma_n_0tor  masked_selectra   r   rV   rY   ro   ru   rv   rx   r   r   where)r$  )r  r7   r:   rV   rY   ra   ro   ru   rv   rx   r  r   r   c                    t        |       }d|_        t        j                  | j                  t                     |_        | j                  t        v rCt        | j                     |_        t        j                  | j                  t              |_        |S t        | t              r#t        t        d       |_        t        |_        |S t        | t               r#t        t"        d       |_        t        |_        |S t        | t$              r#t        t&        d       |_        t(        |_        |S t+        | j                        |_        t-        | j                        |_        d|_        |S )NTr  F)r   supports_njtextra_op_datar,  r   r   r  njt_sample_inputssample_inputs_funcnjt_referencesr"  refr   r   r   r9  r	   rD  r
   rO  r2  rX  r[  )r  new_ops     r   translate_opinfor    s$   "XFF)--bllKMJF	||(($5bll$C!#''6FG
( M' 
B	'$+/4%
! &
 M 
B	($+0D%
! &
 M 
B	($+,GSW$X!(
 M	 %C2<<$P!*2<<8
#Mr!   )FN)Tr   )TN)Sr`  r   dataclassesr   	functoolsr   typingr   r   %torch.fx.experimental.symbolic_shapesr   2torch.testing._internal.common_methods_invocationsr   #torch.testing._internal.opinfo.corer	   r
   r   r   torch.utils._pytreer   r   r   r
  r   r   r   r   stridedr   r)   r   r   r   r"  r%  r2  r9  rD  rO  rX  r[  r]  ri  rn  rr  rt  rv  rx  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  floatfromhex%sample_inputs_nn_functional_thresholdr  r  r  r  r  r  r  r   r  r  r  	njt_op_db)r  r  r  s   000r   <module>r     s     !    ? D  7 .5 .5 .5fG{gYK@G{gYK@G 
;%8* 56G kUG9-	G
 kUG9-G K8*.G K8*.G 
;%8* 56G {eWI.G K-G 
;%	*G [%	:G K%G +d+G [E7XJ*?@G  kUG9-!G" kUG9-#G$ {eWI.%G& kUG9-'G( K5';)G* +(8'9:+G, DVV4D3EF-G. [FF+;*<=/G0 vv.>-?@1G2 K5'+3G4 k$'5G6 T*7G8 {eWI.9G: ugY/;G< ugY/=G> wi0?G@ wi0AGB ugY/CGD {4K3K2LMEGF K9+/GGH kUG9-IGJ K%KGL wi0MGN +y1OGP +y1QGR wi8SGT wi8UGV wi8WGX wi8YGZ K5'3[G\ ugY/]G^ K5'3_G` {4FF;K:LMaGb +}=cGd [E7)4eGf +
|<gGh ;%	2iGj K5'3kGl ;%	2mGn ;%	2oGp [E7)4qGr [E7)4sGt ugY7uGv ;%	2wGx ;%	2yGz ;%	2{G| +y1}G~ +y1G@ +y1AGB kUG9=CGD kUG9-EGF K8*.GGH kUG9=IGJ K5'+KGL {]+k;K-LMMGR {hZL1SGT wi0UGV kXJ<0WGX k$5';YGZ ;%	2[G\ &{eWI'F]G^ wi8_G` {4I;-@aGb D)cGd K5'+eGf [&gGh K%iGj kUG9-kGl {4(mGn +d+oGp K9+/qGr [I;-0sGt {eWI.uGv ;%	2wGx ;%	:yGz ;%	:{G| ;%	:}G~ ;%	:G@ +y9AGB k$5';CGD kUG95EGF [%	:GGH [E7)4IGJ {eWI.KGL K5'+MGN [%	:OGP DUG9EQGR [E7)<SGT {4E7XJ2GHUGV K5'H:)>?WGX [E7),YGZ 
;(-[G\ K8*6]G^ 
;(-_G` T	"aGb KyAcGd 	{m4eGf K9+/gGh K5'+iGj Tff5E4FGkGl kVV,<+=>mGn wi0oGp [E7),qGr k$5';sGt TeWI>$;-A+85'35'3TeWI>!UG95(-8*6%4("40-MGV*<	  T%--u
5# 5'(Z\@(=(B 6:	P 6:Nl e
P 6:2W.
9



P
4ALLL.,	8G 6:Vz 6:

WB 6:)X'T$ $
N 
F: )0'!MM+6D) %E N /
dG$"	*   85Q JSSA	aS!#:Q#??S  E#L><BD NSSTXV	s#%>%CCV 0QST/U
"0"(99" 6$(( ; B 5N )115O 5O 5N  @  #H5R 5R7D> -22bb!2	w T Wh 3s   )`&`+`0