
    g                     d    d dl Z 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)    N   )QuantizedValueQuantizedValueTypeattribute_to_kwarg   )QuantOperatorBase)QDQOperatorBasec                   (     e Zd Z fdZ fdZ xZS )QSplitc                 &    t         |   ||       y )N)super__init__)selfonnx_quantizer	onnx_node	__class__s      ]/var/www/openai/venv/lib/python3.12/site-packages/onnxruntime/quantization/operators/split.pyr   zQSplit.__init__	   s    3    c                    | j                   }| j                  j                  |dg      \  }}}}|t        |          S d}|j
                  r|j
                  dz   }i }|j                  D ]  }|j                  t        |              g }	|j                  D ]T  }
|
dz   }|	j                  |       t        |
||d   |d   t        j                        }|| j                  j                  |
<   V t        |j                         dkD  r|j#                  |j                   dd         t%        j&                  j(                  |j*                  ||	|fi |}|j                  |       | j                  xj,                  |z  c_        y )Nr    _quant	quantizedr   )node	quantizerquantize_activationr   quantizename	attributeupdater   outputappendr   r   Inputquantized_value_mapleninputextendonnxhelper	make_nodeop_type	new_nodes)r   r   quantized_input_nameszero_point_namesscale_namesnodesquantized_node_namekwargsr   quantized_output_namesoutput_namequantized_output_nameq_outputquantized_noder   s                 r   r   zQSplit.quantize   sr   yy NN..taS9	
! (7#%% 99"&))h"6IMM,Y78 ( "$;;K$/+$=!"))*?@%%A #"((H ?GDNN..{; ' tzz?Q!((AB8..LL/1GI\
`f
 	^$  E) r   )__name__
__module____qualname__r   r   __classcell__)r   s   @r   r   r      s    4'* '*r   r   c                       e Zd Zd Zy)QDQSplitc                    | j                   }|j                  dk(  sJ | j                  j                  |j                  d         s(| j                  j                  |j                  d          | j                  sF|j                  D ]6  }| j                  j                  ||j                  d   |j                         8 y y )NSplitr   )
r   r*   r   is_tensor_quantizedr%   quantize_activation_tensordisable_qdq_for_node_outputr    quantize_output_same_as_inputr   )r   r   r    s      r   r   zQDQSplit.quantize7   s    yy||w&&&~~11$**Q-@NN55djjmD//++<<VTZZPQ]TXT]T]^ & 0r   N)r7   r8   r9   r    r   r   r<   r<   6   s    _r   r<   )r'   quant_utilsr   r   r   base_operatorr   qdq_base_operatorr	   r   r<   rC   r   r   <module>rG      s0     P P , .+* +*\	_ 	_r   