§
    kŠtjv  ã                   ól   — 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d„ Zˆ fd„Zˆ xZS )ÚGatherQuantc                 óL   •— t          ¦   «                              ||¦  «         d S ©N©ÚsuperÚ__init__©ÚselfÚonnx_quantizerÚ	onnx_nodeÚ	__class__s      €úg/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/onnxruntime/quantization/operators/gather.pyr   zGatherQuant.__init__   ó#   ø€ Ý‰Œ×Ò˜¨Ñ3Ô3Ð3Ð3Ð3ó    c                 ó˜   — | j                              | j        ¦  «        sdS | 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Ò2°4´9Ñ=Ô=ð 	Ø�5àŒ~×6Ò6°t´y´ÀqÔ7IÑJÔJÐJr   c                 ó  •— | j         }|j        dk    s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        xj        |z  c_        d S )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  ø€ ØŒyˆØŒ|˜xÒ'Ð'Ð'Ð'ð ŒN×.Ò.¨t°a°SÑ9Ô9ñ	
Ø!ØØØà Ð(Ý‘7”7×#Ò#Ñ%Ô%Ð%à œK¨œNÕ-EÑEÐõ "ØŒK˜Œ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
   
   sc   ø€ € € € € ð4ð 4ð 4ð 4ð 4ðKð Kð Kð*ð *ð *ð *ð *ð *ð *ð *ð *r   r
   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú	QDQGatherc                 óL   •— t          ¦   «                              ||¦  «         d S 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        d         ¦  «        s| j        j        r^| j                             |j        d         ¦  «         | j                             |j        d         |j        d         |j	        ¦  «         d S | j         
                    |j        d         ¦  «        r9| j                             |j        d         |j        d         |j	        ¦  «         d S d S )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þ   € ØŒyˆØŒ|˜xÒ'Ð'¨4¬<Ð;KÒ+KÐ+KÐ+KÐKàŒ>×2Ò2°4´:¸a´=ÑAÔAð 	cÀTÄ^ÔEqð 	cØŒN×5Ò5°d´jÀ´mÑDÔDÐDØŒN×8Ò8¸¼ÀQ¼ÈÌÐTUÌÐX\ÔXaÑbÔbÐbÐbÐbØŒ^×/Ò/°´
¸1´Ñ>Ô>ð 	cØŒN×8Ò8¸¼ÀQ¼ÈÌÐTUÌÐX\ÔXaÑbÔbÐbÐbÐbð	cð 	cr   )r0   r1   r2   r   r$   r3   r4   s   @r   r6   r6   4   sN   ø€ € € € € ð4ð 4ð 4ð 4ð 4ðcð cð cð cð cð cð cr   r6   N)
Úquant_utilsr   r   r   Úbase_operatorr   Úqdq_base_operatorr   r
   r6   © r   r   ú<module>rC      s¶   ðØ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .ðð
'*ð '*ð '*ð '*ð '*Ð#ñ '*ô '*ð '*ðTcð cð cð cð c�ñ cô cð cð cð cr   