U
    Mh;                  	   @   sP  U d dl Z d dlZd dlZd dlZd dlmZ ddlmZ d dlT d dl	m
  mZ d dlmZ g Zee ed< i Zeeef ed< d	d
 ZdddZdd ZeddddZeeeeddddZdd Zdd Zdd Ze eeZe e! dddZ"d d! Z#d"d# Z$d$d% Z%d&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(j0j*gd(d)d* Z1eej'j2j3j*d(d+d, Z4eej'j(j5j*gd(d-d. Z6eej'j(j7j*d(d/d0 Z8eej'j(j7j9d1e8 eej'j(j:j*d2d3d4 Z;eej'j(j<j*d5d6d7 Z=eej'j(j>j*d(d8d9 Z?eej'j(j@j*ej'j(jAj*ej'j(jBj*ej'j(jCj*ej'j(jDj*gd(e$ eej'j(jEj*d:e$ eej'j(jFj*d;d<d= ZGeej'j(jHj*d>d?d@ ZIeej'j(jJjKdAdBdC ZLeej'j(jMjNdDdEdF ZOeej'j(jPj*dGdHdI ZQeej'j(jRj*dJdKdL ZSeej'j(jTjUdMdNdO ZVeej'j(jWj,dPdQdR ZXeej'j(jYj*dPdSdT ZZeej'j(j[j*dUdVdW Z\eej'j(j]j*dXdYdZ Z^eej'j(j_j*d[d\d] Z`eej'j(jaj*d^d_d` Zbeej'j(jcjddadbdc Zeeej'j(jfj*dddedf Zgeej'j(jhj*dddgdh Zieej'j(jjj*didjdk Zkeej'j(jljmdldmdn Zneej'j(jojUdodpdq Zpeej'j(jqj*ej'j(jrj*gdrdsdt Zseej'j(jtj*dudvdw Zueej'j(jvj*dxdydz Zweej'j(jxjUd{d|d} Zyeej'j(jzjNd~dd Z{eej'j(j|j*ddd Z}eej'j(j~j,ddd Zeej'j(jj*dUdd Zeej'j(jj*ddd Zeej'j(jj*ej'j(jj*gd(dd Zeej'j(jj*ddd Zeej'j(jj*d(dd Zeej'j(jj*d(dd Zeej'j(jj*d(dd Zeej'j(jj*ddd Zejdd0Z(e(ded e(ded e(ded W 5 Q R X dS )    N)#jagged_scaled_dot_product_attention   NestedTensor)*)normalize_function__all__JAGGED_OPS_TABLEc                 C   s(   |dkr|| k st |dk r dS |d S )Nr      r   )AssertionError)ndimdim r   L/var/www/html/venv/lib/python3.8/site-packages/torch/nested/_internal/ops.py_outer_to_inner_dim   s    r   TFc                 C   sZ   ddl m} || |}|dkr.t| dn|dkrH|sHt| d|rVt| |S |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   wrappedr   r   r   _wrap_jagged_dim   s    
r   c                    s|   ddl m   fdd|D }d|k}d|k}||A rb|r@dnd\}}t| d| d	| d
tfdd|D |fS )Nr   r   c                    s   g | ]} |qS r   r   .0dr   r   r   r   
<listcomp>,   s     z%_wrap_jagged_dims.<locals>.<listcomp>r   )batchragged)r    r   z(): applying over the z dimension, but not the z, dimension is not supported for NestedTensorc                 3   s    | ]}|d krt  |V  qdS )r   N)r   r   )r   r   r   	<genexpr>8   s      z$_wrap_jagged_dims.<locals>.<genexpr>)r   r   r   tuple)r   Zdimsr   Zwrapped_dimsZzero_in_dimsZone_in_dimsapplyZ	not_applyr   r   r   _wrap_jagged_dims'   s    r$   )
schema_strreturnc                    s  |  d}dd |D d}t|| }|d dkrD|d d }nNt||kr`t|t|kstd|j d|  d	| d
t| dt| ddd dd dd dd d}t|D ]\}}	|	 d\}
}|d}|r|d d n|}|| krtd| |t|kr8|std|j d|  d|
 q||  |f fdd	}||| sdddddd}td|j d|  d|
 d ||  qd S )!Nz, c                 S   s   g | ]}| d qS )?)endswithr   xr   r   r   r   ?   s     z check_schema.<locals>.<listcomp>Tz...NestedTensor (z): expected at least z arguments and at most z arguments, but got: z
 argumentsc                 S   s   t | tjot | t S N)
isinstancetorchTensorr   r*   r   r   r   <lambda>N       zcheck_schema.<locals>.<lambda>c                 S   s   t | to| jd ko| jdkS Nr   )r/   r   _lengths_ragged_idxr2   r   r   r   r3   O   s   
c                 S   s
   t | tS r.   )r/   r   r2   r   r   r   r3   R   s    c                 S   s   dS )NTr   r2   r   r   r   r3   U   r4   )tjtjt_allanyz: r'   zUnknown arg type: z) missing required argument: c                    s    |r| d kp | S  | S d S r.   r   )r*   is_optionalZ	_check_fnr   r   check_fnh   s    zcheck_schema.<locals>.check_fnZtensorzoptional tensorz%contiguous jagged layout NestedTensorzjagged layout NestedTensorz
<any type>)r8   zt?r9   r:   r;   z): expected z	 to be a )	splitcountlen
ValueError__name__	enumerater(   keysr   )r%   funcargskwargsZnamed_arg_typesZnum_optional_argsZmin_argsZarg_type_check_fnsiZnamed_arg_typenameZarg_typer<   Znormalized_arg_typer>   Ztype_to_descr   r=   r   check_schema=   sL    
,

 rK   )aa_namebb_namer&   c                 C   s:   |j |j |j |j kr6td| j d| d| dd S )Nr,   z: expected  and z' to have the same exact offsets tensor.)_sizer7   r   rC   )rF   rL   rM   rN   rO   r   r   r   check_ragged_dim_same}   s    rR   c                 C   sL   | j d }| jd | }|d | }t|t|koJtdd t||D S )Nr   c                 s   s"   | ]\}}||kp|d kV  qdS )r+   Nr   )r   nssr   r   r   r!      s     z%raggedness_matches.<locals>.<genexpr>)r7   rQ   rA   allzip)ntsizeendZ	nt_raggedZsize_raggedr   r   r   raggedness_matches   s    
rZ   c                 C   s   | j d dkr| d} q | S Nr   r   )shapesqueeze)r8   r   r   r   squeeze_leading_ones   s    r^   c                    s4   t  ts g t ts g fdd}|S )Nc                    s2   D ](} fdd}D ]}||||< qq S )Nc                    s    fdd}|S )Nc                     s"   t f| |  f| |S r.   )rK   )rG   rH   )aten_oprF   r%   r   r   inner   s    z@register_func.<locals>.wrapper.<locals>.get_inner.<locals>.innerr   )r_   r`   )rF   r%   )r_   r   	get_inner   s    z1register_func.<locals>.wrapper.<locals>.get_innerr   )rF   r_   ra   tableaten_opsr%   tables)rF   r   wrapper   s
    zregister_func.<locals>.wrapper)r/   list)re   rd   r%   rf   r   rc   r   register_func   s    

rh   )r&   c                 O   s   t | d }|d k	r|S tjj| jkrtdd |D }|dkr^td| f|| t	t
| S |dkrtd| f|| t	t| S d S )Nc                 s   s   | ]}t |tjV  qd S r.   )r/   r0   r1   r)   r   r   r   r!      s     z lookup_jagged.<locals>.<genexpr>r   zself: jt_all, ...r
   zlhs: any, rhs: any, ...)r	   getr0   TagZ	pointwisetagssumrK   	functoolspartialjagged_unary_pointwisejagged_binary_pointwise)rF   rG   rH   Zdispatch_funcZnum_tensor_argsr   r   r   lookup_jagged   s    rq   c                 C   s   |   | j| jd}|S )NoffsetsZ_metadata_cacher7   rr   )argrH   r   r   r   extract_kwargs   s
    ru   c                 O   s.   t | |d jf|dd  |ft|d S r[   )r   _valuesru   rF   rG   rH   r   r   r   ro      s
    
ro   c                 O   s  |d |d  }}t |ts*t |ts*td}t |trt |trt||jrxt| |j|jf|dd  |ft|S t|| j	|j|jt |t}|rt|nt|}|r||fn||f\}}	|	
 |
 krtdt|	}
|
 |

 d kr<|r|j|
fn|
|jf\}}t| ||f|dd  |f|S |
 |
 kr|jd |jd kr|t|| j	|j|jg }t| | D ]*\}}|| ||f|dd  | qtj|dd}t|f|S t|| j	|j|jd S )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   rZ   rQ   rv   ru   r   formatrC   r   NotImplementedErrorr^   r\   rV   unbindappendr0   cat)rF   rG   rH   rL   rN   Zmismatch_error_msgZa_is_ntZextracted_kwargsrW   r8   Z
t_squeezedlhsrhsoutputsZa_compZb_comp
new_valuesr   r   r   rp      s@    
"$rp   c                 O   s   | t jjjkrt||S | jdkrddd}t|||dd\}}|d}t|	 |d	 dd
d}t|	 |d dd
d}||kr|S t
tj|j||d  }	|jd | |	f|j|d d  }
|j|
 S t| d S )Nflattenr   r+   c                 S   s   d S r.   r   )input	start_dimend_dimr   r   r   _flatten_sig,  s    z+jagged_torch_function.<locals>._flatten_sigTrG   rH   Znormalize_to_only_use_kwargsr   r   F)r   r   r   )r   r+   )r0   Z_CZ_nnZscaled_dot_product_attentionr   rC   r   popr   r   rm   reduceoperatormulr\   Zreshaperz   )rF   rG   rH   r   _
new_kwargsinpr   r   productZ	new_shaper   r   r   jagged_torch_function#  s:    


   

      $
r   zself: jt_allc                 O   s   | 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rLt|d jS | t jjj	jt jjj
jfkr|d jd k	rtt|d jt|d jdd   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
   )r0   opsatenis_non_overlapping_and_densedefaultsym_sizerQ   r   rA   	sym_numelnumelr6   intrl   mathprodrv   
sym_strideZ_stridessym_storage_offsetZstorage_offsetrw   r   r   r   tensor_attr_supported_getterH  s    
*
r   c                 O   s   t jS r.   )r0   Zjaggedrw   r   r   r   prim_layout_defaultj  s    r   c                 O   s   | 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.)r0   r   r   rX   r   r   rw   r   r   r   tensor_attr_unsupported_gettero  s    r   c                 O   sl   ddl m} t| ||dd\}}|d}| d k	r:dS |dtj|d< |d tjkr^dS ||j	f|S )Nr   )is_contiguous_for_memory_formatTr   r   Fmemory_format)
r   r   r   r   lengthsri   r0   Zcontiguous_formatZpreserve_formatrv   )rF   rG   rH   r   r   r   r   r   r   r   is_contiguous_general{  s"       

 r   z!self: jt_all, memory_format: any?zinput: jt, weight: t, bias: t?c                 O   s8   t | ||dd\}}|d}t| |jf|ft|S NTr   r   r   r   r   rv   ru   rF   rG   rH   r   r   r   r   r   r   linear_default  s       

r   z6self: jt, grad_output: jt, weight: t, output_mask: anyc                 O   s|   t | ||dd\}}|d}|d}|d}t| |d|d tt|j|ft|}t|jj|j}	d }
||	|
fS )NTr   r   grad_outputweightself)	r   r   rR   r   r0   mmrv   ru   T)rF   rG   rH   r   r   r   r   r   ZdsZdwdbr   r   r   linear_backward_default  s$       



r   c           
      O   s|   ddl m} t| ||dd\}}|d}|d | |jf|}|jj|jd}||j ||< t|}	||	d< t	|f|	S )	Nr   )_tensor_symint_registryTr   r   layout)devicers   )
nested_tensorr   r   r   rv   _offsetstor   ru   r   )
rF   rG   rH   r   r   r   r   r   Znew_offsets
inp_kwargsr   r   r   to_copy_default  s       


r   z&self: jt, dim: any, half_to_float: anyz!self: jt, float: any, train: any?c                 O   sP   t | ||dd\}}|d}| |jf|\}}t|ft|t|ft|fS r   r   r   rv   r   ru   )rF   rG   rH   r   r   r   Zout1Zout2r   r   r   native_dropout_default  s       

r   z%grad_output: jt, mask: jt, scale: anyc                 O   sF   t | ||dd\}}|d}|d}t| |j|jf|ft|S )NTr   r   maskr   )rF   rG   rH   r   r   r   r   r   r   r   native_dropout_backward_default  s       


r   z!self: jt, dim: any, keepdim: any?c                 O   sj   t | ||dd\}}|d}|d s.td|d }tt|j|d|d< t| |jf|ft|d S )	NTr   r   keepdimz1prod(): keepdim=True must be set for NestedTensorr   r   r   )	r   r   r   r   rA   rQ   r   rv   ru   )rF   rG   rH   r   r   r   r   r   r   r   prod_dim_int  s       

r   z#self: jt, split_size: any, dim: anyc                    sV   t | ||dd\}}|d t  |d d|d< t fdd|  jf|D S )NTr   r   r   r?   c                 3   s$   | ]}t f d |it V  qdS )valuesNr   ru   r)   r   r   r   r!     s   zsplit_tensor.<locals>.<genexpr>)r   r   r   r   r"   rv   rF   rG   rH   r   r   r   r   r   split_tensor  s       

r   z$self: jt, split_sizes: any, dim: anyc                    sR   t | ||dd\}}|d t  |d d|d<  fdd|  jf|D S )NTr   r   r   split_with_sizesc                    s"   g | ]}t f d |it qS r   r   r)   r   r   r   r   -  s   z,split_with_sizes_default.<locals>.<listcomp>)r   r   r   r   rv   r   r   r   r   split_with_sizes_default  s       

  
r   z self: jt, chunks: any, dim: any?c                    s   t | ||dd\}}|dt |d ddd|d< |d dkr|d }jd }t|| }j }|	|}	d	d
 |	D }
dd
 |
D }
fdd
|
D dd
 |	D }j
|  fdd
td|D S fdd
| j
f|D S d S )NTr   r   r   chunk)r   r   chunksc                 S   s   g | ]}t j|d dqS )r   rx   )r0   Zcumsumr)   r   r   r   r   G  s     z!chunk_default.<locals>.<listcomp>c                 S   s   g | ]}t j|d ddqS ))r   r   r   )value)Fpadr)   r   r   r   r   H  s     c                    s   g | ]}| j d qS ))rs   r7   )r7   )r   Zper_offsetsr   r   r   r   I  s   c                 S   s   g | ]}|   qS r   )rl   itemr)   r   r   r   r   O  s     c                    s&   g | ]}t f d  | i| qS r   r   r   rI   )chunk_valuesnested_kwargsr   r   r   R  s   c                    s"   g | ]}t f d |it qS r   r   r)   r   r   r   r   W  s   )r   r   r   r   rQ   r   ceilr   diffr   rv   r?   range)rF   rG   rH   r   r   r   Z	dim0_size
chunk_sizer   Zchunked_lengthsZchunked_offsetsZsplit_sizesr   )r   r   r   r   chunk_default3  s@       

   





r   zself: jt_all, dim: any?c                    s   t | ||dd\}}|d }|dkr,td|d}| | |  |j d krxtj	 
 d dS dkrtd	t jd D ]*}|  |  jd  krtd
q fddt jd D S )NTr   r   r   z2unbind(): only supported for NestedTensor on dim=0r   r   rx   zAunbind(): nested tensor ragged_idx out of bounds (should be >= 1)zMunbind(): nested tensor offsets and lengths do not match ragged_idx dimensionc                    s*   g | ]"}t jd  |  | dqS )r   )r   startlength)r0   Znarrowr   r   rs   
ragged_idxr   r   r   r   z  s   zunbind_int.<locals>.<listcomp>)r   r   r   r   rs   r   r7   r0   r?   r   tolistr   r\   )rF   rG   rH   r   r   r   r   rI   r   r   r   
unbind_int]  s8       

r   zself: jt, dim: anyc                 O   sV   t | ||dd\}}|d}|j}tt|j|d d|d< t| |f|ft|S )NTr   r   r   r]   r   r   rv   r   rA   rQ   r   ru   )rF   rG   rH   r   r   r   r   r   r   r   squeeze_dim  s       

r   c                 O   s^   t | ||dd\}}|d}|j}|d }tt|jd |d|d< t| |f|ft|S )NTr   r   r   r   	unsqueezer   )rF   rG   rH   r   r   r   r   r   r   r   r   unsqueeze_default  s       

r   ztensors: any, dim: anyc                    s   t | ||dd\}}|d}dd |D }t|dks<t|d   fdd|D }|d }tt j|d	|d< t| d
d |D f|ft|d S )NTr   tensorsc                 S   s   g | ]}|j r|qS r   )	is_nestedr   r8   r   r   r   r     s      zcat_default.<locals>.<listcomp>r   c                    s    g | ]}|j r|n| qS r   )r   	expand_asr   firstr   r   r     s     r   r}   c                 S   s   g | ]
}|j qS r   rv   r   r   r   r   r     s     )r   r   rA   r   r   r\   r   ru   )rF   rG   rH   r   r   r   nestedr   r   r   r   cat_default  s$       


r   zself: jt, other: anyc                 O   s   t | ||dd\}}|d}|d}|jrP|jsPt| |j|f|ft|S |jr|jr| dkr| dkrt||jrt| |j|jft|S t	d|j d|j
 d S )NTr   r   other   z1matmul(): not supported between inputs of shapes rP   )r   r   r   r   rv   ru   r   rZ   rQ   r   r\   rF   rG   rH   r   r   r   r   r   r   r   matmul_default  s(       


$r   z#self: jt, size: any, implicit: any?c                 O   s   t | ||dd\}}|d}|d }d|ks<|dr<tt||s\td|j d| d
|d	d  }t| |j|ft|S )NTr   r   rX   Zimplicitzexpand(): cannot expand shape z -> r+   r
   )r+   )	r   r   r   rZ   r   rQ   r   rv   ru   )rF   rG   rH   r   r   r   rX   Z
expand_argr   r   r   expand_default  s       


r   zself: t, other: jtc                 O   s@   t | ||dd\}}|d}|d}t| ||jft|S )NTr   r   r   r   r   r   r   r   expand_as_default  s       


r   z"condition: jt, self: jt, other: jtc                 O   st   t | ||dd\}}|d}|d}|d}|j|j  krL|jksRn tt| |j|j|jf|ft|S )NTr   	conditionr   r   )r   r   rQ   r   r   rv   ru   )rF   rG   rH   r   r   r   r   r   r   r   r   
where_self  s       



 r   zself: jt, device: any?c                 O   s8   t | ||dd\}}|d}t| |jf|ft|S r   r   r   r   r   r   _pin_memory_default  s       

r   c                 O   s,   t | ||dd\}}|d}| |jf|S r   )r   r   rv   r   r   r   r   is_pinned_default  s       

r   zself: jt_all, other: jt_allc                 O   s   |d j |d j kS r[   )rQ   rw   r   r   r   is_same_size_default  s    r   z/self: jt, dim: any?, keepdim: any?, dtype: any?c                 O   s   t | ||dd\}}|d}|jdks,tt| |d d\|d< }|sft| |jf|ft|S | |jf|}|d r|	d}|S d S )	NTr   r   r   r   rl   r   r   )
r   r   r7   r   r$   r   r   rv   ru   r   )rF   rG   rH   r   r   r   Zragged_reduced_awayoutr   r   r   sum_dim_IntList  s&       

  
r   z"self: jt_all, dim0: any, dim1: anyc                 O   s$  t | ||dd\}}ddlm} |d}|| |d |d f\}}|jd k	rZtd||jksn||jkr|dks~|dkrtd	||jkr|}	n|}	t|}
|	|
d
< t	|
 tt|j|tt|j|f|
S t| |d d|d< t| |d d|d< t	| |jf|f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 NTr7   	transpose)r   r   r   r   r   r6   rB   r7   ru   r   r   r   r   rA   rQ   r   rv   )rF   rG   rH   r   r   r   r   r   r   Zto_dimr   r   r   r   transpose_int1  sD       



r   zself: jt_all, size: anyc                    s   t | ||dd\}}|d|djdkr\tjtkr\tdj d dtd	k srtstd
j d fdd  fddttd D }t	| j
|ftS )NTr   r   rX   r   zVview(): does not support ragged_idx != 1 except when inp._size == size. inp._size is (z) and size is (z).r   zview(): cannot view shape z as c                    s*   |  j d kr j| S | d  S d S r5   )r7   rv   rX   )Z	inner_idx)r   rX   r   r   get_inner_size  s    z$view_default.<locals>.get_inner_sizec                    s   g | ]} |qS r   r   r   )r   r   r   r     s     z view_default.<locals>.<listcomp>)r   r   r7   r"   rQ   r   rA   rZ   r   r   rv   ru   )rF   rG   rH   r   r   Z
inner_sizer   )r   r   rX   r   view_default_  s"       


r   zDinput: jt, normalized_shape: any, weight: any?, bias: any?, eps: anyc           
      O   sx   t | ||dd\}}|d}|d }| dk sF| t| dk rNtd| |jf|\}}}	t|ft|||	fS )NTr   r   normalized_shaper   r
   zJlayer_norm(): normalizing over ragged dim not supported for nested tensors)r   r   r   rA   r   rv   r   ru   )
rF   rG   rH   r   r   r   r   outputmeanZstdr   r   r   native_layer_norm_default  s       

 r   zpgrad_out: jt, input: jt, normalized_shape: any, mean: any, rstd: any, weight: any?, bias: any?, output_mask: anyc           
      O   sh   t | ||dd\}}|d}|d}| |j|jf|\}}}	|d krRd ||	fS t|ft|||	fS )NTr   grad_outr   r   )
rF   rG   rH   r   r   r   r   Zd_inputZd_gammaZd_betar   r   r   "native_layer_norm_backward_default  s       



r   zself: jt, dim: any, index: anyc                 O   sP   t | ||dd\}}|d}t| |d d|d< t| |jf|ft|S )NTr   r   r   selectr   r   r   r   r   rv   ru   r   r   r   r   
select_int  s       

r  z7self: jt, dim: any?, start: any?, end: any?, step: any?c                 O   sP   t | ||dd\}}|d}t| |d d|d< t| |jf|ft|S )NTr   r   r   slicer   r   r   r   r   slice_tensor  s       

r  z{input: jt, weight: t, bias: t?, stride: any, padding: any, dilation: any, transposed: any, output_padding: any, groups: anyc                 O   s8   t | ||dd\}}|d}t| |jf|ft|S r   r   r   r   r   r   convolution_default  s       

r  z.self: jt, dim: any?, keepdim: any, dtype: any?c                 O   sV   t | ||dd\}}|d}t| |d d dg|d< t| |jf|ft|S )NTr   r   r   r   r   r   r   r   r   r   mean_dim  s       

r  c                 O   s   t | ||dd\}}|d}|D ]J}t|ts8td| |d  krTtdt||d js"tdq"t|d  d |d	 d
|d	< t| dd |D f|f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                 S   s   g | ]
}|j qS r   r   r   r   r   r   r   
  s     z!stack_default.<locals>.<listcomp>)
r   r   r/   r   r   r   rZ   r\   r   ru   )rF   rG   rH   r   r   r   r8   r   r   r   stack_default  s8       


  
r  zQweight: t, indices: jt, padding_idx: any?, scale_grad_by_freq: any?, sparse: any?c                 O   sD   t | ||dd\}}|d}|d}t| ||jf|ft|S )NTr   indicesr   r   )rF   rG   rH   r   r   r  r   r   r   r   embedding_default  s       


r	  c                 O   s(   t | ||dd\}}|d}|j S r   )r   r   rv   detachr   r   r   r   values_default   s       

r  zCvalues: t, offsets: t, dummy: jt_all, lengths: t?, ragged_idx: any?c           	      O   sH   t | ||dd\}}|d |d |d   }}}|d }t||||dS )NTr   r   rs   r   r   )r   r7   )r   r   )	rF   rG   rH   r   r   r   rs   r   r   r   r   r    _nested_view_from_jagged_default3  s       

r  c                 O   s$   t | ||dd\}}|d}|jS r   )r   r   r   r   r   r   r   _nested_get_offsetsF  s       

r  c                 O   s$   t | ||dd\}}|d}|jS r   )r   r   r6   r   r   r   r   _nested_get_lengthsP  s       

r  c                 O   s$   t | ||dd\}}|d}|jS r   )r   r   r7   r   r   r   r   _nested_get_ragged_idxZ  s       

r  z	self: anyc                 O   s   ddl m} | S )Nr   )_nt_view_dummy)Z$torch.nested._internal.nested_tensorr  )rF   rG   rH   r  r   r   r   _nested_get_jagged_dummye  s    r  r   ZIMPLZCPUCUDAZMeta)TF)rm   r   r   r0   Ztorch.nested._internal.sdpar   r   r   typingZtorch.nn.functionalnnZ
functionalr   Ztorch.fx.operator_schemasr   r   ListAny__annotations__r	   Dictr   r   r$   strrK   rR   rZ   r^   rh   rn   Zregister_jagged_funcOptionalCallablerq   ru   ro   rp   r   r   r   r   r   r   r   r   r   r   r   r   Zprimr   r   rX   r   Zis_contiguousr   r   Zlinearr   Zlinear_backwardr   Z_to_copyr   Z
empty_likeZ	ones_likeZ
zeros_likeZ
randn_liker
  Z_softmaxZnative_dropoutr   Znative_dropout_backwardr   r   Zdim_intr   r?   r1   r   r   r   r   r   r{   r   r   r]   r   r   r   r}   r   matmulr   expandr   r   r   wherer   r   Z_pin_memoryr   	is_pinnedr   Zis_same_sizer   rl   Zdim_IntListr   r   r   viewZ_unsafe_viewr   Znative_layer_normr   Znative_layer_norm_backwardr   r   r  r  r  Zconvolutionr  r   r  r  r  Z	embeddingr	  r   Z_nested_get_valuesr  Z_nested_view_from_jaggedr  r  r  r  r  libraryZ_scoped_libraryimplr   r   r   r   <module>   s      
A   		<%






	




 









	
 
 




 

 

)
"




 







 

 

 
+
,










 









	
	


