
    gv                     ^    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d Z fdZ xZS )GatherQuantc                 &    t         |   ||       y Nsuper__init__selfonnx_quantizer	onnx_node	__class__s      ^/var/www/openai/venv/lib/python3.12/site-packages/onnxruntime/quantization/operators/gather.pyr   zGatherQuant.__init__       3    c                     | j                   j                  | j                        sy| j                   j                  | j                  j                  d         S )NF    )	quantizershould_quantize_nodenodeis_valid_quantize_weightinput)r   s    r   should_quantizezGatherQuant.should_quantize   s=    ~~22499=~~66tyyq7IJJr   c                    | j                   }|j                  dk(  sJ | j                  j                  |dg      \  }}}}|t        |          S |j                  d   t        z   }t        |j                  d   ||d   |d   t        j                        }|| j                  j                  |j                  d   <   ||j                  d<   |d   |j                  d<   |j                  |       | j                  xj                  |z  c_        y )NGatherr   )r   op_typer   quantize_activationr   quantizeoutputr   r   r   Inputquantized_value_mapr   append	new_nodes)	r   r   quantized_input_nameszero_point_namesscale_namesnodesgather_new_outputq_outputr   s	           r   r$   zGatherQuant.quantize   s    yy||x''' NN..taS9	
! (7#%% KKN-EE "KKNNQ$$
 >F**4;;q>:*A-a0

1T  E) r   )__name__
__module____qualname__r   r   r$   __classcell__r   s   @r   r
   r
   
   s    4K* *r   r
   c                   $     e Zd Z fdZd Z xZS )	QDQGatherc                 &    t         |   ||       y r   r   r   s      r   r   zQDQGather.__init__5   r   r   c                    | j                   }|j                  dk(  s|j                  dk(  sJ | j                  j                  |j                  d         s| j                  j
                  rj| j                  j                  |j                  d          | j                  j                  |j                  d   |j                  d   |j                         y | j                  j                  |j                  d         rB| j                  j                  |j                  d   |j                  d   |j                         y y )Nr!   GatherElementsr   )r   r"   r   r   r   force_quantize_no_input_checkquantize_activation_tensorquantize_output_same_as_inputr%   nameis_tensor_quantized)r   r   s     r   r$   zQDQGather.quantize8   s    yy||x'4<<;K+KKK>>224::a=AT^^EqEqNN55djjmDNN88QTUX\XaXab^^//

1>NN88QTUX\XaXab ?r   )r0   r1   r2   r   r$   r3   r4   s   @r   r6   r6   4   s    4cr   r6   N)
quant_utilsr   r   r   base_operatorr   qdq_base_operatorr   r
   r6    r   r   <module>rC      s2    V V , .
'*# '*Tc cr   