
     Ng                     j    d dl mZmZmZ ddlmZ ddlmZ  G d de          Z G d de          Z	d	S )
   )TENSOR_NAME_QUANT_SUFFIXQuantizedValueQuantizedValueType   )QuantOperatorBase)QDQOperatorBasec                   (     e Zd Z fdZ fdZ xZS )Direct8BitOpc                 L    t                                          ||           d S Nsuper__init__selfonnx_quantizer	onnx_node	__class__s      h/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnxruntime/quantization/operators/direct_q8.pyr   zDirect8BitOp.__init__	   #    33333    c                 4   | j         }| j        j        s| j                            |j        d                   }|| j        xj        |gz  c_        d S t          |j        d         |j        d         t          z   |j	        |j
        |j                  }|| j        j        |j        d         <   |j        |j        d<   |j        |j        d<   | j        xj        |gz  c_        d S | j                            |j        d                   s"t                                                       d S | j                            |dg          \  }}}}| t                                                      S t          |j        d         |j        d         t          z   |d         |d         t$          j                  }|| j        j        |j        d         <   |d         |j        d<   |j        |j        d<   |                    |           | j        xj        |z  c_        d S N    )node	quantizerforce_quantize_no_input_checkfind_quantized_valueinput	new_nodesr   outputr   
scale_namezp_name
value_typequantized_value_mapq_nameis_valid_quantize_weightr   quantizequantize_activationr   Inputappend)	r   r   quantized_input_valuequantized_output_valuequantized_input_nameszero_point_namesscale_namesnodesr   s	           r   r(   zDirect8BitOp.quantize   s   y~; 2	. %)N$G$G
ST$V$V!$,((TF2((%3AA!99%0%-%0& &" BXDN.t{1~>18DJqM3:DKNN$$.$$$$ >::4:a=II   """ 224!==% $,ww''))) &4AA!99A #"(& &" BXDN.t{1~>1!4DJqM3:DKNLLN$$-$$$$r   __name__
__module____qualname__r   r(   __classcell__r   s   @r   r
   r
      sQ        4 4 4 4 45. 5. 5. 5. 5. 5. 5. 5. 5.r   r
   c                   $     e Zd Z fdZd Z xZS )QDQDirect8BitOpc                 L    t                                          ||           d S r   r   r   s      r   r   zQDQDirect8BitOp.__init__E   r   r   c                 
   | j         j        r{| j                             | j        j        d                    | j        sH| j                             | j        j        d         | j        j        d         | j        j                   d S d S | j         	                    | j        j        d                   rO| j        sJ| j                             | j        j        d         | j        j        d         | j        j                   d S d S d S r   )
r   r   quantize_activation_tensorr   r   disable_qdq_for_node_outputquantize_output_same_as_inputr!   nameis_tensor_quantized)r   s    r   r(   zQDQDirect8BitOp.quantizeH   s   >7 	rN55dioa6HIII3 v<<TY=Ma=PRVR[RabcRdfjfoftuuuuuv v^//	0BCC 	rDLl 	rN889I!9Ldio^_N`bfbkbpqqqqq	r 	r 	r 	rr   r2   r7   s   @r   r9   r9   D   sN        4 4 4 4 4r r r r r r rr   r9   N)
quant_utilsr   r   r   base_operatorr   qdq_base_operatorr   r
   r9    r   r   <module>rE      s    V V V V V V V V V V , , , , , , . . . . . .
9. 9. 9. 9. 9.$ 9. 9. 9.x
r 
r 
r 
r 
ro 
r 
r 
r 
r 
rr   