
    Vh                     	   d Z ddlZddlmZ ddlmZ ddlZddlmZ ddlm	Z	m
Z
mZ ddlmZmZ dgZ ej"                  ej$                  d	
      Z ed       ed      dej(                  fd              Z ed       e
j,                  dddddd      dej.                  dej.                  dej.                  dee   dee   dee   fd              Z ed e
j4                  dd      g       ed e
j4                  ddd !      g      dPd#ed$ed%efd&              Z ed'       e
j<                  d"d d d        e
j,                  ddddd(      dej(                  dej.                  d)ee   d*ej.                  d+ej.                  d,ed-e ej.                  ej.                  ej.                  f   fd.                     Z! ed/       e
j,                  dd0      dej(                  fd1              Z" ed2      dQdej(                  fd3       Z# ed4       e
j<                  d"d"      dej(                  fd5              Z$ ed6      dQdej(                  fd7       Z% ed8       e
j<                  d"d"      dej(                  fd9              Z& ed:       e
j<                  d"       e
j,                  ddd0      dej(                  fd;                     Z' ed<       e
j<                  d"       e
j,                  ddd0      dej(                  fd=                     Z( ed>       e
j<                  d"       e
j,                  ddd0      dej(                  fd?                     Z) ed@      dej(                  fdA       Z* edB       e
j,                  ddd0      dej(                  fdC              Z+ edD       e
j,                  ddddEd      dej(                  dFej                  j.                  dGej                  j.                  dHe,e   dIedJej                  j.                  fdK              Z- edL       e
j,                  dddd0d0d0dd0d0	      dej(                  fdM              Z. edN       e
j,                  dd(ddEd      dej(                  dFej                  j.                  dGedHeee      dIedJej                  j.                  fdO              Z/y)Ra  This file exports ONNX ops for opset 18.

Note [ONNX Operators that are added/updated in opset 18]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
https://github.com/onnx/onnx/blob/main/docs/Changelog.md#version-18-of-the-default-onnx-operator-set
New operators:
    BitwiseAnd
    CenterCropPad
    Col2Im
    Mish
    OptionalGetElement
    OptionalHasElement
    Pad
    Resize
    ScatterElements
    ScatterND
    Split
    N)Sequence)Optional)_C)_type_utilssymbolic_helpersymbolic_opset9)	jit_utilsregistrationcol2im   )opsetzaten::__and_zaten::bitwise_andgc                    ||g}|D cg c]  }t        j                  |      s| }}t        |      dk(  r|}t        j                  | }t        j                  | ||      }t        j                  | ||      }|t
        j                  j                  k(  r| j                  d||      S | j                  d||      S c c}w )Nr   And
BitwiseAnd)	r   _get_tensor_ranklen_type_promote_from_values_maybe_cast_to_typer   JitScalarTypeBOOLop)r   selfotherargsarg	prom_argspromotion_jit_types          K/home/dcms/DCMS/lib/python3.12/site-packages/torch/onnx/symbolic_opset18.py__and_r    *   s     %=D $N(H(H(MNIN
9~	(BBIN..q$8JKD//5:LME[66;;;ttE4''44dE** Os
   B=B=zaten::col2imvisinputoutput_sizekernel_sizedilationpaddingstridec           	         	 g }|D ]%  	|j                  	fdt        d      D               ' t        j                  |      d   }|sddg|z  }|sdg|z  }|sdg|z  }| j	                  d||||||      S )Nc              3   "   K   | ]  }  y wN ).0_pads     r   	<genexpr>zcol2im.<locals>.<genexpr>I   s     66s      r      Col2Im)dilations_ipads_i	strides_i)extendranger   _get_tensor_sizesr   )
r   r#   r$   r%   r&   r'   r(   adjusted_paddingnum_dimensional_axisr/   s
            @r   r   r   ;   s     #% 76U1X667 +<<[I!Lq6$883--++44       z
aten::mean
ReduceMeanmean)decoratez
aten::prod
ReduceProdprodF)allow_multi_dim_supportTonnx_opnamerB   c                 0    t        j                  | ||      S r+   )r   _reduce_with_dtype_helper)rC   rD   rB   s      r   _reduce_with_dtyperG   `   s     44. r<   zaten::native_layer_normfnormalized_shapeweightbiasepsreturnc                 6    t        j                  | |||||      S r+   )opset9native_layer_norm)r   r#   rI   rJ   rK   rL   s         r   _native_layer_normrQ   q   s      ##Au.>cRRr<   z	aten::gluic                     t        j                  ||      }|
|dz  dk(  sJ | j                  d||dd      \  }}| j                  d|| j                  d|            S )Nr1   r   Split)axis_inum_outputs_ioutputsMulSigmoid)r   _get_tensor_dim_sizer   )r   r#   dimdim_sizefirstseconds         r   _glur_      sh     33E3?H!|q   DD%1aDPME644uadd9f566r<   z	aten::maxc                 2    t        j                  | |||      S r+   )r   _max_helperr   r   dim_or_ykeepdims       r   maxre      s    
 &&q$'BBr<   zaten::maximumc                     t        | ||      S N)rc   )re   r   r#   r   s      r   maximumri           q%%((r<   z	aten::minc                 2    t        j                  | |||      S r+   )r   _min_helperrb   s       r   minrm      s     &&q$'BBr<   zaten::minimumc                     t        | ||      S rg   )rm   rh   s      r   minimumro      rj   r<   z
aten::amaxc                     | j                  dt        j                  |t        j                              }| j                  d|||      S )NConstantdtypevalue_t	ReduceMax
keepdims_ir   torchtensorlongr   r   r[   rd   axess        r   amaxr      <     44
ELLEJJ$G4HD44T4G4<<r<   z
aten::aminc                     | j                  dt        j                  |t        j                              }| j                  d|||      S )Nrq   rr   rt   	ReduceMinrw   ry   r}   s        r   aminr      r   r<   zaten::aminmaxc                 l   t        j                  |      sxt        j                  |dd      }| j                  dt	        j
                  |gt        j                              }| j                  d|||      | j                  d|||      fS | j                  d||      | j                  d||      fS )	NrR   r[   rq   rr   rt   r   rw   rv   )r   _is_none
_get_constr   rz   r{   r|   r}   s        r   aminmaxr      s     ##C(((c59ttJcU%**(MtNttKtt@!$$t CG C
 
 	
 ttK't:ADD' =A =
 
 	
r<   zaten::var_meanc                     t        |      dk(  rt        j                  | |d |d   d       S t        j                  | |g| S )Nr2   r   )r   r   _var_mean_helper)r   r#   r   s      r   	_var_meanr      sB    
4yA~//5$QNN//5@4@@r<   zaten::logsumexpc                     || j                  d|d      S | j                  dt        j                  |t        j                              }| j                  d|||      S )NReduceLogSumExpr   rw   rq   rr   rt   ry   )r   r#   r[   rd   r~   s        r   
_logsumexpr      sX     {tt%ut;;ttJS

(KtLtt%udwtGGr<   zaten::linalg_matrix_normbr   ordr[   rd   rs   c                 6    t        j                  | |||||      S r+   )rO   linalg_matrix_normr   r   r   r[   rd   rs   s         r   _linalg_matrix_normr      s     $$Qc3GGr<   zaten::embedding_bagc
                 >    t        j                  | |||||||||	
      S r+   )r   _embedding_bag_helper)
r   embedding_matrixindicesoffsetsscale_grad_by_freqmodesparseper_sample_weightsinclude_last_offsetpadding_idxs
             r   embedding_bagr      s5     00	 r<   zaten::linalg_vector_normc                 6    t        j                  | |||||      S r+   )r   _linalg_vector_norm_helperr   s         r   linalg_vector_normr      s      55asCRWXXr<   )T)NN)0__doc__	functoolscollections.abcr   typingr   rz   r   
torch.onnxr   r   r   rO   torch.onnx._internalr	   r
   __all__partialonnx_symbolic_onnx_symbolicGraphContextr    
parse_argsValueintr   _apply_paramsstrboolrG   quantized_argsfloattuplerQ   r_   re   ri   rm   ro   r   r   r   r   r   listr   r   r   r,   r<   r   <module>r      s9  (  $    N N 8  #""<#=#=RH #$+i$$ + %  + Cc4t< 88    	 
 sm  c]  SM  =   F 9O99,OP %%%&%	
 3   )*eUE:CsC5SS88S smS HH	S
 ((S 
S 288RXXrxx'(S 6 ; +S C%7I"" 7 & 7 C9!! C	 C  d+)y%% ) , !) C9!! C C  d+)y%% ) , !) %Cs+=I"" = , & =
 %Cs+=I"" = , & =
  %Cc*

y%% 

 + & !

  !A'' A "A !"Cs+H)(( H , #H *+CdC5HH
((..H 
H 
c	H
 H 88>>H 6 ,H %&Cc3S#sCH I '4 *+CdC5YY
((..Y 
Y 
(3-	 	Y
 Y 88>>Y 6 ,Yr<   