
    Χg              
           U d dl Z d dlZd dlZd dlT 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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 e!         fdZ"d Z#d Z$d Z%d Z& eej'        j(        j)        j*        ej'        j(        j+        j*        ej'        j(        j,        j*        ej'        j(        j-        j*        ej'        j(        j.        j*        ej'        j(        j/        j*        ej'        j(        j0        j*        gd          d             Z1 eej'        j2        j3        j*        d          d              Z4 eej'        j(        j5        j*        gd          d!             Z6 eej'        j(        j7        j*        d          d"             Z8  eej'        j(        j7        j9        d#          e8            eej'        j(        j:        j*        d$          d%             Z; eej'        j(        j<        j*        d&          d'             Z= eej'        j(        j>        j*        d(          d)             Z? eej'        j(        j@        jA        d*          d+             ZB eej'        j(        jC        j*        d          d,             ZD eej'        j(        jE        j*        d-          d.             ZF  eej'        j(        jG        j*        d          e$            eej'        j(        jH        j*        ej'        j(        jI        j*        ej'        j(        jJ        j*        ej'        j(        jK        j*        gd          d/             ZL eej'        j(        jM        j*        d          d0             ZN eej'        j(        jO        j*        d1          d2             ZP eej'        j(        jQ        j*        d3          d4             ZR eej'        j(        jS        j*        d5          d6             ZT eej'        j(        jU        j*        d7          d8             ZV eej'        j(        jW        jX        d9          d:             ZY eej'        j(        jZ        j[        d;          d<             Z\ eej'        j(        j]        j*        d=          d>             Z^ eej'        j(        j_        j*        d?          d@             Z_ eej'        j(        j`        j*        dA          dB             Za eej'        j(        jb        jc        dC          dD             Zd eej'        j(        je        j,        dE          dF             Zf eej'        j(        jg        j*        dE          dG             Zh eej'        j(        ji        j*        dH          dI             Zj eej'        j(        jk        j*        dJ          dK             Zl eej'        j(        jm        j*        dL          dM             Zn eej'        j(        jo        j*        dN          dO             Zp eej'        j(        jq        jr        dP          dQ             Zs eej'        j(        jt        j*        dR          dS             Zu eej'        j(        jv        j*        dR          dT             Zw eej'        j(        jx        j*        dU          dV             Zy eej'        j(        jz        j{        dW          dX             Z| eej'        j(        j}        jc        dY          dZ             Z~ eej'        j(        j        j*        d[          d\             Z eej'        j(        j        j*        ej'        j(        j        j*        gd]          d^             Z eej'        j(        j        j*        d_          d`             Z eej'        j(        j        j*        da          db             Z eej'        j(        j        jc        dc          dd             Z eej'        j(        j        j[        de          df             Z eej'        j(        j        j*        dg          dh             Z eej'        j(        j        j,        dW          di             Z eej'        j(        j        j*        dH          dj             Z eej'        j(        j        j*        dk          dl             Z eej'        j(        j        j*        ej'        j(        j        j*        gd          dm             Z eej'        j(        j        j*        d          dn             Z eej'        j(        j        j*        do          dp             Z eej'        j(        j        j*        d          dq             Z eej'        j(        j        j*        d          dr             Z eej'        j(        j        j*        d          ds             Z eej'        j(        j        j*        d          dt             Z eej'        j(        j        j*        d          du             Z eej'        j(        j        j*        dv          dw             Z eej'        j(        j        j*        dx          dy             Zej                            dzd{          5 Z(e(                    d|ed}           e(                    d|ed~           e(                    d|ed           ddd           dS # 1 swxY w Y   dS )    N)*)normalize_function)#jagged_scaled_dot_product_attention   NestedTensor__all__JAGGED_OPS_TABLEc                 8    |dk    r|| k     sJ |dk     rdn|dz
  S )Nr      r    )ndimdims     V/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/nested/_internal/ops.py_outer_to_inner_dimr      s-    !88d



a11S1W$    TFc                     ddl m}  || |          }|dk    rt          | d          |dk    r|st          | d          |rt          | |          n|S )Nr   canonicalize_dimsr   z+(): not supported for NestedTensor on dim=1z+(): not supported for NestedTensor on dim=0)torch._prims_commonr   RuntimeErrorr   )r   r   op_nameconvert_to_inner_dimallow_batch_dimr   wrappeds          r   _wrap_jagged_dimr      s     655555c**G!||gRRRSSS	AogRRRSSS1ERtW---7Rr   c                 &   	 ddl m	 t          |t          t          f          sJ dt          |                       	 fd|D             }d|v }|v }t          fd|D                       }t           fd|D                       }||||fS )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                 (    g | ]} |          S r   r   ).0dr   r   s     r   
<listcomp>z%_wrap_jagged_dims.<locals>.<listcomp>4   s4       '($""  r   c              3   0   K   | ]}|d k    o|k    V  dS r   Nr   )r   r    
ragged_idxs     r   	<genexpr>z$_wrap_jagged_dims.<locals>.<genexpr>:   s0      PPaqAv9!z/PPPPPPr   c              3   D   K   | ]}|d k    t          |          V  dS r#   r   )r   r    r   s     r   r%   z$_wrap_jagged_dims.<locals>.<genexpr><   s;        )*a1ffD!$$ffff r   )r   r   
isinstancetuplelisttypeany)
r   dimsr   r$   wrapped_dimsoperate_on_batchoperate_on_raggedoperate_on_non_batchouter_to_inner_dimr   s
   `  `     @r   _wrap_jagged_dimsr3   (   s    655555udm  S SRd4jjRRS S S    ,0  L L("l2PPPP<PPPPP    .:     /1BDXXXr   
schema_strreturnc                    |                      d          }d |D                                 d          }t          |          |z
  }|d         dk    r|d d         }nqt          |          |k    r t          |          t          |          k    s>t          d|j         d|  d| d	t          |           d
t          |           d          d d d d d}t          |          D ]\  }}	|	                     d          \  }
}|                    d          }|r
|d d         n|}||                                vrt          d|           |t          |          k    r |st          d|j         d|  d|
           ||         |ffd	} |||                   s.dddddd}t          d|j         d|  d|
 d||                    d S )N, c                 8    g | ]}|                     d           S )?)endswithr   xs     r   r!   z check_schema.<locals>.<listcomp>E   s"    BBBQCBBBr   T...NestedTensor (z): expected at least z arguments and at most z arguments, but got: z
 argumentsc                 b    t          | t          j                  ot          | t                     S N)r(   torchTensorr   r<   s    r   <lambda>zcheck_schema.<locals>.<lambda>T   s$    z!U\22V:a;V;V7V r   c                 T    t          | t                    o| j        d u o
| j        dk    S Nr   )r(   r   _lengths_ragged_idxrE   s    r   rF   zcheck_schema.<locals>.<lambda>U   s1    
1l33 J$MQ r   c                 ,    t          | t                    S rB   r(   r   rE   s    r   rF   zcheck_schema.<locals>.<lambda>X   s    J|
 
 r   c                     dS )NTr   rE   s    r   rF   zcheck_schema.<locals>.<lambda>[   s     r   )tjtjt_allr,   z: r9   zUnknown arg type: z) missing required argument: c                 <    |r| d u p
 |           S  |           S rB   r   )r<   is_optional	_check_fns     r   check_fnzcheck_schema.<locals>.check_fnn   s0     $Dy0IIaLL0 y||#r   tensorzoptional tensorz%contiguous jagged layout NestedTensorzjagged layout NestedTensorz
<any type>)rN   zt?rO   rP   r,   z): expected z	 to be a )	splitcountlen
ValueError__name__	enumerater:   keysAssertionError)r4   funcargskwargsnamed_arg_typesnum_optional_argsmin_argsarg_type_check_fnsinamed_arg_typenamearg_typerR   normalized_arg_typerT   type_to_descrS   s                   @r   check_schemark   C   s    &&t,,OBB/BBBHHNN?##&77H re##)#2#.D		X%%#d))s?7K7K*K*K) ) )
 ) )QY ) )),_)=)=) )t99) ) )   WV 
 
 ~	 	 '77 # #>'--d33h'',,/:Hhssmm&8&=&=&?&??? !K6I!K!KLLLD		>>  9DM 9 9J 9 9269 9   &':;	$/ 	$ 	$ 	$ 	$ 	$ 	$ xQ   	'=6# L , , ,
 , , , ,), ,  	/# #r   aa_namebb_namec           	          |j         |j                 |j         |j                 k    rt          d| j         d| d| d          d S )Nr?   z: expected  and z' to have the same exact offsets tensor.)_sizerJ   r   rZ   )r^   rl   rm   rn   ro   s        r   check_ragged_dim_samers      sk     	wq}!777)DM ) )f ) )6 ) ) )
 
 	
 87r   c                     | j         dz   }| j        d |         }|d |         }t          |          t          |          k    o&t          d t	          ||          D                       S )Nr   c              3   4   K   | ]\  }}||k    p|d k    V  dS )r=   Nr   )r   nsss      r   r%   z%raggedness_matches.<locals>.<genexpr>   s3      HH52qB!GqBwHHHHHHr   )rJ   rr   rX   allzip)ntsizeend	nt_raggedsize_raggeds        r   raggedness_matchesr      sn    
.1
C#Itt*Ky>>S--- HHC	;,G,GHHHHHr   c                     |                                  dk    rO| j        d         dk    r>|                     d          } |                                  dk    r| j        d         dk    >| S Nr   r   )r   shapesqueeze)rN   s    r   squeeze_leading_onesr      sX    & %%''A++!'!*//IIaLL %%''A++!'!*//Hr   c                 z     t          t                    sgt           t                    s g  fd}|S )Nc                 F     D ]} fd}D ]} ||          ||<    S )Nc                       fd}|S )Nc                  >    t          g| R i |  g| R i |S rB   )rk   )r_   r`   aten_opr^   r4   s     r   innerz@register_func.<locals>.wrapper.<locals>.get_inner.<locals>.inner   sC     TCDCCCFCCC49$999&999r   r   )r   r   r^   r4   s   ` r   	get_innerz1register_func.<locals>.wrapper.<locals>.get_inner   s.    : : : : : : : r   r   )r^   r   r   tableaten_opsr4   tabless   `   r   wrapperzregister_func.<locals>.wrapper   sa     
	4 
	4G        4 4!*7!3!3g4r   )r(   r*   )r   r   r4   r   s   ``` r   register_funcr      sa    h%% :fd##        Nr   c                    t                               | d           }||S t          j        j        | j        v rt          d |D                       }|dk    rg }| j        j        D ]]}t          |j
        t          j                  r|                    |j         d            n|                    |j         d           ^|                    d           d                    |          }t          || g|R i | t!          j        t$          |           S |dk    r+t          d| g|R i | t!          j        t&          |           S d S )	Nc              3   J   K   | ]}t          |t          j                  V  d S rB   )r(   rC   rD   r;   s     r   r%   z lookup_jagged.<locals>.<genexpr>   s.      HHajEL99HHHHHHr   r   z: jt_allz: anyr>   r7   r   zlhs: any, rhs: any, ...)r
   getrC   Tag	pointwisetagssum_schema	argumentsr(   r+   
TensorTypeappendrg   joinrk   	functoolspartialjagged_unary_pointwisejagged_binary_pointwise)r^   r_   r`   dispatch_funcnum_tensor_argsschema_partsargcheck_schema_strs           r   lookup_jaggedr      sv   $((t44M  ydi''HH4HHHHHa L|- < <ch(899 < ''38(=(=(=>>>E ''38(:(:(:;;;;&&&#yy66)4A$AAA&AAA$%;TBBB!!2DJ4JJJ6JJJ$%<dCCC4r   c                 J    |                                  | j        | j        d}|S )Noffsets_metadata_cacherJ   r   )r   r`   s     r   extract_kwargsr      s+    ;;==. F
 Mr   c                     t          d |D                       t           | fd|D             i |fi t                    S )Nc              3   D   K   | ]}t          |t                    |V  d S rB   rL   )r   r   s     r   r%   z)jagged_unary_pointwise.<locals>.<genexpr>   s1      DDsjl&C&CDsDDDDDDr   c              3   2   K   | ]}|u r|j         n|V  d S rB   _values)r   r   njts     r   r%   z)jagged_unary_pointwise.<locals>.<genexpr>   s1      BBccSjjs{{cBBBBBBr   )nextr   r   )r^   r_   r`   r   s      @r   r   r      sm    
DDdDDD
D
DCBBBBTBBBMfMM 


  r   c           	         |d         |d         }}t          |t                    st          |t                    sJ d}t          |t                    rt          |t                    rt          ||j                  r7t           | |j        |j        g|dd          R i |fi t          |          S t          |                    | j        |j        |j                            t          |t                    }|rt          |          nt          |          }|r||fn||f\  }}	|		                                |	                                k    rt          d          t          |	          }
|	                                |
	                                dz   k    r7|r	|j        |
fn|
|j        f\  }}t           | ||g|dd          R i |fi |S |	                                |	                                k    r|j        d         |j        d         k    r3t          |                    | j        |j        |j                            g }t          |                                |                                          D ]-\  }}|                     | ||g|dd          R i |           .t!          j        |d          }t          |fi |S t          |                    | j        |j        |j                            )Nr   r   zHcannot call binary pointwise function {} with inputs of shapes {} and {}r   z+NYI: broadcasting NT with T with larger dimr   )r(   r   r   rr   r   r   r   formatrZ   r   NotImplementedErrorr   r   ry   unbindr   rC   cat)r^   r_   r`   rl   rn   mismatch_error_msga_is_ntextracted_kwargsrz   rN   
t_squeezedlhsrhsoutputsa_compb_comp
new_valuess                    r   r   r      s"   7DGqAa&&E*Q*E*EEEE 	S  !\"" Wz!\'B'B W a)) 	QY	?DH????? CQRSCTCT   -44T]AGQWUUVVVL))G,3J~a(((9J9J )QFFAq6EBuuww!"OPPP%a((J	vvxx:>>##a'''/6TBJ
++Z<TSDDc?DH?????TTCSTTT
 	uuww!%%'' 71:##"))$-!'JJ   !!((**ahhjj99 	F 	FNFFNN44DabbDDDVDDEEEEYwA...
J;;*:;;; )00QQ
R
RRr   c                    | t           j        j        j        u rt	          |i |S | j        dk    r' | |d         j        g|dd          R i | |d         S | j        dk    rdd}t          |||d          \  }}|                    d	          }t          |
                                |d
         dd          }t          |
                                |d         dd          }||k    r|S t          j        t          j        |j        ||dz                      }	g |j        d |         |	|j        |dz   d          R }
 |j        |
 S t#          |           )Napply_r   r   flattenr=   c                     d S rB   r   )input	start_dimend_dims      r   _flatten_sigz+jagged_torch_function.<locals>._flatten_sigD  s    Dr   Tr_   r`   normalize_to_only_use_kwargsr   r   F)r   r   )r   r=   )rC   _C_nnscaled_dot_product_attentionr   rZ   r   r   popr   r   r   reduceoperatormulr   reshaper   )r^   r_   r`   r   _
new_kwargsinpr   r   product	new_shapes              r   jagged_torch_functionr   7  s    ux|8882DCFCCC}  T!W_2tABBx2226222Aw }	!!	 	 	 	 +tFQU
 
 
: nnW%% %GGIIz+.	PU
 
 
	 #GGIIz),ie
 
 
 J"8<9wQR{;R1STTPci

+PWPsy17OPP	s{I&&
d
#
##r   zself: jt_allc                 L   | t           j        j        j        j        k    rdS | t           j        j        j        j        k    r|d         j        S | t           j        j        j        j        k    rt          |d         j                  S | t           j        j        j	        j        t           j        j        j
        j        fv r{|d         j        Ot          t          |d         j                  t          j        |d         j        dd                    z            S |d         j        
                                S | t           j        j        j        j        k    r|d         j        S | t           j        j        j        j        k    r|d         j                                        S d S )NFr   r   )rC   opsatenis_non_overlapping_and_densedefaultsym_sizerr   r   rX   	sym_numelnumelrI   intr   mathprodr   
sym_stride_stridessym_storage_offsetstorage_offsetr^   r_   r`   s      r   tensor_attr_supported_getterr   `  sC    uy~:BBBuuy~&...Aw}uy~!)))47=!!!	(0%).2F2NOOO7's47+,,tyaqrr9J/K/KKLLLAw$$&&&uy~(000Awuy~0888Aw--/// 98r   c                     t           j        S rB   )rC   jaggedr   s      r   prim_layout_defaultr     s
    <r   c                 b    | t           j        j        j        j        k    rt          d          d S )NznNestedTensors does not support directly calling torch.ops.aten.size please use `nested_tensor.size()` instead.)rC   r   r   r{   r   r   r   s      r   tensor_attr_unsupported_getterr     s8    
 uy~"***9
 
 	
 +*r   c                 "   ddl m} t          | ||d          \  }}|                    d          }|                                dS |                    dt          j                  |d<   |d         t          j        k    rdS  ||j	        fi |S )Nr   )is_contiguous_for_memory_formatTr   r   Fmemory_format)
r   r   r   r   lengthsr   rC   contiguous_formatpreserve_formatr   )r^   r_   r`   r   r   r   r   s          r   is_contiguous_generalr     s    CCCCCC&4T  MAz ..
!
!C {{}} u",..0# #J /"e&;;;t**3;EE*EEEr   z!self: jt_all, memory_format: any?z"input: jt_all, memory_format: any?c                 t   t          | ||d          \  }}|                    d          }t          |          }|j        _|d         t          j        k    r?ddlm} |j        dk    s
J d             ||	                                d           \  }}|S |j        |d	<   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   r   rI   rC   r   nested_tensorr   rJ   r   r   r   )	r^   r_   r`   r   r   r   new_metar   contigs	            r   clone_defaultr     s     '4T  MAz ..
!
!Cc""H
|o&%*AAA 877777 1$$$L %$$((tDDDIFAM #&,HYS[77J77DD8DDDr   zinput: jt, weight: t, bias: t?c                     t          | ||d          \  }}|                    d          }t           | |j        fi |fi t	          |          S NTr   r   r   r   r   r   r   r^   r_   r`   r   r   r   s         r   linear_defaultr    h    &4T  MAz ..
!
!CS[77J77OO>#;N;NOOOr   z6self: jt, grad_output: jt, weight: t, output_mask: anyc                    t          | ||d          \  }}|                    d          }|                    d          }|                    d          }t          | |d|d           t          t	          j        |j        |          fi t          |          }t	          j        |j                            dd          |j                  }	d }
||	|
fS )	NTr   r   grad_outputweightselfr=   )	r   r   rs   r   rC   matmulr   r   	transpose)r^   r_   r`   r   r   r   r  r  dsdwdbs              r   linear_backward_defaultr    s    
 '4T  MAz ..
!
!C..//K^^H%%F$V[-HHH	[(&11
 
5CK5P5P
 
B 
k)33B;;S[	I	IB	BB<r   zinput: jt_all, dtype: anyc                     t          | ||d          \  }}|                    d          }t           | |j        fi |fi t	          |          S r   r   r  s         r   to_dtyper    r  r   c                    ddl m} t          | ||d          \  }}|                    d          }|                    d            | |j        fi |}|j                            |j                  }dd	lm	}	 dd
l
m}
m} t          ||	|
f          r( ||          } ||j                  }|j        |_        n||j                 ||<   t          |          }||d<   t!          |fi |S )Nr   )_tensor_symint_registryTr   r   layout)devicer   )
FakeTensor)FunctionalTensormb_unwrap_functional_tensorr   )r   r  r   r   r   _offsetstor  torch._subclasses.fake_tensorr  #torch._subclasses.functional_tensorr  r  r(   nested_int_memor   r   )r^   r_   r`   r  r   r   r   r   new_offsetsr  r  r  tgtsrc
inp_kwargss                  r   to_copy_defaultr!    sO   666666&4T  MAz ..
!
!CNN8ck00Z00J,//):/;;K888888       
 +
,<=>> U))+66))#,77!1/Fs|/T,$$J'Jy
11j111r   z-self: jt_all, src: jt_all, non_blocking: any?c                 6   t          | ||d          \  }}|                    d          }|                    d          }|j        |j        k    rt          d          |                                                    |                                           |S )NTr   r   r  zXcopy_ only supports Nested Tensors that have same size and the exact same offset tensor.)r   r   rr   r   valuescopy_)r^   r_   r`   r   r   r   r  s          r   copy_defaultr%    s     '4T  MAz ..
!
!C
..

C
yCIf
 
 	
 JJLLszz||$$$Jr   c                     t          | ||d          \  }}|                    d          }t          j        |d<   t	           | |j        fi |fi t          |          S )NTr   r   r  )r   r   rC   stridedr   r   r   r  s         r   like_factory_defaultr(  0  sx     '4T  MAz ..
!
!C
 !=JxS[77J77OO>#;N;NOOOr   c                 |    t          | ||d          \  }}|                    d          } | |j                   |S r   r   r   r   r  s         r   zero__defaultr+  H  sM    &4T  MAz ..
!
!CDJr   z*self: jt_all, dim: any, half_to_float: anyc           
      (   t          | ||d          \  }}t          |d         t                    rt          d          |                    d          }t          |                                |d         fd|j                  \  |d<   }}}|rt          d          |r|j        dk    rt          d	          |r|j        t          d
          |d         d         |d<   |rt          j
        j                            t          j        j                            |j                            |j        j        d         d          |j        g|j        gt+          d                    |j                  }	t          j        j                            |	|j        g|j        j        d                   j        dg|j        j        dd          R  }
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   r=   z-inf)max_lengthspadding_valuer   total_L)r   r(   r)   r   r   r3   r   rJ   rI   rC   nn
functionalr-  r   r   _jagged_to_padded_dense_forwardr   r   r   r  _max_seqlenfloat_padded_dense_to_jagged_forwardr   r   )r^   r_   r`   r   r   r   reduce_on_batchreduce_on_raggedreduce_on_non_batchpadded_softmax_valuessoftmax_valuess              r   _softmax_defaultr=  S  s}    '4T  MAz *U#U++ 
V
 
 	
 ..
!
!C 				E			 	5  
`
 
 	
  
COa//s
 
 	
  
CL4I
 
 	

 #5)	Ju  C % 3 ; ;IN::##K%a("   _-#Fmm ;    !< 
!
 
!
 GG!\NK% H 
 
 
 "122&
 
 
 NBBnS.A.ABBBS[77J77OO>#;N;NOOOr   z7grad_output: jt, output: jt, dim: any, input_dtype: anyc                     t          | ||d          \  }}|                    d          }|                    d          }t           | |j        |j        fi |fi t	          |          S )NTr   r  outputr   )r^   r_   r`   r   r   grad_outr?  s          r   _softmax_backwardrA    s    
 '4T  MAz ~~m,,H^^H%%FXv~<<<< @Nx@X@X  r   z!self: jt, float: any, train: any?c                     t          | ||d          \  }}|                    d          } | |j        fi |\  }}t          |fi t	          |          t          |fi t	          |          fS r   r   r   r   r   r   )r^   r_   r`   r   r   r   out1out2s           r   native_dropout_defaultrF    s     '4T  MAz ..
!
!Cck00Z00JD$T11^C0011T11^C0011 r   z%grad_output: jt, mask: jt, scale: anyc                     t          | ||d          \  }}|                    d          }|                    d          }t           | |j        |j        fi |fi t	          |          S )NTr   r  maskr   )r^   r_   r`   r   r   r  rH  s          r   native_dropout_backward_defaultrI    s    
 '4T  MAz ..//K>>&!!D[ $,==*== 

%
%  r   z!self: jt, dim: any, keepdim: any?c                 :   t          | ||d          \  }}|                    d          }|d         st          d          |d         }t          t	          |j                  |d          |d<   t           | |j        fi |fi t          |d                   S )	NTr   r   keepdimz1prod(): keepdim=True must be set for NestedTensorr   r   r   )	r   r   r   r   rX   rr   r   r   r   )r^   r_   r`   r   r   r   r   s          r   prod_dim_intrL    s    &4T  MAz ..
!
!C i  PNOOO
U
C(SYfEEJuS[77J77SS>$q';R;RSSSr   z#self: jt, split_size: any, dim: anyc                     t          | ||d          \  }}|                    d          t                                          |d         d          |d<   t	          fd | j        fi |D                       S )NTr   r   r   rV   c              3   N   K   | ]}t          dd |it                    V   dS )r#  Nr   r   r   r   r<   r   s     r   r%   zsplit_tensor.<locals>.<genexpr>  sR         	55A5!4!455     r   )r   r   r   r   r)   r   r  s        @r   split_tensorrQ    s     '4T  MAz ..
!
!C(Ju4EwOOJu    ck00Z00     r   z$self: jt, split_sizes: any, dim: anyc                     t          | ||d          \  }}|                    d          t                                          |d         d          |d<   fd | j        fi |D             S )NTr   r   r   split_with_sizesc           	      F    g | ]}t          dd |it                    S r#  r   rO  rP  s     r   r!   z,split_with_sizes_default.<locals>.<listcomp>  sD        	55A5!4!455  r   )r   r   r   r   r   r  s        @r   split_with_sizes_defaultrV    s     '4T  MAz ..
!
!C(		:e$&8 Ju   ck00Z00   r   z+self: jt, dim: any, start: any, length: anyc                    t          | ||d          \  }}|                    d          }t          |                                |d         d          } | |j        ||d         |d                   }t          |fi t          |          S )	NTr   r   r   narrowstartlengthr   rY  rZ  )r   r   r   r   r   r   r   )r^   r_   r`   r   r   r   r   r#  s           r   rX  rX    s     '4T  MAz ..
!
!C
37799j&7
B
BCT!(#	  F 66."5"5666r   z self: jt, chunks: any, dim: any?c                    t          | ||d          \  }}|                    d          t                                          |d         dd          |d<   |d         dk    r|d         }j        d         }t          j        ||z            }j                                        }|	                    |          }	d	 |	D             }
d
 |
D             }
fd|
D             d |	D             }j
                            |          fdt          d|          D             S fd | j
        fi |D             S )NTr   r   r   chunkr   r   chunksc                 :    g | ]}t          j        |d           S )r   r   )rC   cumsumr;   s     r   r!   z!chunk_default.<locals>.<listcomp>+  s'    KKKa5<q111KKKr   c                 <    g | ]}t          j        |d d          S )r   r   r   )value)Fpadr;   s     r   r!   z!chunk_default.<locals>.<listcomp>,  s)    NNN15F!444NNNr   c                 $    g | ]}|j         d S ))r   rJ   )rJ   )r   per_offsetsr   s     r   r!   z!chunk_default.<locals>.<listcomp>-  s3     
 
 
 $CODD
 
 
r   c                 Z    g | ](}|                                                                 )S r   )r   itemr;   s     r   r!   z!chunk_default.<locals>.<listcomp>3  s(    ???!quuww||~~???r   c                 D    g | ]}t          dd |         i|         S rU  r   )r   re   chunk_valuesnested_kwargss     r   r!   z!chunk_default.<locals>.<listcomp>6  sE     
 
 
 FFQFM!4DFF
 
 
r   c           	      F    g | ]}t          dd |it                    S rU  rO  rP  s     r   r!   z!chunk_default.<locals>.<listcomp>;  sD     
 
 
 999^C%8%899
 
 
r   )r   r   r   r   rr   r   ceilr  diffr]  r   rV   range)r^   r_   r`   r   r   r_  	dim0_size
chunk_sizer   chunked_lengthschunked_offsetssplit_sizesrl  r   rm  s               @@@r   chunk_defaultrw    s   &4T  MAz ..
!
!C(		:e$gt  Ju %AH%IaL	Yy6122
 ,##%%!--//KK?KKKNNoNNN
 
 
 
.
 
 
 @????{((55
 
 
 
 
1j))
 
 
 	


 
 
 
T#+4444
 
 
 	
r   zself: jt_all, dim: any?c                   	
 t          | ||d          \  }}|d         }|dk    rt          d          |                    d          }|                                |                                	|                                |j        
>t          j        		                                
                                
dz
            S 
dk    rt          d	          t          j        d                   D ]4}	|         |         z   j        
dz
           k    rt          d
          5	
fdt          j        d                   D             S )NTr   r   r   z2unbind(): only supported for NestedTensor on dim=0r   r   r   zAunbind(): nested tensor ragged_idx out of bounds (should be >= 1)zMunbind(): nested tensor offsets and lengths do not match ragged_idx dimensionc           	      ^    g | ])}t          j        d z
  |         |                   *S )r   r[  )rC   rX  )r   re   r   r   r$   r#  s     r   r!   zunbind_int.<locals>.<listcomp>^  sI        	V*q.GTUJWWW  r   )r   r   r   r#  r   r   rJ   rC   rV   rp  tolistrq  r   )r^   r_   r`   r   r   r   r   re   r   r   r$   r#  s           @@@@r   
unbind_intr{  A  s    '4T  MAz U
C
axxOPPP
..
!
!CZZ\\FkkmmGkkmmGJ{67<<>>#8#8#:#:aQQQQQO
 
 	
 7=#$$  1:
"V\*q.%AAA_   B      w}Q'((   r   zself: jt, dim: anyc                     t          | ||d          \  }}|                    d          }|j        }t          t	          |j                  |d         d          |d<   t           | |fi |fi t          |          S )NTr   r   r   r   r   r   r   r   rX   rr   r   r   )r^   r_   r`   r   r   r   r#  s          r   squeeze_dimr~  d  s    &4T  MAz ..
!
!C[F(SYE9JIVVJuV22z22JJnS6I6IJJJr   c                 
   t          | ||d          \  }}|                    d          }|j        }|d         }t          t	          |j                  dz   |d          |d<   t           | |fi |fi t          |          S )NTr   r   r   r   	unsqueezer}  )r^   r_   r`   r   r   r   r#  r   s           r   unsqueeze_defaultr  q  s    &4T  MAz ..
!
!C[F U
C(SY!);S+NNJuV22z22JJnS6I6IJJJr   ztensors: any, dim: anyc                    t          | ||d          \  }}|                    d          }d |D             }t          |          dk    sJ |d         fd|D             }|d         }t          t          j                  |d          |d<   t           | d	 |D             fi |fi t          |d                   S )
NTr   tensorsc                      g | ]}|j         	|S r   )	is_nestedr   rN   s     r   r!   zcat_default.<locals>.<listcomp>  s    000AAK0a000r   r   c                 L    g | ] }|j         r|n|                              !S r   )r  	expand_as)r   rN   firsts     r   r!   zcat_default.<locals>.<listcomp>  s0    IIIAAK7qqQ[[%7%7IIIr   r   r   c                     g | ]	}|j         
S r   r   r  s     r   r!   zcat_default.<locals>.<listcomp>      )))Aai)))r   )r   r   rX   r   r   r   r   )	r^   r_   r`   r   r   r  nestedr   r  s	           @r   cat_defaultr    s    &4T  MAz nnY''G 10000Fv;;????1IEIIIIIIIG U
C(U[)9)93FFJu)))))88Z88 <J7ST:<V<V  r   zself: jt, other: anyc                 ,   t          | ||d          \  }}|                    d          }|                    d          }|j        r.|j        s't           | |j        |fi |fi t          |          S |j        rz|j        rs|                                dk    r[|                                dk    rCt          ||j                  r.t           | |j        |j                  fi t          |          S t          d|j         d|j
                   )NTr   r   other   z1matmul(): not supported between inputs of shapes rq   )r   r   r  r   r   r   r   r   rr   r   r   r^   r_   r`   r   r   r   r  s          r   matmul_defaultr    s=   &4T  MAz ..
!
!CNN7##E
} YU_ YDe22z22
 
6DS6I6I
 
 	
 
 Y5? Y7799q==UYY[[1__1CC1U1U_S[%- @ @XXNSVDWDWXXX
YCIYYEKYY  r   z#self: jt, size: any, implicit: any?c                 ^   t          | ||d          \  }}|                    d          }|d         }d|vs|                    d          rJ t          ||          st          d|j         d|           dg|d	d          }t           | |j        |          fi t          |          S )
NTr   r   r{   implicitzexpand(): cannot expand shape z -> r=   r   )r   r   r   r   rr   r   r   r   )r^   r_   r`   r   r   r   r{   
expand_args           r   expand_defaultr    s     '4T  MAz ..
!
!CfDj((*..2L2L(((c4(( SQCIQQ4QQRRRtABBxJS[*55MM9L9LMMMr   zself: t, other: jtc                     t          | ||d          \  }}|                    d          }|                    d          }t           | ||j                  fi t	          |          S )NTr   r   r  r   r  s          r   expand_as_defaultr    ss    &4T  MAz ..
!
!CNN7##ES%-00JJN54I4IJJJr   z"condition: jt, self: jt, other: jtc                 P   t          | ||d          \  }}|                    d          }|                    d          }|                    d          }|j        |j        cxk    r|j        k    sn J t           | |j        |j        |j        fi |fi t          |          S )NTr   	conditionr   r  )r   r   rr   r   r   r   )r^   r_   r`   r   r   r  r   r  s           r   
where_selfr    s    &4T  MAz {++I
..
!
!CNN7##E?ek6666SY666666YU]IIjII 

#
#  r   zself: jt, device: any?c                     t          | ||d          \  }}|                    d          }t           | |j        fi |fi t	          |          S r   r   r  s         r   _pin_memory_defaultr    r  r   c                 t    t          | ||d          \  }}|                    d          } | |j        fi |S r   r*  r  s         r   is_pinned_defaultr    sP    &4T  MAz ..
!
!C4**z***r   zself: jt_all, other: jt_allc                 :    |d         j         |d         j         k    S r   )rr   r   s      r   is_same_size_defaultr    s     7=DGM))r   z3self: jt_all, dim: any?, keepdim: any?, dtype: any?c                 r   t          | ||d          \  }}|                    d          }t          |                                |d         d|j                  \  |d<   }}}|r|j        t          d          |r|r | |j        fi |}	nS|rt          d           |j        j        |j        d	z
  gt          d
|j        d	z
            t          |j        |                                d	z
            R  }
t          j        j                            |
                    |
j        d
         d          |j        g|j        g          }  |j        |j        d
         |j        g|
j        d	d         R  j        d
gt          d|j        d	z             d	t          |j        d	z   |                                          R  }t          j        ||j                  }	|d         r|	                    d
          }	|	S |rt          d          t+           | |j        fi |fi t-          |          S )z
    Performs a sum along the provided tensor dimension.
    Returns a dense tensor if the ragged dimension is reduced away, else returns a nested tensor.
    Tr   r   r   r   Nzgsum(): not supported where lengths is not None if reducing across the ragged dimension for NestedTensorzLsum(): not supported along a ragged and non-batch dimension for NestedTensorr   r   r=   r.  r   r   rK  z\sum(): not supported along the batch dimension but not the ragged dimension for NestedTensor)r   r   r3   r   rJ   rI   r   r   permuterq  rC   r   r   r4  r   r   r  r5  viewr   r  r   r   )r^   r_   r`   r   r   r   r8  r9  r:  outvalues_ragged_dim_outerpaddedpadded_ragged_dim_originals                r   sum_dim_IntListr    s    '4T  MAz ..
!
!C 			5		 	5  
CL4I
 
 	

  =
,	 $ ) CC
 $ #b   ':ck&9!#'q#/A-..' s		A66' ' '# Y^CC'//0G0Ma0PRTUU _- D  F*Q* ).BB* * * * q#/A-..* * s*CGGII66* * *& )*O  C
 i  	#--""C
 	 n   D++
++
 
/=c/B/B
 
 	
r   z"self: jt_all, dim0: any, dim1: anyc           
      z   t          | ||d          \  }}ddlm} |                    d          } ||                                |d         |d         f          \  }}|j        t          d          ||j        k    s||j        k    r|dk    s|dk    rt          d	          ||j        k    r|}	n|}	t          |          }
|	|
d
<   t          |
                                                    t          t          |j                  |          t          t          |j                  |                    fi |
S t          |                                |d         d          |d<   t          |                                |d         d          |d<   t           | |j        fi |fi t          |          S )NTr   r   r   r   dim0dim1zDtranspose(): not supported on jagged layout nested tensor with holesz?Transpose is not supported on the batch dimension for jagged NTrJ   r
  )r   r   r   r   r   rI   rY   rJ   r   r   r#  r
  r   rX   rr   r   r   )r^   r_   r`   r   r   r   r   r  r  to_dimr   s              r   transpose_intr  \  s    '4T  MAz 655555
..
!
!C""37799z&/A:fCU.VWWJD$
|R
 
 	
 s$#/"9"9199		Q   3?""FFF#C((
$*
=!JJLL""#C	NND99#C	NND99 
 

 
 
 	
 *#''))Z5GUUJv)#''))Z5GUUJvS[77J77OO>#;N;NOOOr   zself: jt_all, dims: anyc                    t          | ||d          \  }}|                    d          }|                    d          }t          |          }t          |j                  t          |          k    r't          d ddt          |           dz             d	d
lm}  ||          }	t          |	          t          t          |	                    k    rt          d          |j	        t          d          |	d	         d	k    rt          d          |	
                    |j                  |d<   fd|	dd          D             }
|
|d<   t           | |j        fi |fi |S )NTr   r   r-   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 NTrJ   c                 0    g | ]}t          |          S r   r'   )r   r   inp_dims     r   r!   z#permute_default.<locals>.<listcomp>  s$    VVV%gs33VVVr   r   )r   r   r   rX   rr   rY   r   r   setrI   indexrJ   r   r   )r^   r_   r`   r   r   r   r-   r   r   canonicalized_dims
inner_dimsr  s              @r   permute_defaultr    s   &4T  MAz ..
!
!C>>&!!D$$J#)nnG #d))OGOOO_RUVZR[R[___`
 
 	

 655555**7D99
#c*<&=&=">">>>EFFF
|P
 
 	
 !!!K
 
 	
 !3 8 8 I IJ}VVVV?QRSRTRT?UVVVJ#JvS[77J77FF:FFFr   zself: jt_all, size: anyc                 L   t          | ||d          \  }}|                    d          |                    d          j        dk    r@t          j                  t                    k    rt          dj         d d          t                    d	k     st                    st          d
j         d           fdfdt          t                    dz
            D             }t           | j
        |          fi t                    S )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                 j    | j         dz
  k    rj                            |           S | dz            S rH   )rJ   r   r{   )	inner_idxr   r{   s    r   get_inner_sizez$view_default.<locals>.get_inner_size  s:    !+++;##I...	A&&r   c                 &    g | ]} |          S r   r   )r   re   r  s     r   r!   z view_default.<locals>.<listcomp>  s#    BBB..##BBBr   )r   r   rJ   r)   rr   r   rX   r   rq  r   r   r   )	r^   r_   r`   r   r   
inner_sizer  r   r{   s	         @@@r   view_defaultr    sj   
 '4T  MAz ..
!
!C>>&!!D
!ci 0 0E$KK ? ?@ Y@ @7;@ @ @
 
 	
 4yy1}}.sD99}M	MMtMMNNN ' ' ' ' ' ' CBBBU3t99q=-A-ABBBJS[*55MM9L9LMMMr   zHinput: jt_all, normalized_shape: any, weight: any?, bias: any?, eps: anyc                    t          | ||d          \  }}|                    d          }|                                dk    rt          d          |d         }|j        |j                 }|                                t          |          z
  }|dk    rt          d          ||v r|j        t          d	          ||v rt          j	        j
                            |j                            |j        
          |j        g|j        g          }	t          j	        j
                            t          j        |j        j        d         df|j        |j                  |j        g|j        g                              |	j                  }
|j                                                            d                              d          |	j        d         z  }t          j        |	dd          |z  }|	|z
  |
z  }t          j        t          j        |          dd          |z  }t          j        ||d         z             }||z  }t          j	        j
                            ||j        g|j        j        d                                       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 dimensionsnormalized_shaper   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   r  r   )r  dtype)r   r   r   rK  epsr0  r=   )r   r   r   r   r   rJ   rX   rI   rC   r   r   r4  r   r   r  r5  onesr  r  expandrp  r  r   squaresqrtr7  	unflattenr   r   )r^   r_   r`   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_valuesr?  s                      r   native_layer_norm_defaultr    sn   
 '4T  MAz ..
!
!C
wwyyA~~]
 
 	
 ""45)CO,K!ggii#.>*?*?? 	 1$$d
 
 	
 &&&3<+Cy
 
 	

 	'''y~EEK/     \N) F 
 
 inDDJ)!,a039UUU\N) E 
 
 &
 
	 	 L))!,,66q99L<Nq<QQ 	
 I  
  	 4
 I.//  
  	 jJu$5566-3#(9>#Q#Q\NK% $R $
 $
 )	#/A-//0
 
 	! 1II^C5H5HII
 	
 S[77J77FD#77>##6#67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          \  }}|                    d          }|                    d          } | |j        |j        fi |\  }}}	|d ||	fS t          |fi t	          |          ||	fS )NTr   r@  r   rC  )
r^   r_   r`   r   r   r@  r   d_inputd_gammad_betas
             r   "native_layer_norm_backward_defaultr  E  s    
 '4T  MAz ~~j))H
..
!
!C#tH$4ckPPZPPGWfgv&&88N3$7$788'6JJr   zself: jt, dim: any, index: anyc                 X   t          | ||d          \  }}|                    d          }t          |                                |d         dd          |d<   |d         dk    r |                                |d                  S t           | |j        fi |fi t          |          S )	NTr   r   r   selectr^  r   r  )r   r   r   r   r   r   r   r   r  s         r   
select_intr  V  s    &4T  MAz ..
!
!C(		:e$h  Ju %Azz||Jw/00S[77J77OO>#;N;NOOOr   z7self: jt, dim: any?, start: any?, end: any?, step: any?c                     t          | ||d          \  }}|                    d          }t          |                                |d         d          |d<   t	           | |j        fi |fi t          |          S )NTr   r   r   slice)r   r   r   r   r   r   r   r  s         r   slice_tensorr  i  s    
 '4T  MAz ..
!
!C(Ju4EwOOJuS[77J77OO>#;N;NOOOr   z{input: jt, weight: t, bias: t?, stride: any, padding: any, dilation: any, transposed: any, output_padding: any, groups: anyc                     t          | ||d          \  }}|                    d          }t           | |j        fi |fi t	          |          S r   r   r  s         r   convolution_defaultr  x  sj     '4T  MAz ..
!
!CS[77J77OO>#;N;NOOOr   c                    t          | ||d          \  }}t          |d                   dk    rt          d          |                    d          }t	          |                                |d         d|j                  \  |d<   }}}|rt          d          |r|j        t          d
          |d         st          d          |rt          j	        ||j        |d                   }	|j
                                        }
t          |                                dz
            D ]}|
                    d          }
|	|
                    |	j                  z  S t!           | |j        fi |fi t%          |          S )z
    Performs a mean along the provided tensor dimension.
    Returns a dense tensor if the ragged dimension is reduced away, else returns a nested tensor.
    Tr   r   r   zAmean(): not supported across multiple dimensions for NestedTensorr   r  z]mean(): not supported along the batch dimension but not the ragged dimension for NestedTensorNzhmean(): not supported where lengths is not None if reducing across the ragged dimension for NestedTensorrK  z9mean(): not supported when keepdim=False for NestedTensorr  r   r=   )r   rX   r   r   r3   r   rJ   rI   rC   r   r  rp  rq  r  broadcast_tor   r   r   r   )r^   r_   r`   r   r   r   r8  r9  r:  	torch_sumr   s              r   mean_dimr    s    '4T  MAz :e!!O
 
 	
 ..
!
!C 			5		 	5  
k
 
 	
  
CL4I
 
 	

 i  XVWWW 
AIcs
9@UVVV	
 ,##%%swwyy1}%% 	, 	,A''++GG7//	@@@@S[''J'' +9#+>+>  r   c                 H   t          | ||d          \  }}|                    d          }|D ]}t          |t                    st	          d          |                                |d                                         k    rt	          d          t          ||d         j                  st	          d          t          |d                                         dz   |d	         d
          |d	<   t           | d |D             fi |fi t          |d                   S )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   stackc                     g | ]	}|j         
S r   r   r  s     r   r!   z!stack_default.<locals>.<listcomp>  r  r   )
r   r   r(   r   r   r   r   r   r   r   )r^   r_   r`   r   r   r  rN   s          r   stack_defaultr    sY   &4T  MAz
 nnY''G  !\** 	NLMMM5577gajnn&&&&K   "!WQZ%566 	X  	
 )
1j/ Ju )))))88Z88 <J7ST:<V<V  r   zQweight: t, indices: jt, padding_idx: any?, scale_grad_by_freq: any?, sparse: any?c                     t          | ||d          \  }}|                    d          }|                    d          }t           | ||j        fi |fi t	          |          S )NTr   indicesr  r   )r^   r_   r`   r   r   r  r  s          r   embedding_defaultr    s    
 '4T  MAz
 nnY''G^^H%%FVW_33
33 7Eg7N7N  r   c                     t          | ||d          \  }}|                    d          }|j                                        S r   )r   r   r   detachr  s         r   values_defaultr    sN     '4T  MAz ..
!
!C ;r   c                 x    t          | ||d          \  }}|                    d          } | |j                  S r   r*  r  s         r   all_defaultr  	  sH    &4T  MAz ..
!
!C4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$   
min_seqlen
max_seqlen)r   rJ   r   )r   r   )r^   r_   r`   r   r   r#  r   r   r$   r  r  metadata_caches               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                 f    t          | ||d          \  }}|                    d          }|j        S r   )r   r   r  r  s         r   _nested_get_offsetsr  4  >    &4T  MAz ..
!
!C<r   c                 f    t          | ||d          \  }}|                    d          }|j        S r   )r   r   rI   r  s         r   _nested_get_lengthsr  >  r  r   c                 f    t          | ||d          \  }}|                    d          }|j        S r   )r   r   rJ   r  s         r   _nested_get_ragged_idxr  H  s>    &4T  MAz ..
!
!C?r   c                     t          | ||d          \  }}|                    d          }|j                            dd           S )NTr   r   r  r   r   r   r   r  s         r   _nested_get_min_seqlenr  R  O    &4T  MAz ..
!
!C""<666r   c                     t          | ||d          \  }}|                    d          }|j                            dd           S )NTr   r   r  r   r  s         r   _nested_get_max_seqlenr  \  r  r   zself: jt, mask: anyc                 <   t          | ||d          \  }}|                    d          }|                    d          }|j        dk    rt          d          |j        |j        k    rt          d|j         d|j                   |j                            |                                          }t          j	        |                                
                    d	
          d          }t          |          }||j                 |d<   t          dd|i|S )NTr   r   rH  r   z3masked_select only support 2-D selections currentlyzMask with shape z& is not compatible with input's shape r   r   rc  r   r#  r   )r   r   r   r   r   r   masked_selectr#  re  rf  ra  r   r  r   )	r^   r_   r`   r   r   r   rH  
res_valuesmask_cumsums	            r   masked_select_defaultr	  g  s(   &4T  MAz ..
!
!C>>&!!D
x!||PQQQ	dj	 	 \tz\\QTQZ\\
 
 	
 **4;;==99J%,,,33V<<K#D!#,/DO  
  r   z	self: anyc                 "    ddl m}  |            S )Nr   )_nt_view_dummy)$torch.nested._internal.nested_tensorr  )r^   r_   r`   r  s       r   _nested_get_jagged_dummyr    s"    CCCCCC>r   r   IMPLr  CPUCUDAMeta)TF)r   )r   r   r   typingrC   torch.nn.functionalr2  r3  re  torch.fx.operator_schemasr   torch.nested._internal.sdpar   r   r   r	   ListAny__annotations__r
   Dictr   r   r3   strrk   rs   r   r   r   r   register_jagged_funcOptionalCallabler   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   primr  r   r{   r   is_contiguousr   r   cloner   linearr  linear_backwardr  r  r  r  _to_copyr!  r$  r%  r  
empty_like	ones_like
zeros_like
randn_liker(  zero_r+  _softmaxr=  _softmax_backward_datarA  native_dropoutrF  native_dropout_backwardrI  r   dim_intrL  rV   rD   rQ  rS  rV  rX  r]  rw  r   r   r{  r   r~  r  r  r   r  r	  r  r  r  r  r  wherer  r  _pin_memoryr  	is_pinnedr  is_same_sizer  r   dim_IntListr  r
  r  r  r  r  _unsafe_viewr  native_layer_normr  native_layer_norm_backwardr  r  r  r  r  convolutionr  r  r  r  r  	embeddingr  r#  _nested_get_valuesr  rx   r  _nested_view_from_jaggedr  r  r  r  r  r  r  r	  r  library_scoped_libraryimplr   r   r   <module>r=     s                        8 8 8 8 8 8 K K K K K K ' ' ' ' ' ' c   #% $sCx. % % %
% % % DI
S 
S 
S 
SY Y Y Y6=S =D = = = =@

#&
+7
AD
	
 
 
 
    0  . )y(8HII HX,>    <    9S 9S 9Sx&$ &$ &$R 	3;	'	"	$	 (	!)	)1  0 0 0, ein+3^DD  ED 
Y^ ! 
 
	 
 ein2:NKKF F LKF(  	IN .0S   
 	IN "F E E E8 ein+35UVVP P WVP 	IN"*<  	 $ ein'-/JKKP P LKP ein-5~FF2 2 GF2B 	IN "Q    D  UY^*2N C C  
 	!)	 (	!)	!)	  P P P ein*2NCC  DC 	IN#%Q EP EP EPP 	IN)1=  	  	IN!)+N 
 
 
 	IN*2+ 	 		 	 ein)13VWWT T XWT  	IN!F    	IN#+-S   " 	IN!#P 7 7 7  ein*24VWW&
 &
 XW&
R ein+/1JKK  LKD ein,02FGG	K 	K HG	K ein.68LMMK K NMK ein(02JKK  LK, ein+35KLL  ML, 	IN!#H N N N  ein.68LMMK K NMK ein*/1UVV  WV" ein08:RSSP P TSP ein.68PQQ+ + RQ+ 	IN')F * * * 	IN"9 Y
 Y
	 Y
x 	IN "F (P (P (PV ein,46OPP"G "G QP"GJ 
Y^ %)."="EF )N )N	 )NX 	IN$,N ^D ^D	 ^DB 	IN-5v 
K 
K	 
K ein+/1QRRP P SRP$ 	IN= P P	 P 	IN&G 
P P 
P 	INR 8 8 8v ein*24LMM  NM< 	IN$W  	  	%	)1  	  	  	  ein(0.AA  BA 	IN+3i  	 8 ein8@.QQ  RQ ein8@.QQ  RQ ein;C^TT  UT ein;C^TT7 7 UT7 ein;C^TT7 7 UT7 ein2:<QRR  SR2 ein=E{SS  TS ]""6622 LdII(*BEJJJII(*BFKKKII(*BFKKKL L L L L L L L L L L L L L L L L Ls    Ak33k7:k7