
    g                     \    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	y	)
   )TENSOR_NAME_QUANT_SUFFIXQuantizedValueQuantizedValueType   )QuantOperatorBase)QDQOperatorBasec                   (     e Zd Z fdZ fdZ xZS )Direct8BitOpc                 &    t         |   ||       y Nsuper__init__selfonnx_quantizer	onnx_node	__class__s      a/var/www/openai/venv/lib/python3.12/site-packages/onnxruntime/quantization/operators/direct_q8.pyr   zDirect8BitOp.__init__	       3    c                    | j                   }| j                  j                  s| j                  j                  |j                  d         }|!| j                  xj
                  |gz  c_        y 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_        y | j                  j                  |j                  d         st        | A          y | j                  j#                  |dg      \  }}}}|t        | A         S t        |j                  d   |j                  d   t        z   |d   |d   t$        j&                        }|| j                  j                  |j                  d   <   |d   |j                  d<   |j                  |j                  d<   |j)                  |       | j                  xj
                  |z  c_        y 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   yy~~;; %)NN$G$G

ST$V!$,((TF2(%3AA!99%00%--%00&" BXDNN..t{{1~>188DJJqM3::DKKNNN$$.$ >>::4::a=I " 224!=% $,w')) &4AA!99A #"((&" BXDNN..t{{1~>1!4DJJqM3::DKKNLLNN$$-$r   __name__
__module____qualname__r   r(   __classcell__r   s   @r   r
   r
      s    45. 5.r   r
   c                   $     e Zd Z fdZd Z xZS )QDQDirect8BitOpc                 &    t         |   ||       y r   r   r   s      r   r   zQDQDirect8BitOp.__init__E   r   r   c                    | j                   j                  r| j                   j                  | j                  j                  d          | j
                  s`| j                   j                  | j                  j                  d   | j                  j                  d   | j                  j                         y y | j                   j                  | j                  j                  d         rm| j
                  s`| j                   j                  | j                  j                  d   | j                  j                  d   | j                  j                         y y y 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7NN55diiooa6HI33<<TYY=M=Ma=PRVR[R[RaRabcRdfjfofoftftu 4^^//		0BCDLlLlNN889I9I!9Ldiioo^_N`bfbkbkbpbpq MmCr   r2   r7   s   @r   r9   r9   D   s    4rr   r9   N)
quant_utilsr   r   r   base_operatorr   qdq_base_operatorr   r
   r9    r   r   <module>rE      s-    V V , .
9.$ 9.x
ro 
rr   