
    ɯwgTG                     \   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jZ                  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Z4y)    N)CallableDictListOptionalSetTuple)get_native_backend_config   )NSNodeTargetTypereturnc                  f   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        j0                  ht         j2                  ht        j4                  t6        j4                  ht        j8                  ht        j:                  t6        j:                  ht        j<                  t         j>                  ddt        j<                  ht         j@                  t        jB                  ht         jD                  t        jF                  ht         jH                  t        jJ                  ht        jL                  ddt         jN                  t        jL                  ht         jP                  ht         jR                  ht         jT                  ht         jV                  ht         jX                  ht        jZ                  ht        j\                  ht        j^                  ht         j`                  ht         jb                  ht         jd                  ht         jf                  ht         jh                  ht         jj                  ht         jl                  ht         jn                  ht         jp                  ht         jr                  ht         jt                  t        jv                  ht        jx                  ht        jz                  ht        j|                  ht        j~                  ht        j                  ht        j                  ht         j                  t        j                  ht         j                  t        j                  ht         j                  t        j                  t        j                  ddhddt        j                  t         j                  ht         j                  t        j                  t        j                  ht6        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        j                  ht        j                  ht        j                  ht        j                  ht        j                   j                  j                  ht         j                  ht        j                  ht        j                  ht         j                  ht         j                  t        j                  ht        j                  t        j                  ht         j                  ht        j                  ht         j                  ht        j                  ht        j                  h} t               }t         j                  t         j                  j                  j                  fg}|j                  j                         D ]  \  }}|}t        |t        t        f      r|d	   }t        |t        t        f      r|j                  |j                  ||j                  f       |j                  |j                  ||j                  f       |j                  |j                  ||j                  f        t        j                  t        j                  t        j                  t        j                  fD ]-  }|j                         D ]  \  }}|j                  ||f        / t        j                  t        j                  t        j                  fD ]C  }	|	j                         D ].  \  }\  }
}|j                  ||
f       |j                  ||f       0 E t        j                  j                         D ].  \  }\  }
}|j                  ||
f       |j                  ||f       0 t        j                  t        j                  t         j                  fD ]-  }|j                         D ]  \  }}|j                  ||f        / t         j                  fD ]-  }|j                         D ]  \  }}|j                  ||f        / |D ]8  \  }}| D ].  }||v s||v s|j5                  |       |j5                  |        8 : 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                     \/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/torch/ao/ns/fx/mappings.py$get_base_name_to_sets_of_related_opsr      s8   G8 II	
G8 II	
G8 II	
G8 HH	
G8  HH	
G8& HH	
%G8. II	
-G86 HH	
5G8> LL	
=G8F LLHHLL##	
EG8N LLHHLL##	
MG8X   !!	
WG8`   !!	
_G8h   !!	
gG8r GG	
qG8z IILL	
yG8D II	
CG8L IILL	
KG8V FFGGJJ	
UG8f LLLL	
eG8n LLLL	
mG8v LLLL	
uG8@ MMJJII	
G8P NN	
OG8V NN	
UG8^ 	
]G8d 	
cG8j 	
iG8r 	
qG8x 	
wG8~ 	
}G8F FF	
EG8N LL	
MG8V OO	
UG8^ LL	
]G8f LL	
eG8n 	
mG8t 	
sG8z 	
yG8B LL	
AG8J LL	
IG8R HHGG	
QG8\ EE	
[G8d KK	
cG8l LL	
kG8t OO	
sG8| LL	
{G8D LL	
CG8L GGFF	
KG8V GGFF	
UG8` GGFFJJ	
_G8p MMNN		
oG8~ KKJJKK	
}G8J 	
IG8R OO	
QG8Z KK	
YG8b MM	
aG8j JJ	
iG8r ##	
qG8z II	
yG8B JJ	
AG8J II	
IG8R OO	
QG8Z MM	
YG8b KK	
aG8j KK	
iG8r HH++	
qG8z JJ	
yG8B	 II	
A	G8J	 LL	
I	G8R	 JJ	
Q	G8Z	 HHII	
Y	G8d	 GGII	
c	G8n	 OO	
m	G8t	 OO	
s	G8|	 	
{	G8B
 	
A
G8J
 LL	
I
G8V
 /0N 
BJJ%%EEF8O
 *KKQQS Wu6)"-M u6 * ""M63F3F#GH( ""M63D3D#EF,,8 ""M63T3T#UV)W6 	!88 99 == AA	 5 /446 	5NFF""FF#34	55 	!>> II ??$ 6
 +B*G*G*I 	6&F&Wg""FG#45""FG#45	66  
"	=	=	C	C	E2 	 01012 	!00 55JJ 5
 /446 	5NFF""FF#34	55 	CC 5 /446 	5NFF""FF#34	55 ( u"5 	**e7I.I"&&u-"&&u-		 JL$G1 IL	16H(3I
 ,+    r   opc                 D    | j                         D ]  \  }}||v s|c S  y )N)r   )r   r   r   r   s       r   get_base_name_for_opr     s7     *J)O)O)Q %	%## r   
related_opc                     |:| j                         D ]  }||v s|j                  |        y  t        | d      d}t        |      | v r|dz  }t        |      | v r|h| t        |      <   y )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 	//"&&r*	
 
|>:;;'l>>qLG 'l>>:<(W6r   c                  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"                  t
        j"                  t
        j$                  t         j&                  h} t)               }t*        j                  t*        j,                  t*        j                  t*        j.                  t*        j                  t*        j0                  t*        j                  t*        j2                  t*        j                  t*        j                  t*        j                  t*        j                  t*        j                  t*        j                  t*        j                  t*        j&                  h}h t         j4                  t         j6                  t
        j6                  t         j8                  t
        j8                  t         j:                  t        j<                  t
        j>                  t         j@                  t         jB                  t         j                  t         jD                  t         jF                  t         jH                  t         jJ                  t         jL                  t         jN                  t         jP                  t         jR                  t         jT                  t
        jV                  t
        jX                  jZ                  j\                  t
        jX                  jZ                  j^                  t
        j                  t
        j`                  t
        jb                  t
        jd                  t
        jf                  t
        jh                  t
        jj                  t
        jl                  t
        jn                  t
        jp                  t
        jr                  t
        jt                  t
        jv                  t
        jx                  t        j                   }h tz        j|                  t~        j|                  t        j|                  t        j|                  t
        jz                  j                  j                  j                  tz        j                  tz        j                  tz        j                  t~        j                  t~        j                  t~        j                  t~        j                  t~        j                  tz        j                  t        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        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                  t        j                  t        j                  t        j                  t        j                  t        j                  }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                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  }tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                  tz        j                   tz        j                  tz        j                  tz        j                  tz        j                  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, 03u 	







		!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 /..%>..%>&@	 	r   c                  x    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     sJ    !!/ 	/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     s<    = =  # # * * . . 7 7 7   ( ( # # , , T T K K    J & iim,d3<L8M3M.N m,`&*34D0E+E&F c]>&*34D0E+E&F>> )*> 
	>(fd34D0E+E&F fR'4S1A-B(B#C 'r   