
    ¯wg*                     *   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!y)%    N)symbolic_helpersymbolic_opset9)	jit_utilsregistrationdomainversionc                    t        j                  d      }t        j                  |      }h d}|D ]  \  }}|  d| }t        j                  |      s#t
        j                  j                  ||      rD||v r&t
        j                  j                  d| ||d       t
        j                  j                  |||        y )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           _/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/torch/onnx/symbolic_caffe2.pyregister_quantized_opsr%   
   s    $$%ABF**62J & 
@DB4 d#L,A,A,R,R'-
 Z%%..RDM7D /  !!**4$?
@    gc                     |t        j                  |j                         d      t        j                  |j                         d      d} | j                  d|fi |}t         j                  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   (   sk    $..uzz|YG)33EJJL.QJ
 QTT*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                 j    | j                  d||      }t        j                  j                  |       |S Nz_caffe2::WeightPrepackr!   r   r0   r1   )r'   weightbiasr5   s       r$   linear_prepackrF   =   s0     TT*FD9F""&&v.Mr&   vfic                 z    ||d} | j                   d|||fi |}t        j                  j                  |       |S )Nr,   r-   z_caffe2::Int8FCrC   )r'   r2   rD   rE   scale
zero_pointkwargsr5   s           r$   linearrO   F   sH     $F QTT#UFDCFCF""&&v.Mr&   c                 l    | j                  d|||      }t        j                  j                  |       |S rB   rC   )	r'   r2   rD   rE   stridepaddingdilationgroupsr5   s	            r$   conv_prepackrU   Q   s2     TT*E64@F""&&v.Mr&   isc
           	          |j                         d   dd }
|||z   |||
d||	d} | j                  d|||fi |}t        j                  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   \   sv     ++-(1-KG# $	F QTT%ufdEfEF""&&v.Mr&   c
           	          |j                         d   dd }
|||z   |||
d||	d} | j                  d|||fi |}t        j                  j	                  |       |S )NrX   r:   r9   rY   rZ   z_caffe2::Int8ConvRelura   rb   s                r$   conv2d_relurf   y   sv     ++-(1-KG# $	F QTT)5&$I&IF""&&v.Mr&   c                 x    ||d} | j                   d||fi |}t        j                  j                  |       |S )NrK   z_caffe2::Int8AddrC   )r'   input_ainput_brL   rM   rN   r5   s          r$   r1   r1      sF     $F QTT$gwA&AF""&&v.Mr&   c                 N   |t         j                  vrt        j                  | |      S t        j                  |j                         d      t        j                  |j                         d      d} | j                  d|fi |}t         j                  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)33EJJL.QF QTT%u77F""&&v.Mr&   tc                 v    ||d} | j                   d|fi |}t        j                  j                  |       |S )NrK   z_caffe2::Int8QuantizerC   )r'   r2   rL   rM   dtyperN   r5   s          r$   r   r      sD     $F QTT)5;F;F""&&v.Mr&   c                 &    | j                  d|      S )Nz_caffe2::Int8Dequantize)r!   )r'   r2   s     r$   r   r      s    44)5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
                  |j                         d      t        j
                  |j                         d      d}t        | |      } | j                  d|fi |}t        | |      }t         j                  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!,,[$?K$$..uzz|YG)33EJJL.QF
 aEQTT.@@Fq&!F""&&v.Mr&   c           	         |t         j                  vrt        j                  | ||||||      S |||z   |d   dt        j                  |j                         d      t        j                  |j                         d      d}t        | |      } | j                  d|fi |}t        | |      }t         j                  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)33EJJL.QF aEQTT(%:6:Fq&!F""&&v.Mr&   nonec           
         |t         j                  vrt        j                  | |||||||      S |||z   |d   dt        j                  |j                         d      t        j                  |j                         d      d}t        | |      } | j                  d|fi |}	t        | |	      }	t         j                  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)33EJJL.QF aEQTT,e>v>Fq&!F""&&v.Mr&   c                 R   |t         j                  vrt        j                  | ||      S t        j                  |j                         d      t        j                  |j                         d      d} | j                  d||fi |}t         j                  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)33EJJL.QF QTT(%A&AF""&&v.Mr&   c                     |t         j                  vrt        j                  | |||||      S |dk7  rt	        d      t        j
                  |d      }t        j
                  |d      }t        j
                  |d      }|||t        j                  |j                         d      t        j                  |j                         d      d} | j                  d|fi |}t         j                  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<<qyOPP&&uc2E

$
$S#
.C

$
$S#
.C $..uzz|YG)33EJJL.QF QTT&88F""&&v.Mr&   c                    t        j                  |      }|d   }|t         j                  vrt        j                  | ||      S t        j
                  |d      }|d   j                         d   |d   j                         d   d} | j                  dg|d|i|}t         j                  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    **;7GAJEO222zz![#..

$
$S#
.CQZ__&y1!!*//+N;F QTT'H'H#HHF""&&v.Mr&   c                     |t         j                  vrt        j                  | |      S d}d}||d} | j                  d|fi |}t         j                  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   [  sm    O222~~a'' IJ$F QTT(%: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 8@3 @ @<y-- +'' +
+'' +
i,,  Cc34i$$  5 Cc4tS#sK L8 Cc4tS#sK L8 Cc3/9!!  0 C 	I"" 	 !	 Cc3/911  0 C 2)(( 2 !2 Cc3S#sC D$ 0 CtT4= >8 CtT3VD !! E!H
y%% 
 Cc34Y##  5,9!!   C y%%  !r&   