+
    "Ý³jIE  ã                   óŒ  € ^ RI t ^ RIt^ RIt^ RIHt ^ RIHtHt ^ RIH	t	H
t
 ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RIHt ^ R	IHt ^ R
IHtHtHt  ! R R]
4      t ! R R]4      tR t ! R R]P:                  P<                  4      t ! R R]P:                  P<                  4      t R t!R t"R R lt#R!RRRRRRRRRRRR/R llt$R# )"é    N)Úget_executorch_backend_config)Ú#_convert_to_reference_decomposed_fxÚ
prepare_fx)ÚNodeSpecÚQuantizationTestCase)ÚTestCase)Úclone_preserve_strides_offset)ÚFROM_NODE_KEY)Ú_extract_node_source_debug_info©Úbfs_trace_with_node_process)Úconvert_pt2eÚprepare_pt2eÚprepare_qat_pt2ec                   óº  a € ] tR t^$t o Rt]P                  P                  P                  ]P                  P                  P                  P                  ]P                  P                  P                  ]P                  P                  P                  P                  ]P                  P                  P                  ]P                  P                  P                  P                  ]P                  P                  P                  ]P                  P                  P                  P                  ]P                  P                  P                  P                  ]P                  P                  P                  P                  ]P                  P                  P                  P                  ]P                  P                  P                  P                  /tRR ltRtV tR# )ÚPT2EQuantizationTestCasez=
Base QuantizationTestCase for PT2 with some helper methods.
Nc                óÚ  € \         P                  P                  4        VP                  4       p\        P
                  ! V4      p\        ;QJ d&    . R  \        \        V4      4       4       F  NK  	  5M! R  \        \        V4      4       4       4      p\         P                  P                  TTV'       d   TMRRR7      P                  4       pV	'       d   \        WÓ4      pM\        WÓ4      pV
'       d   \        RV4       V! V!   \        V4      pV
'       d   \        RV4       V! V!  p\        pVP!                  4        UUu/ uF  w  ppVP#                  V4      VbK  	  pppVf   . pV Uu. uF  pVP#                  V4      NK  	  ppV P%                  VVVR7       V'       Ed0   Tp\'        4       p\        P
                  ! V4      p\)        VVVVR7      pV! V!   \+        VVR7      p\         P                  P                  TTV'       d   TMRR7      P                  4       p/ p\,        P.                  P!                  4        F*  w  ppVV9   g   K  VV,          VVP#                  V4      &   K,  	  Ve5   VP!                  4        UUu/ uF  w  ppVP#                  V4      VbK  	  pppV P%                  VVR	7       V! V!  pV P1                  VV4       V# u uppi u upi u uppi )
c              3   óv   "  € T F/  pV^ 8X  d"   ^ \         P                  P                  R4      /MRx € K1  	  R# 5i)r   ÚdimN)ÚtorchÚexportÚDim)Ú.0Úis   & Ú[/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torchao/testing/pt2e/utils.pyÚ	<genexpr>Ú;PT2EQuantizationTestCase._test_quantizer.<locals>.<genexpr>G   s6   é € ð 
á/�ð -.°¬FˆQ”—‘× Ñ  Ó'Ñ(¸Ô<Û/ùs   ‚79NT)Údynamic_shapesÚstrictzprepared model:zquantized model)Úexpected_node_occurrenceÚexpected_node_list)Úbackend_config)r   )r    )r   Ú_dynamoÚresetÚevalÚcopyÚdeepcopyÚtupleÚrangeÚlenr   Úmoduler   r   Úprintr   r   ÚitemsÚcall_functionÚcheckGraphModuleNodesr   r   r   r   Ú_MAP_TO_FX_TRACED_OPSÚassertEqual)ÚselfÚmodelÚexample_inputsÚ	quantizerr    r!   Úcheck_against_fx_quantÚfx_qconfig_mappingÚexport_with_dynamic_shapeÚis_qatÚis_debug_modeÚtraining_ir_node_occurrenceÚm_eagerÚmr   Úpt2_quant_outputÚnsÚkÚvÚnode_occurrenceÚnÚ	node_listÚqconfig_mappingr"   Úm_copyÚm_fxÚfx_quant_outputs   &&&&&&&&&&&&               r   Ú_test_quantizerÚ(PT2EQuantizationTestCase._test_quantizer2   s×  € ô  	�‰×ÑÔØ—*‘*“,ˆô �MŠM˜'Ó"ˆßœñ 
äœ3˜~Ó.Ô/ó
Ÿ™ñ 
äœ3˜~Ó.Ô/ó
ó 
ˆô �L‰L×ÑØØß-F™>ÈDØð	  ó 
÷
 ‰&‹(ð 	
÷ Ü  Ó.‰Aä˜QÓ*ˆAßÜÐ# QÔ'á	ˆ>ÒÜ˜‹OˆßÜÐ# QÔ'á˜nÑ-ÐÜˆà/G×/MÑ/MÔ/Oô
Ù/O¡t q¨!ˆB×Ñ˜QÓ Ò"Ñ/Oð 	ñ 
ð Ò%Ø!#ÐÙ2DÓEÑ2D¨Q�R×%Ñ% aÖ(Ñ2Dˆ	ÐEØ×"Ñ"Ø¨ÈIð 	#ô 	
÷ "Ð!Ø0ˆOÜ:Ó<ˆNÜ—]’] 7Ó+ˆFÜØ˜¨ÈôˆDñ �.Ò!Ü6Ø ^ôˆDô —<‘<×&Ñ&ØØß1J™~ÐPTð 'ó ÷ ‰f‹hð	 ð
 !ˆOÜ0×FÑF×LÑLÖN‘��1ØÐ0Ö0Ø;SÐTUÕ;V�O B×$4Ñ$4°QÓ$7Ó8ñ Oð +Ò6ð !<× AÑ AÔ Cô#á C™˜˜1ð ×$Ñ$ QÓ'¨Ò*Ù Cð  ñ #ð ×&Ñ& tÀoÐ&ÔVÙ" NÑ3ˆOØ×Ñ˜_Ð.>Ô?ØˆùóK
ùò
 Fùó2#s   ÅKÅ2K"ÊK'© )NFNFFFN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚopsÚquantized_decomposedÚquantize_per_tensorÚdefaultÚdequantize_per_tensorÚquantize_per_channelÚdequantize_per_channelÚtensorr0   rI   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r   $   s6  ø‡ € ñð
 	�	‰	×&Ñ&×:Ñ:¸E¿I¹I×<ZÑ<Z×<nÑ<n×<vÑ<vØ�	‰	×&Ñ&×<Ñ<¸e¿i¹i×>\Ñ>\×>rÑ>r×>zÑ>zØ�	‰	×&Ñ&×;Ñ;¸U¿Y¹Y×=[Ñ=[×=pÑ=p×=xÑ=xØ�	‰	×&Ñ&×=Ñ=¸u¿y¹y×?]Ñ?]×?tÑ?t×?|Ñ?|Ø�	‰	×&Ñ&×:Ñ:×AÑAÀ5Ç9Á9×CaÑCa×CuÑCu×C|ÑC|Ø�	‰	×&Ñ&×<Ñ<×CÑCÀUÇYÁY×EcÑEc×EyÑEy÷  FAñ  FAðÐ÷Sò Só    r   c                   ó`   a € ] tR t^ˆt o RtV 3R lR ltV 3R lR ltV 3R lR ltR tR	t	V t
R
# )ÚPT2ENumericDebuggerTestCasez
Base test case class for PT2E numeric debugger tests containing common utility functions
for numeric debugging functionality.
c                ó   <€ V ^8„  d   QhRR/# )é   ÚreturnNrK   )Úformatr\   s   "€r   Ú__annotate__Ú(PT2ENumericDebuggerTestCase.__annotate__Ž   s   ø€ ÷ Nñ N¸tñ Nr]   c                ó*   a € V 3R  lp\        W4       R# )c                 óX  <€ V P                   R 8X  g   V P                   R8X  d   R# \        V P                  9  g   V P                  \        ,          f   R# V P                  \        ,          R,          P                  R8X  d   R# SP	                  \        V P                  RV  R24       R# )ÚplaceholderÚoutputNz!ExportedProgram.module().unlift()úNode z doesn't have from_node infoéÿÿÿÿ)Úopr
   ÚmetaÚ	pass_nameÚassertIn)Únoder2   s   &€r   Ú!_assert_node_has_from_node_sourceÚmPT2ENumericDebuggerTestCase._assert_each_node_has_from_node_source.<locals>._assert_node_has_from_node_source�   s‰   ø€ Ø�w‰w˜-Ô'¨4¯7©7°hÔ+>Ùô  D§I¡IÔ-°·±¼=Õ1IÒ1Qñ ð —	‘	œ-Õ(¨Õ,×6Ñ6Ø6ô7ñ ð �M‰MÜØ—	‘	Ø˜�vÐ9Ð:ör]   Nr   )r2   r3   rq   s   f& r   Ú&_assert_each_node_has_from_node_sourceÚBPT2ENumericDebuggerTestCase._assert_each_node_has_from_node_sourceŽ   s   ø€ õ	ô2 	$ EÖMr]   c                ó6   <€ V ^8„  d   QhRS[ S[S[3,          /# ©ra   rb   ©ÚdictÚstrÚany)rc   r\   s   "€r   rd   re   ª   s   ø€ ÷ $ñ $±$±s¹C°xµ.ñ $r]   c                ó.   a€ / oV3R  lp\        W4       S# )c                 ór   <€ \        V 4      ;pe'   VP                  VP                  3S\        V 4      &   R # R # ©N)r   ÚnameÚgraph_idry   )rp   Úroot_node_sourceÚfrom_node_source_maps   & €r   Ú#_extract_from_node_source_from_nodeÚbPT2ENumericDebuggerTestCase._extract_from_node_source.<locals>._extract_from_node_source_from_node­   s=   ø€ ä$CÀDÓ$IÐIÐ ÒVà$×)Ñ)Ø$×-Ñ-ð3Ð$¤S¨£YÓ/ñ Wr]   r   )r2   r3   r‚   r�   s   && @r   Ú_extract_from_node_sourceÚ5PT2ENumericDebuggerTestCase._extract_from_node_sourceª   s   ø€ Ø/1Ðõ	ô 	$ EÔOà#Ð#r]   c                ó6   <€ V ^8„  d   QhRS[ S[S[3,          /# rv   rw   )rc   r\   s   "€r   rd   re   ¹   s   ø€ ÷ 6ñ 6ÁdÉ3ÑPSÈ8Ånñ 6r]   c                ó.   a€ / oV3R  lp\        W4       S# )c                 ó"  <€ \         V P                  9   dy   V P                  \         ,          e^   \        V P                  P                  R4      4      p\	        V 4      pVS9  d   VSV&   R # SV,          V8X  g   Q RV  RV RV 24       hR # R # R # )NÚnn_module_stackrj   z has different from_node info z.than previous node sharing the same decomp op )r
   rm   ry   Úgetr   )rp   Úprev_decomp_opÚfrom_node_sourceÚ&prev_decomp_op_to_from_node_source_maps   &  €r   Ú7_extract_from_node_source_with_prev_decomp_op_from_nodeÚŠPT2ENumericDebuggerTestCase._extract_from_node_source_with_prev_decomp_op.<locals>._extract_from_node_source_with_prev_decomp_op_from_node¼   s    ø€ ä §	¡	Ô)¨d¯i©i¼Õ.FÒ.RÜ!$ T§Y¡Y§]¡]Ð3DÓ%EÓ!F�Ü#BÀ4Ó#HÐ Ø!Ð)OÔOà(ð ;¸>ÓJð
 ?¸~ÕNØ+ô,ðð   ˜vÐ%CÐDTÐCUØHÈÐHXðZó	ò,ñ /SÑ)r]   r   )r2   r3   rŽ   r�   s   && @r   Ú-_extract_from_node_source_with_prev_decomp_opÚIPT2ENumericDebuggerTestCase._extract_from_node_source_with_prev_decomp_op¹   s#   ø€ ØACÐ.õ	ô$ 	$Øô	
ð 6Ð5r]   c                ó˜   € T P                  VP                  VP                  8H  ;'       d    VP                  VP                  8H  4       R # r}   )Ú
assertTruer~   r   )r2   Únode_source_1Únode_source_2s   &&&r   ÚassertNodeSourcesEqualÚ2PT2ENumericDebuggerTestCase.assertNodeSourcesEqualÓ   sB   € Ø�‰Ø×Ñ -×"4Ñ"4Ñ4÷ Að AØ×&Ñ&¨-×*@Ñ*@Ñ@ö	
r]   rK   N)rL   rM   rN   rO   rP   rs   r„   r�   r–   rY   rZ   r[   s   @r   r_   r_   ˆ   s4   ø‡ € ñ÷
Nð N÷8$ð $÷6ð 6÷4
ð 
r]   r_   c                ó€   € ^ RI Hu Hu Hu Hp ^ RI Hp V! 4       pVP                  VP                  WR7      4       V# )z^
Create a default X86InductorQuantizer configured for the given mode (QAT and dynamic quant).
N)ÚX86InductorQuantizer)r9   Ú
is_dynamic)Ú:torchao.quantization.pt2e.quantizer.x86_inductor_quantizerÚquantizationÚpt2er5   Úx86_inductor_quantizerr™   Ú
set_globalÚ,get_default_x86_inductor_quantization_config)r9   rš   Úxiqr™   r5   s   &&   r   Úget_default_x86_quantizerr¢   Ú   sF   € ÷ MÖLõñ %Ó&€IØ×ÑØ×8Ñ8Øð 	9ó 	
ôð
 Ðr]   c                   ó<   a a€ ] tR t^ît oRtV 3R ltR tRtVtV ;t	# )ÚFP8QDQLinearzU
Float8 quantize-dequantize (QDQ, a.k.a., fake quant) linear layer used for testing.
c                ó.  <€ \         SV `  4        \        P                  V n        \        P
                  ! W!34      P                  V P                  4      V n        R V n        R V n	        RV n
        V'       d   \        P
                  ! V34      V n
        R# R# ©g       @N)ÚsuperÚ__init__r   Úfloat8_e4m3fnÚqtypeÚrandnÚtoÚweightÚweight_scaleÚscaleÚbias)r2   Úin_featuresÚout_featuresÚhas_biasÚ	__class__s   &&&&€r   r¨   ÚFP8QDQLinear.__init__ó   sm   ø€ Ü‰ÑÔÜ×(Ñ(ˆŒ
Ü—k’k <Ð"=Ó>×AÑAÀ$Ç*Á*ÓMˆŒØˆÔØˆŒ
ØˆŒ	ßÜŸš \ OÓ4ˆDŽIñ r]   c                óÌ  € \         P                  P                  P                  P	                  V P
                  \         P                  ! V P                  .4      \         P                  R 7      p\         P                  P                  P                  P	                  V\         P                  ! V P                  .4      V P                  R7      p\         P                  P                  P                  P	                  V\         P                  ! V P                  .4      \         P                  R 7      p\         P                  P                  P                  WBV P                  4      pV# ©)rX   r¯   Úoutput_dtype)rX   r¯   Úfloat8_dtype)r   rQ   ÚtorchaoÚ'dequantize_affine_float8_non_decomposedrT   r­   rX   r®   ÚfloatÚ%quantize_affine_float8_non_decomposedr¯   rª   ÚnnÚ
functionalÚlinearr°   )r2   Úinputr­   Úq_inputÚdq_inputÚouts   &&    r   ÚforwardÚFP8QDQLinear.forwardý   sú   € Ü—‘×"Ñ"×JÑJ×RÑRØ—;‘;Ü—,’, × 1Ñ 1Ð2Ó3ÜŸ™ð Só 
ˆô —)‘)×#Ñ#×IÑI×QÑQØÜ—,’, §
¡
˜|Ó,ØŸ™ð Ró 
ˆô
 —9‘9×$Ñ$×LÑL×TÑTØÜ—,’, §
¡
˜|Ó,ÜŸ™ð Uó 
ˆô �h‰h×!Ñ!×(Ñ(¨¸4¿9¹9ÓEˆØˆ
r]   )r°   rª   r¯   r­   r®   ©
rL   rM   rN   rO   rP   r¨   rÅ   rY   rZ   Ú__classcell__©r´   r\   s   @@r   r¤   r¤   î   s   ù‡ € ñõ5÷ò r]   r¤   c                   ó@   a a€ ] tR tRt oRtRV 3R lltR tRtVtV ;t	# )ÚFP8QDQConv2di  zU
Float8 quantize-dequantize (QDQ, a.k.a., fake quant) conv2d layer used for testing.
c	                ón  <€ \         S	V `  4        \        P                  V n        \        P
                  ! W!V,          .VO54      P                  V P                  4      V n        R V n        R V n	        RV n
        V'       d   \        P
                  ! V34      V n
        W@n        WPn        W`n        Wpn        R# r¦   )r§   r¨   r   r©   rª   r«   r¬   r­   r®   r¯   r°   ÚstrideÚpaddingÚdilationÚgroups)
r2   Úin_channelsÚout_channelsÚkernel_sizerÍ   rÎ   rÏ   rÐ   r°   r´   s
   &&&&&&&&&€r   r¨   ÚFP8QDQConv2d.__init__  sŽ   ø€ ô 	‰ÑÔÜ×(Ñ(ˆŒ
Ü—k’kØ¨&Õ0Ð?°;Ñ?ó
ç
‰"ˆT�Z‰Z‹.ð 	Œð  ˆÔØˆŒ
ØˆŒ	ßÜŸš \ OÓ4ˆDŒIØŒØŒØ ŒØŽr]   c           	     ó6  € \         P                  P                  P                  P	                  V P
                  P                  \         P                  ! V P                  .4      \         P                  R 7      p\         P                  P                  P                  P	                  V\         P                  ! V P                  .4      V P                  R7      p\         P                  P                  P                  P	                  V\         P                  ! V P                  .4      \         P                  R 7      p\         P                  P                  P                  VVV P                   V P"                  V P$                  V P&                  V P(                  4      # r·   )r   rQ   rº   r»   rT   r­   ÚdatarX   r®   r¼   r½   r¯   rª   r¾   r¿   Úconv2dr°   rÍ   rÎ   rÏ   rÐ   )r2   rÁ   r­   rÂ   rÃ   s   &&   r   rÅ   ÚFP8QDQConv2d.forward2  s!  € Ü—‘×"Ñ"×JÑJ×RÑRØ—;‘;×#Ñ#Ü—,’, × 1Ñ 1Ð2Ó3ÜŸ™ð Só 
ˆô
 —)‘)×#Ñ#×IÑI×QÑQØÜ—,’, §
¡
˜|Ó,ØŸ™ð Ró 
ˆô
 —9‘9×$Ñ$×LÑL×TÑTØÜ—,’, §
¡
˜|Ó,ÜŸ™ð Uó 
ˆô �x‰x×"Ñ"×)Ñ)ØØØ�I‰IØ�K‰KØ�L‰LØ�M‰MØ�K‰Kó
ð 	
r]   )	r°   rÏ   rÐ   rÎ   rª   r¯   rÍ   r­   r®   )é   r   rÙ   rÙ   TrÇ   rÉ   s   @@r   rË   rË     s   ù‡ € ñ÷÷4
ò 
r]   rË   c                ób  € V P                   p\        P                  P                  P                  P                  V \        P                  ! V.4      \        P                  4      p\        P                  P                  P                  P                  V\        P                  ! V.4      V4      pV# )zM
Quantize-dequantize (QDQ, a.k.a., fake quant) pattern for FP8 quantization.
)	Údtyper   rQ   rº   r½   rT   rX   r©   r»   )rÁ   r¯   rÛ   rÂ   rÃ   s   &&   r   Úqdq_fp8rÜ   N  s„   € ð �K‰K€EÜ�i‰i×Ñ×EÑE×MÑMØÜ�Š�e�WÓÜ×Ñó€Gô
 �y‰y× Ñ ×HÑH×PÑPØÜ�Š�e�WÓØó€Hð
 €Or]   c                óØ  € R pV! V 4      pV P                  4        EFI  w  r4VP                  P                  pVR9  d   K%  VP                  p\        P
                  ! V4      pV\        P                  ! \        P                  4      P
                  ,          pW„n        \        P                  ! Wh,          \        P                  ! \        P                  4      P                  \        P                  ! \        P                  4      P
                  4      P                  \        P                  4      p	W”P                  n        VR9   dY   \        VP                  VP                  R4      p
VP                   V
n        VP#                  4       V
n        WšP                  n        M•VR9   d�   \%        VP&                  VP(                  VP*                  VP,                  VP.                  VP0                  VP2                  R4      p
VP                   V
n        VP#                  4       V
n        WšP                  n        W$,          P4                  pW$,          P6                  p\9        W³X
4       EKL  	  R# )z\
In-place convert a model to fake-quantized FP8 model by replacing Linear and Conv2d layers
c                 óR   aaa€ ^ RI Hp V! RRR.4      o/ oVVV3R loS! V 4       S# )r   )Ú
namedtupleÚModInstInfor~   Úparentc                 ób   <€ V P                  4        F  w  rS! WR 7      SV&   S! V4       K  	  R# ))r~   rá   N)Únamed_children)rá   r~   ÚmodÚcreate_mod_info_recursionÚmod_inst_infoÚparent_child_mod_dicts   &  €€€r   rå   ÚLfp8_convert_.<locals>.generate_model_info.<locals>.create_mod_info_recursionk  s0   ø€ Ø#×2Ñ2Ö4‘	�Ù-:ÀÔ-TÐ% cÑ*Ù)¨#Ö.ó 5r]   )Úcollectionsrß   )r3   rß   rå   ræ   rç   s   & @@@r   Úgenerate_model_infoÚ)fp8_convert_.<locals>.generate_model_infoe  s2   ú€ Ý*á" =°6¸8Ð2DÓEˆØ "Ð÷	/ñ
 	" %Ô(Ø$Ð$r]   FN)ÚLinearÚConv2d)rì   )rí   )Únamed_modulesr´   rL   r­   r   ÚmaxÚfinfor©   r®   ÚclampÚminr¬   rÖ   r¤   r±   r²   r°   ÚitemrË   rÑ   rÒ   rÓ   rÍ   rÎ   rÏ   rÐ   rá   r~   Úsetattr)r3   rê   rç   r~   rä   Úmod_type_strÚparamÚxmaxr®   Úq_paramÚpatched_modrá   s   &           r   Úfp8_convert_rú   `  sÇ  € ò
%ñ 0°Ó6ÐØ×(Ñ(×*‰	ˆØ—}‘}×-Ñ-ˆØÐ3Ô3ÙØ—
‘
ˆÜ�yŠy˜ÓˆØœeŸkšk¬%×*=Ñ*=Ó>×BÑBÕBˆØ'ÔÜ—+’+ØÕ!Ü�KŠKœ×+Ñ+Ó,×0Ñ0Ü�KŠKœ×+Ñ+Ó,×0Ñ0ó
÷ ‰"ŒU× Ñ Ó
!ð	 	ð
 "�
‰
ŒØ˜:Ô%Ü& s§¡¸×8HÑ8HÈ%ÓPˆKØ"Ÿx™xˆKÔØ'3×'8Ñ'8Ó':ˆKÔ$Ø&-×ÑÕ#Ø˜ZÔ'Ü&Ø—‘Ø× Ñ Ø—‘Ø—
‘
Ø—‘Ø—‘Ø—
‘
Øó	ˆKð  #Ÿx™xˆKÔØ'3×'8Ñ'8Ó':ˆKÔ$Ø&-×ÑÔ#à&Õ+×2Ñ2ˆØ$Õ)×.Ñ.ˆÜ�˜k×*óI +r]   Fc                óZ  € V'       d   \         P                  ! 4       M\        P                  ! 4       pT;_uu_ 4        V'       d,   V'       d   Q hV'       d   Q h\	        V 4       V uuRRR4       # \        P
                  P                  WRR7      P                  4       pV'       d   TM
\        W#4      pV'       d   \        Wt4      M
\        Wt4      pV! V!   \        P                  P                  P                  V4       \        V4      p	V	uuRRR4       #   + '       g   i     R# ; i)z™
Generate a reference-quantized model with quant/dequant (fake quant) pattern
For INT8: using the PT2E quantization flow.
For FP8: using `fp8_convert_`.
NT)r   )Ú
contextlibÚnullcontextr   Úno_gradrú   r   r+   r¢   r   r   rº   rœ   r�   Úmove_exported_model_to_evalr   )
rä   Úinputsr9   rš   r5   Úis_fp8Úmaybe_no_gradÚexport_modelÚprepare_modelÚconvert_models
   &&&&&&    r   Ú_generate_ref_quantized_modelr  ›  sÚ   € ÷ 17”J×*Ò*Ô,¼E¿MºM»O€Mß	Šßç!Ð!�>ßÐ�:Ü˜ÔØ÷ 
Šô !Ÿ<™<×.Ñ.¨sÀ4Ð.ÓH×OÑOÓQˆL÷ ñ ä.¨vÓBð ÷ ô ! Ô9ä! ,Ó:ð ñ
 ˜6Ò"Ü× Ñ ×%Ñ%×AÑAÀ-ÔPÜ(¨Ó7ˆMØ ÷- 
��‹ús%   ½DÁ	DÁDÁ1ADÂ=ADÄD*	ÚaotiÚatolÚrtolÚ	fullgraphTÚinductor_configsr   c               ó  € T;'       g    / p\         P                  P                  4        \         P                  ! ^ 4       V U	u. uF  p	\	        V	4      NK  	  p
p	TpT pV! V
/ VB p\         P
                  P                  P                  4        V'       dÆ   \         P                  ! 4       ;_uu_ 4        \         P                  P                  P                  RR7      ;_uu_ 4        \         P                  P                  V VVRRR7      p\         P
                  P                  WçR7      p\         P
                  P                  V4      pRRR4       RRR4       M=\         P                  ! 4       ;_uu_ 4        \         P                  ! WR7      pRRR4       X! V!  p\         P                  P!                  VVWER7       R# u up	i   + '       g   i     L…; i  + '       g   i     LR; i  + '       g   i     Le; i)z†
Utility function to check the results of torch compiled model
by comparing the outputs of the original model and the compiled model.
T)Úuse_new_tracer_experimental)r   r   Ú+prefer_deferred_runtime_asserts_over_guards)r  N)r
  )r  r	  )r   r#   r$   Úmanual_seedr	   Ú	_inductorÚmetricsrþ   Ú_exportÚconfigÚpatchr   Úaoti_compile_and_packageÚaoti_load_packageÚcompileÚtestingÚassert_close)r3   r4   Úkwargsr  r  r	  r
  r  r   ÚxÚ
ref_inputsÚ
ref_kwargsÚ	ref_modelÚcorrectÚepÚpackage_pathÚcompiled_modelÚactuals   &&&$$$$$$         r   Úcheck_torch_compiled_modelr$  Â  sq  € ð  �\ˆ\�r€FÜ	‡M�M×ÑÔÜ	×Ò�aÔá<JÓK¹N°qÔ/°Ö2¹N€JÐKØ€JØ€IÙ˜Ð2 zÑ2€GÜ	‡O�O×Ñ×!Ñ!Ô#çä�MŠM�O�OÜ�M‰M× Ñ ×&Ñ&À4Ð&×HÕHô —‘×$Ñ$ØØØ-ØØ<@ð %ó ˆBô !Ÿ?™?×CÑCØð Dó ˆLô #Ÿ_™_×>Ñ>¸|ÓLˆN÷ I÷ ˆOô  �]Š]�_�_Ü"Ÿ]š]¨5ÔFˆN÷ á˜^Ñ,€FÜ	‡M�M×Ñ˜w¨°TÐÖEùò7 L÷ I×Hú÷ �Oú÷  �_ús7   ÁGÂ43GÃ'A$G	ÅGÅ9G.ÇGÇGÇG+	Ç.G>	)FFNFr}   )%rü   r&   r   Ú$torch.ao.quantization.backend_configr   Ú!torch.ao.quantization.quantize_fxr   r   Ú+torch.testing._internal.common_quantizationr   r   Ú$torch.testing._internal.common_utilsr   Ú&torch.testing._internal.inductor_utilsr	   rº   Útorchao.quantization.pt2er
   Ú+torchao.quantization.pt2e._numeric_debuggerr   Ú%torchao.quantization.pt2e.graph_utilsr   Ú'torchao.quantization.pt2e.quantize_pt2er   r   r   r   r_   r¢   r¾   ÚModuler¤   rË   rÜ   rú   r  r$  rK   r]   r   Ú<module>r/     sä   ðó Û ã õ÷÷õ :Ý Pã Ý 3Ý WÝ M÷ñ ôaÐ3ô aôHO
 (ô O
òdô("�5—8‘8—?‘?ô "ôJ8
�5—8‘8—?‘?ô 8
òvò$8+ôv$!ñN/Fð
 
ð/Fð 
ð/Fð 
ð/Fð ð/Fð ð/Fð ÷/Fr]   