
    iAz             
       2   U d dl Z d dlZd dlZd dl d dlZd dlmc mZ d dl	m
Z
 d dlmZ ddlmZ g Zee   ed<   i Zeeef   ed<   d	 Zdd
Z	 	 	 ddZddZdeddfdZdededededdf
dZd Zd Zd Z e j>                  ee      Z de!dz  fdZ"d Z#d Z$d Z%d Z& e ejN                  jP                  jR                  jT                  ejN                  jP                  jV                  jT                  ejN                  jP                  jX                  jT                  ejN                  jP                  jZ                  jT                  ejN                  jP                  j\                  jT                  ejN                  jP                  j^                  jT                  ejN                  jP                  j`                  jT                  gd      d        Z1 e ejN                  jd                  jf                  jT                  d      d        Z4 e ejN                  jP                  jj                  jT                  gd      dd        Z6 e ejN                  jP                  jn                  jT                  d      d!        Z8  e ejN                  jP                  jn                  jr                  d"      e8        e ejN                  jP                  jt                  jT                  d"      d#        Z; e ejN                  jP                  jx                  jT                  d$      d%        Z= e ejN                  jP                  j|                  jT                  d&      d'        Z? e ejN                  jP                  j                  jT                  d(      d)        ZA e ejN                  jP                  j                  j                  d*      d+        ZD e ejN                  jP                  j                  jT                  d      d,        ZF e ejN                  jP                  j                  jT                  d-      d.        ZH  e ejN                  jP                  j                  jT                  d      e$        e ejN                  jP                  j                  jT                  ejN                  jP                  j                  jT                  ejN                  jP                  j                  jT                  ejN                  jP                  j                  jT                  ejN                  jP                  j                  jT                  gd      d/        ZO  e ejN                  jP                  j                  jT                  d0      eO         e ejN                  jP                  j                  jT                  d1      eO         e ejN                  jP                  j                  j                  d2      eO        e ejN                  jP                  j                  jT                  d      d3        ZT e ejN                  jP                  j                  jT                  d4      d5        ZV e ejN                  jP                  j                  jT                  d4      d6        ZX e ejN                  jP                  j                  jT                  d7      d8        ZZ e ejN                  jP                  j                  jT                  d9      d:        Z\ e ejN                  jP                  j                  jT                  d;      d<        Z^ e ejN                  jP                  j                  j                  d=      d>        Za e ejN                  jP                  j                  jT                  d?      d@        Zb e ejN                  jP                  j                  j                  dA      dB        Ze e ejN                  jP                  j                  jT                  dC      dD        Zg e ejN                  jP                  j                  jT                  dE      dF        Zh e ejN                  jP                  j                  jT                  dG      dH        Zj e ejN                  jP                  j                  j                  dI      dJ        Zm e ejN                  jP                  j                  jX                  dK      dL        Zo e ejN                  jP                  j                  jT                  dM      dN        Zq e ejN                  jP                  j                  jT                  dO      dP        Zs e ejN                  jP                  j                  jT                  dQ      dR        Zu e ejN                  jP                  j                  jT                  dS      dT        Zw e ejN                  jP                  j                  jT                  dU      dV        Zy e ejN                  jP                  j                  jT                  dW      dX        Z{ e ejN                  jP                  j                  jT                  dY      dZ        Z| e ejN                  jP                  j                  jT                  d[      d\        Z} e ejN                  jP                  j                  j                  d]      d^        Z e ejN                  jP                  j                  jT                  d_      d`        Z e ejN                  jP                  j                  jT                  d_      da        Z e ejN                  jP                  j
                  jT                  db      dc        Zdd Z e ejN                  jP                  j                  jT                  d?      de        Z e ejN                  jP                  j                  j                  df      dg        Z e ejN                  jP                  j                  j                  dh      di        Z e ejN                  jP                  j                  jT                  dj      dk        Z e ejN                  jP                  j                   jT                  ejN                  jP                  j"                  jT                  gdY      dl        Z e ejN                  jP                  j&                  jT                  dm      dn        Z e ejN                  jP                  j*                  jT                  do      dp        Z e ejN                  jP                  j.                  j                  dq      dr        Z e ejN                  jP                  j2                  j                  ds      dt        Z e ejN                  jP                  j6                  jT                  du       e ejN                  jP                  j8                  jT                  du      dv               Z e ejN                  jP                  j:                  jT                  dw      dx        Z e ejN                  jP                  j>                  jX                  df      dy        Z e ejN                  jP                  j>                  jT                  d?      dz        Z e ejN                  jP                  jD                  jF                  d{      d|        Z e ejN                  jP                  jD                  jX                  d}      d~        Z e ejN                  jP                  jL                  jF                  d{      d        Z e ejN                  jP                  jL                  jX                  d}      d        Z e ejN                  jP                  jL                  jT                  ejN                  jP                  jD                  jT                  ejN                  jP                  jR                  jT                  ejN                  jP                  jT                  jT                  gd      d        Z e ejN                  jP                  jX                  jT                  ejN                  jP                  jZ                  jT                  gd      d        Z e ejN                  jP                  jT                  jX                  d}      d        Z e ejN                  jP                  jR                  jX                  d}      d        Z e ejN                  jP                  jb                  jT                  d{      d        Z e ejN                  jP                  jf                  jT                  d{      d        Z e ejN                  jP                  jj                  jT                  d{      d        Z e ejN                  jP                  jn                  jT                  d{      d        Z e ejN                  jP                  jr                  jT                  d      d        Z e ejN                  jP                  jv                  jT                  dO      d        Z e ejN                  jP                  jz                  jT                  d      d        Z e ejN                  jP                  j~                  jT                  d      d        Z e ejN                  jP                  j                  jT                  ejN                  jP                  j                  jT                  gd      d        Z e ejN                  jP                  jL                  jT                  d      d        Z e ejN                  jP                  j                  jT                  d      d        Z e ejN                  jP                  j                  jT                  d      d        Z e ejN                  jP                  j                  jT                  d      d        Z e ejN                  jP                  j                  jT                  d      d        Z e ejN                  jP                  j                  jT                  d      d        Z e ejN                  jP                  j                  jT                  d      d        Z e ejN                  jP                  j                  jT                  d      d        Z e ejN                  jP                  j                  jT                  d      d        Z e ejN                  jP                  j                  jT                  d      d        Z e ejN                  jP                  j                  jT                  d      d        Z e ejN                  jP                  j                  jT                  d      dd       Z e ejN                  jP                  j                  jT                  ejN                  jP                  j                  jT                  ejN                  jP                  j                  jT                  gd      d        Z e ejN                  jP                  j                  jT                  ejN                  jP                  j                  jT                  ejN                  jP                  j                  jT                  ejN                  jP                  j                  jT                  ejN                  jP                  j                  jT                  ejN                  jP                  j                  jT                  gd      d        Z e ejN                  jP                  j                  j                  d      d        Z e ejN                  jP                  j                  j                  d      d        Z e ejN                  jP                  j                  j                  d      d        Z e ejN                  jP                  j                  jT                  d      d        Z e ejN                  jP                  j                  jT                  d      d        Zej                  j                  dd      5 Z(e(j                  ded       e(j                  ded       e(j                  ded       ddd       y# 1 sw Y   yxY w)    N)*)normalize_function)#jagged_scaled_dot_product_attention   NestedTensor__all__JAGGED_OPS_TABLEc                 h   | j                   rC|dk(  rt        j                  |       j                  S t        j                  |       j                  S | t        j
                  k(  rd}| }|dk(  r|S |S |dk(  rt        j                  |       j                  S t        j                  |       j                  S )Nmaxl    )is_floating_pointtorchfinfor   minint64iinfo)dtypepadding_typeint64_safe_maxint64_safe_mins       T/var/www/html/engine/venv/lib/python3.12/site-packages/torch/nested/_internal/ops.py_get_padding_valuer      s    &2e&;EKK""	
AFUASAWAW	
 
%++	 '(!-!6~JNJ '3e&;EKK""	
AFUASAWAW	
    c                     ddl m} t        |t        t        f      r? t        |       fd|D              } t        |      t        j                  |            S |r	 | |      }|dk\  r| k  sJ |dk(  rdz
  S |dz
  S )Nr   canonicalize_dimsc              3   8   K   | ]  }t        |        y wN_outer_to_inner_dim).0dndim
ragged_dims     r   	<genexpr>z&_outer_to_inner_dim.<locals>.<genexpr>)   s     Q.tQ
CQ   r   )torch._prims_commonr   
isinstancetuplelisttypedictfromkeys)r#   dimr$   canonicalizer   outputs   ` `   r   r    r    %   s    5#t}%cQSQQtF|DMM&122c*!8d
"" (
Q(+ar   c                     ddl m}  || |      }||k(  r|st        | d      |dk(  r|st        | d      |rt        | ||      n|}	|r	|dk(  }
|	|
fS |	S )Nr   r   z0(): not supported for NestedTensor on ragged dimz+(): not supported for NestedTensor on dim=0)r'   r   RuntimeErrorr    )r#   r.   r$   op_nameconvert_to_inner_dimallow_ragged_dimallow_batch_dimr   wrappedretoperating_on_batchs              r   _wrap_jagged_dimr:   :   s     6c*G*%5gY&VWXX	AogY&QRSS   	D':6 
  %\'((Jr   c                 .    ddl m} t        |t        t        f      sJ dt        |              |D cg c]  } | |       }}d|v }|v }t        fd|D              }	t        t        j                   fd|D                    }
|
|||	fS c c}w )z
    For NestedTensor operators,
    wraps dimensions to non-negative values,
    and returns metadata related to reduction dimension(s).
    r   r   z<_wrap_jagged_dims(): cannot iterate over dimensions of type c              3   6   K   | ]  }|d k7  xr |k7    yw)r   N )r!   r"   
ragged_idxs     r   r%   z$_wrap_jagged_dims.<locals>.<genexpr>i   s!     PaqAv9!z/9Ps   c              3   8   K   | ]  }t        |        y wr   r   )r!   r"   r#   r>   s     r   r%   z$_wrap_jagged_dims.<locals>.<genexpr>m   s     U1)$:>Ur&   )	r'   r   r(   r)   r*   r+   anyr,   r-   )r#   dimsr3   r>   r   r"   wrapped_dimsoperate_on_batchoperate_on_raggedoperate_on_non_batchouter_to_inner_dims   `  `       r   _wrap_jagged_dimsrG   W   s     6dUDM* 
FtDzlS*
 -1'($"L  L("l2P<PP UUU /1BDXXXs   B
schema_strreturnc                    | j                  d      }|D cg c]  }|j                  d       c}j                  d      }t        |      |z
  }|d   dk(  r|d d }n\t        |      |k\  rt        |      t        |      k  s7t	        d|j
                   d|  d| d	t        |       d
t        |       d      d d d d d}t        |      D ]  \  }	}
|
j                  d      \  }}|j                  d      }|r|d d n|}||vrt        d|       |	t        |      k\  r!|st	        d|j
                   d|  d|       u||   |ffd	} |||	         rdddddd}t	        d|j
                   d|  d| d||           y c c}w )N, ?T...NestedTensor (z): expected at least z arguments and at most z arguments, but got: z
 argumentsc                 \    t        | t        j                        xr t        | t               S r   )r(   r   Tensorr   xs    r   <lambda>zcheck_schema.<locals>.<lambda>   s     z!U\\2V:a;V7V r   c                 d    t        | t              xr | j                  d u xr | j                  dk(  S Nr   )r(   r   _lengths_ragged_idxrS   s    r   rU   zcheck_schema.<locals>.<lambda>   s2    
1l3 JJ$MMQ r   c                 "    t        | t              S r   r(   r   rS   s    r   rU   zcheck_schema.<locals>.<lambda>   s    J|
 r   c                      y)NTr=   rS   s    r   rU   zcheck_schema.<locals>.<lambda>       r   )tjtjt_allr@   z: zUnknown arg type: z) missing required argument: c                 4    |r| d u xs  |       S  |       S r   r=   )rT   is_optional	_check_fns     r   check_fnzcheck_schema.<locals>.check_fn   s#    Dy0IaL0 |#r   tensorzoptional tensorz%contiguous jagged layout NestedTensorzjagged layout NestedTensorz
<any type>)r^   zt?r_   r`   r@   z): expected z	 to be a )splitendswithcountlen
ValueError__name__	enumerateAssertionError)rH   funcargskwargsnamed_arg_typesrT   num_optional_argsmin_argsarg_type_check_fnsinamed_arg_typenamearg_typerb   normalized_arg_typerd   type_to_descrc   s                    @r   check_schemar{   s   s
    &&t,O2ABQCBHHN?#&77H re#)#2.D	X%#d)s?7K*Ka
|;PQYPZ [)),_)=(>>St9+Z)  W
 	 '7 #>'--d3h'',/:hsm&88 #56I5J!KLLD	> #DMM?!J< @2269  &':;	$/ 	$ Q '=6#L a
|<vY)*, A#1 Cs   F
aa_namebb_namec           	          |j                   |j                     |j                   |j                     k7  rt        d| j                   d| d| d      y )NrO   z: expected  and z' to have the same exact offsets tensor.)_sizerY   r2   rk   )rn   r|   r}   r~   r   s        r   check_ragged_dim_samer      sZ     	wwq}}!77DMM?+fXU6( K) )
 	
 8r   c                     | j                   dz   }| j                  d | }|d | }t        |      t        |      k(  xr t        d t	        ||      D              S )Nr   c              3   :   K   | ]  \  }}||k(  xs |d k(    yw)rM   Nr=   )r!   nsss      r   r%   z%raggedness_matches.<locals>.<genexpr>   s$     H52qB!GqBwHs   )rY   r   ri   allzip)ntsizeend	nt_raggedsize_raggeds        r   raggedness_matchesr      sZ    
..1
C#It*Ky>S-- HC	;,GHHr   c                     | j                         dkD  rI| j                  d   dk(  r7| j                  d      } | j                         dkD  r| j                  d   dk(  r7| S Nr   r   )r.   shapesqueeze)r^   s    r   squeeze_leading_onesr      sN    & %%'A+!''!*/IIaL %%'A+!''!*/Hr   c                 f     t        t              sgt         t              s g  fd}|S )Nc                 H     D ]  } fd}D ]  } ||      ||<      S )Nc                       fd}|S )Nc                  <    t        g| i |  g| i |S r   )r{   )ro   rp   aten_oprn   rH   s     r   innerz@register_func.<locals>.wrapper.<locals>.get_inner.<locals>.inner   s,     TCDCFC9$9&99r   r=   )r   r   rn   rH   s   ` r   	get_innerz1register_func.<locals>.wrapper.<locals>.get_inner   s    : r   r=   )rn   r   r   tableaten_opsrH   tabless   `   r   wrapperzregister_func.<locals>.wrapper   s=     
	4G   4!*7!3g4
	4 r   )r(   r*   )r   r   rH   r   s   ``` r   register_funcr      s1    h%:fd# Nr   c                    t         j                  | d       }||S t        j                  j                  | j
                  v rAddlm} |D ]%  } ||      st        d| j                   d|        t        d |D              }|dk(  rg }| j                  j                  D ]d  }t        |j                  t        j                        r |j!                  |j"                   d        n |j!                  |j"                   d       f |j!                  d	       d
j%                  |      }t'        || g|i | t)        j*                  t,        |       S |dk(  r*t'        d| g|i | t)        j*                  t.        |       S y )Nr   is_nested_intrO   z: invalid argument c              3   P   K   | ]  }t        |t        j                           y wr   )r(   r   rR   )r!   rT   s     r   r%   z lookup_jagged.<locals>.<genexpr>  s     HajELL9Hs   $&r   z: jt_allz: anyrN   rK      zlhs: any, rhs: any, ...)r
   getr   Tag	pointwisetags%torch.fx.experimental.symbolic_shapesr   r2   rk   sum_schema	argumentsr(   r+   
TensorTypeappendrw   joinr{   	functoolspartialjagged_unary_pointwisejagged_binary_pointwise)	rn   ro   rp   dispatch_funcr   argnum_tensor_argsschema_partscheck_schema_strs	            r   lookup_jaggedr      su   $((t4M  yydii'G
  	CS!"#DMM?2EcUK 	 H4HHa L||-- <chh(8(89 ''388*H(=> ''388*E(:;< &#yy6)4A$A&A$$%;TBB!2DJ4J6J$$%<dCCr   c                 t    | j                         | j                         | j                  | j                  d}|S )Noffsetslengths_metadata_cacherY   r   )r   rp   s     r   extract_kwargsr   $  s2    ;;=;;=..	F Mr   c                 p    t        d |D              t         | fd|D        i |fi t              S )Nc              3   B   K   | ]  }t        |t              s|  y wr   r[   r!   r   s     r   r%   z)jagged_unary_pointwise.<locals>.<genexpr>0  s     Dsjl&CsD   c              3   B   K   | ]  }|u r|j                   n|  y wr   )_values)r!   r   njts     r   r%   z)jagged_unary_pointwise.<locals>.<genexpr>2  s      BccSjs{{c1Bs   nextr   r   )rn   ro   rp   r   s      @r   r   r   .  s@    
DdD
DCBTBMfM

 r   c                 Z   |d   |d   }}t        |t              st        |t              sJ d}t        |t              rt        |t              rt        ||j                        r7t         | |j                  |j                  g|dd  i |fi t        |      S t        |j                  | j                  |j                  |j                              t        |t              }|rt        |      n
t        |      }|r||fn||f\  }}	|	j                         |j                         kD  rt        d      t        |	      }
|j                         |
j                         dz   k\  r;|r|j                  |
fn|
|j                  f\  }}t         | ||g|dd  i |fi |S |j                         |j                         k(  r*|j                  d   |j                  d   k7  r:t        |j                  | j                  |j                  |j                              ddlm} |j                  }|j                   }|}|j                  j                  |j"                  dz
     }||}|	j%                  t'        |	j                        D cg c]  \  }}||j"                  k7  r|n| c}}      }	 ||	|j(                  |j"                  |||      }|r||fn||f\  }} | ||g|dd  i |S t        |j                  | j                  |j                  |j                              c c}}w )Nr   r   zHcannot call binary pointwise function {} with inputs of shapes {} and {}r   z+NYI: broadcasting NT with T with larger dimnested_from_paddedr   r>   sum_S
min_seqlen
max_seqlen)r(   r   r   r   r   r   r2   formatrk   r.   NotImplementedErrorr   r   nested_tensorr   _maybe_min_seqlen_maybe_max_seqlenrY   expandrl   _offsets)rn   ro   rp   r|   r~   mismatch_error_msga_is_ntextracted_kwargsr   r^   
t_squeezedlhsrhsr   r   r   padded_max_Stotal_Lru   rT   t_as_nts                        r   r   r   7  s   7DGqAa&*Q*EEE 	S  !\"z!\'B a)QYY		?DH??CQRSCT  -44T]]AGGQWWUVVL)G,3~a(9J QFAq6EBuuw!"OPP%a(J	vvx:>>#a''/6BJJ
+Z<TSDc?DH??TCSTT 	uuw!%%' 771:#"))$--!''J  	6 ))
))
!**""2>>A#56"L HHDMaggDVWDAq!r~~%Q<7W
 %KK~~!!
 %,B='2SC2tABx2622 )00Q
RR# Xs   	L'
c                     | t         j                  j                  j                  u rt	        |i |S | j
                  dk(  r! | |d   j                  g|dd  i | |d   S | j
                  dk(  rddd}t        |||d      \  }}|j                  d      }t        |j                         |d	   |j                  dd
      }t        |j                         |d   |j                  dd
      }||k(  r|S t        j                  t        j                  |j                   ||dz          }	g |j                   d | |	|j                   |dz   d  }
 |j"                  |
 S | j
                  dk(  rw|d   j$                  rS j'                         \  }}t         j                  j)                         5  |D ]"  }t+        |d       }||j-                          $ 	 d d d        S | j
                  dk(  r<|d   j$                  ry
j'                         \  }}|sy
t/        fd|D              S | j
                  dk(  rddd}t        |||d      \  }}|j                  d      }|j                  d      }|j                         |j                  z
  dz
  }t1        |      |kD  rt3        d      t         j                  j)                         5   | |i |cd d d        S t5        |       # 1 sw Y   S xY w# 1 sw Y   t5        |       xY w)Napply_r   r   flattenc                      y r   r=   )input	start_dimend_dims      r   _flatten_sigz+jagged_torch_function.<locals>._flatten_sig      r   Tro   rp   normalize_to_only_use_kwargsr   r   F)r4   r   share_memory_	is_sharedc              3   r   K   | ].  }t        |      d uxr t        |      j                          0 y wr   )getattrr   )r!   rw   r   s     r   r%   z(jagged_torch_function.<locals>.<genexpr>  s=      
 BT)Kgb$.?.I.I.KK
s   47rms_normc                      y r   r=   )r   normalized_shapeweightepss       r   _rms_norm_sigz,jagged_torch_function.<locals>._rms_norm_sig  r   r   r   zNrms_norm(): Normalization over the ragged dim not supported for nested tensors)r   rM   rI   NNN)r   _C_nnscaled_dot_product_attentionr   rk   r   r   popr:   r.   rY   r   reduceoperatormulr   reshapeis_cuda__tensor_flatten__DisableTorchFunctionSubclassr   r   r   ri   rj   r   )rn   ro   rp   r   _
new_kwargsinpr   r   product	new_shapenamesrw   	componentr   r   max_normalizabler   s                    @r   jagged_torch_functionr    s"    uxx||8882DCFCC}} T!W__2tABx262Aw }}	!	 +tFQU
: nnW% %GGI{#OO!&
	 #GGIy!OO!&
 J""8<<9wQR{1STPcii
+PWPsyy17OP	s{{I&& }}'!W::I((*qXX224 	. .#Bd3	(++-.	.
 	 }}#!W::((*q 

 
 	
 }}
"	 +VRV
: nnW%%>>*<= 779s6: #33`  XX224 	)((	) 	) d
##[	.
 	J	) d
##s   3K-	K-K:-K7:Lzself: jt_allc                 .   | t         j                  j                  j                  j                  u ry| t         j                  j                  j
                  j                  u r|d   j                  S | t         j                  j                  j                  j                  u rt        |d   j                        S | t         j                  j                  j                  j                  t         j                  j                  j                  j                  fv rs|d   j                  Gt        t        |d   j                        t        j                  |d   j                  dd        z        S |d   j                   j                         S | t         j                  j                  j"                  j                  u r|d   j$                  S | t         j                  j                  j&                  j                  u r|d   j                   j)                         S y )NFr   r   )r   opsatenis_non_overlapping_and_densedefaultsym_sizer   r.   ri   	sym_numelnumelrX   intr   mathprodr   
sym_stride_stridessym_storage_offsetstorage_offsetrn   ro   rp   s      r   tensor_attr_supported_getterr    ss    uyy~~::BBBuyy~~&&...Aw}}uyy~~!!)))47==!!		((00%))..2F2F2N2NOO7's47++,tyyaqr9J/KKLLAw$$&&uyy~~((000Awuyy~~00888Aw--// 9r   c                 "    t         j                  S r   )r   jaggedr  s      r   prim_layout_defaultr    s    <<r   c                 z    | t         j                  j                  j                  j                  u rt        d      y )NznNestedTensor does not support directly calling torch.ops.aten.size; please use `nested_tensor.size()` instead.)r   r  r  r   r  r2   r  s      r   tensor_attr_unsupported_getterr!    s7    
 uyy~~""***9
 	
 +r   c                    ddl m} t        | ||d      \  }}|j                  d      }|j	                         y|j                  dt        j                        |d<   |d   t        j                  k(  ry ||j                  fi |S )Nr   )is_contiguous_for_memory_formatTr   r   Fmemory_format)
r'   r#  r   r   r   r   r   contiguous_formatpreserve_formatr   )rn   ro   rp   r#  r  r  r  s          r   is_contiguous_generalr'    s    C&4TMAz ..
!C {{} ",..00#J /"e&;&;;*3;;E*EEr   z!self: jt_all, memory_format: any?c                 Z   t        | ||d      \  }}|j                  d      }|j                         y|j                  dt        j
                        |d<   |d   t        j                  k(  ryt	        j                  j                  j                  j                  |j                  fi |S )NTr   r   Fr$  )r   r   r   r   r   r%  r&  r  r  sym_is_contiguousr  r   rn   ro   rp   r  r  r  s         r   sym_is_contiguous_generalr+  8  s     '4TMAz ..
!C {{} ",..00#J /"e&;&;;99>>++33CKKN:NNr   z"input: jt_all, memory_format: any?c                 N   t        | ||d      \  }}|j                  d      }t        |      }|j                  O|d   t        j
                  k(  r9ddlm} |j                  dk(  sJ d        ||j                         d       \  }}|S t         | |j                  fi |fi |S )	NTr   r   r$  r   )jagged_from_listz;NJT with ragged_idx != 1 not supported for contiguous clone)r   )r   r   r   rX   r   r%  r   r-  rY   unbindr   r   )	rn   ro   rp   r  r  r  new_metar-  contigs	            r   clone_defaultr1  O  s     '4TMAz ..
!Cc"H
||o&%*A*AA 8 ??a' M' )tDIFAMS[[7J7D8DDr   zinput: jt, weight: t, bias: t?c                     t        | ||d      \  }}|j                  d      }t         | |j                  fi |fi t	        |      S NTr   r   r   r   r   r   r   r*  s         r   linear_defaultr5  k  L    &4TMAz ..
!CS[[7J7O>#;NOOr   z6self: jt, grad_output: jt, weight: t, output_mask: anyc                 4   t        | ||d      \  }}|j                  d      }|j                  d      }|j                  d      }|j                  d      }d\  }	}
}t        | |d|d       |d	   r3t        t	        j
                  |j                  |      fi t        |      }	|d
   rz|j                  j                  d|j                  d	            }|j                  j                  d|j                  d
            }t	        j
                  |j                         |      }
|d   rmt        t        |j                  j                  d
z
              }|dk(  r|j                  j                         }n"t	        j                  |j                  |d      }|	|
|fS )NTr   r   grad_outputr   output_mask)NNNselfr   r   rM   r   r=   F)keepdim)r   r   r   r   r   matmulr   r   r   r   r^   r)   ranger#   cloner   )rn   ro   rp   r  r  r  r8  r   r9  dsdwdbgrad_2dinput_2dreduce_dimss                  r   linear_backward_defaultrE  v  sj   
 '4TMAz ..
!C../K^^H%F../K!JBB$V[-H1~LL,,f5
9G9T
 1~ %%--b&++a.A;;&&r6;;q>:\\'))+x01~ E+"5"5":":Q">?@"$$**,B;..UKBB<r   zinput: jt_all, dtype: anyc                     t        | ||d      \  }}|j                  d      }t         | |j                  fi |fi t	        |      S r3  r4  r*  s         r   to_dtyperG    r6  r   c                 v   ddl m} t        | ||d      \  }}|j                  d      }|j                  d        | |j                  fi |}|j
                  j                  |j                        }d }	|j                  &|j                  j                  |j                        }	dd	l	m
}
 dd
lm}m} |j                  |j
                  n|j                  }|	|n|	}t        ||
|f      r" ||      } ||      }|j                  |_        n||   ||<   t!        |      }||d<   |	|d<   t#        |fi |}|S )Nr   _tensor_symint_registryTr   r   layoutdevicer   
FakeTensorFunctionalTensormb_unwrap_functional_tensorr   r   )r   rJ  r   r   r   r   torM  rX   torch._subclasses.fake_tensorrO  #torch._subclasses.functional_tensorrQ  rR  r(   nested_int_memor   r   )rn   ro   rp   rJ  r  r  r  
new_valuesnew_offsetsnew_lengthsrO  rQ  rR  ragged_source	new_thingtgtsrc
inp_kwargsr0   s                      r   to_copy_defaultr_    s0   6&4TMAz ..
!CNN8ckk0Z0J,,//):):/;KK
||llooZ->->o?8
 %(LL$8CLLcllM*2I)j*:;<))4)-8!11-D]-S	*$J'Jy'Jy*3
3FMr   z-self: jt_all, src: jt_all, non_blocking: any?c                 @   t        | ||d      \  }}|j                  d      }|j                  d      }|j                  |j                  k7  r|j                         }|D cg c]  }|j                   }	}|j                         }
|
D cg c]  }|j                   }}|	|k7  r%t        d|j                   d|j                         t        ||
      D ]  \  }}|j                  |        |j                  j                  |j                         |S c c}w c c}w )NTr   r   r]  z<copy_(): expected compatible input and src shapes, but got: r   )	r   r   r   r.  r   r2   r   copy_r   )rn   ro   rp   r  r  r  r]  	inp_compscinp_comp_shapes	src_compssrc_comp_shapesinp_compsrc_comps                 r   copy_defaultri    s    '4TMAz ..
!C
..
C
yyCII JJL	,56q17766JJL	,56q17766o-N99+U399+/  #&i"; 	%HhNN8$	% KKckk"J! 76s   "DDc                    t        | ||d      \  }}|j                  d      }t        j                  |d<    | |j                  fi |}|j
                  j                  |j                        }d }|j                  &|j                  j                  |j                        }t        |      }	d|	v r||	d<   d|	v r||	d<   |j                  |j                  k7  rvdd	l
m}
 dd
lm}m} ddlm} |j                  |j
                  n|j                  }||n|}t#        ||
|f      r" ||      } ||      }|j$                  |_        n||   ||<   t'        |fi |	S )NTr   r   rK  rL  r   r   r   rN  rP  r   rI  )r   r   r   stridedr   r   rS  rM  rX   r   rT  rO  rU  rQ  rR  r   rJ  r(   rV  r   )rn   ro   rp   r  r  r  rW  rX  rY  output_kwargsrO  rQ  rR  rJ  rZ  r[  r\  r]  s                     r   like_factory_defaultrm    sV    '4TMAz ..
!C
 !==Jxckk0Z0J,,//):):/;KK
||llooZ->->o?"3'MM!#.i M!#.i 
zzZ&&& 	=	

 	;(+(<#,,#.#6KK	i*.>!?@-i8C-m<C"%"5"5C1H1W#I.
4m44r   zself: jt_all, fill_value: anyzself: jt_all, high: anyz!self: jt_all, low: any, high: anyc                 p    t        | ||d      \  }}|j                  d      } | |j                         |S r3  r   r   r   r*  s         r   zero__defaultrp  >  s:    &4TMAz ..
!CJr   z*self: jt_all, dim: any, half_to_float: anyc           
      H   t        | ||d      \  }}t        |d   t              rt        d      |j	                  d      }t        |j                         |d   fd|j                        \  |d<   }}}|rt        d      |r|j                  dkD  rt        d	      |r|j                  t        d
      |d   d   |d<   |r:t        j                  j                  j                  t        j                  j                  j                  |j                   j#                  |j                   j$                  d   d      |j&                  g|j(                  gt+        d            |j                        }	t        j                  j                  j-                  |	|j&                  g|j                   j$                  d         j"                  dg|j                   j$                  dd   }
t/        |
fi t1        |      S t/         | |j                   fi |fi t1        |      S )NTr   r.   zHsoftmax(): not supported for dimensions of type 'tuple' for NestedTensorr   softmaxzRsoftmax(): not supported when reducing across the batch dimension for NestedTensorr   zesoftmax(): not supported when reducing along the ragged dimension for ragged_idx > 1 for NestedTensorzksoftmax(): not supported where lengths is not None if reducing across the ragged dimension for NestedTensorr   rM   z-inf)max_lengthspadding_valuer.   r   )r   r(   r)   r2   r   rG   r.   rY   rX   r   nn
functionalrr  r  r  _jagged_to_padded_dense_forwardr   r   r   r   _max_seqlenfloat_padded_dense_to_jagged_forwardr   r   )rn   ro   rp   r  r  r  reduce_on_batchreduce_on_ragged_reduce_on_non_batchpadded_softmax_valuessoftmax_valuess              r   _softmax_defaultr  I  s)    '4TMAz *U#U+V
 	
 ..
!C 			E			5 `
 	
 COOa/s
 	
 CLL4I
 	

 #5)	Ju  % 3 3 ; ;IINN::##KK%%a("  __-#Fm ;   !< 
!
 GG!\\NKK%% H 
 '
 ""12&
 NBnS.ABBS[[7J7O>#;NOOr   c                 ~   t        | ||d      \  }}t        |d   t              rt        d      |j	                  d      }t        |j                         |d   fd|j                        \  |d<   }}}|rt        d      |rt        d      |d   d	   |d<   t         | |j                  fi |fi t        |      S )
NTr   r.   zLlog_softmax(): not supported for dimensions of type 'tuple' for NestedTensorr   log_softmaxzVlog_softmax(): not supported when reducing across the batch dimension for NestedTensorzVlog_softmax(): not supported when reducing along the ragged dimension for NestedTensorr   )r   r(   r)   r2   r   rG   r.   rY   r   r   r   )	rn   ro   rp   r  r  r  r}  r~  r  s	            r   _log_softmax_defaultr    s     '4TMAz *U#U+Z
 	
 ..
!C 		Ju%'	5
 d
 	
 d
 	

 #5)!,JuS[[7J7O>#;NOOr   z7grad_output: jt, output: jt, dim: any, input_dtype: anyc                     t        | ||d      \  }}|j                  d      }|j                  d      }t         | |j                  |j                  fi |fi t	        |      S )NTr   r8  r0   r4  )rn   ro   rp   r  r  grad_outr0   s          r   _softmax_backwardr    sl    
 '4TMAz ~~m,H^^H%FXv~~<<@Nx@X r   z!self: jt, float: any, train: any?c                     t        | ||d      \  }}|j                  d      } | |j                  fi |\  }}t        |fi t	        |      t        |fi t	        |      fS r3  r   r   r   r   r   )rn   ro   rp   r  r  r  out1out2s           r   native_dropout_defaultr    sp     '4TMAz ..
!Cckk0Z0JD$T1^C01T1^C01 r   z%grad_output: jt, mask: jt, scale: anyc                     t        | ||d      \  }}|j                  d      }|j                  d      }t         | |j                  |j                  fi |fi t	        |      S )NTr   r8  maskr4  )rn   ro   rp   r  r  r8  r  s          r   native_dropout_backward_defaultr    sl    
 '4TMAz ../K>>&!D[  $,,=*=

% r   z2self: jt_all, dim: any, keepdim: any?, dtype: any?c                 $    t        | ddg|i |S )Nr  r   _apply_reductionr  s      r   prod_dim_intr    s    
 D&!=d=f==r   zself: jt_all, dtype: any?c                 n    t        | ||d      \  }}|j                  d      } | |j                  fi |S r3  ro  r*  s         r   prod_defaultr    =    &4TMAz ..
!C*z**r   z$self: jt, split_size: any, dim: any?c                     t        | ||d      \  }}|j                  d      t        j                         |d   j                  d      |d<   t        fd | j                  fi |D              S )NTr   r   r.   rf   c              3   J   K   | ]  }t        dd |it                yw)valuesNr=   )r   r   )r!   rT   r  s     r   r%   zsplit_tensor.<locals>.<genexpr>  s+       	5A5!45s    #)r   r   r:   r.   rY   r)   r   r*  s        @r   split_tensorr    s}     '4TMAz ..
!C(	:e$coowJu  ckk0Z0  r   z%self: jt, split_sizes: any, dim: any?c           
         t        | ||d      \  }}|j                  d      }t        |j                         |d   |j                  d      |d<    | |j
                  fi |D cg c]  }t        dd|it        |       c}S c c}w )NTr   r   r.   split_with_sizesr  r=   r   r   r:   r.   rY   r   r   r   )rn   ro   rp   r  r  r  rT   s          r   split_with_sizes_defaultr    s     '4TMAz ..
!C(	:e$coo7IJu ckk0Z0 	5A5!45  s   %Bz+self: jt, dim: any, start: any, length: anyc                     t        | ||d      \  }}|j                  d      }t        |j                         |d   |j                  d      } | |j
                  ||d   |d         }t        |fi t        |      S )	NTr   r   r.   narrowstartlengthr.   r  r  r  )rn   ro   rp   r  r  r  r.   r  s           r   r  r  &  s     '4TMAz ..
!C
3779j&7(
SC!(#	F 6."566r   z self: jt, chunks: any, dim: any?c           
      r   t        | ||d      \  }}|j                  d      }t        |j                         |d   |j                  dd      \  |d<   }|r|d   }|j
                  j                         }|j                  |      }	|	D 
cg c]  }
t        j                  |
d	       }}
|D 
cg c]  }
t        j                  |
d
d       }}
|D cg c]  }||j                  d }}|	D 
cg c]   }
|
j                         j                         " }}
|j                  j                  |      }t!        t#        |            D cg c]  }t%        dd||   i||    c}S  | |j                  fi |D 
cg c]  }
t%        dd|
it'        |       c}
S c c}
w c c}
w c c}w c c}
w c c}w c c}
w )NTr   r   r.   chunkr6   chunksr   ru  r   r   )value)r   rY   r  r=   )r   r   r:   r.   rY   r   diffr  r   cumsumFpadr   itemr   rf   r=  ri   r   r   )rn   ro   rp   r  r  r  r9   r  r   chunked_lengthsrT   chunked_offsetsper_offsetsnested_kwargssplit_sizeschunk_valuesru   s                    r   chunk_defaultr  9  s   &4TMAz ..
!C,<	:e$coowPT-)Ju) H% ,,##%!--/;JKa5<<q1KK>MN155F!4NN  /
 $COOD
 
 0??!quuw||~??{{((5 3|,-
 FQFM!4DF
 	
 #++44
 99^C%89
 	
% LN
 @



s$   F0F F%1%F*	F/;F4zself: jt_all, dim: any?c           
         t        | ||d      \  }}|d   }|dk7  rt        d      |j                  d      }|j                         |j	                         }|j                         }|j                  ddt        t           dt        t           d z  d	d ffd
}	|A|j                         j                         }
 |	|
       t        j                  |
dz
        S dk  rt        d      |j                         }
|j                         } |	|
|       t        |j                  d         D cg c]$  }t        j                  dz
  ||   |
|         & c}S c c}w )NTr   r.   r   z2unbind(): only supported for NestedTensor on dim=0r   rX   r   rI   c                    d}j                   dz
     }t        t        |             D ]f  }t        j                  | |   dk\         t        j                  | |   |k         || |   z  }|Dt        j                  ||   | |   z   |k  d        h t        j                  ||k         |Pt        t        |            D ]8  }t        j                  ||   dk\         t        j                  ||   |k         : y y )Nr   r   c                       y)NzMunbind(): nested tensor offsets and lengths do not match ragged_idx dimensionr=   r=   r   r   rU   z2unbind_int.<locals>._torch_check.<locals>.<lambda>  r]   r   )r   r=  ri   r   _check)rX   r   lengths_sumragged_dim_sizeru   r>   r  s        r   _torch_checkz unbind_int.<locals>._torch_checkt  s      ,,zA~6s8}% 		ALL!)*LL!788A;&K#QK(1+-@k		 	[O343x=) =Xa[A-.Xa[O;<=  r   r   ru  zAunbind(): nested tensor ragged_idx out of bounds (should be >= 1)r  r   )r   r2   r   r  r   r   rY   r*   r  r  tolistr   rf   r=  r   r  )rn   ro   rp   r  r  r.   r  r   r   r  lengths_scalarsoffsets_scalarsru   r>   r  s                @@r   
unbind_intr  c  se    '4TMAz U
C
axOPP
..
!CZZ\FkkmGkkmGJ=tCy =DI4D =PT =: !,,.//1_%{{6?aIIQO
 	
 nn&Onn&O/2 w}}Q'(  	a!!$"1%		
  s   4)E zself: jt, dim: anyc                     t        | ||d      \  }}|j                  d      }|j                  }t        t	        |j
                        |d   |j                  d      |d<   t         | |fi |fi t        |      S )NTr   r   r.   r   )	r   r   r   r:   ri   r   rY   r   r   )rn   ro   rp   r  r  r  r  s          r   squeeze_dimr    s|    &4TMAz ..
!C[[F(CII
5)3??IJu V2z2JnS6IJJr   zself: jt_all, dim: anyc                 P   t        | ||d      \  }}|j                  d      }|j                  }|d   }t        t	        |j
                        dz   ||j                  dd      |d<   t        |      }|d   |j                  dz
  k  r|dxx   dz  cc<   t         | |fi |fi |S )	NTr   r   r.   r   	unsqueeze)r5   rY   )	r   r   r   r:   ri   r   rY   r   r   )	rn   ro   rp   r  r  r  r  r.   rl  s	            r   unsqueeze_defaultr    s    &4TMAz ..
!C[[F U
C(CIIC+PTJu
 #3'M%COOa//m$)$V2z2DmDDr   ztensors: any, dim: any?c                    t        | ||d      \  }}|j                  d      }|D cg c]  }|j                  s| }}t        |      dkD  sJ |d   }|D cg c]!  }|j                  r|n|j	                  |      # }}|d   }	t        t        |j                        |	|j                  d      |d<   t         | |D cg c]  }|j                   c}fi |fi t        |d         S c c}w c c}w c c}w )NTr   tensorsr   r.   cat)r   r   	is_nestedri   	expand_asr:   r   rY   r   r   r   )
rn   ro   rp   r  r  r  r^   nestedfirstr.   s
             r   cat_defaultr    s   &4TMAz nnY'G !0AAKKa0F0v;??1IEAHIAAKKqQ[[%77IGI U
C(EKK#u00%Ju )Aaii)8Z8<J7ST:<V  1 J *s   C+C+&C0?C5zself: any, other: anyc                     t         ||d      \  }}|j                  d      }|j                  d      } fd} fd}|j                  r|j                  s|j                         dk\  rJ|j                         |j                         k(  r)|j                  |j                         dz
  k  r	 |||      S |j                         d	k(  rX|j                         |j                         kD  r6|j                  |j                         dz
  k  rt          |j                  |fi |fi t        |      S |j                  s|j                  r|j                         dk\  r9|j                         |j                         k(  r|j                  d	k\  r	 |||      S |j                         d	k(  rv|j                         |j                         kD  rT|j                  d	k\  rDt          ||j                  fi |fi t        |      S |j                  r|j                  r|j                         dkD  rY|j                         dkD  rFt        ||j                        r0t          |j                  |j                        fi t        |      S |j                         dk(  r|j                         dk(  rq|j                  d	k(  rb|j                  dk(  rS|j                  |j                        |j                  |j                        k(  rt        j                   |||            S t        d
|j                   d|j                         )NTr   r   otherc                     t        | j                         |j                               D cg c]  \  }} ||       c}}S c c}}w r   )r   r.  )r|   r~   a_compb_comprn   s       r   _unbind_implz$matmul_default.<locals>._unbind_impl  s>    9<QXXZ9T
%5ffD 
 	
 
s   Ac                    | j                   r| }n|}ddlm} |j                  }|j                  }|}|j
                  j                  |j                  dz
     }||}g |j                  d |j                   ||j                  |j                  dz   d  }|j                  d|      }	| j                   r
 |	|      }
n	 | |	      }
 ||
|j                  |j                  |||      S )Nr   r           output_sizer   )
r  r   r   r   r   r   r   rY   to_padded_tensorr   )r|   r~   r   r   r   r   r   r   padded_shape	padded_ntpadded_trn   s              r   _padded_implz$matmul_default.<locals>._padded_impl  s    ;;BB5))
))
!**""2>>A#56"L
XX&'

 XXbnnq(*+

 '''F	;;Iq)HAy)H!KK~~!!
 	
r      r   r   z1matmul(): not supported between inputs of shapes r   )r   r   r  r.   rY   r   r   r   r   r   r   r   stackr2   r   )	rn   ro   rp   r  r  r  r  r  r  s	   `        r   matmul_defaultr    s   &4TMAz ..
!CNN7#E

!
J }}U__ GGIN	UYY[(#'')a-/  U++ IIK1	EIIK'#'')a-/S[[%6:6:H:M  ]]u99;!		swwy 8U=N=NRS=SU++
 WWY!^		cggi 7E<M<MQR<RS%--6:6:H:O 
 
5?? 779q=UYY[1_1CC1US[[%-- @XNSVDWXX GGIN		q 1$!!Q&)UZZ8I8I-JJ ;;|C788

;CII;eEKK=Y r   zself: jt_all, mat2: anyc                 T   t        | ||d      \  }}|j                  d      }|j                  d      }|j                         dk7  rt        d      |j                         dk7  rt        d      t	        t
        j                  j                  j                  j                  ||      S )NTr   r   mat2r  zbmm(): input must be 3Dzbmm(): mat2 must be 3D)
r   r   r.   rj   r  r   r  r  r<  r  rn   ro   rp   r  r  r  r  s          r   bmm_defaultr  Y  s    &4TMAz ..
!CNN6"E
wwyA~233yy{a122%))..//77eDDr   z'self: jt_all, size: any, implicit: any?c                    t        | ||d      \  }}|j                  d      }|d   }d|vs|j                  d      rJ t        ||      st        d|j                   d|       t        d|j                               D cg c]  }||j                  k(  rd	n||    }}t         | |j                  |      fi t        |      S c c}w )
NTr   r   r   implicitzexpand(): cannot expand shape z -> r   rM   )r   r   r   r2   r   r=  r.   rY   r   r   r   )	rn   ro   rp   r  r  r  r   r"   
expand_args	            r   expand_defaultr  j  s     '4TMAz ..
!CfDj(*..2LMMc4(;CII;d4&QRRCHCGGICVWaS__,"$q'9WJWS[[*5M9LMM Xs   Czself: t, other: jtc                     t        | ||d      \  }}|j                  d      }|j                  d      }t         | ||j                        fi t	        |      S )NTr   r   r  r4  r  s          r   expand_as_defaultr  }  sW    &4TMAz ..
!CNN7#ES%--0JN54IJJr   zself: jt_all, size: anyc           
      6   t        | ||d      \  }}|j                  d      }|j                  d      }t        |      |j                         k  r?|j	                  g d t        |j                         t        |      z
        D        |      S t        d      )NTr   r   r   c              3       K   | ]  }d   yw)r   Nr=   )r!   r  s     r   r%   zbroadcast_to.<locals>.<genexpr>  s     E1QEs   zwbroadcast_to(): broadcasting to a higher-dim shape is currently not supported for nested tensors with the jagged layout)r   r   ri   r.   r   r=  rj   )rn   ro   rp   r  r  r  r   s          r   broadcast_tor    s    &4TMAz ..
!C>>&!D
4yCGGIzzMEcggi#d).C(DEMMNN
	4 r   ztensors: anyc           
      T   t        | ||d      \  }}|j                  d      }t        |      dk(  rt        d      t        |      dk(  r|d   S g }t	        j
                  d |D         }t        d |D              }|D ]  }	|	j                  r!|j                  |	j                  |             0|	j                         t        |      k  rH|j                  t        |	j                  |j                  j                        fi t        |             t        d	       t        |      S )
NTr   r  r   z7broadcast_tensors(): expected at least one tensor inputr   c              3   4   K   | ]  }|j                     y wr   )r   r!   r^   s     r   r%   z$broadcast_tensors.<locals>.<genexpr>  s     .H1qww.Hs   c              3   B   K   | ]  }t        |t              s|  y wr   r[   r  s     r   r%   z$broadcast_tensors.<locals>.<genexpr>  s     AQZ<%@qAr   zubroadcast_tensors(): broadcasting nested tensors with dense tensors of equal or higher dim is not currently supported)r   r   ri   rj   r   broadcast_shapesr   r  r   r  r.   r   r   r   r   r)   )
rn   ro   rp   r  r  r  outsbroadcast_shaper   r^   s
             r   broadcast_tensorsr    s   &4TMAz nnY'G
7|qRSS
7|qqzD,,.H.HIO
A'A
AC ;;KK78UUWs?++KKQ^^CKK,=,=>V.QTBUV ;  ;r   z(condition: jt_all, self: any, other: anyc                 :   t        | ||d      \  }}|j                  d      }|j                  d      }|j                  d      }t        j                  |||      \  }}}t	         | |j
                  |j
                  |j
                  fi |fi t        |      S )NTr   	conditionr   r  )r   r   r   r  r   r   r   )rn   ro   rp   r  r  r  r  r  s           r   
where_selfr    s     '4TMAz {+I
..
!CNN7#E "33IsEJIsEYU]]IjI

# r   zself: jt, device: any?c                     t        | ||d      \  }}|j                  d      }t         | |j                  fi |fi t	        |      S r3  r4  r*  s         r   _pin_memory_defaultr    r6  r   c                 n    t        | ||d      \  }}|j                  d      } | |j                  fi |S r3  ro  r*  s         r   is_pinned_defaultr    r  r   zself: jt_all, other: jt_allc                 @    |d   j                   |d   j                   k(  S r   )r   r  s      r   is_same_size_defaultr    s     7==DGMM))r   c                    t        | ||d      \  }}|j                  d      |d   d u xs, t        |d   t        t        f      xr t        |d         dk(  }|rt | j                  fi |}|j                  dd      rMt        |t        t        f      r t        |      fd|D              }|S |j                  j                        }|S |d   }	t        |d   t        t        f      }
|
s|	g}	t        j                         |	| j                        \  }}}}|
s|d   }||d<   |rj                  t        | d	      dd
lm} |r|r1 | j                  fi |}|j                  dd      r
 |d |      }|S |rt        | d      |j                  d       |
rj                  gnj                  } | j#                  |      fd|i|S |rt        | d       | j                  fi |}t%              |j                  dd      sKt        |d   t        t        f      r|d   n|d   g}|D ]"  }|j                  dz
  k  sdxx   dz  cc<   $  |fd|      S )NTr   r   r.   r   r;  Fc              3   T   K   | ]  }|j                  j                         ! y wr   )r  rY   )r!   or  s     r   r%   z#_apply_reduction.<locals>.<genexpr>  s     JCOO <Js   %(zf(): reducing across the ragged dimension is not supported for non-contiguous nested tensors with holes)tree_mapc                 $    | j                  d      S )Nr   )r  )r  s    r   rU   z"_apply_reduction.<locals>.<lambda>)  s    Q r   zW(): reducing along a ragged and non-batch dimension is not supported for nested tensorszg(): reducing along the batch dimension but not the ragged dimension is not supported for nested tensorsr   rY   c                     t        | fi S r   r   )r  
out_kwargss    r   rU   z"_apply_reduction.<locals>.<lambda>T  s    ,q"?J"? r   )r   r   r(   r)   r*   ri   r   r   r+   r  rY   rG   r.   rX   r2   torch.utils._pytreer  r  r   )rn   	func_nameidentity_elementro   rp   r  r  full_reductionoutdim_to_convert
is_dimlistconverted_dimr}  r~  reduce_on_non_batchr  dim_to_passdimlistr"   r  r  s                      @@r   r  r    s   &4TMAz ..
!C  &$. :e$udm4TZ=N9OST9T  3;;-*->>)U+#t}-d3iJcJJ 
 mmCOO4
  &NJu-t}=J() 		+		 %a(%JuCLL4k ; ;
 	

 - s{{1j1C~~i/7=J #" k ": :  NN5!/93??+sK$$%56<GKU  + K K  3;;-*-#C(
~~i/ j/%? 5! '( 
  3s**}-2-3 ?EEr   c                 n    t        | ||d      \  }}|j                  d      } | |j                  fi |S r3  ro  r*  s         r   sum_defaultr  W  r  r   z3self: jt_all, dim: any?, keepdim: any?, dtype: any?c                 $    t        | ddg|i |S )Nr   r   r  r  s      r   sum_dim_IntListr  b  s    
 D%<T<V<<r   z"self: jt_all, dim0: any, dim1: anyc           
      6   t        | ||d      \  }}ddlm} |j                  d      } ||j	                         |d   |d   f      \  }}||j
                  k(  s||j
                  k(  r|dk(  s|dk(  rt        d      ||j
                  k(  r|}	n|}	t        |      }
|	|
d	<   t        |j                         j                  t        t        |j                        ||j
                        t        t        |j                        ||j
                              fi |
S t        |j	                         |d   |j
                  d
      |d<   t        |j	                         |d   |j
                  d
      |d<   t         | |j                  fi |fi t        |      S )NTr   r   r   r   dim0dim1z?Transpose is not supported on the batch dimension for jagged NTrY   	transpose)r   r'   r   r   r.   rY   rj   r   r   r  r  r    ri   r   r:   r   )rn   ro   rp   r  r  r   r  r  r  to_dimr^  s              r   transpose_intr  j  s    '4TMAz 6
..
!C"3779z&/A:fCU.VWJD$
 s$#//"919	Q  3??"FF#C(
$*
=!JJL""#C		ND#//J#C		ND#//J

 
 	
 *	:f%sJv *	:f%sJv S[[7J7O>#;NOOr   zself: jt_all, dims: anyc                    t        | ||d      \  }}|j                  d      }|j                  d      }t        |      }t        |j                        }|t        |      k7  rt        d| ddt        |       dz         d	d
lm}	  |	||      }
t        |
      t        t        |
            k7  rt        d      |j                  t        d      |
d	   d	k7  rt        d      |
j                  |j                        |d<   |
dd  D cg c]  }t        |||j                         }}||d<   t         | |j                  fi |fi |S c c}w )NTr   r   rA   z5permute(): number of dimensions in the tensor input (z) zAdoes not match the length of the desired ordering of dimensions ().r   r   z*permute(): duplicate dims are not allowed.zBpermute(): not supported on jagged layout nested tensor with holesz=Permute is not supported on the batch dimension for jagged NTrY   r   )r   r   r   ri   r   rj   r'   r   setrX   indexrY   r    r   r   )rn   ro   rp   r  r  r  rA   r^  inp_dimr   canonicalized_dimsr.   
inner_dimss                r   permute_defaultr"    s}   &4TMAz ..
!C>>&!D$J#))nG #d)CG9BOQRUVZR[Q\\^_`
 	

 6*7D9
#c*<&=">>EFF
||P
 	
 !!K
 	
 !3 8 8 IJ} &ab) 	GS#//:J  $JvS[[7J7F:FFs   Ec                   	 t        | ||d      \  }}|j                  d      |j                  d      	j                  dk7  r=t        j                        t        	      k7  rt        dj                   d	 d      t        	      d	k  st        	      st        d
j                   d	       	fd}t        t        	      dz
        D cg c]
  } ||       }}t        j                  j                               5  t         | j                  |      fi t              cd d d        S c c}w # 1 sw Y   y xY w)NTr   r   r   r   zVview(): does not support ragged_idx != 1 except when inp._size == size. inp._size is (z) and size is (r  r  zview(): cannot view shape z as c                 n    | j                   dz
  k(  rj                  j                  |       S | dz      S rW   )rY   r   r   )	inner_idxr  r   s    r   get_inner_sizez$view_default.<locals>.get_inner_size  s8    !++;;##I..	A&&r   )r   r   rY   r)   r   r2   ri   r   r=  r   inference_modeis_inferencer   r   r   )
rn   ro   rp   r  r  r&  ru   
inner_sizer  r   s
           @@r   view_defaultr*    s>   
 '4TMAz ..
!C>>&!D
!cii 0E$K ? YYKtfB@
 	
 4y1}.sD97		{$tfMNN ' .33t9q=-AB.#BJB 
		c..0	1 RDj9Q^C=PQR R	 CR Rs   D;&E  E	zHinput: jt_all, normalized_shape: any, weight: any?, bias: any?, eps: anyc                 P   t        | ||d      \  }}|j                  d      }|j                         dk  rt        d      |d   }|j                  |j
                     }|j                         t        |      z
  }|dk(  rt        d      ||v r|j                  t        d	      ||v rMt        j                  j                  j                  |j                  j                  |j
                  
      |j                  g|j                  g      }	t        j                  j                  j                  t        j                   |j                  j                  d   df|j"                  |j$                        |j                  g|j                  g      j'                  |	j                        }
|j                  j)                         j+                  d      j+                  d      |	j                  d   z  }t        j,                  |	dd      |z  }|	|z
  |
z  }t        j,                  t        j.                  |      dd      |z  }t        j0                  ||d   z         }||z  }t        j                  j                  j3                  ||j                  g|j                  j                  d         j5                  d|j                  |j
                  dz   d        }t7        |fi t9        |      ||fS  | |j                  fi |\  }}}t7        |fi t9        |      ||fS )NTr   r   r   zOlayer_norm(): not supported for NestedTensor objects with 2 or fewer dimensionsr   r   zVlayer_norm(): not supported when normalizing over the batch dimension for NestedTensorzklayer_norm(): not supported where lengths is not None if operating on the ragged dimension for NestedTensorr   )rs  r   )rM  r   )r   r   )r.   r;  r   rv  rM   )r   r   r.   r2   r   rY   ri   rX   r   r  r  ry  r   r   r   rz  onesrM  r   r   r  r  r   squaresqrtr|  	unflattenr   r   )rn   ro   rp   r  r  r  r   ragged_sizenum_dims_not_normalizedpadded_inputpadded_maskragged_lengthsmeanpadded_normalizedvariancestdpadded_layer_normjagged_layer_norm_valuesr0   s                      r   native_layer_norm_defaultr<    s!   
 '4TMAz ..
!C
wwyA~]
 	
 ""45))COO,K!ggi#.>*?? 	 1$d
 	
 &&3<<+Cy
 	

 	''yy~~EEKK//    \\N) F 
 iinnDDJJ))!,a0399U\\N) E 
 &
	 	 LL))!,66q9L<N<Nq<QQ 	
 II
  	 D K/ 	
 II./
  	 jjJu$556-3#(99>>#Q#Q\\NKK%% $R $
 )		#//A-/0
 	! 1I^C5HI
 	
 S[[7J7FD#7>##67sCCr   zpgrad_out: jt, input: jt, normalized_shape: any, mean: any, rstd: any, weight: any?, bias: any?, output_mask: anyc                     t        | ||d      \  }}|j                  d      }|j                  d      } | |j                  |j                  fi |\  }}}	|d ||	fS t        |fi t	        |      ||	fS )NTr   r  r   r  )
rn   ro   rp   r  r  r  r  d_inputd_gammad_betas
             r   "native_layer_norm_backward_defaultrA  X  s    
 '4TMAz ~~j)H
..
!C#H$4$4ckkPZPGWfgv&&8N3$78'6JJr   z"self: jt_all, dim: any, index: anyc                    t        | ||d      \  }}|j                  d      }t        |j                         |d   |j                  dd      \  |d<   }|r|j                         |d      S |j                  t        d      t        |      }|d   |j                  d	z
  k  r|d
xx   d	z  cc<   t         | |j                  fi |fi |S )NTr   r   r.   selectr  r  zSselect(): not yet supported on dim != 0 for non-contiguous nested tensor with holesr   rY   )r   r   r:   r.   rY   r.  rX   rj   r   r   r   )rn   ro   rp   r  r  r  r9   r  s           r   
select_intrD  i  s    &4TMAz ..
!C,<	:e$cooxQU-)Ju) zz|Jw/00
||a
 	

  $J%3??Q..=!Q&!S[[7J7F:FFr   z7self: jt, dim: any?, start: any?, end: any?, step: any?c                     t        | ||d      \  }}|j                  d      }t        |j                         |d   |j                  d      |d<   t         | |j                  fi |fi t        |      S )NTr   r   r.   slice)r   r   r:   r.   rY   r   r   r   r*  s         r   slice_tensorrG    sw    
 '4TMAz ..
!C(	:e$coowJu S[[7J7O>#;NOOr   z8input: jt_all, indices: any, values: t, accumulate: any?c                    t        | ||d      \  }}|j                  d      }|j                  d      }t        |      |j                         k  sJ t        |      |j                  dz   k  r9|j                         st        d      ddlm} |j                  }|j                  }	|	}
|j                  j                  |j                  dz
     }|
|}
g |j                  d |j                   |
|j                  |j                  dz   d  }|j                  d|	      } | | ||fi ||j                  |j                  |||	
      }| t        j                   j"                  j$                  j&                  u r+|j                  j)                  |j+                                |S |S |j-                         |j/                         j1                         }n|j-                         }t        j2                  t        j4                  ||j                     |k        d       |j/                         |d      ||j                     z   }|d|j                   |gz   ||j                  dz   d  z   }| t        j                   j"                  j$                  j&                  u r | |j                  |fi ||_        |S t7         | |j                  |fi |fi t9        |      S )NTr   r   indicesr   z[index_put(): If ragged dimension is not part of indices, this only works on contiguous NJTsr   r  r  r   z7Some indices in the ragged dimension are out of bounds!r   )r   r   ri   r.   rY   is_contiguousr2   r   r   r   r   r   r   r  r   r   r  r  
index_put_r  ra  r  r   r   r  _assert_asyncr   r   r   )rn   ro   rp   r  r  r  rI  r   r   r   r   r   r  
padded_inpnew_njtr   ragged_indicesfunc_indicess                     r   rK  rK    s    '4TMAz #w/C nnY'Gw<3779$$$
7|coo))  "m  	6**
**
!++##COOa$78"L
YY()

 YYs*,-

 ))#<)H
$W3
3LL!!
 599>>,,444KKgnn./J
 {{}++-$$&++-			'#//*W45A [[]71:.1IIN 	COO$
	 #//A%'
(		)  uyy~~((0003;;C
C
S[[,5*5

 r   z{input: jt, weight: t, bias: t?, stride: any, padding: any, dilation: any, transposed: any, output_padding: any, groups: anyc                     t        | ||d      \  }}|j                  d      }t         | |j                  fi |fi t	        |      S r3  r4  r*  s         r   convolution_defaultrR    sN     '4TMAz ..
!CS[[7J7O>#;NOOr   c                 T   t        | ||d      \  }}|d   }t        |j                         |d   d|j                        \  }}}}|r|s|rJ |d   }	d|d<   t	        t
        j                  j                  j                  j                  ddfi |}
|j                  |j                  n|j                  j                         }t        |
j                         dz
        D ]  }|j                  d	      } |
|z  }|	s|j                  |j                        }|S d
}t	        | d|fi |S )NTr   r   r.   r6  r;  r   r   rM   gzG?)r   rG   r.   rY   r  r   r  r  r   dim_IntListrX   r   r  r=  r  r   )rn   ro   rp   r  r  r  r}  r~  r  r;  intermediate_sumr   r
  intermediate_values                 r   mean_dimrW    sA    '4TMAz W
CBS	5	C?Q)+> &&&Y' $
9+IINN**FA
9C

 #&,,":#,,@Q@Q@S'++-12 	,A''+G	,(++coo.C

 D&*<K
KKr   c                 n    t        | ||d      \  }}|j                  d      } | |j                  fi |S r3  ro  r*  s         r   mean_defaultrY  ,  r  r   z&self: jt_all, dim: any?, keepdim: any?c                 $    t        | ddg|i |S )Nr@   Fr  r  s      r   any_dimsr[  7  s    D%@@@@r   z%self: jt_all, dim: any, keepdim: any?c                     t        | ||d      \  }}|d   g|d<   t        t        j                  j                  j
                  j                  fi |S NTr   r.   )r   r[  r   r  r  r@   rA   rn   ro   rp   r  r  s        r   any_dimr_  <  Q    &4TMAz
 $E*+JuEIINN&&++:z::r   c                 $    t        | ddg|i |S )Nr   Tr  r  s      r   all_dimsrb  G  s    D%????r   c                     t        | ||d      \  }}|d   g|d<   t        t        j                  j                  j
                  j                  fi |S r]  )r   rb  r   r  r  r   rA   r^  s        r   all_dimrd  L  r`  r   c                 n    t        | ||d      \  }}|j                  d      } | |j                  fi |S r3  ro  r*  s         r   all_any_max_min_defaultrf  W  s?     '4TMAz ..
!C*z**r   c                 l    t        | ||d      \  }}|j                  d      } | |j                        S r3  ro  r*  s         r   _is_true_defaultrh  j  s:    
 '4TMAz ..
!Cr   c                 ~    t        | ||d      \  }}|d   j                  }t        |d      }t        | d|g|i |S )NTr   r   r   r   r   r   r   r  rn   ro   rp   r  r  r   	dtype_maxs          r   min_dimrm  w  P    &4TMAz w%%E"5%0ID%DTDVDDr   c                 ~    t        | ||d      \  }}|d   j                  }t        |d      }t        | d|g|i |S )NTr   r   r   r   rj  rn   ro   rp   r  r  r   	dtype_mins          r   max_dimrr    rn  r   c                 ~    t        | ||d      \  }}|d   j                  }t        |d      }t        | d|g|i |S )NTr   r   r   aminrj  rk  s          r   amin_defaultru    R     '4TMAz w%%E"5%0ID&)EdEfEEr   c                 ~    t        | ||d      \  }}|d   j                  }t        |d      }t        | d|g|i |S )NTr   r   r   amaxrj  rp  s          r   amax_defaultry    rv  r   c                 ~    t        | ||d      \  }}|d   j                  }t        |d      }t        | d|g|i |S )NTr   r   r   argminrj  rk  s          r   argmin_defaultr|    R     '4TMAz w%%E"5%0ID(IGGGGr   c                 ~    t        | ||d      \  }}|d   j                  }t        |d      }t        | d|g|i |S )NTr   r   r   argmaxrj  rp  s          r   argmax_defaultr    r}  r   zAgrad: jt_all, dim: any, indices: jt_all, sizes: any, keepdim: anyc                   
 ddl m
 t        | ||d      \  }}|j                  d      }|j                  |d<   |j                  d      }|j                  |d<   t        
fdt        |d         D              }t        t        |d         |d	   |d
      |d	<   |j                  d      }|j                  j                  |j                  dz
        ||<   |dd  }||d<   t        |      }	||	d<   t         | di |fi |	S )Nr   r   Tr   gradrI  c              3   :   K   | ]  \  }} |      s|  y wr   r=   )r!   ru   r   r   s      r   r%   z=value_selecting_reduction_backward_default.<locals>.<genexpr>  s     WDAqmTUFVaWs   sizesr.   "value_selecting_reduction_backwardr   rY   r=   )r   r   r   r   r   r   rl   r:   ri   r   rY   r   r   )rn   ro   rp   r  r  r  rI  r>   r  rl  r   s             @r   *value_selecting_reduction_backward_defaultr    s   
 D&4TMAz >>&!DJvnnY'G#OOJyWIj.A$BWWJ(Jw 5,	Ju NN7#E,,W-@-@1-DEE*!"IEJw"7+M#-M- *z*<m<<r   c                    t        | ||d      \  }}|j                  d      }|D ]p  }t        |t              st	        d      |j                         |d   j                         k7  rt	        d      t        ||d   j                        rgt	        d       t        |d   j                         dz   |d	   |d   j                  d
      |d	<   t         | |D cg c]  }|j                   c}fi |fi t        |d         S c c}w )NTr   r  z+stack(): expected all nested tensors inputsr   z9stack(): expected all nested tensors to have the same dimzFstack(): expected all nested tensors to have the same nested structurer   r.   r  )r   r   r(   r   r2   r.   r   r   r:   rY   r   r   )rn   ro   rp   r  r  r  r^   s          r   stack_defaultr    s   &4TMAz
 nnY'G !\*LMM557gajnn&&K  "!WQZ%5%56X  )
1j/1G1GJu )Aaii)8Z8<J7ST:<V )s   DzQweight: t, indices: jt, padding_idx: any?, scale_grad_by_freq: any?, sparse: any?c                     t        | ||d      \  }}|j                  d      }|j                  d      }t         | ||j                  fi |fi t	        |      S )NTr   rI  r   r4  )rn   ro   rp   r  r  rI  r   s          r   embedding_defaultr  	  sf    
 '4TMAz
 nnY'G^^H%FVW__3
37Eg7N r   zYgrad_output: jt, indices: jt, num_weights: any, padding_idx: any, scale_grad_by_freq: anyc                     t        | ||d      \  }}|j                  d      }|j                  d      } | |j                  |j                  fi |S )NTr   rI  r8  ro  )rn   ro   rp   r  r  rI  r8  s          r    embedding_dense_backward_defaultr  	  sU    
 '4TMAz nnY'G../K##W__C
CCr   c                 |    t        | ||d      \  }}|j                  d      }|j                  j                         S r3  )r   r   r   detachr*  s         r   values_defaultr  $	  s@     '4TMAz ..
!C ;;r   c                 l    t        | ||d      \  }}|j                  d      } | |j                        S r3  ro  r*  s         r   all_defaultr  7	  s8    &4TMAz ..
!Cr   z-self: jt_all, padding: any, output_size: any?c                 t   t        | ||d      \  }}|j                  d      }|j                  t        d      |d   }|||j                     }n3|j
                  |j                  n|j                  j                  d      }|j                         }|j                  dkD  r|j                  |j                  dz
  d      }|j                  }	|j                         dkD  r|j                  d	      }n$|j                         dk(  r|j                  d
      }|j                  t         j"                  u }
|
r+|j$                  r|j'                  t         j(                        }t         j*                  j,                  j/                  ||j0                  g|g|d         }|
r+|j$                  r|j'                  t         j"                        }t3        |	      dkD  r|j5                  d
|	dd        }nt3        |	      dk(  r|j7                  d
      }|j                  dkD  r|j                  |j                  d      }|S )NTr   r   z?to_padded_tensor(): not supported for nested tensors with holesr  r   r   r   r,  rM   padding)r   r   rX   r2   rY   _max_seqlen_tensorrz  r   r   r  r  r   r.   r   r  r   r   boolr   rS  halfr  r  ry  r   ri   r0  r   )rn   ro   rp   r  r  r  r  max_seq_lenr  values_shapeis_bool
padded_outs               r   to_padded_tensor_defaultr  B	  s   
 '4TMAz ..
!C
||M
 	

 ]+K!#//2 %%1 OO!!!$ 	 ZZ\F
!!#//A"5q9<<Lzz|a!,		!!"% llejj(G6>>5::&??		9	J :%%]]5::.
 <1))"l12.>?
	\	a	''+

))#//1=
r   zcpadded: t, offsets: t, dummy: jt, ragged_idx: any?, min_seqlen: any?, max_seqlen: any?, sum_S: any?c                    t        | ||d      \  }}|d   |d   }}|j                  dd      }|dkD  r|j                  |d      }|j                  }|j	                         dkD  r|j                  d	      }n$|j	                         dk  r|j                  d
      }|j                  t        j                  u }	|	r+|j                  r|j                  t        j                        }t        j                  j                  j                  ||g|d         }
|	r+|
j                  r|
j                  t        j                        }
t!        |      dkD  r|
j#                  d
|dd        }
nt!        |      dk  r|
j%                  d
      }
|dkD  r|
j                  |dz
  d      }
|d   }|d   }i }|||d<   |||d<   t'        |
|||      S )NTr   paddedr   r>   r   r  r   r,  rM   r   r   r   r   )rY   r   )r   r   r  r   r.   r   r  r   r   r  r   rS  r  r  r  r|  ri   r0  r   r   )rn   ro   rp   r  r  r  r   r>   padded_ragged_dim1_shaper  r  r   r   metadata_caches                 r   "_nested_from_padded_tensor_defaultr  	  s   
 '4TMAz !*Jy,AGFa0J A~!!*a0%||zz|a!,		!!"% llejj(G6>>5::&YY^^;;	:g.F 6>>5::& #$q(!!"&>qr&BC	%	&	*#A~!!*q.!4L)JL)JN'1|$'1|$&	 r   zcvalues: t, offsets: t, dummy: jt_all, lengths: t?, ragged_idx: any?, min_seqlen: t?, max_seqlen: t?c                     t        | ||d      \  }}|d   |d   |d   }}}|d   }|d   }	|d   }
i }|	|	|d<   |
|
|d<   t        |||||	      S )
NTr   r   r   r   r>   r   r   )r   rY   r   )r   r   )rn   ro   rp   r  r  r  r   r   r>   r   r   r  s               r    _nested_view_from_jagged_defaultr  	  s    
 '4TMAz
 	799 GF
 L)JL)JL)JN'1|$'1|$& r   c                 `    t        | ||d      \  }}|j                  d      }|j                  S r3  )r   r   r   r*  s         r   _nested_get_offsetsr  	  3    &4TMAz ..
!C<<r   c                 `    t        | ||d      \  }}|j                  d      }|j                  S r3  )r   r   rX   r*  s         r   _nested_get_lengthsr  	  r  r   c                 `    t        | ||d      \  }}|j                  d      }|j                  S r3  )r   r   rY   r*  s         r   _nested_get_ragged_idxr  	  s3    &4TMAz ..
!C??r   c                     t        | ||d      \  }}|j                  d      }|j                  j                  dd       S )NTr   r   r   r   r   r   r   r*  s         r   _nested_get_min_seqlenr  	  B    &4TMAz ..
!C""<66r   c                     t        | ||d      \  }}|j                  d      }|j                  j                  dd       S )NTr   r   r   r  r*  s         r   _nested_get_max_seqlenr  
  r  r   zself: jt, mask: anyc                 (   t        | ||d      \  }}|j                  d      }|j                  d      }|j                  dkD  rt        d      |j                  |j                  k7  r%t        d|j                   d|j                         |j
                  j                  |j                               }t        j                  |j                         j                  d	
      d      }t        |      }||j                     |d<   t        dd|i|S )NTr   r   r  r   z3masked_select only support 2-D selections currentlyzMask with shape z& is not compatible with input's shape r   ru  r  r   r  r=   )r   r   r#   r2   r   r   masked_selectr  r  r  r  r   r   r   )	rn   ro   rp   r  r  r  r  
res_valuesmask_cumsums	            r   masked_select_defaultr  
  s   &4TMAz ..
!C>>&!D
xx!|PQQ	djj	 tzzl*PQTQZQZP[\
 	
 **4;;=9J%%,,,3V<K#D!#,,/DO 
 r   z2grad_output: t, self: jt_all, dim: any, index: anyc                     t        | ||d      \  }}|j                  d      }|j                  d      }t        j                  ||j                        }|j                  |d   |d         j                  |       |S )NTr   r   r8  )r   r.   r  )r   r   r   
zeros_liker   rC  ra  )rn   ro   rp   r  r  r  r8  
grad_inputs           r   _nested_select_backward_defaultr  &
  s|    
 '4TMAz ..
!C../K!!#[->->?Jj'G)<=CCKPr   zself: jt_all, s: anyc                     |d   }|d   } | |j                   |        | |j                  |       |j                   | |j                  |       y y r   )r   r   rX   )rn   ro   rp   r  streams        r   record_stream_defaultr  8
  sM    
q'C!WFfv
||S\\6"  r   zRself: jt_all, size: any, dtype: any?, layout: any?, device: any?, pin_memory: any?c                     t        | ||d      \  }}|j                  d      }t        |d         dk(  r | |j                  fi |S t	        d      )NTr   r   r   r   z2new_empty() not supported for NJT with shape != ())r   r   ri   r   r2   r*  s         r   new_empty_defaultr  C
  s]     '4TMAz ..
!C
:f!#CKK.:..
K
LLr   zself: jt_all, ...c                 j    t        d |D              }t         | d |D        i |fi t        |      S )Nc              3   B   K   | ]  }t        |t              s|  y wr   r[   r   s     r   r%   z&activation_backward.<locals>.<genexpr>e
  s     Lsjl.KsLr   c              3   X   K   | ]"  }t        |t              r|j                  n| $ y wr   )r(   r   r   r   s     r   r%   z&activation_backward.<locals>.<genexpr>h
  s"     TZ\:ckkCTs   (*r   )rn   ro   rp   r8  s       r   activation_backwardr  X
  sH     LdLLKTtT	
	

 
% r   zself: jt_all, value: anyc                     t        | ||d      \  }}|j                  d      }t         | |j                  fi |fi t	        |      S r3  r4  r*  s         r   fill_Scalarr  o
  r6  r   c                 r    t        | ||d      \  }}|j                  d      } | |j                  fi | |S r3  ro  r*  s         r   fill__Scalarr  z
  s?    &4TMAz ..
!C#
#Jr   c                     t        | ||d      \  }}|j                  d      }t        |      } | |j                        \  }}t	        |fi |t	        |fi |fS r3  )r   r   r   r   r   )	rn   ro   rp   r  r  r  rl  mantissaexponents	            r   frexp_Tensorr  
  so    &4TMAz ..
!C"3'Mckk*Hh2M2L5!5  r   z+grad: any, self: any, other: any, mask: anyc                 p   t        | ||d      \  }}|j                  d      }|j                  d      }|j                  d      }|j                  d      }|yd }	|d   r&t        j                  ||j	                  d	d
            }	d }
|d   r&t        j                  |j	                  d	d
      |      }
|	|
fS )NTr   r  r   r  r  r   r   rM   r   )r   r   r   r<  r  )rn   ro   rp   r  r  r  r  r  grad_input_mask	grad_self
grad_others              r   matmul_backward_defaultr  
  s    
 '4TMAz >>&!D
..
!CNN7#E nnV,O|IqLLur2'>?	Jq\\#--B"7>
z""r   z	self: anyc                     ddl m}  |       S )Nr   )_nt_view_dummy)$torch.nested._internal.nested_tensorr  )rn   ro   rp   r  s       r   _nested_get_jagged_dummyr  
  s    Cr   r  IMPLr  CPUCUDAMeta)F)TFF)r   r   )r   r  r   typingr   torch.nn.functionalrw  rx  r  torch.fx.operator_schemasr   torch.nested._internal.sdpar   r   r   r	   r*   Any__annotations__r
   Dictr   r    r:   rG   strr{   r   r   r   r   r   register_jagged_funcCallabler   r   r   r   r  r  r  r  r  r  r.   r  r  r  r  r  primrK  r  r   r!  rJ  r'  r$  r)  r+  r>  r1  linearr5  linear_backwardrE  rS  r   rG  _to_copyr_  ra  ri  r  
empty_like	ones_liker  	rand_like
randn_likerm  	full_likerandint_like	low_dtypezero_rp  _softmaxr  _log_softmaxr  _softmax_backward_datar  native_dropoutr  native_dropout_backwardr  r  dim_intr  r  rf   rR   r  r  r  r  r  r  r.  r  r  r   r  r  r  r  r  r<  r  bmmr  r   r  r  r  r  r  wherer:  r  _pin_memoryr  	is_pinnedr  is_same_sizer  r  r   r  rT  r  r  r  permuter"  view_unsafe_viewr*  native_layer_normr<  native_layer_norm_backwardrA  rC  rD  rF  rG  	index_putrK  convolutionrR  r6  rW  rY  r@   rA   r[  r_  r   rb  rd  r   r   rf  _is_all_true_is_any_truerh  rm  rr  rt  ru  rx  ry  r{  r|  r  r  r  r  r  r  	embeddingr  embedding_dense_backwardr  r  _nested_get_valuesr  r  r  r  _nested_from_padded_tensorr  _nested_view_from_jaggedr  r  r  r  r  r  r  r  _nested_select_backwardr  record_streamr  	new_empty	new_zerosnew_onesr  elu_backwardhardshrink_backwardhardsigmoid_backwardhardtanh_backwardsoftplus_backwardsoftshrink_backwardr  fillScalarr  fill_r  frexpr  matmul_backwardr  r  library_scoped_libraryimplr=   r   r   <module>r     s          8 K ' c #% $sCx. %
"4 :Y8=S =D =@

#&
+7
AD
	
0. )y((8HI &HtO &RKS\c$L 		33;;		''		""		$$		  ((		!!))		))11 00, eiinn++33^D E 
YY^^  !
	
 eiinn22::NKF LF( 	IINN  ..0S
 	IINN$$,,.QOO( 	IINN  "FEE2 eiinn++335UVP WP 	IINN""**<"	"J eiinn''--/JKP LP eiinn--55~F% G%P 	IINN  "Q: D UYY^^**22N C
 		!!))		  ((		!!))		  ((		!!)) 	,5	,5^ X UYY^^--557V W U UYY^^0088:S T 	IINN))+N
 eiinn**22NC D 	IINN##%QEPEPP 	IINN'')U"P"PJ 	IINN))11=	 	IINN!!))+N

 	IINN**22+			 	IINN8>	> eiinn))113NO+ P+ 	IINN!G" 	IINN##++-T" 	IINN!!#P77  eiinn**224VW&
 X&
R eiinn++//1JKE LEP eiinn,,002FGK HK eiinn..668PQE RE, eiinn((002KL M0 eiinn++335LMj NjZ eiinn((002KLE ME  	IINN!!#LNN  eiinn..668LMK NK eiinn1199;TU V" eiinn66>>O P> 	IINNI$ eiinn0088:RSP TP eiinn..668PQ+ R+ 	IINN'')F**gFT eiinn((002MN+ O+ 	IINN""9=	= 	IINN  "F'P'PT eiinn,,446OP%G Q%GP 
YY^^  %)).."="="E"EF,R	,R^ 	IINN$$,,N^D	^DB 	IINN--55v
K	
K eiinn++//1UVG WG8 	IINN=
P	
P 	IINN$$> 	IINN%%>R		Rj 	IINN&&G
P
P 	IINNR#L#LL eiinn))113NO+ P+ eiinn((--/WXA YA eiinn((,,.UV; W; eiinn((--/WX@ Y@ eiinn((,,.UV; W; 		""		""		""		""	 ++ 
YY^^  ((%))..*E*E*M*MN	 eiinn((,,.UVE WE eiinn((,,.UVE WE 	IINN!IFF 	IINN!IFF 	IINN!!#KHH 	IINN!!#KHH 	IINN55==G=	=@ eiinn**224MN O< 	IINN$$W	 	IINN++33_D	D 		%%		))11 	 	  eiinn((00.A B 	IINN##++38	8v 	IINN--55i2	2j 	IINN++33i	8 eiinn88@@.Q R eiinn88@@.Q R eiinn;;CC^T U eiinn;;CC^T7 U7 eiinn;;CC^T7 U7 eiinn22::<QR S0 	IINN**228	 eiinn22::<RS# T# 		  ((		  ((		''
 Y
M
M 		##++		**22		++33		((00		((00		**22 
	
	 eiinn))002LMP NP eiinn**113MN O eiinn**11>B C 	IINN""**1#	#2 eiinn==EE{S T ]]""662 LdII(*BEJII(*BFKII(*BFKL L Ls   b;=AddAd
