Ë
    cQê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	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      €úq/home/oem/CyberBrain26-unified/.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  ø€ Ø�y‰yˆà�~‰~×;Ó;ð %)§N¡N×$GÑ$GÈÏ
É
ÐSTÉÓ$VÐ!Ø$Ð,Ø—‘×(Ò(¨T¨FÑ2Õ(Øä%3Ø—‘˜A‘Ø—‘˜A‘Ô!9Ñ9Ø%×0Ñ0Ø%×-Ñ-Ø%×0Ñ0ó&Ð"ð BXˆD�N‰N×.Ñ.¨t¯{©{¸1©~Ñ>à1×8Ñ8ˆD�J‰J�q‰MØ3×:Ñ:ˆD�K‰K˜‰NØ�N‰N×$Ò$¨¨Ñ.Ö$ð —>‘>×:Ñ:¸4¿:¹:Àa¹=ÔIÜ‘Ñ Ô"Øð —‘×2Ñ2°4¸!¸Ó=ñØ%Ø ØØà$Ð,Ü‘wÑ'Ó)Ð)ô &4Ø—‘˜A‘Ø—‘˜A‘Ô!9Ñ9Ø˜A‘Ø  Ñ#Ü"×(Ñ(ó&Ð"ð BXˆD�N‰N×.Ñ.¨t¯{©{¸1©~Ñ>à1°!Ñ4ˆD�J‰J�q‰MØ3×:Ñ:ˆD�K‰K˜‰NØ�L‰L˜Ôà�N‰N×$Ò$¨Ñ-Ö$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Ø�N‰N×5Ñ5°d·i±i·o±oÀaÑ6HÔIØ×3Ò3Ø—‘×<Ñ<¸T¿Y¹Y×=MÑ=MÈaÑ=PÐRV×R[ÑR[×RaÑRaÐbcÑRdÐfj×foÑfo×ftÑftÕuð 4à�^‰^×/Ñ/°·	±	·±ÀÑ0BÔCÈD×LlÒLlØ�N‰N×8Ñ8¸¿¹×9IÑ9IÈ!Ñ9LÈdÏiÉiÏoÉoÐ^_ÑN`Ðbf×bkÑbk×bpÑbpÕ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   