
    Χg*                     |   d dl Z d dlZd dlmZmZ d dlmZmZ de	de
fdZdej        fdZdej        fd	Zdej        fd
Zdej        fdZ ej        ddddd          dej        fd            Zdej        fdZ ej        ddddddddd	  	        dej        fd            Z ej        ddddddddd	  	        dej        fd            Z ej        dddd          dej        fd            Z ej        d          dej        fd            Z ej        dddd          dej        fd            Z ej        d          dej        fd            Z ej        dddddddd          dej        fd            Z	 	 	 d"dej        fdZ ej        dddddd          dej        fd            Z ej        ddddddd          	 d#dej        fd            Zdej        fdZ ej        ddddd          dej        fd            Zd$dej        fd Z  ej        d          dej        fd!            Z!dS )%    N)symbolic_helpersymbolic_opset9)	jit_utilsregistrationdomainversionc                 z   t          j        d          }t          j        |          }h d}|D ]\  }}|  d| }t          j        |          rkt
          j                            ||          sK||v r&t
          j                            d| ||d           t
          j                            |||           d S )Nztorch.onnx.symbolic_caffe2>   catreluslicereshapesigmoid
avg_pool2d
dequantize
max_pool2dupsample_nearest2dquantize_per_tensor_empty_affine_quantizedz::zaten::T)custom)		importlibimport_moduleinspect
getmembers
isfunctionr   registryis_registered_opregister)r   r   modulequant_version_ops
aten_q_opsopfuncnames           V/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/onnx/symbolic_caffe2.pyregister_quantized_opsr%   
   s    $%ABBF*622  J & 
@ 
@D  B  d## 	@L,A,R,R'-
 -
 	@ Z%..!RMM7D /    !**4$???
@ 
@    gc                    |t          j        |                                d          t          j        |                                d          d} | j        d|fi |}t           j                            |           |S )NY_scaleY_zero_point)axes_i	Y_scale_fY_zero_point_iz_caffe2::Int8Transpose)r   	_node_getnoder!   _quantized_opsadd)r'   inputaxes
quant_argsoutputs        r$   _permute_helperr6   (   s{    $.uzz||YGG)3EJJLL.QQ J
 QT*E@@Z@@F"&&v...Mr&   c                 ,    g d}t          | ||          S )N)r            r6   r'   r2   r3   s      r$   	nchw2nhwcr=   3       <<D1eT***r&   c                 ,    g d}t          | ||          S )N)r   r9   r:   r8   r;   r<   s      r$   	nhwc2nchwr@   8   r>   r&   c                 r    |                      d||          }t          j                            |           |S Nz_caffe2::WeightPrepackr!   r   r0   r1   )r'   weightbiasr5   s       r$   linear_prepackrF   =   s6     TT*FD99F"&&v...Mr&   vfic                 p    ||d} | j         d|||fi |}t          j                            |           |S )Nr,   r-   z_caffe2::Int8FCrC   )r'   r2   rD   rE   scale
zero_pointkwargsr5   s           r$   linearrO   F   sT     $ F QT#UFDCCFCCF"&&v...Mr&   c                 t    |                      d|||          }t          j                            |           |S rB   rC   )	r'   r2   rD   rE   stridepaddingdilationgroupsr5   s	            r$   conv_prepackrU   Q   s8     TT*E64@@F"&&v...Mr&   isc
           	          |                                 d         dd         }
|||z   |||
d||	d} | j        d|||fi |}t          j                            |           |S )Nshaper:   r9   NHWC	strides_ipads_idilations_igroup_i	kernels_iorder_sr,   r-   z_caffe2::Int8Convr/   r!   r   r0   r1   r'   r2   rD   rE   rQ   rR   rS   rT   rL   rM   kernel_sizerN   r5   s                r$   conv2drd   \   s     ++--(1-KG# $	 	F QT%ufdEEfEEF"&&v...Mr&   c
           	          |                                 d         dd         }
|||z   |||
d||	d} | j        d|||fi |}t          j                            |           |S )NrX   r:   r9   rY   rZ   z_caffe2::Int8ConvRelura   rb   s                r$   conv2d_relurf   y   s     ++--(1-KG# $	 	F QT)5&$II&IIF"&&v...Mr&   c                 n    ||d} | j         d||fi |}t          j                            |           |S )NrK   z_caffe2::Int8AddrC   )r'   input_ainput_brL   rM   rN   r5   s          r$   r1   r1      sR     $ F QT$gwAA&AAF"&&v...Mr&   c                 F   |t           j        vrt          j        | |          S t          j        |                                d          t          j        |                                d          d} | j        d|fi |}t           j                            |           |S )Nr)   r*   rK   z_caffe2::Int8Relu)r   r0   opset9r   r.   r/   r!   r1   )r'   r2   rN   r5   s       r$   r   r      s    O222{1e$$$$.uzz||YGG)3EJJLL.QQ F QT%u7777F"&&v...Mr&   tc                 l    ||d} | j         d|fi |}t          j                            |           |S )NrK   z_caffe2::Int8QuantizerC   )r'   r2   rL   rM   dtyperN   r5   s          r$   r   r      sP     $ F QT)5;;F;;F"&&v...Mr&   c                 .    |                      d|          S )Nz_caffe2::Int8Dequantize)r!   )r'   r2   s     r$   r   r      s    44)5111r&   c	                     |S N )	r'   r2   rX   rL   rM   rn   
pin_memorymemory_formatlayouts	            r$   r   r      s	     Lr&   c                    |t           j        vrt          j        | |||          S t          j        |d          }|t          j        |                                d          t          j        |                                d          d}t          | |          } | j        d|fi |}t          | |          }t           j        
                    |           |S )NrV   r)   r*   )output_size_ir,   r-   z_caffe2::Int8ResizeNearest)r   r0   rk   r   
_parse_argr.   r/   r=   r!   r@   r1   )r'   r2   output_sizealign_cornersscales_hscales_wrN   r5   s           r$   r   r      s     O222(E;NNN!,[$??K$$.uzz||YGG)3EJJLL.QQ F
 aEQT.@@@@Fq&!!F"&&v...Mr&   c           	         |t           j        vrt          j        | ||||||          S |||z   |d         dt          j        |                                d          t          j        |                                d          d}t          | |          } | j        d|fi |}t          | |          }t           j        	                    |           |S )Nr   rY   r)   r*   r[   r\   kernel_ir`   r,   r-   z_caffe2::Int8MaxPool)
r   r0   rk   r   r.   r/   r=   r!   r@   r1   )	r'   r2   rc   rQ   rR   rS   	ceil_moderN   r5   s	            r$   r   r      s     O222 uk67Hi
 
 	
 G#N$.uzz||YGG)3EJJLL.QQ F aEQT(%::6::Fq&!!F"&&v...Mr&   nonec           
         |t           j        vrt          j        | |||||||          S |||z   |d         dt          j        |                                d          t          j        |                                d          d}t          | |          } | j        d|fi |}	t          | |	          }	t           j        	                    |	           |	S )Nr   rY   r)   r*   r~   z_caffe2::Int8AveragePool)
r   r0   rk   r   r.   r/   r=   r!   r@   r1   )
r'   r2   rc   rQ   rR   r   count_include_paddivisor_overriderN   r5   s
             r$   r   r     s     O222 	
 	
 		
 G#N$.uzz||YGG)3EJJLL.QQ F aEQT,e>>v>>Fq&!!F"&&v...Mr&   c                 J   |t           j        vrt          j        | ||          S t          j        |                                d          t          j        |                                d          d} | j        d||fi |}t           j                            |           |S )Nr)   r*   rK   z_caffe2::Int8Reshape)r   r0   rk   r   r.   r/   r!   r1   )r'   r2   rX   rN   r5   s        r$   r   r   '  s    O222~a... %.uzz||YGG)3EJJLL.QQ F QT(%AA&AAF"&&v...Mr&   c                    |t           j        vrt          j        | |||||          S |dk    rt	          d          t          j        |d          }t          j        |d          }t          j        |d          }|||t          j        |                                d          t          j        |                                d          d} | j        d|fi |}t           j        	                    |           |S )Nr:   z2ONNX quantized slice export only works for step 1.rI   r)   r*   )start_idx_i	end_idx_idim_ir,   r-   z_caffe2::Int8Slice)
r   r0   rk   r   RuntimeErrorrx   r.   r/   r!   r1   )r'   r2   dimstartendsteprN   r5   s           r$   r   r   4  s    O222|Auc5#t<<<qyyOPPP&uc22E

$S#
.
.C

$S#
.
.C $.uzz||YGG)3EJJLL.QQ F QT&8888F"&&v...Mr&   c                    t          j        |          }|d         }|t           j        vrt          j        | ||          S t          j        |d          }|d                                         d         |d                                         d         d} | j        dg|R d|i|}t           j                            |           |S )Nr   rI   r)   r*   rK   z_caffe2::Int8Concataxis_i)	r   _unpack_listr0   rk   r
   rx   r/   r!   r1   )	r'   tensor_listr   rL   rM   tensorsr2   rN   r5   s	            r$   r
   r
   K  s    *;77GAJEO222z![#...

$S#
.
.CQZ__&&y1!!*//++N; F QT'H'HHH#HHHF"&&v...Mr&   c                     |t           j        vrt          j        | |          S d}d}||d} | j        d|fi |}t           j                            |           |S )Ng      p?r   rK   z_caffe2::Int8Sigmoid)r   r0   rk   r   r!   r1   )r'   r2   	out_scalerM   rN   r5   s         r$   r   r   [  sz    O222~a''' IJ$ F QT(%::6::F"&&v...Mr&   )NNNrq   )NN)"r   r   
torch.onnxr   r   rk   torch.onnx._internalr   r   strintr%   GraphContextr6   r=   r@   rF   
parse_argsrO   rU   rd   rf   r1   r   r   r   r   r   r   r   r   r   r
   r   rr   r&   r$   <module>r      s        A A A A A A A A 8 8 8 8 8 8 8 8@3 @ @ @ @ @<y-    +' + + + +
+' + + + +
i,     Cc344i$    54    Cc4tS#sKK   LK8 Cc4tS#sKK   LK8 Cc3//9!    0/ C  	I" 	 	 	 ! 	 Cc3//91    0/ C  2)( 2 2 2 ! 2 Cc3S#sCC   DC$     0 CtT4==   >=8 CtT3VDD ! !! ! ! ED!H
y% 
 
 
 
 Cc344Y#    54, 9!      C  y%    !   r&   