
    קgTG                        d dl Z d dlmZmZmZmZmZmZ d dlZd dl	m
c mc mZ d dlm
c mc mc mZ d dlm
c mc mc mZ d dlm
c mc mc mc mZ d dlm
c mc mZ d dlm
c mc mc mZ d dlm
c mc mZ d dlm
c mc mc mZ d dlm
c m c m!c m"Z" d dl#m
c m c m$Z$ d dl%mZ d dl&mc m'Z( d dl)m*Z* ddl+m,Z, ej-        j        Z.dee/ee,         f         fdZ0dee/ee,         f         d	e,dee/         fd
Z1dee/ee,         f         d	e,dee,         ddfdZ2dee/ee,         f         fdZ3dee/ee,         f         fdZ4dS )    N)CallableDictListOptionalSetTuple)get_native_backend_config   )NSNodeTargetTypereturnc                     g t           j        ht           j        ht           j        ht          j        ht          j        ht          j        ht           j        ht          j	        ht           j
        t          j        ht           j        t          j        j        j        ht           j        t          j        j        j        ht           j        t          j        ht           j        t          j        ht           j        t          j        ht           j        ht          j        t6          j        ht          j        ht          j        t6          j        ht          j        t           j        ddt          j        ht           j         t          j!        ht           j"        t          j#        ht           j$        t          j%        ht          j&        ddt           j'        t          j&        ht           j(        ht           j)        ht           j*        ht           j+        ht           j,        ht          j-        ht          j.        ht          j/        ht           j0        ht           j1        ht           j2        ht           j3        ht           j4        ht           j5        ht           j6        ht           j7        ht           j8        ht           j9        ht           j:        t          j;        ht          j<        ht          j=        ht          j>        ht          j?        ht          j@        ht          jA        ht           jB        t          jC        ht           jD        t          jE        ht           jF        t          jG        t          jG        ddhddt          jH        t           jI        ht           jJ        t          jK        t          jL        ht6          jM        ht          jN        ht          jO        ht          jP        ht          jQ        ht          jR        ht          jS        ht          jT        ht          jU        ht          jV        ht          jW        ht          jX        ht          jY        ht          j         jZ        j[        ht           j\        ht          j]        ht          j^        ht           j_        ht           j`        t          j`        ht          jb        t          jb        ht           jd        ht          je        ht           jf        ht          jg        ht          jh        h} t                      }t           j        t           jj        j	        jk        fg}|jl        m                                D ]\  }}|}t          |t          t          f          r$|d	         }t          |t          t          f          $|jq        |r                    ||jq        f           |js        |r                    ||js        f           |jt        |r                    ||jt        f           t          jv        t          jw        t          jx        t          jy        fD ]3}|m                                D ]\  }}|r                    ||f           4t          jz        t          j{        t          j|        fD ]M}	|	m                                D ]6\  }\  }
}|r                    ||
f           |r                    ||f           7Nt          j}        m                                D ]6\  }\  }
}|r                    ||
f           |r                    ||f           7t          j~        t          j        t           j        fD ]3}|m                                D ]\  }}|r                    ||f           4t           j        fD ]3}|m                                D ]\  }}|r                    ||f           4|D ]>\  }}| D ]6}||v s||v r,|                    |           |                    |            n7?i }d
}| D ]}t          |          }|dz  }|||<   |S )Nrelurelu_sigmoidsigmoid_tanh_tanhhardsigmoid_hardsigmoidr   r
   )nnConv1dConv2dConv3dFconv1dconv2dconv3dLinearlinear	AvgPool1dtorch
avg_pool1d	AvgPool2d_C_nn
avg_pool2d	AvgPool3d
avg_pool3dAdaptiveAvgPool1dadaptive_avg_pool1dAdaptiveAvgPool2dadaptive_avg_pool2dAdaptiveAvgPool3dadaptive_avg_pool3dLSTMaddoperatorcatmulr   ReLU	MaxPool1d
max_pool1d	MaxPool2d
max_pool2d	MaxPool3d
max_pool3dr   SigmoidBatchNorm2dBatchNorm3dConvTranspose1dConvTranspose2dConvTranspose3dconv_transpose1dconv_transpose2dconv_transpose3dELU	EmbeddingEmbeddingBag	GroupNorm	HardswishInstanceNorm1dInstanceNorm2dInstanceNorm3d	LayerNorm	LeakyReLUReLU6relu6elu	hardswish
group_norminstance_norm
layer_norm
leaky_reluSiLUsiluMishmishTanhr   r   HardsigmoidHardtanhhardtanh	hardtanh_floordiv	unsqueezestacksqueezesortrepeat_interleaveminmeanmax	transposeflattenclampchunk
functionalinterpolateDropoutdropoutmatmulSoftmaxPReLUnnqprelutoqPixelShufflepixel_shufflePixelUnshufflepixel_unshufflenarrowr	   modulesNonDynamicallyQuantizableLinear!_pattern_complex_format_to_configitems
isinstancelisttuplefused_moduleappend
qat_modulereference_quantized_module_lower_to_native_backendSTATIC_LOWER_MODULE_MAPDYNAMIC_LOWER_MODULE_MAPWEIGHT_ONLY_LOWER_MODULE_MAP SPECIAL_PATTERN_LOWER_MODULE_MAPSTATIC_LOWER_FUSED_MODULE_MAP(STATIC_LOWER_FUSED_MODULE_TWO_INPUTS_MAPDYNAMIC_LOWER_FUSED_MODULE_MAPSTATIC_LOWER_FUNCTIONAL_MAPQBIN_OP_MAPPINGQBIN_RELU_OP_MAPPINGquantization_mappings,DEFAULT_FLOAT_TO_QUANTIZED_OPERATOR_MAPPINGS%DEFAULT_DYNAMIC_QUANT_MODULE_MAPPINGSstr)sets_of_related_opsbackend_confignew_connectionspatternconfigfirst_elementsource_to_targetsourcetargetsource_to_double_targettarget1target2item1item2set_of_related_ops base_name_to_sets_of_related_opscounter	base_names                     S/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/ao/ns/fx/mappings.py$get_base_name_to_sets_of_related_opsr      s
   G8 I	
G8 I	
G8 I	
G8 H	
G8  H	
G8& H	
%G8. I	
-G86 H	
5G8> L	
=G8F LHL#	
EG8N LHL#	
MG8X  !	
WG8`  !	
_G8h  !	
gG8r G	
qG8z IL	
yG8D I	
CG8L IL	
KG8V FGJ	
UG8f LL	
eG8n LL	
mG8v LL	
uG8@ MJI	
G8P N	
OG8V N	
UG8^ 	
]G8d 	
cG8j 	
iG8r 	
qG8x 	
wG8~ 	
}G8F F	
EG8N L	
MG8V O	
UG8^ L	
]G8f L	
eG8n 	
mG8t 	
sG8z 	
yG8B L	
AG8J L	
IG8R HG	
QG8\ E	
[G8d K	
cG8l L	
kG8t O	
sG8| L	
{G8D L	
CG8L GF	
KG8V GF	
UG8` GFJ	
_G8p MN		
oG8~ KJK	
}G8J 	
IG8R O	
QG8Z K	
YG8b M	
aG8j J	
iG8r #	
qG8z I	
yG8B J	
AG8J I	
IG8R O	
QG8Z M	
YG8b K	
aG8j K	
iG8r H+	
qG8z J	
yG8B	 I	
A	G8J	 L	
I	G8R	 J	
Q	G8Z	 HI	
Y	G8d	 GI	
c	G8n	 O	
m	G8t	 O	
s	G8|	 	
{	G8B
 	
A
G8J
 L	
I
G8V
 /00N 
BJ%EF8O
 *KQQSS W Wu66 	.)"-M u66 	. * ""M63F#GHHH( ""M63D#EFFF,8 ""M63T#UVVV 	!8 9 = A	 5 5 /4466 	5 	5NFF""FF#34444	5 	!> I ?$ 6 6
 +B*G*G*I*I 	6 	6&F&Wg""FG#4555""FG#45555	6 
"	=	C	C	E	E2 2 	 011101111 	!0 5J 5 5
 /4466 	5 	5NFF""FF#34444	5 	C 5 5 /4466 	5 	5NFF""FF#34444	5 (  u"5 	 	***e7I.I.I"&&u---"&&u--- /J
 JL$G1 I ILL	16H(33++    r   opc                 J    |                                  D ]\  }}||v r|c S d S )N)r   )r   r   r   r   s       r   get_base_name_for_opr     sH     *J)O)O)Q)Q  %	%### $4r   
related_opc                    |E|                                  D ]}||v r|                    |            d S t          | d          d}t          |          | v r|dz  }t          |          | v |h| t          |          <   d S )Nz was not foundr   r
   )valuesr1   AssertionErrorr   )r   r   r   r   r   s        r   add_op_to_sets_of_related_opsr     s    
 "B"I"I"K"K 	 	///"&&r*** 0 
:::;;;'ll>>>qLG 'll>>>:<(W666r   c                  V   t           j        t           j        t           j        t           j        t
          j        t           j        t           j        t           j	        t           j
        t           j        t           j        t           j        t           j        t          j        t
          j        t          j        t
          j        t
          j        t           j        h} t)                      }t*          j        t*          j        t*          j        t*          j        t*          j        t*          j        t*          j        t*          j        t*          j        t*          j        t*          j        t*          j	        t*          j
        t*          j        t*          j        t*          j        h}h t           j        t           j        t
          j        t           j        t
          j        t           j        t          j        t
          j        t           j         t           j!        t           j        t           j"        t           j#        t           j$        t           j%        t           j&        t           j'        t           j(        t           j)        t           j*        t
          j+        t
          j,        j-        j.        t
          j,        j-        j/        t
          j        t
          j0        t
          j1        t
          j2        t
          j3        t
          j4        t
          j5        t
          j6        t
          j7        t
          j8        t
          j9        t
          j:        t
          j;        t
          j<        t          j        }h tz          j>        t~          j>        t          j>        t          j>        t
          j=        jB        j        jC        tz          jD        tz          jE        tz          jF        t~          jD        t~          jE        t~          jF        t~          jG        t~          jH        tz          jI        t          jI        tz          jJ        tz          jK        tz          jL        tz          jM        tz          jN        tz          jO        tz          jP        tz          jQ        tz          jR        tz          jS        tz          jT        tz          jU        tz          jV        tz          jW        tz          jX        tz          jY        tz          jZ        tz          j[        tz          j\        t          j^        t          j_        t          j`        t          ja        t          jb        t          jc        t          jd        t          je        t          jf        t          jg        t          je        t          jf        t          jg        t          ji        t          jj        t          jk        t          j`        t          ja        t          jb        t          jc        t          jd        t          jc        t          jm        t          jn        t          jo        t          jp        }h t          j>        t          jD        t          jE        t          jF        t          jJ        t          jK        t          jL        t          jM        t          jN        t          jP        t          jR        t          jS        t          jT        t          jU        t          jV        t          jW        t          jG        t          jH        t          jL        t          j[        t          j\        t          j^        t          j_        t          j`        t          ja        t          jb        t          jc        t          jm        t          jn        t          jo        t          jp        }tz          js        tz          jt        tz          ju        tz          jv        tz          jw        tz          jx        tz          jy        tz          jz        tz          j{        tz          j|        tz          jL        tz          j}        tz          j~        tz          j        tz          j        tz          j        tz          j        tz          j        tz          jX        h}h d}| |||||||dS )N>   r   r   r   r   r   r   r   r   )funs_io_type_fp32funs_io_type_fp16funs_io_type_int8funs_io_type_fp32_or_int8mods_io_type_fp32mods_io_type_int8mods_io_type_fp32_or_int8meths_io_type_fp32_or_int8)r   r    r   r   r   r"   r3   rQ   rR   rT   rU   rV   rp   rX   rZ   r2   r1   r4   sumru   setrv   linear_reluconv1d_reluconv2d_reluconv3d_relur   r   r   r   r`   r+   r-   r/   r^   r_   rn   r7   r9   r;   rP   rx   rz   r#   r%   r&   r'   r)   rl   rk   rj   ri   rh   rg   rf   r{   re   rd   rc   rb   ra   r   r   nnqatnnqatdnnqdr|   r}   r   r   r   rF   rG   r0   r=   r>   ro   r?   r@   rA   rE   rH   rJ   rK   rL   rM   rI   rN   rO   rW   rY   rr   rs   nniBNReLU2dBNReLU3d
ConvReLU1d
ConvReLU2d
ConvReLU3d
LinearReLU
LinearBn1dConvBn1dConvBn2dConvBn3dnniqatConvBnReLU1dConvBnReLU2dConvBnReLU3dnniqdLinearLeakyReLU
LinearTanh	ConvAdd2dConvAddReLU2drt   nniqr5   r[   r<   r\   r*   r,   r.   r!   r$   r(   r]   Identityr6   r8   r:   rw   ry   )FUNS_IO_TYPE_FP32FUNS_IO_TYPE_FP16FUNS_IO_TYPE_INT8FUNS_IO_TYPE_FP32_OR_INT8MODS_IO_TYPE_FP32MODS_IO_TYPE_INT8MODS_IO_TYPE_FP32_OR_INT8METHS_IO_TYPE_FP32_OR_INT8s           r   get_node_type_to_io_type_mapr     s   																		'0, 03uu 	



	!0.'8	'8	'8 	
'8 	
		'8
 	'8 	
'8 	'8 	!'8 	
'8 	
'8 	
	'8 	

'8 	
'8 	
'8 	
'8  	
!'8" 	
#'8$ 	
%'8& 	
''8( 	
)'8* 	+'8, 	-'8. 	/'80 		1'82 	3'84 	5'86 	7'88 	9'8: 		;'8< 	
='8> 		?'8@ 	A'8B 	C'8D 	
E'8F 	G'8H 	I'8J 	K'8L 	M'8R?0
	?0?0 	?0 		?0
 	??0 		?0 		?0 		?0 	?0 	?0 	?0 	?0 	?0 	?0" 		#?0$ 	%?0& 	'?0( 	
)?0* 	+?0, 	-?0. 	/?00 	1?02 	3?04 	5?06 	7?08 	9?0: 	;?0< 	=?0> 	??0@ 	A?0B 	C?0D 	E?0F 	
G?0H 	I?0J 	K?0L 	M?0N 	O?0P 	Q?0R 	S?0T 	U?0V 	W?0X 	Y?0Z 	[?0\ 	]?0^ 	_?0` 	a?0b 	c?0d 	e?0f 	g?0h 	i?0j 	k?0l 	m?0n 	o?0p 	q?0r 	s?0t 	u?0v 	w?0x 	y?0z 	{?0| 	}?0B 0
 0
 0 	
 0 	
	 0
 	 0 	 0 	 0 	 0 	 0 	 0 	 0 	 0 	 0 	 0 	 0  	! 0" 	# 0$ 	% 0& 	' 0( 	) 0* 		+ 0, 	- 0. 	/ 00 	1 02 	3 04 	5 06 	7 08 	9 0: 	; 0< 	= 0> 	? 0F 	



















'8,	9 	9 	9 /..%>..%>&@	 	 	r   c                  `    t           j        t          j        h} t          j        h}h d}| ||dS )N>   torg   sizeviewrl   rk   numelshapedetachrepeatdetach_permutereshaperesize_rc   squeeze_ri   ra   
contiguous
dequantize
unsqueeze_re   )funs_unmatchablemods_unmatchablemeths_unmatchable)r"   quantize_per_tensorr2   getitemr   r   )FUNS_UNMATCHABLEMODS_UNMATCHABLEMETHS_UNMATCHABLEs      r   get_unmatchable_types_mapr     sQ    !/ 	/0 0 04 -,.  r   )5r2   typingr   r   r   r   r   r   r"   torch.ao.nn.intrinsicaor   	intrinsicr   torch.ao.nn.intrinsic.qatqatr   torch.ao.nn.intrinsic.quantized	quantizedr   'torch.ao.nn.intrinsic.quantized.dynamicdynamicr   torch.ao.nn.qatr   torch.ao.nn.qat.dynamicr   torch.ao.nn.quantizedrt   torch.ao.nn.quantized.dynamicr   1torch.ao.quantization.fx._lower_to_native_backendquantizationfxr   +torch.ao.quantization.quantization_mappingsr   torch.nntorch.nn.functionalrm   r   $torch.ao.quantization.backend_configr	   ns_typesr   opsrv   r   r   r   r   r   r    r   r   <module>r     sr    = = = = = = = = = = = = = = = =  # # # # # # # # # # # # * * * * * * * * * * * * * * * . . . . . . . . . . . . . . . 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7             ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( # # # # # # # # # # # # , , , , , , , , , , , , , , , T T T T T T T T T T T T T T T K K K K K K K K K K K K                J J J J J J & & & & & & im,d3<L8M3M.N m, m, m, m,`&*34D0E+E&F c]   >&*34D0E+E&F>> )*> 
	> > > >(fd34D0E+E&F f f f fR'4S1A-B(B#C ' ' ' ' ' 'r   