+
    G-jL   ã                   óº   € ^ RI t ^ RIt^ RIt^ RIHt ^RIHtHtHtH	t	H
t
 ^RIHt ^RIHt  ! R R]4      t  ! R R	]4      t  ! R
 R]4      t ! R R]4      tR# )é    N)Úonnx_pb)ÚTENSOR_NAME_QUANT_SUFFIXÚQuantizedValueÚQuantizedValueTypeÚfind_by_nameÚget_mul_node)ÚQuantOperatorBase)ÚQDQOperatorBasec                   ó8   a a€ ] tR t^t oV 3R ltR tRtVtV ;t# )Ú	QOpMatMulc                ó&   <€ \         SV `  W4       R # ©N©ÚsuperÚ__init__©ÚselfÚonnx_quantizerÚ	onnx_nodeÚ	__class__s   &&&€Úz/Volumes/fast/ai/experiments/nudenet-smoke/.venv/lib/python3.14/site-packages/onnxruntime/quantization/operators/matmul.pyr   ÚQOpMatMul.__init__   ó   ø€ Ü‰Ñ˜Ö3ó    c                óJ  € V P                   P                  V P                  4      '       g1   \        P                  ! R V P                  P
                   R24       R# V P                   P                  V P                  P                  ^,          4      '       gm   V P                   P                  V P                  P                  ^ ,          4      '       g1   \        P                  ! RV P                  P
                   R24       R# V P                   P                  '       d„   V P                   P                  V P                  P                  ^,          4      '       gH   \        P                  ! RV P                   P                   RV P                  P
                   R24       R# R# )zIgnore MatMul Ú]Fz&Ignore MatMul due to non float inputs z%Ignore MatMul due to non constant B: Ú[T)Ú	quantizerÚshould_quantize_nodeÚnodeÚloggingÚdebugÚnameÚis_float_tensorÚinputÚinfoÚq_matmul_const_b_onlyÚfind_initializer_in_pathÚgraph_scope)r   s   &r   Úshould_quantizeÚQOpMatMul.should_quantize   s  € Ø�~‰~×2Ñ2°4·9±9×=Ò=Ü�MŠM˜N¨4¯9©9¯>©>Ð*:¸!Ð<Ô=Ùà—‘×.Ñ.¨t¯y©y¯©¸qÕ/A×BÒBØ—‘×.Ñ.¨t¯y©y¯©¸qÕ/A×BÒBä�LŠLÐAÀ$Ç)Á)Ç.Á.ÐAQÐQRÐSÔTÙð �>‰>×/×/Ð/Ø—>‘>×:Ñ:¸4¿9¹9¿?¹?È1Õ;M×NÒNÜ—’ÐDÀTÇ^Á^×E_ÑE_ÐD`Ð`aÐbf×bkÑbk×bpÑbpÐaqÐqrÐsÔtÙÙr   © )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r*   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r   Ú__classdict__s   @@r   r   r      s   ù‡ € õ4÷ò r   r   c                   ó8   a a€ ] tR t^(t oV 3R ltR tRtVtV ;t# )ÚMatMulIntegerc                ó&   <€ \         SV `  W4       R # r   r   r   s   &&&€r   r   ÚMatMulInteger.__init__)   r   r   c                óL  € V P                   pVP                  R 8X  g   Q hV P                  P                  V^ .4      w  ppppV P                  P	                  V^.RRR7      w  pppp	VP                  V4       VP                  V4       VP                  V4       VP                  V	4       VP                  ^ ,          R,           p
VP                  '       d   VP                  R,           MRp\        P                  P                  RW#,           V
.V4      pVP                  V4       V
R,           pV P                  P                  VP                  ^ ,          RR7      p\        P                  P                  R	V
.V.V
R
,           VR7      pVP                  V4       \        V4      ^8X  g   Q hV'       d
   VR,           M$V^ ,          R,           V^,          ,           R,           p\        VV P                  P                  4      pVf&   \!        VVR,           V4      pVP                  V4       VP                  ^ ,          pRpV'       d
   VR,           pVP                  \!        VV.VP                  ^ ,          V4      4       V P                  ;P                  V,          un        R# )ÚMatMulT©Úreduce_rangeÚop_level_per_channelÚ_output_quantizedÚ_quantÚ r7   Ú_cast_output)Ú	mandatoryÚCastÚ_cast)ÚtoÚ_scales_mulÚ_Ú_mulNz:0Ú_output_scale_mul)r    Úop_typer   Úquantize_activationÚquantize_weightÚextendÚoutputr#   ÚonnxÚhelperÚ	make_nodeÚappendÚget_tensor_typeÚlenr   Ú	new_nodesr   )r   r    Úquantized_input_namesÚzero_point_namesÚscale_namesÚnodesÚquantized_input_names_weightÚzero_point_names_weightÚscale_names_weightÚnodes_weightÚmatmul_integer_outputÚmatmul_integer_nameÚmatmul_integer_nodeÚcast_op_outputÚotypeÚ	cast_nodeÚscales_mul_opÚscales_mul_nodeÚscales_mul_op_outputÚoutput_scale_mul_ops   &                   r   ÚquantizeÚMatMulInteger.quantize,   sk  € Ø�y‰yˆØ�|‰|˜xÔ'Ð'Ð'ð �N‰N×.Ñ.¨t°a°SÓ9ñ	
Ø!ØØØð �N‰N×*Ñ*¨4°!°À4Ð^bÐ*Ócñ	
Ø(Ø#ØØà×$Ñ$Ð%AÔBØ×ÑÐ 7Ô8Ø×ÑÐ-Ô.Ø�‰�\Ô"à $§¡¨A¥Ð1DÕ DÐØ6:·i·i°i˜dŸi™i¨(Ö2ÀRÐÜ"Ÿk™k×3Ñ3ØØ!Õ4Ø"Ð#Øó	
Ðð 	�‰Ð(Ô)ð /°Õ?ˆØ—‘×.Ñ.¨t¯{©{¸1­~ÈÐ.ÓNˆÜ—K‘K×)Ñ)ØØ"Ð#ØÐØ! GÕ+Øð *ó 
ˆ	ð 	�‰�YÔô �;Ó 1Ô$Ð$Ð$÷ #ð   -Ö/à˜Q• #Õ%¨°A­Õ6¸Õ?ð 	ô ' }°d·n±n×6NÑ6NÓOˆØÒ"Ü*¨;¸ÈÕ8LÈmÓ\ˆOØ�L‰L˜Ô)à.×5Ñ5°aÕ8Ðð !ÐßØ"5Ð8KÕ"KÐØ�‰ÜØÐ!5Ð6Ø—‘˜A•Ø#óô	
ð 	�‰× Ò  EÕ)× r   r,   ©	r-   r.   r/   r0   r   ri   r1   r2   r3   r4   s   @@r   r7   r7   (   s   ù‡ € õ4÷G*ò G*r   r7   c                   ó>   a a€ ] tR t^{t oV 3R ltV 3R ltRtVtV ;t# )ÚQLinearMatMulc                ó&   <€ \         SV `  W4       R # r   r   r   s   &&&€r   r   ÚQLinearMatMul.__init__|   r   r   c                óN  <€ V P                   pVP                  R 8X  g   Q hV P                  P                  V^ .4      w  ppppV P                  P	                  V^.RRR7      w  pppp	VP                  V4       VP                  V4       VP                  V4       VP                  V	4       V P                  P                  VP                  ^ ,          4      w  p
ppppV
'       d   Vf   \        SV `%  4       # VP                  ^ ,          \        ,           pVP                  '       d   VP                  R,           MRp. pVP                  V^ ,          4       VP                  V^ ,          4       VP                  V^ ,          4       VP                  V^,          4       VP                  V^,          4       VP                  V^,          4       VP                  V4       VP                  V4       V P                  P                  \        P                  P                   \        P                  P"                  \        P                  P$                  \        P                  P&                  09   d   RMRp\(        P*                  P-                  RVV.VVR7      pVP                  V4       \/        VP                  ^ ,          VVV\0        P2                  4      pVV P                  P4                  VP                  ^ ,          &   V P                  ;P6                  V,          un        R# )	r;   Tr<   Nr@   rA   zcom.microsoftrm   )Údomain)r    rK   r   rL   rM   rN   Ú_get_quantization_paramsrO   r   ri   r   r#   rS   Úweight_qTypeÚ
onnx_protoÚTensorProtoÚFLOAT8E4M3FNÚFLOAT8E4M3FNUZÚ
FLOAT8E5M2ÚFLOAT8E5M2FNUZrP   rQ   rR   r   r   ÚInputÚquantized_value_maprV   )r   r    rW   rX   rY   rZ   r[   r\   r]   r^   Ú
data_foundÚoutput_scale_nameÚoutput_zp_namerH   Úqlinear_matmul_outputÚqlinear_matmul_nameÚqlinear_matmul_inputsrq   Úqlinear_matmul_nodeÚq_outputr   s   &                   €r   ri   ÚQLinearMatMul.quantize   sº  ø€ Ø�y‰yˆØ�|‰|˜xÔ'Ð'Ð'ð �N‰N×.Ñ.¨t°a°SÓ9ñ	
Ø!ØØØð �N‰N×*Ñ*¨4°!°À4Ð^bÐ*Ócñ	
Ø(Ø#ØØà×$Ñ$Ð%AÔBØ×ÑÐ 7Ô8Ø×ÑÐ-Ô.à�‰�\Ô"ð �N‰N×3Ñ3°D·K±KÀµNÓCñ	
ØØØØØçÐ2Ò:Ü‘7Ñ#Ó%Ð%à $§¡¨A¥Ô1IÕ IÐØ6:·i·i°i˜dŸi™i¨(Ö2ÀRÐà "Ðà×$Ñ$Ð%:¸1Õ%=Ô>Ø×$Ñ$ [°¥^Ô4Ø×$Ñ$Ð%5°aÕ%8Ô9à×$Ñ$Ð%:¸1Õ%=Ô>Ø×$Ñ$ [°¥^Ô4Ø×$Ñ$Ð%5°aÕ%8Ô9à×$Ñ$Ð%6Ô7Ø×$Ñ$ ^Ô4ð �~‰~×*Ñ*ä×&Ñ&×3Ñ3Ü×&Ñ&×5Ñ5Ü×&Ñ&×1Ñ1Ü×&Ñ&×5Ñ5ð	ôñ ð ð 	ô #Ÿk™k×3Ñ3ØØ!Ø"Ð#ØØð 4ó 
Ðð 	�‰Ð(Ô)ô "Ø�K‰K˜�NØ!ØØÜ×$Ñ$ó
ˆð >Fˆ�‰×*Ñ*¨4¯;©;°q­>Ñ:à�‰× Ò  EÕ)× r   r,   rk   r4   s   @@r   rm   rm   {   s   ù‡ € õ4÷N*õ N*r   rm   c                   ó8   a a€ ] tR t^Ðt oV 3R ltR tRtVtV ;t# )Ú	QDQMatMulc                ó&   <€ \         SV `  W4       R # r   r   r   s   &&&€r   r   ÚQDQMatMul.__init__Ñ   r   r   c                ó^  € V P                   pVP                  R 8X  g   Q hV P                  '       d   VP                  pM+\        P
                  ! VP                  VP                  4      pV F½  p\        W0P                  P                  P                  4       4      '       dm   V P                  P                  V^VP                  R7      w  rEV'       d   V P                  P                  W54       K…  V P                  P                  V4       K¢  V P                  P                  V4       K¿  	  R# )r;   )Údefault_axisrK   N)r    rK   Údisable_qdq_for_node_outputr%   Ú	itertoolsÚchainrO   r   r   ÚmodelÚinitializerÚis_tensor_per_channelÚ"quantize_weight_tensor_per_channelÚquantize_weight_tensorÚquantize_activation_tensor)r   r    Únodes_to_iterateÚtensor_nameÚis_per_channelÚchannel_axiss   &     r   ri   ÚQDQMatMul.quantizeÔ   s×   € Ø�y‰yˆØ�|‰|˜xÔ'Ð'Ð'à×+×+Ð+Ø#Ÿz™zÑä(Ÿš¨t¯z©z¸4¿;¹;ÓGÐã+ˆKÜ˜K¯©×)=Ñ)=×)IÑ)IÓ)K×LÒLØ/3¯~©~×/SÑ/SØ¨a¸¿¹ð 0Tó 0Ñ,�÷ "Ø—N‘N×EÑEÀkÖ`à—N‘N×9Ñ9¸+ÖFà—‘×9Ñ9¸+ÖFó ,r   r,   rk   r4   s   @@r   r†   r†   Ð   s   ù‡ € õ4÷Gò Gr   r†   )rŒ   r!   rP   r   rt   Úquant_utilsr   r   r   r   r   Úbase_operatorr	   Úqdq_base_operatorr
   r   r7   rm   r†   r,   r   r   Ú<module>rœ      s`   ðÛ Û ã Ý &ç rÕ rÝ ,Ý .ôÐ!ô ð.ô
K*�Iô K*ð\ô
R*�Iô R*ôjG�ö Gr   