ó
    Eñi©Ñ ã                  ó  • S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJrJrJrJrJ r   S SK!J"r"J#r#J$r$J%r%J&r&J'r'  S SK(J)r)  S SK*r+S SK,r+S SK-J.s  J/r0  S SK1J2r2  S SK+J3r3  S SK4J5r5  S SK6J7r7J8r9J	r:J.r;  S SK<J=r=  S SK>J?r?  S SK@JArAJBrBJCrCJDrDJErEJFrFJGrGJHrHJIrIJJrJ  S SKKJ8rL  S SKMJNrN  S SKOJPrPJQrQJRrRJSrS  S SKTJUrUJVrVJWrW  S SKXJYrYJZrZJ[r[J\r\  S SK]J^r^  S SK_J`r`Jara  S SKbJcrcJdrdJereJfrfJgrgJhrh  S SKiJjrj  S SKkJlrlJmrmJnrnJoroJprpJqrqJrrrJsrsJtrt  S SKuJvrv  S SKwJxrx  S S KyJzrz  S S!K{J|r|  S S"K,J}r}  S S#K~JrJ€r€  S S$K�J‚r‚  S S%KƒJ„r„  S S&K…J†r†  S'S(K‡Jˆrˆ  S'S)K‰JŠrŠJ‹r‹  S'S*KŒJ�r�  S'S+KŽJ�r�  S'S,K�J‘r‘  S-S.K’J8r8J“r“J”r”  S-S/K•J–r–J—r—  S-S0K˜J™r™  S-S1KšJ›r›  S-S2KœJ�r�  S-S3KžJŸrŸ  S-S4K J¡r¡J¢r¢  S-S5K£J¤r¤  S-S6K¥J¦r¦  S-S7K§J¨r¨J©r©  S-S8KªJ«r«  S-S9K¬J­r­  S-S:K.J®r®J¯r¯J°r°J±r±J²r²J³r³J´r´JµrµJ¶r¶  S-S;K·J¸r¸  \(       a"  S S<K¹JºrºJ»r»J¼r¼  S S=KbJ½r½  S S>K¾J¿r¿  S S?KÀJÁrÁ  S-S@K§JÂrÂ  \$" SA5      rÃ\" SB5      rÄ\(       d  \8GRŠ                  " 5       (       d  S•SC jrÆS–SD jrÇOS SEKÈJÇrÇJÆrÆ  \(       a1  S SKÉrÉS SFKÊJËrËJÌrÌJÍrÍ  \ \º\Î\Ï   /\¼\+GR                      4   \Ñ\Î\Ñ   \Á4   rÒ " SG SH\GR¦                  5      rÔ\ " SI SJ5      5       rÕS—SK jrÖS˜SL jr×\Ö" 5       rØ\ØGR²                  rÚ\ØGR¶                  rÜ\ØGRº                  rÞ\	GR¾                  " \à5      rá\+GRÄ                  GRÇ                  \àSM5      rä\+GRÄ                  GRÇ                  \àSN5      rå\+GRÄ                  GRÇ                  \àSO5      ræ\+GRÄ                  GRÇ                  \àSP5      rç\+GRÄ                  GRÇ                  \àSQ5      rèS™SR jréSšSS jrêSšST jrëSšSU jrì\GRÚ                  " S5      S›SV j5       rî\GRÞ                  SœSW j5       rðS�SX jrñ        SžSY jrò SŸ     S S[ jjró      S¡S\ jrô  S¢       S£S] jjrõSŸS¤S^ jjrö   S¥         S¦S` jjr÷S§Sa jrø    S¨Sb jrù      S©Sc jrú SŸ       SªSd jjrû S«   S¬Se jjrü\GRú                  S­Sf j5       rþ " Sg Sh\&SZSi9rÿ " Sj Sk\%5      Gr         S®Sl jGr\Æ" SmSn9        S¯So j5       Gr " Sp Sq5      Gr " Sr Ss\5      Gr " St SuG\5      Gr          S°Sv jGr      S±Sw jGr S²SxSxSxSy.                   S³Sz jjjGrS´S{ jGr	        SµS| jGr
 S²       S¶S} jjGrG\S4         S·S~ jjGr\" S 5      Gr                  S¸S jGrS¹S€ jGrSºS� jGr        S»S‚ jGrS¼Sƒ jGr\" S_S„9 " S… S†5      5       GrS½S‡ jGrG\SZ4               S¾Sˆ jjGrG\4         S¿S‰ jjGr      SÀSŠ jGrG\SSSZ4             SÁS‹ jjGr      SÂSŒ jGr            SÃS� jGr            SÃSŽ jGrS§S� jGr        SÄS� jGr        SÄS‘ jGrSÅS’ jGr S«SS“.         SÆS” jjjGr g)Çé    )ÚannotationsN)ÚABCÚabstractmethod)Údefaultdict)ÚAbstractContextManager)Ú	dataclass)Úcurrentframe)Úcount)Ú
attrgetter)ÚAnyÚOptionalÚTYPE_CHECKINGÚTypeVarÚUnion)ÚNeverÚoverrideÚ	ParamSpecÚProtocolÚ	TypedDictÚUnpack)Úmock)Ú#min_cut_rematerialization_partition)Úfx)Úenable_python_dispatcher)Úcompiled_autogradÚconfigÚloggingÚutils)Úget_interface_for_device)Úwrap_compiler_debug)
Úchromium_event_timedÚCompileEventLoggerÚcountersÚdetect_fake_modeÚdynamo_timedÚflatten_graph_inputsÚget_inputs_devicesÚget_metrics_contextÚlazy_format_graph_codeÚset_feature_use)r   )Ú!unwrap_tensor_subclass_parameters)Úaot_export_moduleÚGraphOutputNameÚmake_boxed_funcÚSerializableAOTDispatchCompiler)Ú	code_hashÚFxGraphCacheÚoutput_code_log)ÚBoxedDeviceIndexÚformat_default_skip_messageÚ#log_cudagraph_skip_and_bump_counterÚPlaceholderInfo)ÚCustomPartitionerFn)Ú"create_mapping_pre_post_grad_nodesÚsave_args_for_compile_fx_inner)ÚCompiledAOTIÚCompiledFxGraphÚCompiledFxGraphConstantsWithGmÚget_expanded_dimsÚindex_expanded_dimsÚ
OutputCode)Ú	cache_dir)	Ú	BoxedBoolÚcount_tangentsÚfresh_cacheÚget_all_devicesÚ	InputTypeÚis_gpuÚshould_assume_input_alignedÚ should_use_remote_fx_graph_cacheÚtensor_is_aligned)ÚFakeScriptObject)Úis_opaque_type)Útrace_structured)Úcompile_time_strobelight_meta)ÚGraphModule)Úfree_unbacked_symbolsÚSymExprPrinter)ÚFakeTensorProp)Ú_WaitCounter)Ú
OrderedSeté   )Úaot_autograd)ÚShortenTracebackÚ	SkipFrame)Ú_use_lazy_graph_module)Ú_PyTreeCodeGen)Ú
has_tritoné   )r   Údistributed_autotuneÚmetrics)Úget_wrapper_codegen_for_deviceÚinit_backend_registration)ÚDebugContext)Úselect_decomp_table)ÚInductorError)Újoint_graph_passes)Úpost_grad_passesÚview_to_reshape)Úpre_grad_passes)ÚGraphLowering)Úget_device_typeÚIRNode)Úcomplex_memory_overlap)ÚTritonBundler)	Úalign_inputs_from_check_idxsÚclone_preserve_stridesÚcopy_misaligned_inputsÚ get_cloned_parameter_buffer_nameÚ%get_first_incompatible_cudagraph_nodeÚ#maybe_get_suppress_shape_guards_ctxÚoutput_nodeÚremove_unaligned_input_idxsÚshape_env_from_inputs)ÚV)ÚCallableÚ	GeneratorÚSequence)Ú_StrideExprStr)Ú
OpOverload)ÚWeights)ÚExternKernelNodeÚ_PÚ_Tc                ó"   • [         R                  $ ©N)Údynamo_utilsÚidentity©Úattrs    ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_inductor/compile_fx.pyÚtime_and_logr†   –   s   € Ü×$Ñ$Ð$ó    c                 ó   • g r€   © )ÚargsÚkwargss     r…   Úlog_optimus_to_scubarŒ   ™   s   € Ør‡   )rŒ   r†   )ÚFQNÚGraphInputNameÚGraphSignaturec                  ó    • \ rS rSrSrSrSrSrg)ÚFxCompileModeé°   r   r[   rT   r‰   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚNORMALÚ	SERIALIZEÚ
SUBPROCESSÚ__static_attributes__r‰   r‡   r…   r‘   r‘   °   s   † Ø€Fð €IàƒJr‡   r‘   c                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg)	ÚFxCompileConfigé¹   r‘   ÚmodeÚboolÚ	use_asyncÚuse_progressiver‰   N©r“   r”   r•   r–   Ú__annotations__rš   r‰   r‡   r…   rœ   rœ   ¹   s   ‡ à
ÓØƒOØÖr‡   rœ   c                 óÆ  • Sn [         R                  R                  U 5      nUc  [        [        R
                  SS5      $ SnSnUR                  5       R                  S5      (       a  SnUSS  nUR                  5       R                  S5      (       a  SnUSS  n UR                  5       n[        [        U   X#5      $ ! [         a˜    SS K
nUR                  " [        5      nUR                  S	UU S
R                  [        S [        R                    5       5      5      5        [         R                  R#                  U 5        [        [        R
                  SS5      s $ f = f)NÚTORCHINDUCTOR_FX_COMPILE_MODEFzprogressive+Té   zasync+é   r   z>Invalid value of %s for %s. Expected one of %s. Using default.z, c              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr€   )Úrepr©Ú.0Úxs     r…   Ú	<genexpr>Ú+_fx_compile_mode_default.<locals>.<genexpr>Û   s   é € ÐHÒ.G¨œT !ŸW˜WÒ.Gùó   ‚)ÚosÚenvironÚgetrœ   r‘   r—   ÚlowerÚ
startswithÚupperÚKeyErrorr   Ú	getLoggerr“   ÚerrorÚjoinÚsortedÚ__members__Úpop)ÚnameÚvaluer    r¡   r   Úlogs         r…   Ú_fx_compile_mode_defaultrÀ   À   s+  € Ø*€DÜ�J‰J�N‰N˜4Ó €EØ�}Üœ}×3Ñ3°U¸EÓBÐBà€IØ€Oà‡{�{ƒ}×Ñ ×/Ñ/ØˆØ�b�c�
ˆØ‡{�{ƒ}×Ñ ×)Ñ)Øˆ	Ø�a�b�	ˆðCØ—‘“ˆÜœ}¨UÑ3°YÓPÐPøÜó CÛà×Ò¤Ó)ˆØ�	‰	ØLØØØ�I‰I”fÑH¬m×.GÒ.GÓHÓHÓIô		
ô 	�
‰
�‰�tÔÜœ}×3Ñ3°U¸EÓBÒBðCús   Â"B> Â>BE ÅE c                 ó   • SS0/$ )NÚmax_autotuneTr‰   r‰   r‡   r…   Ú_get_progression_configsrÃ   â   s   € ð 
˜Ððð r‡   Ú
perf_hintsÚpre_grad_graphsÚpost_grad_graphsÚcudagraph_static_inputsÚinductor_metricsc                óÚ   • [         R                  R                  R                  5       n[	        [        U 5      5      nU(       a  UR                  (       d  U$ UR                  R                  $ r€   )ÚtorchÚ_guardsÚTracingContextÚtry_getÚlistÚrangeÚfw_metadataÚstatic_input_indices)Ú	num_fixedÚcontextÚfixeds      r…   Úget_static_input_idxsrÕ   ø   sM   € ô
 �m‰m×*Ñ*×2Ñ2Ó4€GÜ”�yÓ!Ó"€EÞ˜'×-×-Øˆà×Ñ×3Ñ3Ð3r‡   c                óB  • U R                   R                  SS9S   n/ n[        UR                  S   [        R
                  R                  5      (       d  UR                  S   nOUR                  nU H›  n[        U[        R
                  R                  5      (       a^  UR                  R                  S5      =nb@  [        U[        R                  5      (       a!  UR                  UR                  5       5        MŠ  UR                  S 5        M�     X!R                  S'   g )NÚoutput©Úopr   ÚvalÚoriginal_output_strides)ÚgraphÚ
find_nodesÚ
isinstancerŠ   rÊ   r   ÚNodeÚmetar²   ÚTensorÚappendÚstride)Úgmrr   Úoutput_stridesÚoutput_node_argsr×   rÚ   s         r…   Úrecord_original_output_stridesrç     sÞ   € Ø—(‘(×%Ñ%¨Ð%Ð2°1Ñ5€KØ€Nä�k×&Ñ& qÑ)¬5¯8©8¯=©=×9Ñ9Ø&×+Ñ+¨AÑ.Ñà&×+Ñ+Ðã"ˆä�vœuŸx™xŸ}™}×-Ñ-ØŸ™Ÿ™¨Ó.Ð.�Ñ;Ü˜3¤§¡×-Ñ-à×!Ñ! #§*¡*£,Ö/ð ×!Ñ! $Ö'ñ #ð 3A×ÑÐ.Ò/r‡   c                óú   • U R                   R                  S[        R                  R                  R
                  S9 H0  n[        XR                  S   R                  5      n[        U5        M2     [        U 5        g )NÚcall_function©rÙ   Útargetr   )rÜ   rÝ   rÊ   ÚopsÚhigher_orderÚinvoke_subgraphÚgetattrrŠ   rë   Ú)_recursive_record_original_output_stridesrç   )rä   ÚnodeÚsubgraphs      r…   rð   rð     sa   € à—‘×#Ñ#Ø¤5§9¡9×#9Ñ#9×#IÑ#Ið $ó ˆô ˜2Ÿy™y¨™|×2Ñ2Ó3ˆÜ1°(Ö;ñ	ô # 2Õ&r‡   c           	     ó"  • U R                   R                  S[        R                  R                  R
                  S9 HÊ  n[        XR                  S   R                  5      nUR                   R                  SS9 H}  n[        [        UR                  S   5      5       Vs/ s H@  n[        UR                  S   U   [        R                  R                  5      (       d  M>  UPMB     snUR                  S'   M     [        U5        MÌ     g s  snf )Nré   rê   r   r×   rØ   Úuser_visible_output_idxs)rÜ   rÝ   rÊ   rì   rí   rî   rï   rŠ   rë   rÏ   ÚlenrÞ   r   rß   rà   Ú*_recursive_record_user_visible_output_idxs)rä   rñ   rò   Úidxs       r…   rö   rö   &  sÔ   € à—‘×#Ñ#Ø¤5§9¡9×#9Ñ#9×#IÑ#Ið $ó ˆô ˜2Ÿy™y¨™|×2Ñ2Ó3ˆà—N‘N×-Ñ-°Ð-Ó:ˆDô !¤ T§Y¡Y¨q¡\Ó!2Ô3ó5â3�CÜ˜dŸi™i¨™l¨3Ñ/´·±·±×?÷ Ù3ñ5ˆD�I‰IÐ0Ó1ñ ;ô 	3°8Ö<òùò5s   Â!=DÃ"Dc                 ó6   • [         R                  " [        5      $ r€   )Údynamo_loggingÚget_step_loggerr¿   r‰   r‡   r…   Ú_step_loggerrû   6  s   € ä×)Ò)¬#Ó.Ð.r‡   c                 ó$  • [         R                  R                  5       (       am  [         R                  R                  R                  R
                  S:w  a:  [         R                  R                  5       S:¼  a  [        R                  " S5        g g g g )NÚtf32)é   r   z­TensorFloat32 tensor cores for float32 matrix multiplication available but not enabled. Consider setting `torch.set_float32_matmul_precision('high')` for better performance.)	rÊ   ÚcudaÚis_availableÚbackendsÚmatmulÚfp32_precisionÚget_device_capabilityÚwarningsÚwarnr‰   r‡   r…   Ú_warn_tf32_disabledr  ;  sl   € ô 	�
‰
×Ñ×!Ñ!Ü�N‰N×Ñ×&Ñ&×5Ñ5¸Ó?Ü�J‰J×,Ñ,Ó.°&Ó8ä�Šðdõ	
ð 9ð @ð 	"r‡   c           
     ó  ^• [        U R                  SS9 VVs/ s H  u  p#UPM	     snn5      mTR                  [        U R                  SS9 VVs/ s H  u  p#UPM	     snn5      5        SU4S jjnUR                  R
                   GHr  nUR                  S:X  d  M  UR                  nUR                  S5      (       d  UR                  S5      (       d  MP  [        X5      (       d  Mb  [        U5      " U5      n[        U5      " U 5      n[        U[        5      (       a1  [        U[        5      (       a  UR                  UR                  L a  MÉ  ORUR                  UR                  :X  a8  UR                  UR                  :X  a  [         R"                  " Xx5      (       a  GM  UR                  S5      (       a  SOSn	U" UR                  U	5      n
U	 U
 3nXµl        [%        XU5        TR'                  U5        GMu     gs  snnf s  snnf )	a‡  
In aot_export_module (make_fx), we create get_attr nodes with name prefix
"_tensor_constant" and "_torchbind_obj". See Tracer.create_arg() in
torch/fx/_symbolic_trace.py

However, this might result in name collision if the original mod already
has a different buffer with the same name.

We resolve this potential name collision here by changing the target name
with a new number post fix.
F©Úremove_duplicatec                ór  >• SnU R                    H¥  nUR                  S:X  d  M  UR                  R                  U5      (       d  M7  [	        UR                  5      [	        U5      :”  d  M[  UR                  R                  U5      S   nUR                  5       (       d  M�  [        U[        U5      5      nM§     T Hu  nUR                  U5      (       d  M  [	        U5      [	        U5      :”  d  M5  UR                  U5      S   nUR                  5       (       d  M`  [        U[        U5      5      nMw     US-   $ )Nr   Úget_attréÿÿÿÿr[   )	ÚnodesrÙ   rë   r´   rõ   ÚsplitÚisdigitÚmaxÚint)rÜ   ÚprefixÚirñ   Úpost_fixÚkeyÚexisting_keyss         €r…   Úfind_smallest_iÚ0_resolve_name_collision.<locals>.find_smallest_i\  së   ø€ ØˆØ—K”KˆDØ�w‰w˜*Õ$¨¯©×)?Ñ)?À×)GÓ)GÜ�t—{‘{Ó#¤c¨&£kÕ1Ø#Ÿ{™{×0Ñ0°Ó8¸Ñ<�HØ×'Ñ'×)Ó)Ü ¤3 x£=Ó1šñ  ó !ˆCØ�~‰~˜f×%Ó%Ü�s“8œc &›kÕ)Ø"Ÿy™y¨Ó0°Ñ4�HØ×'Ñ'×)Ó)Ü ¤3 x£=Ó1šñ !ð �1‰uˆr‡   r  Ú_tensor_constantÚ_torchbind_objN)rÜ   zfx.Graphr  ÚstrÚreturnr  )rS   Únamed_parametersÚupdateÚnamed_buffersrÜ   r  rÙ   rë   r´   Úhasattrr   rÞ   rJ   Úreal_objÚdeviceÚdtyperÊ   ÚequalÚsetattrÚadd)Úmodrä   r½   rÚ   r  rñ   Útarget_nameÚ	gm_targetÚmodel_targetr  Únew_idÚnew_target_namer  s               @r…   Ú_resolve_name_collisionr.  H  sÊ  ø€ ô Ø"×3Ñ3ÀUÐ3ÑKÔLÒK‘)�$‹ÑKÒLó€Mð ×ÑÜ¨#×*;Ñ*;ÈUÐ*;Ñ*SÔTÒ*S™Y˜T“DÑ*SÒTÓUô÷ð  —‘—•ˆØ�7‰7�jÕ ØŸ+™+ˆKØ×)Ñ)Ø"÷ñ à!×,Ñ,Ð-=×>Ñ>Ùä˜3×,Ñ,ÙÜ" ;Ô/°Ó3ˆIÜ% kÔ2°3Ó7ˆLÜ˜)Ô%5×6Ñ6ä˜|Ô-=×>Ñ>Ø!×*Ñ*¨l×.CÑ.CÒCáøà× Ñ  L×$7Ñ$7Ó7Ø—O‘O |×'9Ñ'9Ó9Ü—K’K 	×8Ñ8ò ð ×)Ñ)Ð*<×=Ñ=ñ #à%ð ñ
 % R§X¡X¨vÓ6ˆFØ!' ¨¨Ð1ˆOØ)ŒKÜ�B¨Ô3Ø×Ñ˜o×.òI ùó- 	Mùó Us   ™H
ÁHc                óÒ  • SSK JnJn  [        X5        0 nU R	                  SS9 H  u  pgXuU'   U" UUUUR
                  S9  M     U R                  SS9 H  u  phX…U'   U" UUUUR                  S9  M     UR                  R                  SS9n	/ n
U	 H¶  nUR                  nXÂR                  ;   a"  UR                  U   nU
R                  U5        M@  XÂR                  ;   aE  UR                  U   nU
R                  U5        [        X^   5      UR                  [!        U5      '   M”  XÂR"                  ;   d   eU
R                  S 5        M¸     SSKJn  [)        UR                  R+                  5       R,                  S   5      n/ nUR.                  nUR0                  nUR2                  n[5        U5       Hl  u  nnS nU[7        U5      [7        U5      -   [7        U5      -   :  a,  [9        UR                  5      nUU;   a  UU   nOUU;   a  UU   nUR                  U5        Mn     U" UU
U[:        R<                  " 5       S 5      n[?        URA                  5       5      UR                  S	'   U$ )
Nr   )Ú_assign_attrÚ	_AttrKindFr	  )Ú	attr_kindÚplaceholderrØ   )Ú_unliftÚmutated_named_buffers)!Útorch.export.unflattenr0  r1  r.  r  Ú	PARAMETERr   ÚBUFFERrÜ   rÝ   r½   Úinputs_to_parametersrâ   Úinputs_to_buffersrm   rà   ro   Úuser_inputsÚtorch.export._unliftr4  Útuplerr   rŠ   Úbuffers_to_mutateÚuser_inputs_to_mutateÚoutput_tokensÚ	enumeraterõ   r-   ÚpytreeÚtreespec_leafrS   Úvalues)r(  rä   Úgraph_signaturer0  r1  Ú
state_dictr½   ÚparamÚbufferÚplaceholder_nodesÚlifted_inputsrñ   Ú	node_nameÚparameter_nameÚbuffer_namer4  ÚoutputsÚmutated_outputsÚbuffer_mutationsÚuser_input_mutationsr@  r÷   Úoutr¾   Úunlifted_gms                            r…   Ú_unlift_graphrT  “  sq  € ÷ ?ä˜CÔ$àOQ€JØ×+Ñ+¸UÐ+ÓC‰ˆØ �4ÑÙØØØØ×)Ñ)ô		
ñ Dð ×)Ñ)¸5Ð)ÓA‰ˆØ!�4ÑÙØØØØ×&Ñ&ô		
ñ Bð Ÿ™×+Ñ+¨}Ð+Ð=ÐØ)+€Mó "ˆØ—I‘Iˆ	Ø×<Ñ<Ó<Ø,×AÑAÀ)ÑLˆNØ× Ñ  Ö0Ø×;Ñ;Ó;Ø)×;Ñ;¸IÑFˆKØ× Ñ  Ô-ä& zÑ'>Ó?ð �G‰GÔ4°[ÓAÓBð × ;Ñ ;Ó;Ð;Ð;Ø× Ñ  Ö&ñ "õ -ä).¨r¯x©x×/CÑ/CÓ/E×/JÑ/JÈ1Ñ/MÓ)N€GØ€OØ&×8Ñ8ÐØ*×@Ñ@ÐØ#×1Ñ1€MÜ˜gÖ&‰ˆˆSØ6:ˆà”Ð%Ó&¬Ð-AÓ)BÑBÄSÈÓEWÑWÓWÜ" 3§8¡8Ó,ˆDØÐ'Ó'Ø(¨Ñ.‘ØÐ-Ó-Ø,¨TÑ2�à×Ñ˜uÖ%ñ 'ñ Ø
ØØÜ×ÒÓØó€Kô 1;Ð;K×;RÑ;RÓ;TÓ0U€K×ÑÐ,Ñ-ØÐr‡   Fc              #  ó&  #   • [        S U R                  R                  SS9 5       5      n[        5       nU R                  5        HH  u  pEXB;   d  M  [	        U[
        R                  R                  5      (       d  M7  UR                  U5        MJ     U(       ak  U R                  R                  S[
        R                  R                  R                  S9 H+  nUR                  UR                  S   R                  5        M-     U S h  v•N   g  N7f)Nc              3  ó8   #   • U  H  oR                   v •  M     g 7fr€   )rë   rª   s     r…   r­   Ú&_get_subgraph_names.<locals>.<genexpr>æ  s   é € ð 5Ú<�Q�ŽÒ<ùr¯   r  rØ   ré   rê   r   )rS   rÜ   rÝ   Únamed_childrenrÞ   rÊ   r   rN   r'  rì   rí   rî   ÚdiscardrŠ   rë   )rä   Úskip_invoke_subgraphÚall_subgraph_namesÚfx_subgraph_namesÚ
child_nameÚchild_modulerñ   s          r…   Ú_get_subgraph_namesr_  ã  så   é € ô +5ñ 5ØŸ(™(×-Ñ-°Ð-Ñ<ó5ó +Ðô *4«ÐØ$&×$5Ñ$5Ö$7Ñ ˆ
ð Õ+´
Øœ%Ÿ(™(×.Ñ.÷1
ó 1
ð ×!Ñ! *Ö-ñ %8ö Ø—H‘H×'Ñ'Ø¤u§y¡y×'=Ñ'=×'MÑ'Mð (ó 
ˆDð ×%Ñ% d§i¡i°¡l×&9Ñ&9Ö:ñ
ð
 !× Ó ùs   ‚ADÁ'DÁ=BDÄ	DÄ
Dc                óP  • [        SSSS9   [        R                  (       d  U sS S S 5        $ [        R                  n[        R                  n[        U 5       H&  n[        X5      n[        US5      n[        XU5        M(     [        XX#5      sS S S 5        $ ! , (       d  f       g = f)NÚ_recursive_pre_grad_passesTÚpre_grad_pass_time_us©Úlog_pt2_compile_eventÚdynamo_compile_column_usr‰   )
r%   r   Úuse_pre_grad_passesÚadd_pre_grad_passesÚremove_pre_grad_passesr_  rï   ra  r&  rf   )rä   Úexample_inputsÚ
add_passesÚremove_passesÚsubgraph_namerò   Únew_subgraphs          r…   ra  ra  û  s�   € ô 
Ø$Ø"Ø!8ó
ô
 ×)×)Ø÷
ñ 
ô ×/Ñ/ˆ
Ü×5Ñ5ˆÜ0°Ö4ˆMÜ˜rÓ1ˆHä5°hÀÓCˆLÜ�B |Ö4ñ	 5ô
 ˜r°:ÓM÷
÷ 
÷ 
ús   ŒB­A BÂ
B%c                óP  ^ ^^• SU UU4S jjn[        SSSS9   [        R                  (       d  T sS S S 5        $ [        [	        T T5      5      nU H  nU" U5        M     [        T T5      n[	        USS9 H  nXT;  d  M
  U" U5        M     UsS S S 5        $ ! , (       d  f       g = f)	Nc                óP   >• [        TU 5      n[        UTT5      n[        TX5        g r€   )rï   Ú_recursive_joint_graph_passesr&  )rl  rò   rm  rä   Úinput_devicerZ  s      €€€r…   Ú_run_on_sub_graph_moduleÚ?_recursive_joint_graph_passes.<locals>._run_on_sub_graph_module  s-   ø€ Ü˜2˜}Ó-ˆÜ4ØÐ*¨Ló
ˆô 	��MÕ0r‡   rp  TÚjoint_graph_pass_time_usrc  F)rZ  )rl  r  r  ÚNone)r%   r   Úuse_joint_graph_passesrS   r_  rc   )rä   rZ  rq  rr  Úold_subgraph_namesrl  Úout_gms   ```    r…   rp  rp    s¥   ú€ ÷
1ñ 1ô 
Ø'Ø"Ø!;ó
ô
 ×,×,Ø÷
ñ 
ô (Ô(;¸BÐ@TÓ(UÓVÐÛ/ˆMÙ$ ]Ö3ñ 0ô $ B¨Ó5ˆô 1°ÈeÔTˆMØÕ6Ù(¨Ö7ñ Uð ÷7
÷ 
÷ 
ús   ™BºABÂ BÂ
B%c                óò   • [        SSSS9   [        R                  (       d
   S S S 5        g [        U 5       H  n[	        X5      n[        X15        M     [        X5        S S S 5        g ! , (       d  f       g = f)NÚ_recursive_post_grad_passesTÚpost_grad_pass_time_usrc  )r%   r   Úuse_post_grad_passesr_  rï   rz  rd   )rä   Úis_inferencerl  rò   s       r…   rz  rz  ;  sh   € Ü	Ø%Ø"Ø!9ó
ô
 ×*×*Ø÷
ð 
ô 1°Ö4ˆMÜ˜rÓ1ˆHÜ'¨Ö?ñ 5ô 	˜Ô*÷
÷ 
ö 
ús   ŒA(¬3A(Á(
A6Tc                ó”  • SSK JnJnJnJnJn  U" XX#5      n	Uc  U	" 5       OSn
[        [        U	R                  R                  5      S   R                  S   5       VVs0 s H  u  p¼UR                  U_M     nnn/ n/ n0 nU R                  R                   H^  nUR                  U;   a  UR                  U5        M&  UR                  U   U:X  d  M;  UR                  S:w  d  MM  UR                  U5        M`     U HC  nSUR                  -   nU" U UUc  X­UR                        OSU5        UUR                     UU'   ME     USSS2    Hb  nUR                  (       a3  UR                   H!  nUR                  U   U:X  a  M   SU S35       e   MG  U R                  R!                  U5        Md     U R#                  5         U	U4$ s  snnf )	a‘  
This function takes an GraphModule input "gm".
The gm will be split into 2 components,
  1) const_gm, which consists the subgraph of gm that can be constant folded.
  2) gm (being inplace modified,) which returns the graph after constant folding.

If an additional "lifted_constants" argument is passed in, we will assume the gm has
been lifted and run the transformation accordingly.

When a "skip_folding_node_fn" callback is passed, we will skip constant folding on
the nodes for which the callback returns True.

const_output_index is a mapping of corresponding node name from gm to the
output index of const_gm.
Returns (const_gm, const_output_index)
r   )ÚCONST_MODULE_TAGÚMETA_TAGÚ
MODULE_TAGÚreplace_node_with_constantÚrun_and_get_constant_graphNr  r3  Ú_FOLDED_CONST_znode: z user not empty.)Ú torch._inductor.constant_foldingr  r€  r�  r‚  rƒ  rA  r=  rÜ   r  rŠ   r½   râ   rà   rÙ   ÚusersÚ
erase_nodeÚ	recompile)rä   Úskip_constructorÚlifted_constant_namesÚskip_folding_node_fnr  r€  r�  r‚  rƒ  Úconst_gmÚconst_resultr÷   r¬   Úconst_outputsÚto_erase_nodeÚto_replace_nodeÚconst_output_indexrñ   Únew_const_nameÚns                       r…   Úsplit_const_gmr”  J  sÃ  € ÷,õ ñ *Ø
Ð3ó€Hð "7Ñ!>‘8”:ÀD€Lô #,¬E°(·.±.×2FÑ2FÓ,GÈÑ,K×,PÑ,PÐQRÑ,SÔ"TôÚ"T™˜ˆ�‰�ŠÑ"Tð ñ ð €MØ€OØÐØ—‘—”ˆØ�9‰9˜Ó%Ø×"Ñ" 4Ö(Ø�Y‰Y�xÑ Ð$4Õ4¸¿¹ÀMÕ9QØ× Ñ  Ö&ñ	 ó  ˆØ)¨D¯I©IÑ5ˆÙ"ØØð )Ñ0ð ¨4¯9©9Ñ5Ò6ààô		
ð .;¸4¿9¹9Ñ-EÐ˜>Ó*ñ  ð ™d ˜dÔ#ˆØ�:�:Ø—Z”Z�Ø—v‘v˜hÑ'¨:Õ5ÐV¸À¸vÐEUÐ7VÓVÐ5ó  ð �H‰H×Ñ Ö%ñ $ð ‡L�L„NàÐ'Ð'Ð'ùóEs   ÁGc                ón  • [         R                  R                  n[        UR                  R
                  UR                  R
                  UR                  R
                  UR                  R
                  /5      nU H¶  nU R                  R                  SUS9 H•  n[        UR                  R                  SS 5      [         R                  5      (       d  M>  UR                  S   R                  [         R                   :X  d  Mk  UR                  S   R"                  R$                  S:X  d  M”      g   M¸     g)Nré   rê   rÚ   rÿ   TF)rÊ   rì   ÚatenrS   ÚmmÚdefaultÚaddmmÚbmmÚbaddbmmrÜ   rÝ   rÞ   rà   r²   rá   r$  Úfloat32r#  Útype)rä   r–  Útf32_opsrë   rñ   s        r…   Úis_tf32_warning_applicablerŸ  ’  sÛ   € Ü�9‰9�>‰>€DÜà�G‰G�O‰OØ�J‰J×ÑØ�H‰H×ÑØ�L‰L× Ñ ð		
ó€Hó ˆØ—H‘H×'Ñ'¨?À6Ð'ÓJˆDä˜4Ÿ9™9Ÿ=™=¨°Ó5´u·|±|×DÓDØ—I‘I˜eÑ$×*Ñ*¬e¯m©mÕ;Ø—I‘I˜eÑ$×+Ñ+×0Ñ0°FÕ:âó Kñ ð r‡   c                ó”  • [        S U  5       5      n[        R                  (       aE  [        R                  (       a0  U(       d)  [        R                  S5        [        R                  " SS9$ [        R                  R                  (       a)  [        R                  S5        [        R                  " SS9$ [        R                  " 5       $ )z†
For CPU backend, enable comprehensive padding causes some unit tests
fail due to changing number of generated kernels. Skip for now.
c              3  ó¢   #   • U  HE  n[        U[        R                  5      (       d  M$  [        UR                  R
                  5      v •  MG     g 7fr€   )rÞ   rÊ   rá   rF   r#  r�  )r«   Úts     r…   r­   Ú6maybe_disable_comprehensive_padding.<locals>.<genexpr>®  s3   é € ð Ú'5 !¼ÀAÄuÇ|Á|×9TÓŒˆq�x‰x�}‰}×Ð¢~ùs
   ‚#A©&Az!Skip comprehensive padding on CPUF)Úcomprehensive_paddingz;Skip comprehensive padding for use_runtime_constant_folding)Úanyr   Údisable_padding_cpur¤  Úperf_hint_logÚinfoÚpatchÚaot_inductorÚuse_runtime_constant_foldingÚ
contextlibÚnullcontext)ri  Úhas_gpus     r…   Ú#maybe_disable_comprehensive_paddingr¯  §  sŽ   € ô ñ Ù'5óó €Gô ×!×!¤f×&B×&BÎ7Ü×ÑÐ>Ô?Ü�|Š|°%Ñ8Ð8Ü	×	Ñ	×	9×	9Ü×ÑØIô	
ô �|Š|°%Ñ8Ð8ä×%Ò%Ó'Ð'r‡   c                óp   • U (       d  U(       a  [         R                  " SS9$ [        R                  " 5       $ )z@
graph partition does not support cpp_wrapper and aot_mode yet.
F)Úgraph_partition)r   r©  r¬  r­  )Úcpp_wrapperÚaot_modes     r…   Úmaybe_disable_graph_partitionr´  ¾  s'   € ö –hÜ�|Š|¨EÑ2Ð2ä×%Ò%Ó'Ð'r‡   c                óº  • [        5          [        U5      nU(       d4  [        R                  R	                  SS9n[        XS9R                  " U6   O^U(       d  [        R                  " 5       O [        R                  R                  USS5      nU   [        XS9R                  " U6   SSS5        SSS5        U$ ! , (       d  f       N= f! , (       d  f       W$ = f)zq
If we can not detect fake mode from the context of inputs, create one.

The created fake mode will be returned.
T©Úallow_non_fake_inputs)rž   r·  N)r   r$   rÊ   Ú_subclassesÚFakeTensorModerQ   Ú	propagater¬  r­  r   r©  ÚobjectÚpropagate_dont_convert_inputs)rä   ri  Úforce_allow_non_fake_inputsÚ	fake_modeÚctxs        r…   Úfake_tensor_proprÀ  Ê  s¸   € ô 
"Õ	#Ü$ ^Ó4ˆ	ÞÜ×)Ñ)×8Ñ8ÈtÐ8ÐTˆIÜ˜2Ñ.×8Ò8¸.ÒIö 3ô ×&Ò&Ô(ä—Z‘Z×&Ñ& yÐ2IÈ4ÓPð ò
 Ü˜rÑ2×PÒPØ#ñ÷ ÷ 
$ð  Ð÷ •ú÷ 
$Ô	#ð  Ðús$   ‹BCÂB:Â(CÂ:
C	ÃCÃ
Cc                óŽ   • [         R                  " U 5         [         R                  " 5       sS S S 5        $ ! , (       d  f       g = fr€   )r   r©  Úget_config_copy)Úconfig_patchess    r…   Úget_patched_config_dictrÄ  é  s(   € ô 
�Š�nÕ	%Ü×%Ò%Ó'÷ 
&×	%×	%ús	   —6¶
Ac               #  ó    #   • [         R                  (       a   [        [        5       SS9   S v •  S S S 5        g S v •  g ! , (       d  f       g = f7f)NF)ÚdirÚdelete)r   Úforce_disable_cachesrC   r@   r‰   r‡   r…   Úwith_fresh_cache_if_configrÉ  ð  s4   é € ä×"×"ô œY›[°Ó7Û÷ 8Ð7ô 	÷ 8Õ7üs   ‚(Aª=¯A½
AÁAc                  ó„   • \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   Srg)Ú_CompileFxKwargsiü  zOptional[BoxedBool]Ú
cudagraphsúSequence[int]Ústatic_input_idxsrŸ   Úis_backwardzOptional[int]Úgraph_idr²  r³  r}  zOptional[bool]Ú
layout_optz1Optional[Callable[[list[ExternKernelNode]], Any]]Úextern_node_serializerzOptional[BoxedDeviceIndex]Úboxed_forward_device_indexÚ
fx_wrapperr‰   Nr¢   r‰   r‡   r…   rË  rË  ü  sC   ‡ Ø#Ó#Ø$Ó$ØÓØÓØÓØƒNØÓØÓØMÓMØ :Ó:ØÖr‡   rË  )Útotalc                  ó.   • \ rS rSr        SS jrSrg)Ú_CompileFxCallablei
  c                ó   • g r€   r‰   )Úselfrä   ri  r‹   s       r…   Ú__call__Ú_CompileFxCallable.__call__  s   € ð
 r‡   r‰   N©rä   rN   ri  úSequence[InputType]r‹   úUnpack[_CompileFxKwargs]r  r?   )r“   r”   r•   r–   rÚ  rš   r‰   r‡   r…   r×  r×  
  s-   † ðàðð ,ðð +ð	ð
 
÷r‡   r×  c                ó˜  • UR                  SS 5        UR                  SS5        UR                  SS5        UR                  SS 5        UR                  SS5        UR                  SS5        UR                  S	S5        UR                  S
S 5        UR                  SS 5        UR                  SS 5        [        R                  " 5        nUR                  [        R
                  R                  R                  5       5        UR                  [        [        R                  5      5        UR                  [        R                  " SSSSSSS95        UR                  [        5       5        UR                  [        5       5        [        R                   " SUS   S9  [#        [$        SS9" U U40 UD6sS S S 5        $ ! , (       d  f       g = f)NrÌ  rÎ  r‰   rÏ  FrÐ  r²  rÔ  r}  rÓ  rÑ  rÒ  Úcompile_fx_innerÚinductor_compileTÚcompile_inductorÚ#inductor_cumulative_compile_time_us)Ú
phase_namerd  Úlog_waitcounterÚwaitcounter_name_overridere  )rÏ  Úinductor)Úcompiler_name)Ú
setdefaultr¬  Ú	ExitStackÚenter_contextrÊ   r   Ú_python_dispatchÚ_disable_current_modesrX   Údynamo_configÚuse_lazy_graph_moduler�   r%   rÉ  r`   r"   Úpt2_compiler    Ú_compile_fx_inner)rä   ri  r‹   Ústacks       r…   rà  rà    s‹  € ð
 ×Ñ�l DÔ)Ø
×ÑÐ)¨2Ô.Ø
×Ñ�m UÔ+Ø
×Ñ�j $Ô'Ø
×Ñ�m UÔ+Ø
×Ñ�l EÔ*Ø
×Ñ�n eÔ,Ø
×ÑÐ2°DÔ9Ø
×Ñ�l DÔ)Ø
×ÑÐ.°Ô5ô 
×	Ò	Ô	 5Ø×ÑœEŸK™K×8Ñ8×OÑOÓQÔRØ×ÑÔ2´=×3VÑ3VÓWÔXØ×ÑÜ×%Ò%Ø"Ø-Ø&*Ø $Ø*<Ø)Nñô		
ð 	×ÑÔ6Ó8Ô9Ø×ÑœL›NÔ+Ü×&Ò&ØØ˜}Ñ-ò	
ô #Ô#4ÀJÒOØØñ
ð ñ
÷' 
 ×	×	ús   Ã
C'F;Æ;
G	zcompilation time (in seconds)rƒ   c                ó€  ^*^+• [         R                  nSSKJn  U" 5       (       a&  SSKJn  UR                  5       nUR                  5         [        R                  R                  R                  R                  5         [        R                  " U R                  5      S:X  a¬  U(       d¥  [        R                  R                   R"                  (       d|  SSKJn  SSKJn  UR-                  U 5        [        R.                  R0                  R3                  5       n	[4        R6                  " SSU	0UR8                  S9  [;        U R<                  5      $ UR?                  S	S
5      n
[@        RC                  SU
5        [E        X5      n[G        [I        [K        [M        U R                  RN                  5      5      5      RP                  S   [R        [T        45      (       d   SU R                   35       eURW                  S5      c&  [Y        [         RZ                  R\                  5      US'   [         R^                  (       a  [a        U U40 UD6  [b        Rb                  " 5       n[e        5       n[g        5         [i        S S [k        U 5       5        5       5      n[m        SSSS9   [         Rn                  (       + =(       a`    [         Rp                  =(       d    U=(       a@    U(       + =(       a2    U=(       a)    [        R                  R                   R"                  (       + n[         Rp                  nUn[s        SU5        [t        RC                  SUUUU[         Rn                  5        [w        U5       H\  u  nn[G        U[        Rx                  5      (       d  M'  [{        UR|                  R~                  5      (       d  MM  UU
;   d  MU  SUl@        M^     SnSnSm*Sn[ƒ        U 5      n[b        R„                  " 5       nU(       a­  [†        Rˆ                  " XX+U5      u  nm*Ubz  Uu  nn[t        RC                  SU5        U(       a*  [†        RŠ                  " 5       n[t        RC                  S5        [†        RŒ                  " UUUUUURW                  SS5      US9u  nm*O[t        RC                  S5        [        R                  R                   R"                  (       as  Ub   eT*b   e[Ž        R�                  " 5          [“        XU40 UD6nUc   e[Ž        R”                  " 5       u  nnUR—                  U5         [Ž        R¦                  " 5         GO›T*b	  T*S   S:X  a@  Ub   e[t        RC                  ST*b  T*RW                  SS 5      OS!5         [“        XU40 UD6nGOOT*S   S":X  Ga  Ub   eUc   e[t        RC                  S#5        [Ž        R�                  " 5          [“        XU40 UD6nUc   e[b        R„                  " 5       U-
  UlT        Uu  nnUUlU        UUlV        [Ž        R”                  " 5       u  nnUR—                  U5         [Ž        R¦                  " 5         Ub  [¯        U5      T*S$'   UR¨                  T*S%'   [t        RC                  S&U5        [†        R°                  " UUUUU5        O>T*S   S':X  d   eUc   eUc   eUu  nn[t        RC                  S(U5        UUlU        UUlV        Uc   eUnT*b  T*S   OS)m+[4        R²                  " S*T+ 3T*=(       d    0 US+9  [4        R´                  " S,T+UT*(       a  T*RW                  S-5      OST*(       a  T*RW                  S.5      OST*(       a  T*RW                  S5      OS/UUS09  T*b  [·        S1U+4S2 jU*4S3 jS49  UR¹                  UUU5        SSS5        [t        RC                  S5[b        Rb                  " 5       U-
  5        [t        R»                  [¼        R¾                  5      (       Gaº  / n [À        S6   RÃ                  5        GH	  u  nn!URÅ                  S75      n"[Ç        U"5      S8:  a  U RÉ                  US9S:S:S:U!/5        M@  [Ç        U"5      S;:¼  a  S7RË                  U"SS< 5      OS7RË                  U"SS= 5      n#U#RÍ                  S>5      n$U$(       aF  [Ç        U"5      S;:¼  a7  U"S<S u  n%n&n'n(S7RË                  U"SS< 5      n#U RÉ                  U#U%U&U'U(U!/5        MÕ  U"S=S u  n&n'n(S7RË                  U"SS= 5      n#U RÉ                  U#S9U&U'U(U!/5        GM     [t        RÏ                  S?5        [t        RÏ                  S@RÑ                  SASBSCSDSESF5      5        [t        RÏ                  SG5        U  H:  n)[t        RÏ                  S@RÐ                  " U)6 5        [t        RÏ                  SG5        M<     [        R                  R                  R                  R                  5         [Ó        5       " [¼        R¾                  SHUS   (       a  SIOSJ SKUSL    35        W$ ! [˜        [š        4 a    e [œ         a3  n[Ÿ        U[¡        5       5      R£                  UR¤                  5      SeSnAff = f! [Ž        R¦                  " 5         f = f! [œ         a3  n[Ÿ        U[¡        5       5      R£                  UR¤                  5      SeSnAff = f! [˜        [š        4 a    e [œ         a3  n[Ÿ        U[¡        5       5      R£                  UR¤                  5      SeSnAff = f! [Ž        R¦                  " 5         f = f! , (       d  f       GNš= f)Mz¸
Inductor API that compiles a single graph.

If you change the argument list for this function, make sure you
also update the call to save_args_for_compile_fx_inner below accordingly.
r   )Úuse_pipelined_autotuning)ÚAutotuneProcessPool)ÚCompileEventLogLevel)Ú_LazyGraphModulezbackward no-opÚ
compile_id)ÚmetadataÚ	log_levelrÎ  r‰   z&static input idxs compile_fx_inner: %szGinductor can only compile FX graphs which return a tuple/list, but got rÌ  Nc              3  óD   #   • U  H  nUc  M  UR                   v •  M     g 7fr€   )Úsupports_caching)r«   Úbackends     r…   r­   Ú$_compile_fx_inner.<locals>.<genexpr>ˆ  s(   é € ð 	#ò
ˆGð ó 	!ˆ× Ö ò
ùs   ‚ � c              3  óˆ   #   • U  H8  n[        UR                  [        R                  [        R                  5      v •  M:     g 7fr€   )r^   r�  r   r²  rÔ  ©r«   r#  s     r…   r­   rþ  Š  s<   é € ð 
ò .�ô +Ø—‘œV×/Ñ/´×1BÑ1B÷ð ò .ùs   ‚A AÚfx_codegen_and_compileT)rd  rå  Úfx_cachezXFX cache status: use_cache=%s, local=%s, remote=%s, aot_mode=%s, force_disable_caches=%szFX cache key generated: %szUsing remote FX cacherÏ  F)rÏ  Ú	constantszFailed to generate FX cache keyÚcache_stateÚbypasszFX cache bypass reason: %sÚcache_bypass_reasonÚunknownz*FX cache disabled or key generation failedÚmissz,FX cache miss, compiling and saving to cacheÚtriton_bundler_metaÚtime_taken_nsz.Saving compiled graph to FX cache with key: %sÚhitzFX cache hit with key: %sÚdisabledÚfx_graph_cache_)rù  Útime_nsrá  r  Ú
componentszcache not enabled)r  Úcache_event_timer  r  r  Úremote_cache_enabledÚlocal_cache_enabledÚartifactc                 ó   >• ST  3SS.$ )Nr  Újson©r½   Úencodingr‰   )r  s   €r…   Ú<lambda>Ú#_compile_fx_inner.<locals>.<lambda>b  s   ø€ Ø-¨k¨]Ð;Ø &ò%r‡   c                 ó0   >• [         R                  " T 5      $ r€   )r  Údumps)Ú
cache_infos   €r…   r  r  f  s   ø€ ¤4§:¢:¨jÔ#9r‡   ©Úmetadata_fnÚ
payload_fnz%FX codegen and compilation took %.3fsÚaten_mm_infoÚ_é   Ú-Ú?é   éüÿÿÿéýÿÿÿ)rš  r›  z$Overview info of inductor aten mms: z3{:<30} | {:<20} | {:<20} | {:<20} | {:<20} | {:<20}ÚNameÚBÚMÚNÚKÚCountz‚----------------------------------------------------------------------------------------------------------------------------------ztorchinductor done compiling Ú	BACKWARDSÚFORWARDSú graph rÐ  )jru   Úaot_compilationÚ torch._inductor.autotune_processrô  rõ  Úget_instanceÚwarm_uprÊ   Ú	_inductorÚasync_compileÚCompiledTritonKernelsÚcache_clearr�   Úcount_callsrÜ   Ú
_functorchr   Úbundled_autograd_cacheÚtorch._dynamo.utilsrö  Útorch.fx._lazy_graph_moduler÷  Úforce_recompilerË   ÚCompileContextÚcurrent_compile_idr"   Úlog_instant_eventÚPT2_COMPILEr.   Úforwardré  Ústatic_inputs_logÚdebugÚget_input_idxs_to_checkrÞ   ÚnextÚiterÚreversedr  rŠ   r=  rÎ   r²   rA   ÚtritonrÌ  Ú	save_argsr9   ÚtimerH   r_   ÚallrD   r%   rÈ  Úfx_graph_cacher*   r¿   rA  rá   rF   r#  r�  Ú_is_inductor_staticr<   r  r1   Úprepare_keyÚget_remote_cacheÚload_with_keyrk   Úbegin_compiler  ÚcollectÚset_triton_bundlerV   rW   Ú	Exceptionrb   r	   Úwith_tracebackÚ__traceback__Úend_compileÚ_time_taken_nsÚ_fx_graph_cache_keyÚ_fx_graph_cache_debug_linesr  Ú_save_graphÚinstantÚtry_add_pt2_compilerL   Úpost_compileÚisEnabledForr   ÚINFOr#   Úitemsr  rõ   râ   r¹   Úendswithr¨  Úformatrû   ),rä   ri  Úgraph_kwargsr³  rô  rõ  Úpool_instancerö  r÷  rø  rÎ  Úinputs_to_checkÚstartÚfx_graph_remote_cacheÚbackends_support_cachingÚ	use_cacheÚlocalÚremoter  ÚinputÚmb_compiled_graphÚkey_infoÚremote_cacher  Ú
start_timer  Údebug_linesÚtriton_bundler	  ÚeÚ	cache_keyÚcompiled_graphÚmm_table_datar¾   Úpartsr½   Ú
is_batchedÚbatchÚmr“  ÚkÚrowr  r  s,                                             @@r…   rñ  rñ  A  sE
  ù€ ô ×&Ñ&€HåIá×!Ñ!åHà+×8Ñ8Ó:ˆØ×ÑÔô 
‡O�O×!Ñ!×7Ñ7×CÑCÔEô 	× Ò  §¡Ó*¨aÓ/ÞÜ× Ñ ×'Ñ'×>×>õ 	=Ý@à×(Ñ(¨Ô,Ü—]‘]×1Ñ1×DÑDÓFˆ
Ü×,Ò,ØØ" JÐ/Ø*×6Ñ6ò	
ô ˜rŸz™zÓ*Ð*à'3×'>Ñ'>Ð?RÐTVÓ'WÐÜ×ÑÐDÐFWÔXÜ-¨nÓP€Oä”dœ4¤¨¯©¯©Ó 8Ó9Ó:×?Ñ?ÀÑBÄUÌDÀM×RÑRð Ø
QÐRT×RZÑRZÐQ[Ð\óÐRð ×Ñ˜Ó%Ñ-Ü%.¬v¯}©}×/GÑ/GÓ%Hˆ�\Ñ"Ü××Ü&ØØñ	
ð ò	
ô �IŠI‹K€Eä<Ó>Ðô ÔÜ"ñ 	#ñ
ô *¨"Ô-ô	
ó	#ó 	 Ðô 
Ø ¸Èdó
ô ×+Ñ+Ô+÷ CÜ×&Ñ&×?Ð*?÷Cà”÷Cð )÷Cô ×$Ñ$×+Ñ+×BÑBÔBð 	ô ×%Ñ%ˆØ&ˆÜ˜
 IÔ.ä�	‰	ØfØØØØÜ×'Ñ'ô	
ô " .Ö1‰HˆAˆuä˜5¤%§,¡,×/Ó/Ü˜5Ÿ<™<×,Ñ,×-Ó-ØÐ*Õ*à,0�Ö)ñ 2ð 37ÐØˆØˆ
ØˆÜ2°2Ó6ˆ	ô —\’\“^ˆ
æÜ%1×%=Ò%=Ø LÀ6ó&Ñ"ˆX�zð
 Ñ#Ø#+Ñ ��[Ü—	‘	Ð6¸Ô<ÞÜ#/×#@Ò#@Ó#B�LÜ—I‘IÐ5Ô6Ü0<×0JÒ0JØØØ"ØØ Ø ,× 0Ñ 0°ÀÓ FØ'ñ1Ñ-Ð!¡:ô —	‘	Ð;Ô<ä×Ñ×"Ñ"×9×9Ø$Ñ,Ð,Ð,ØÑ%Ð%Ð%ô
 ×'Ò'Ô)ð,Ü$:Ø¨ñ%Ø;Gñ%Ð!ð )Ñ4Ð4Ð4ô "×)Ò)Ó+ñØ!Ø'à!×3Ñ3°MÕBô ×)Ò)Ö+ð
 Ñ :¨mÑ#<ÀÓ#HØ$Ñ,Ð,Ð,Ü�I‰IØ,ð "Ñ-ð —N‘NÐ#8¸)ÔDàEôðÜ$:Ø¨ñ%Ø;Gñ%Ò!ð ˜Ñ&¨&Ô0Ø$Ñ,Ð,Ð,ØÑ'Ð'Ð'Ü�I‰IÐDÔEÜ×'Ò'Ô)ð,Ü$:Ø¨ñ%Ø;Gñ%Ð!ð )Ñ4Ð4Ð4Ü37·<²<³>ÀJÑ3NÐ!Ô0Ø)1Ñ&�	˜;Ø8AÐ!Ô5Ø@KÐ!Ô=ô "×)Ò)Ó+ñØ!Ø'à!×3Ñ3°MÕBô ×)Ò)Ô+Ø"Ñ.Ü47Ð8KÓ4L�
Ð0Ñ1Ø*;×*JÑ*JˆJ�Ñ'Ü�I‰IÐFÈ	ÔRÜ×$Ò$ØØ!ØØØõð ˜mÑ,°Ó5Ð5Ð5Ø$Ñ0Ð0Ð0ØÑ'Ð'Ð'Ø'/Ñ$ˆY˜Ü�I‰IÐ1°9Ô=Ø4=ÐÔ1Ø<GÐÔ9à Ñ,Ð,Ð,Ø*ˆð *4Ñ)?ˆJ�}Ò%ÀZð 	ô 	×"Ò"Ø˜k˜]Ð+Ø×% 2Øò	
ô 	×.Ò.ØØ#Ø'Þ)3�
—‘˜uÔ%¸Þ7A�z—~‘~ lÔ3Àtö ð —‘Ð4Ô5à(à!'Ø %ò	
ð  Ñ!ÜØôô :òð 	×#Ñ# N°I¸|ÔL÷k
ôn ‡I�IÐ5´t·y²y³{ÀUÑ7JÔKô ×ÑœŸ™×%Ò%ØˆÜ" >Ñ2×8Ñ8×:‰JˆC�Ø—I‘I˜c“NˆEÜ�5‹z˜A‹~à×$Ñ$ c¨3°°S¸#¸uÐ%EÔFÙô ,/¨u«:¸«?�3—8‘8˜E # 2˜JÔ'ÀÇÁÈÈsÐPRÈÓ@TˆDØŸ™Ð'9Ó:ˆJæœc %›j¨A›oà!& r s ‘��q˜!˜QØ—x‘x  c r 
Ó+�Ø×$Ñ$ d¨E°1°a¸¸EÐ%BÖCð    ˜*‘��1�aØ—x‘x  c r 
Ó+�Ø×$Ñ$ d¨C°°A°q¸%Ð%@×Añ) ;ô, 	�‰Ð7Ô8Ü�‰ØA×HÑHØ˜˜S # s¨Góô	
ô
 	�‰�ÔÛ ˆCÜ�H‰HÐJ×QÒQÐSVÐWÔXÜ�H‰H�YÖñ !ô 
‡O�O×!Ñ!×7Ñ7×CÑCÔEä„NÜ�‰Ø'Ø& }×5‰;¸:Ð
Fð GØ˜jÑ)Ð*ð	,ôð Ðøôg %¤iÐ0ó ØÜó Ü# A¤|£~Ó6×EÑEØ—O‘Oóàðûðûô
 ×)Ò)Õ+ûô& ó Ü# A¤|£~Ó6×EÑEØ—O‘Oóàðûðûô2 %¤iÐ0ó ØÜó Ü# A¤|£~Ó6×EÑEØ—O‘Oóàðûðûô
 ×)Ò)Õ+ú÷]
ö 
ús¨   ÊC1l.Î"l.Î6l.Î>D/l.Ó.;hÔ*Al.Õ>jÖA l.×A+kØ8E#l.èi'è4.i"é"i'é'i*é*jêl.ê
kê.j<ê<kël.ëlë.lìlìlìl+ì+l.ì.
l=c                  ó.   • \ rS rSr% SrS\S'   SS jrSrg)	Ú_FxCompileStati�  r   r  Úcodegen_and_compilec                ó    • SU R                    3$ )Nzcodegen_and_compile: )r‚  )rÙ  s    r…   Ú__repr__Ú_FxCompileStat.__repr__¡  s   € Ø& t×'?Ñ'?Ð&@ÐAÐAr‡   r‰   N)r  r  )r“   r”   r•   r–   r‚  r£   r„  rš   r‰   r‡   r…   r�  r�  �  s   ‡ à Ð˜Ó ÷Br‡   r�  c                  óp   • \ rS rSr% Sr\" \5      rS\S'   \	          S	S j5       r
\S
S j5       rSrg)Ú	FxCompilei¥  zU
An FxCompile represents a mechanism that can turn a GraphModule into an
OutputCode.
z%dict[type[FxCompile], _FxCompileStat]Ú_compile_statsc                ó   • g r€   r‰   )rÙ  rä   ri  rh  rf  s        r…   r‚  ÚFxCompile.codegen_and_compile±  s   € ð r‡   c                ó8   • U R                   R                  5         g r€   )rˆ  Úclear)Úclss    r…   Ú_reset_statsÚFxCompile._reset_statsº  s   € à×Ñ× Ñ Õ"r‡   r‰   N©
rä   rN   ri  rÝ  rh  rÍ  rf  rË  r  r?   ©r  ru  )r“   r”   r•   r–   Ú__doc__r   r�  rˆ  r£   r   r‚  ÚclassmethodrŽ  rš   r‰   r‡   r…   r‡  r‡  ¥  sr   ‡ ññ =HÈÓ<W€NÐ9ÓWð
 ðàðð ,ðð 'ð	ð
 'ðð 
óó ðð ó#ó ó#r‡   r‡  c                  ó<   • \ rS rSr\          SS j5       rSrg)Ú_InProcessFxCompilei¿  c                óê"  ^^3^4^5^6^7• SU;   a  US   c   eUS   nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      n	UR                  S	S5      n
[        R                  nUR                  S
S5      nUR                  SS5      n[        S5      R	                  5          [
        R                  " 5          [        R                  =nb,  SSK	n[        R                  SU5        UR                  " U5        [        T5      (       a
  [        5         [        S   R!                  5       n["        R$                  " ['        ["        R(                  " 5       S5      5        [+        5       " [,        R.                  SU(       a  SOS SU 35        [0        R2                  " 5       n[4        R6                  R8                  R:                  R=                  UTUSSS9  UR?                  5       m7[A        SS U74S jS9  [        RB                  RE                  TU5        TRF                  nUc  [I        U5      n[K        T5        [M        SSS9   [4        RN                  " 5          [Q        TU5      nSSS5        SSS5        [S        T5        [A        SS U4S jS9  [        RT                  " W5         [W        T5      nU   [Y        TUS9  SSS5        [        RB                  R[                  TU5        [\        RC                  S [_        S!TSSSS"95        TRa                  SSSSS#9m4[A        SS$ U44S% jS9  [        Rb                  Rd                  S:w  a~  [4        Rf                  Rh                  Rk                  TRl                  5      n[o        [4        Rp                  RB                  Rr                  U5      [4        Rp                  RB                  l:        [w        5       nURy                  5       (       a,  [        S&   R{                  5       n[|        R~                  " SUS'9  [        R€                  " 5       (       a   [ƒ        S([…        [‡        5       5      0S)9  SSS5        [        RT                  " U5         [‹        U5         [�        X›5         SnSnSnSnU(       a¯  [        RŽ                  R�                  (       a�  [“        TS+ S,9u  nn[•        U/ UUU	UUUUSU
S-9n[        R–                  " U5         [        R˜                  " / 5         U	(       d   S.5       eUR›                  5         UR�                  5       u  nnSSS5        SSS5        [•        TUUUU	UUUUUU(       a  URž                  OSU(       a  URž                  OSUUU
S/9n[         R¢                  " 5       nUR¥                  5         [        R–                  " U5         [        R˜                  " / 5         [¦        R¨                  " 5          URš                  " U6   / nURª                  b¼  [­        5       m6URª                   H¢  n [¯        U [°        5      (       ay  U R³                  5       (       ad  [µ        [·        U R¹                  5       5      5      S:X  a>  UR»                  [½        U64S0 jU R¿                  5       RÀ                   5       5      5        M‘  UR»                  S5        M¤     [Ã        U5        Sn![M        S1SS9   URÄ                  (       ag  URÆ                  (       aV  URÈ                  (       a   eURË                  5       S   RÌ                  n"[Î        RB                  " S2U"Ra                  SS395        GO›URÄ                  (       Ga`  S4S5KhJin#  URÈ                  (       d   S.5       eUR�                  5       u  n$n%[Î        RB                  " S6U$Rž                  5        U%Rž                  (       a!  [Î        RB                  " S7U%Rž                  5        Sn&[        RÔ                  (       a6  UR×                  [        RÔ                  5      n&[Î        RB                  " S8U&5        [M        S9SS9   U#RÙ                  UU$Rž                  U%Rž                  U&URÚ                  / [Ü        Rß                  URà                  Râ                  U(       a  URà                  Râ                  O/ -   5      QS:9n"SSS5        O)URå                  5       n'U'Ræ                  n"[é        U'S;S5      n!SSS5        Sm5Sm3[        Rb                  Rd                  S:w  aÌ  [ê        Rì                  " [4        Rp                  RB                  Rï                  5       5      m5[ê        Rì                  " [4        Rp                  RB                  Rð                  5      m3[A        SS< U54S= jS9  [A        SS> U34S? jS9  T3(       a1  [w        5       nURy                  5       (       a  URó                  S@T35        Sn([ô        R÷                  [,        R.                  5      (       az  URù                  5       u  n)n*n([         =Rú                  U)-  sl}        [         =Rü                  U(-  sl~        [         =Rþ                  U*-  sl        [ô        GR                  SAU)U*U(SB.5        [        GR                  (       a>  URù                  5       u    n+n([4        Rp                  RB                  GR                  U(5        [4        Rp                  RB                  GR                  UGR                  GR
                  5        U(       Gaz  [        GR                  GR                  (       GaX  [        GR                  (       GdA  [        Rl                  GR                  (       Gd   [4        Rp                  GR                  GR                  " U6 (       aò  Sn,TRl                  GR
                   H©  n-U-GR                  R                  SCS5      n.U-GR                  SD:X  dP  [¯        U.[4        GR                  5      (       a0  [4        Rp                  GR                  GR                  U.5      (       d  Mƒ  U-GR                  R                  SES5      =n,(       d  M©    O   SFn/U,(       a	  U/ SGU, SH3n/OU/ SH3n/U/[        Rl                  l‰        U(       aš  [        GR                  (       d„  [        Rl                  GR                  (       dd  G[        T5      n0U0(       aQ  SIU0GR                    3n/U0GR                  R                  SES5      =n,(       a  U/ SGU, SH3n/U/[        Rl                  l‰        [        R                  (       a¤  [¯        W"[„        G["        [4        Rf                  GR$                  45      (       d   G['        U"5      5       eG[)        U"URÚ                  SJ9sSSS5        sSSS5        sSSS5        sSSS5        sSSS5        sSSS5        sSSS5        sSSS5        $ U(       aZ  [        Rl                  GR                  (       d:  SSKK•J–n1  U1" [        Rl                  GR.                  5      [        Rl                  l‰        U GR0                  G['        U 5         =GR2                  S4-  sl™        [4        Rp                  RB                  GR4                  (       a–  [4        Rp                  RB                  GR6                  bp  […        [4        GR8                  GR:                  GR=                  5       5      n2UR                  S5      nUb(  U2[4        Rp                  RB                  GR6                  U'   G[?        W"UTU[        Rl                  GR                  UGRA                  5       [        S   U-
  UUUUUT7T4U!T5T35      sSSS5        sSSS5        sSSS5        sSSS5        sSSS5        sSSS5        sSSS5        sSSS5        $ ! , (       d  f       GNy= f! , (       d  f       GNƒ= f! , (       d  f       GNC= f! [ˆ         a    [        R                  S*5         GNçf = f! , (       d  f       GNò= f! , (       d  f       GN= f! , (       d  f       GN)= f! , (       d  f       GN�= f! , (       d  f       GNš= f! , (       d  f       O= f SSS5        O! , (       d  f       O= fSSS5        O! , (       d  f       O= fSSS5        O! , (       d  f       O= fSSS5        O! , (       d  f       O= fSSS5        O! , (       d  f       O= fSSS5        O! , (       d  f       O= fSSS5        g! , (       d  f       g= f)LzC
Generates the OutputCode from the GraphModule and example_inputs.
rÌ  NrÎ  r‰   rÏ  FrÐ  r²  rÔ  r}  rÒ  z/pytorch.wait_counter.actual_codegen_and_compiler   z3Sleeping for %s since sleep_sec_TESTING_ONLY is setrç  iÐ  ztorchinductor compiling r.  r/  r0  )Úsave_dirr  c                 ó   • SSS.$ )NÚfx_graph_runnableÚstringr  r‰   r‰   r‡   r…   r  Ú9_InProcessFxCompile.codegen_and_compile.<locals>.<lambda>  s   € Ø/Ø (ò%r‡   c                 ó   >• T $ r€   r‰   )Úrunnable_graph_strs   €r…   r  r›    s   ø€ Ñ#5r‡   r  Úadditional_fake_tensor_propT©rd  c                 ó   • SSS.$ )NÚbefore_post_grad_graphrš  r  r‰   r‰   r‡   r…   r  r›  4  s   € Ø4Ø (ò%r‡   c                 ó&   >• T R                  SSSS9$ ©NFT©Úprint_outputÚinclude_strideÚinclude_device©Úprint_readable©rä   s   €r…   r  r›  8  s   ø€  2×#4Ñ#4Ø!&°tÈDð $5ñ $r‡   ©r}  ú%szAFTER POST GRAD©r¦  r§  Úcolored)r¥  r¦  r§  Úfast_sympy_printc                 ó   • SSS.$ )NÚinductor_post_grad_graphrš  r  r‰   r‰   r‡   r…   r  r›  Z  s   € Ø :Ø$,ò)r‡   c                 ó   >• T $ r€   r‰   )Úinductor_post_grad_graph_strs   €r…   r  r›  ^  s   ø€ Ñ'Cr‡   Úgraph_break)Ú	overwriteÚnum_graph_breaksÚpt2_configs)Úextra_loggingzfailed to log pt2_configsc                ó  • U R                   S:H  =(       am    [        U R                  [        5      =(       aL    U R                  R	                  S5      =(       d*    [        U R
                  R                  SS 5      [        5      $ )Nr  r  rÚ   )rÙ   rÞ   rë   r  r´   rà   r²   rJ   )rñ   s    r…   r  r›  Œ  s_   € ¸$¿'¹'ÀZÑ:O÷ ;Ü& t§{¡{´CÓ8÷;ð !ŸK™K×2Ñ2Ð3CÓD÷ XÜ)¨$¯)©)¯-©-¸¸tÓ*DÔFVÓWð	;r‡   )r‹  )
ri  Ú	shape_envrÐ  r²  r³  rÒ  r}  rÏ  Úis_const_graphrÔ  z"AOT mode only supports C++ wrapper)ri  rº  rÐ  r²  r³  rÒ  r}  rÏ  r‘  Úconst_wrapper_codeÚconst_kernel_codeÚconst_modulerh  rÔ  c              3  óF   >#   • U  H  nTR                  U5      v •  M     g 7fr€   )Údoprint)r«   ÚsÚps     €r…   r­   Ú:_InProcessFxCompile.codegen_and_compile.<locals>.<genexpr>Û  s   øé € Ð)XÒ@W¸1¨!¯)©)°A¯,¨,Ò@Wùs   ƒ!zGraphLowering.compile_to_fnzOutput graph module: 
%s)r¥  r[   )ÚAotCodeCompilerzOutput wrapper code: 
%szOutput kernel code:
%sz#Serialized Extern Kernel Nodes: 
%szAotCodeCompiler.compile)Údevice_typeÚadditional_filesÚrunnerc                 ó   • SSS.$ )NÚ*inductor_provenance_tracking_node_mappingsr  r  r‰   r‰   r‡   r…   r  r›  4  s   € Ø(TØ,2ò1r‡   c                 ó   >• T $ r€   r‰   )rÉ  s   €r…   r  r›  8  s   ø€ Ñ/Yr‡   c                 ó   • SSS.$ )NÚ0inductor_provenance_tracking_kernel_stack_tracesr  r  r‰   r‰   r‡   r…   r  r›  <  s   € Ø(ZØ,2ò1r‡   c                 ó   >• T $ r€   r‰   )Úinductor_kernel_stack_trace_strs   €r…   r  r›  @  s   ø€ Ñ/Nr‡   Úinductor_provenancezGraph Metrics:
%s)Únum_bytes_accessedÚnodes_num_elemÚnode_runtimesrÚ   r3  Ústack_tracezWgraph with symbolic shapes inputs and config.triton.cudagraph_skip_dynamic_graphs=True.z Found from Ú
z,disabling cudagraphs due to incompatible op )ÚfilenamerÅ  )Ú check_lowering_disable_cudagraph)¡r²   ru   r1  rR   Úguardr�   Úpreserve_rng_stater   Úsleep_sec_TESTING_ONLYrL  r¿   ÚwarningÚsleeprŸ  r  r#   ÚcopyÚsysÚsetrecursionlimitr  Úgetrecursionlimitrû   r   rb  ÚioÚStringIOrÊ   Ú_dynamoÚreproÚ	after_aotÚsave_graph_reproÚgetvaluerL   rE  Úfx_graphrº  rt   re   r%   Úno_gradrÀ  rð   Úset_fake_modeÚget_cuda_device_contextrz  Úfx_graph_transformedÚpost_grad_graphs_logr)   r©  ÚtraceÚprovenance_tracking_levelr   Ú	tracebackÚget_graph_provenance_jsonrÜ   r8   r5  Ú_pre_grad_graph_idÚ _inductor_post_to_pre_grad_nodesr(   Úin_progressrÕ  r"   Úcompilation_metricÚ	is_fbcoderŒ   r  rÄ  rV  r¯  r´  rª  r«  r”  rg   Úset_graph_handlerÚset_extern_kernel_nodesÚrunÚcodegen_with_cpp_wrapperr¾   r]   ÚCachedMetricsHelperÚfreeze_runtime_assertsr\   Úgraph_contextÚgraph_outputsrP   rÞ   ri   Úhas_tensor_outputrõ   rO   Ú
get_striderâ   r=  Ú
get_layoutrã   Ú_check_triton_bf16_supportr³  rÔ  r²  Úcodegenrä   r2   Ú	codecacherÄ  Úextern_kernel_nodesrÒ  ÚcompilerÅ  ÚdictÚfromkeysÚwrapper_coderÆ  Úcompile_to_moduleÚcallrï   r  r  Údump_inductor_provenance_infoÚ_inductor_kernel_stack_traceÚ
add_to_setÚinductor_metrics_logra  Úcount_bytesrÐ  rÒ  rÑ  r¨  Úlog_tlparseÚlog_runtime_and_tensor_metaÚlog_collective_scheduleÚ	schedulerr  rJ  Úcudagraph_skip_dynamic_graphsr±  Údisable_cudagraphs_reasonr   Úany_is_symbolicrà   rÙ   rá   rp   rë   rÎ   rN   r�  r:   Útorch._inductor.cudagraph_utilsrÖ  Údevice_node_mappingrˆ  r‚  ÚRECORD_GRAPH_EXECUTIONÚGRAPH_COMPILE_IDSrË   r?  r@  r;   Ú
get_deltas)8rÙ  rä   ri  rh  rf  rÌ  rÎ  rÏ  rÐ  r²  rÔ  r³  r}  rÒ  Ú	sleep_secrL  Úinductor_countersÚfdrº  r¾  Úcuda_contextÚprovenance_tracking_jsonÚmetrics_contextr¶  r‘  Úconst_graphr¼  r½  rŒ  rÜ   Úmetrics_helperrå   rR  Úcompiled_fn_runnerÚcompiled_fnrÄ  r  Úkernel_codeÚserialized_extern_kernel_nodesÚcompiled_modulerÒ  Ú	num_bytesrÑ  r!  rÓ  rñ   Úmeta_valÚdisableÚmaybe_incompat_noderÖ  rø  rÎ  r³  rÉ  rÂ  r�  s8    `                                                 @@@@@r…   r‚  Ú'_InProcessFxCompile.codegen_and_compileÀ  sB  ý€ ð  ˜|Ó+°¸\Ñ0JÑ0VÐVÐVØ ,¨\Ñ :ˆ
Ø+7×+;Ñ+;Ð<OÐQSÓ+TÐØ(×,Ñ,¨]¸EÓBˆØ".×"2Ñ"2°:¸tÓ"DˆØ(×,Ñ,¨]¸EÓBˆØ'×+Ñ+¨L¸%Ó@ˆ
Ü×*Ñ*ˆØ)×-Ñ-¨n¸eÓDˆà×ÑÐ5°tÓ<ð 	ô
 ÐJÓK×QÑQÕSÜ×+Ò+Õ-ä#×:Ñ:Ð:�	ÑGÛä—‘ØIÈ9ôð —
’
˜9Ô%ä)¨"×-Ñ-Ü#Ô%ä (¨Ñ 4× 9Ñ 9Ó ;Ðô ×!Ò!¤#¤c×&;Ò&;Ó&=¸tÓ"DÔEäŒNÜ—‘Ø*Þ"-‘;°:Ð>ð ?Ø!˜
ð$ôô —’“ˆBÜ�M‰M×Ñ×)Ñ)×:Ñ:Ø�B˜¨
¸Tð ;ñ ð "$§¡£ÐäØñô 6òô �G‰G×Ñ˜R Ô0ð
 Ÿ™ˆIØÑ Ü1°.ÓA�	ô$ ˜BÔäØ-ÀTóô —]’]•_Ü 0°°^Ó D�I÷ %÷ô 6°bÔ9ô
 Øñôò	ô —’ Õ+ä6°rÓ:�Ú!Ü/°ÀÒN÷ "ä—‘×,Ñ,¨R°Ô@Ü$×*Ñ*ØÜ*Ø)ØØ'+Ø'+Ø $ñô	ð 02×/@Ñ/@Ø!&Ø#'Ø#'Ø%)ð	 0Að 0Ð,ô !Øñ!ô  Dòô —<‘<×9Ñ9¸QÓ>äŸ™×*Ñ*×DÑDÀRÇXÁXÓNð -ô ;Ü!ŸO™O×1Ñ1×DÑDØ4óô —O‘O×)Ñ)ÔJô #6Ó"7�Ø"×.Ñ.×0Ñ0Ü'/°Ñ'>×'DÑ'DÓ'FÐ$Ü&×9Ò9Ø"&Ð9Iòô ×#Ò#×%Ñ%ð	AÜ,à -¬sÔ3JÓ3LÓ/Mð+ò÷o ,ôD —’ 	Õ*Ü3°NÕCÜ-¨kÕDà%)Ð"Ø"�Ø%)Ð"Ø$(Ð!æ¤× 3Ñ 3× P× Pô 4BØñ.ñ4Ñ0�HÐ0ô #0Ø Ø')Ø"+Ø!)Ø$/Ø!)Ø/EØ%1Ø$/Ø'+Ø#-ñ#�Kô ×+Ò+¨KÕ8Ü×1Ò1°"Õ5æ*ÐPÐ,PÓP˜{Ø#Ÿ™Ô)à'×@Ñ@ÓBñ >Ð*Ð,=÷	 6÷ 9ô &Øð $2Ø'Ø%Ø +Ø%Ø+AØ!-Ø +Ø'9æ4FÐ*×0Ò0ÈDö 4EÐ)×/Ò/È$à!,Ø$3Ø)ñ-�ô0 ")×!<Ò!<Ó!>�ð ×,Ñ,Ô.ä×'Ò'¨Õ.Ü×-Ò-¨bÕ1Ü(×6Ò6Õ8à—I’I˜~Ñ.ØQS�NØ×*Ñ*Ñ6ô +Ó,˜Ø#(×#6Ô#6˜Cä *¨3´× 7Ñ 7Ø$'×$9Ñ$9×$;Ñ$;Ü$'Ô(=¸c¿n¹nÓ>NÓ(OÓ$PÐTUÓ$Uð !/× 5Ñ 5Ü$)Ô)XÀÇÁÓ@P×@WÒ@WÓ)XÓ$Xö!"ð !/× 5Ñ 5°dÖ ;ñ $7ô /¨uÔ5ð *.Ð&Ü%Ø5ÈTóð !Ÿ>Ÿ>¨e×.>×.>Ø',×'8×'8Ð8Ð#8Ø*/¯-©-«/¸!Ñ*<×*?Ñ*?˜KÜ+×1Ò1Ø ;Ø +× :Ñ :ÈÐ :Ð Nöð
 #Ÿ^Ÿ^˜^ÝBà#(×#4×#4ð Ø DóÐ#4ð 9>×8VÑ8VÓ8XÑ5˜L¨+Ü+×1Ò1Ø ;¸\×=OÑ=Oôð  +×0×0Ü /× 5Ò 5Ø$=¸{×?PÑ?Pô!"ð >BÐ:Ü ×4×4à$)×$@Ñ$@Ä×AVÑAVÓ$Wð !?ô !0× 5Ò 5Ø$JØ$Bô!"ô
 ".Ø 9ÐQUó"ð />×.EÑ.EØ$)Ø$0×$6Ñ$6Ø$/×$5Ñ$5Ø$BØ05×0AÑ0Að	6&Ü)-¯©Ø,1×,>Ñ,>×,OÑ,Oö 4?ð 1<×0HÑ0H×0YÒ0Yà57ñ	-.ó**ð	6&ð /Fð /" ÷	"ð "ð, /4×.EÑ.EÓ.G˜OØ*9×*>Ñ*>˜KÜ18Ø /°¸4ó2Ð.÷yðB BFÐ>Ø6:Ð3Ü—|‘|×=Ñ=ÀÓBÜEIÇZÂZÜ!ŸO™O×1Ñ1×OÑOÓQóFÐBô ;?¿*º*Ü!ŸO™O×1Ñ1×NÑNó;Ð7ô )Ø&ñ)ô (Zòô )Ø&ñ)ô (Oòö ;Ü.AÓ.C˜OØ.×:Ñ:×<Ñ<Ø /× :Ñ :Ø$9Ø$Cô!"ð
 %)�MÜ+×8Ñ8¼¿¹×FÑFØCH×CTÑCTÓCVÑ@˜	 >°=ä×2Ò2°iÑ?Õ2Ü×-Ò-°Ñ>Õ-Ü×.Ò.°.Ñ@Õ.Ü,×1Ò1Ø0à6?Ø2@Ø1>ñôô ×)×)Ð)Ø.3×.?Ñ.?Ó.AÑ+˜˜1˜mÜŸ™×-Ñ-×IÒIÈ-ÔXô —O‘O×)Ñ)×AÒAÀ%Ç/Â/×BWÒBWÔX÷ #Ü"ŸMšM×G×GÑGÜ &× 6× 6Ñ 6Ü !§¡× A× AÑ AÜ!ŸO™O×1Ò1×AÓAÀ>ÖRà&*˜Ø$&§H¡H§N¥N˜DØ'+§y¢y§}¡}°U¸DÓ'A˜Hà $§¢¨=Ó 8Ü'1°(¼E¿LºL×'IÑ'IÜ',§¡×'<Ò'<×'LÒ'LÈX×'VÑ'Vá (à.2¯iªi¯m©m¸MÈ4Ó.PÐP˜{×PÙ %ñ %3ð #|˜Þ&Ø)0¨	°¸k¸]È"Ð&M™Gà)0¨	° n˜Gà<CœŸ™Ô9ö
 #ä &× 6× 6Ð 6ä !§¡× A× AÐ Aå.SÐTVÓ.WÐ+Þ.Ø(TÐUh×UoÒUoÐTpÐ&q˜GØ.A×.FÒ.F×.JÑ.JØ -¨tó/ð  ˜{õ  ð .5¨I°\À+ÀÈbÐ*Q à@GœAŸG™GÔ=ô ×(×(Ü)Ø'ä ¥$¬¯©×(<Ò(<Ð=÷ ñ  ð -õ   Ó,ó	-ð  õ
  ,Ø%0¸e×>OÑ>Oñ ÷[ 9Ð8÷ 2Ð1÷ /Ð.÷S EÐD÷ DÐC÷ +Ð*÷ .Ð-÷ TÑSö@ "¬!¯'©'×*K×*KÐ*Kõñ =ä !§¡× ;Ò ;óô Ÿ™Ô9ð ×'Ò'­¨T«
Ñ3×GÓGÈ1ÑLÕGô Ÿ™×-Ñ-×D×DÐDä!ŸO™O×1Ñ1×CÒCÑOä%(ä!ŸMšM×8Ò8×KÒKÓMó&˜
ð $0×#3Ñ#3°JÓ#?˜Ø#Ñ/ð !+ô "ŸO™O×1Ñ1×CÒCÀHÑMõ +Ø#ØØØ&äŸ™×9Ò9Ø&×1Ò1Ó3Ü  Ñ,Ð/@Ñ@Ø"Ø&Ø)Ø$Ø'Ø*Ø4Ø*ØBØ7ó%÷g 9Ð8÷ 2Ð1÷ /Ð.÷S EÐD÷ DÐC÷ +Ð*÷ .Ð-÷ TÑS÷X %–_ú÷ö ú÷8 "–\ûôr %ó Aô Ÿ™Ð$?×@ðAú÷y ,Ö+ú÷N 6Ö5ú÷ 9Ö8ú÷T"ö "ú÷Iö ú÷; 9Õ8úÐ8÷ 2×1Ö1ú÷ /×.Ö.ú÷S E×DÖDú÷ D×CÖCú÷ +×*Ö*ú÷ .×-Ö-ú÷ T×SÖSúso  ÃAE$ÃFAE
É"A@	É87	ÊA@	Ê9AE
ËAAËA@	ËE,AAÑA@-Ñ(AE
ÒAD0ÒAD	ÒA&AC<ÔAA7Ô2AA%ÕAA7ÕB AC<×AC"×,ACØC2AB-Û4E&ABáA<AB	ã2ABäM<AB-òEAB-÷		AC÷	AC"÷	AC<÷$	AD	÷-	AD0÷6	AE
÷?	AE$øFAB-þ.	ACþ7	AC"ÿ 	AC<ÿ		AD	ÿ	AD0ÿ	AE
ÿ$	AE$ÿ7
A@Á@A@	Á@	
A@Á@AE
Á@
A@*Á@%AAÁ@-AA	ÁAAAÁAAA	ÁAAAÁA
AA"ÁAAE
ÁA%
AA4ÁA/AA7ÁA7
ABÁBAC<ÁB	
ABÁBABÁB
AB*ÁB%AB-ÁB-
AB;ÁB7ACÁB?	AC"ÁC
ACÁCAC"ÁC	AC<ÁC"
AC0ÁC,AC<ÁC3	AD	ÁC<
AD
ÁDAD	ÁD	AD0ÁD
AD$ÁD AD0ÁD'	AE
ÁD0
AD>ÁD:AE
ÁE	AE$ÁE

AE	ÁEAE$ÁE$
AE2r‰   Nr�  )r“   r”   r•   r–   r   r‚  rš   r‰   r‡   r…   r•  r•  ¿  sK   † ØðPàðPð ,ðPð 'ð	Pð
 'ðPð 
óPó óPr‡   r•  c                ó  • [         [        R                  :X  a  [        5       nOK[         [        R                  :X  a  SSKJn  U" 5       nO%[         [        R                  :X  a  SSKJ	n  U" 5       n[        (       a,  SSKJn  SSKJn  [        WU5      (       d   S5       eU" U5      n[        (       aA  SSKJn	  SSKJn  [        WU5      (       d   S5       e[#        5       n
[        5       nU	" X´U
5      nWR%                  XX#5      $ )	Nr[   )Ú_DebugSerdeFxCompile)Ú_SubprocessFxCompile)Ú_AsyncFxCompile)Ú_OutOfProcessFxCompilez7async is only valid with an out-of-process compile mode)Ú_ProgressiveFxCompilez=progressive is only valid with an out-of-process compile mode)Úfx_compile_moder‘   r—   r•  r˜   Úcompile_fx_extr/  r™   Úcompile_fx_subprocr0  Úfx_compile_asyncÚcompile_fx_asyncr1  r2  rÞ   Úfx_compile_progressiver3  rÃ   r‚  )rä   ri  rh  rf  Úschemer/  r0  r1  r2  r3  Úprogression_configsÚfast_schemes               r…   r  r  Ô  sé   € ô œ-×.Ñ.Ó.Ü$Ó&‰Ü	œM×3Ñ3Ó	3Ý8á%Ó'‰Ü	œM×4Ñ4Ó	4Ý<á%Ó'ˆçÒÝ5Ý:ô ˜&Ð"8×9Ñ9ð 	
ØEó	
Ð9ñ ! Ó(ˆçÒÝ;Ý:ô ˜&Ð"8×9Ñ9ð 	
ØKó	
Ð9ô 7Ó8Ðô *Ó+ˆñ ' {Ð<OÓPˆð ×%Ñ% b¸/ÓXÐXr‡   c                ó¢  • / n[        U 5       H¬  u  p4[        U[        R                  5      (       d  M&  [	        UR
                  R                  5      (       d  ML  [        5          X1;   a  [        U5      (       a   SSS5        Mw  [        U5      (       d   SSS5        M’   SSS5        UR                  U5        M®     U$ ! , (       d  f       N%= f)zŽ
This function runs at compile time, and generates a list of indices for which we
might need to do a copy to preserve alignment requirements.
N)rA  rÞ   rÊ   rá   rF   r#  r�  rq   rI   rG   râ   )ÚinputsrÎ  Úids_to_checkr  ro  s        r…   rF  rF  	  s­   € ð €Lä˜fÖ%‰ˆÜ˜%¤§¡×.Ñ.áÜ�e—l‘l×'Ñ'×(Ñ(áÜ0Õ2ð Ó%Ô*;¸E×*BÑ*BØ÷	 3Ñ2ô
 /¨u×5Ñ5Ø÷ 3Ñ2ð
 6÷ 3ð 	×Ñ˜AÖñ) &ð, Ð÷ 3Õ2ús   Á$C ÂC Ã 
C	r‰   )r  ÚplaceholdersÚmutated_input_idxsc               ó  ^ ^^^• SSK Jn	  [        R                  R                  (       aC  [
        R                  " U	UUUUUUU[        R                  R                  R                  5       S9	mO[        mS mSUUU U4S jjn
U
$ )Nr   )Úcudagraphify_impl)Údevice_indexÚstack_tracesrÏ  r}  r  r@  rA  rø  c                óŒ   >• Tc(  [         R                  " 5          T" TU T5      mS S S 5        T" U 5      $ ! , (       d  f       N= fr€   )r�   rØ  )Ú
new_inputsr%  Úcudagraphify_fnÚmodelrÎ  s    €€€€r…   rø  Úcudagraphify.<locals>.runN  s=   ø€ àÑÜ×0Ò0Õ2Ù-¨e°ZÐARÓS�÷ 3á˜:Ó&Ð&÷ 3Õ2ús	   š5µ
A)rG  rÝ  r  r   )Útorch._inductor.cudagraph_treesrC  r   rJ  Úcudagraph_treesÚ	functoolsÚpartialrÊ   rË   r?  r@  )rI  rÎ  rD  rE  rÏ  r}  r  r@  rA  Únew_cudagraphify_implrø  r%  rH  s   ``         @@r…   ÚcudagraphifyrP  ,  sr   û€ õô
 ‡}�}×$×$Ü#×+Ò+Ø!Ø%Ø%Ø#Ø%ØØ%Ø1Ü—}‘}×3Ñ3×FÑFÓHñ

‰ô ,ˆà€K÷'ò 'ð €Jr‡   c                ó�   • [         R                  " U R                  5       U R                  5       U R                  U R
                  S9$ )z)
Copy and input while preserving strides
)r$  r#  )rÊ   Úempty_stridedÚsizerã   r$  r#  )r¬   s    r…   Ústatic_inputrT  X  s/   € ô ×Ò˜qŸv™v›x¨¯©«¸1¿7¹7È1Ï8É8ÑTÐTr‡   c                óR   • [        X5      n [        X5      nU R                  U5        g)z=Index into expanded dimensions of both dst and src then copy_N)r>   Úcopy_)ÚdstÚsrcÚexpanded_dimss      r…   Úindex_expanded_dims_and_copy_rZ  _  s#   € ô ˜cÓ
1€CÜ
˜cÓ
1€CØ‡I�Iˆc…Nr‡   c                ó�  ^^	^
^^^• [        UT5      n[        [        UT5      5      m[        X5        [	        U[
        5      (       d   e[        U5       VVs/ s H  u  pEUT;  a  [        U5      O/ PM     snnm[        U5       VVs/ s HG  u  pE[	        U[        R                  5      (       d  UO UT;  a  [        U5      OUR                  5       PMI     snnm[        [        UT5      5       H@  u  nu  pV[	        U[        R                  5      (       d  M)  UT;  d  M1  [        TU   XV5        MB     [        R                  R                  5         [        R                  R!                  5       nUR#                  [        R                  R%                  5       5        [        R                  R'                  U5         U " [        T5      5        SSS5        UR                  5         [        R                  R%                  5       R#                  U5        [        R                  R                  5         [        R                  R)                  5       m
[        R                  R+                  T
USS9   U " [        T5      5      mSSS5        [	        T[
        [,        45      (       d  T4m[.        R0                  (       a  SU
UUUU4S jjnO8[3        [5        T5      5       Vs/ s H  oDT;  d  M
  UPM     snm	SU	U
UUU4S jjn[7        Xƒ[        5       5      $ s  snnf s  snnf ! , (       d  f       GNY= f! , (       d  f       N¸= fs  snf )zI
Assumes inputs[static_input_idxs[i]] are always the same memory address
NÚthread_local)ÚstreamÚcapture_error_modec                ó¶  >• [        T5      [        U 5      :X  d   e[        [        TU T5      5       Hƒ  u  nu  p#n[        U[        R
                  5      (       d  M*  [        U[        R
                  5      (       d   eUT;   a&  UR                  5       UR                  5       :X  d   eMw  [        X#U5        M…     U R                  5         TR                  5         T	$ r€   )
rõ   rA  ÚziprÞ   rÊ   rá   Údata_ptrrZ  rŒ  Úreplay)
rG  r÷   rW  rX  rY  rÜ   Úinps_expanded_dimsrÎ  Ústatic_inputsÚstatic_outputss
        €€€€€r…   rø  Úcudagraphify_impl.<locals>.run¥  s¹   ø€ Ü�}Ó%¬¨Z«Ó8Ð8Ð8Ü2;Ü�M :Ð/AÓBö3Ñ.�Ñ.�c ô " #¤u§|¡|×4Ñ4ÙÜ! #¤u§|¡|×4Ñ4Ð4Ð4ØÐ+Ó+ØŸ<™<›>¨S¯\©\«^Ó;Ð;Ò;ô
 2°#¸MÖJñ3ð ×ÑÔØ�L‰LŒNà!Ð!r‡   c                óÌ   >• T H<  nTU   nX   n[        U[        R                  5      (       d   e[        TU   X25        M>     U R	                  5         TR                  5         T$ r€   )rÞ   rÊ   rá   rZ  rŒ  rb  )	rG  r÷   rY  rX  Úcopy_indicesrÜ   rc  rd  re  s	       €€€€€r…   rø  rf  ¾  sa   ø€ Û#�Ø 2°3Ñ 7�Ø ‘o�Ü! #¤u§|¡|×4Ñ4Ð4Ð4Ü-¨m¸CÑ.@À#ÖUñ	 $ð
 ×ÑÔØ�L‰LŒNà!Ð!r‡   )rG  úlist[InputType]r  ú Callable[[list[InputType]], Any])rF  rS   rs   rn   rÞ   rÎ   rA  r=   rÊ   rá   rT  Údetachr`  rZ  rÿ   ÚsynchronizeÚStreamÚwait_streamÚcurrent_streamr]  Ú	CUDAGraphrÜ   r=  r   Úsize_assertsrÏ   rõ   rl   )rI  r>  rÎ  Úcheck_input_idxsr÷   r¬   rY  r]  rø  rh  rÜ   rc  rd  re  s     `      @@@@@r…   rC  rC  j  sš  ý€ ô /¨vÐ7HÓIÐä)3Ü# FÐ,=Ó>ó*Ðô ˜6Ô4ä�fœd×#Ñ#Ð#Ð#ô   Ô'ôâ'‰FˆCð !$Ð+<Ó <Ô˜!ÔÀ"ÒDÙ'òÐô   Ô'ô	ò (‰FˆCô ˜a¤§¡×.Ñ.ñ ð Ð+Ó+ô ˜a”à—‘“ò	ñ (ò	€Mô $-¬S°Ð9KÓ-LÖ#MÑˆÑˆaÜ�aœŸ™×&Ó&¨3Ð6GÕ+GÜ)¨-¸Ñ*<¸aÖOñ $Nô
 
‡J�J×ÑÔÜ�Z‰Z×ÑÓ €FØ
×Ñ”u—z‘z×0Ñ0Ó2Ô3ä	�‰×	Ñ	˜6Õ	"ÙŒd�=Ó!Ô"÷ 
#à
×ÑÔÜ	‡J�J×ÑÓ×+Ñ+¨FÔ3Ü	‡J�J×ÑÔô �J‰J× Ñ Ó"€EÜ	�‰×	Ñ	˜%¨À>Ð	Ò	RÙœt MÓ2Ó3ˆ÷ 
Sä�n¤t¬U m×4Ñ4Ø(Ð*ˆä××÷	"ô 	"ô, !¤ ]Ó!3Ô4ó
Ú4�CÐCTÑ8T�CÑ4ñ
ˆ÷		"ó 		"ô (¨¼z»|ÓLÐLùó]ùó	÷* 
#Ö	"ú÷ 
SÕ	Rüò8
s1   ÁLÂ	ALÆ<L É.L2Ë	MË+MÌ 
L/Ì2
M c                ó¢  • [        U [        5      (       d   U 5       e[        U 5        [        R                  " U=(       d    0 5      nUR                  SS5      (       d  [        R                  (       d  SUS'   UR                  S[        R                  R                  5      nU(       a  UR                  S5      (       a   S5       eO0 UES[        U R                  5      0EnSS	KJn  U" U5      nUR                  S
S 5      nU R                   R                  SS 5      n["        R$                  R'                  U5      n[(        R*                  " S5         ["        R$                  R-                  U5         [/        SSSS9   [1        5          [3        U U[4        R6                  " UUS9US9n	[        U	[8        5      (       d   eU	R:                  sS S S 5        sS S S 5        sS S S 5        sS S S 5        $ ! , (       d  f       O= f S S S 5        O! , (       d  f       O= fS S S 5        O! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f)NrÔ  FTr²  zaot_inductor.output_pathz.pt2a
  The output path for aot_compile should not have an extension with .pt2 this is for specifying the output path for the .so in AOTInductor. If you would like to package the AOTInductor generated files into a pt2, please call `torch._inductor.aoti_compile_and_package`.r[   )Úmaybe_aoti_standalone_configrÒ  Údynamo_compile_idÚcompile_fx_aot)rd  Úreset_event_log_on_exit)rÒ  )Úinner_compilerÃ  )rÞ   rN   r+   rÜ  Údeepcopyr²   r   rÔ  rª  Úoutput_pathrd  r0   Úcoder   rt  r¼   rà   rÊ   rË   r?  ru   Úset_aot_compilationÚcompile_contextr!   r(   Ú
compile_fxrM  rN  r:   rÕ  )
Úmodel_Úexample_inputs_rx  rÃ  rz  rt  rÒ  Úsaved_compile_idÚsaved_compile_contextÚcompiled_artifactss
             r…   rv  rv  Ì  s÷  € ô �fœk×*Ñ*Ð2¨FÓ2Ð*ô & fÔ-ô &*§]¢]°>×3GÀRÓ%H€Nà×Ñ˜|¨U×3Ñ3´v×7H×7Hà(,ˆ�}Ñ%à ×$Ñ$Ø"¤F×$7Ñ$7×$CÑ$Có€Kö Ø×'Ñ'¨×/Ñ/ð 	
ðRó	
Ð/Ð/ð
Øð
à&¬	°&·+±+Ó(>ñ
ˆõ
 4á1°.ÓA€Nà+×/Ñ/Ð0HÈ$ÓOÐØ—{‘{—‘Ð':¸DÓAÐÜ!ŸM™M×8Ñ8Ð9IÓJÐä	×Ò˜dÕ#Ü�‰×%Ñ%Ð&;Õ<ÜØØ"&Ø$(ó	
ô
 	Õä'ØØÜ#×+Ò+ØØ'=ñð *ñ
Ðô Ð,¬l×;Ñ;Ð;Ð;à!×*Ñ*÷ 	Ð÷	
ð 	
÷ 	=Ð<÷ 	$Ñ#÷ 	ÕúÐ÷	
÷ 	
ö 	
ú÷ 	=×<Ö<ú÷ 	$×#Ö#úsa   Å I Å3H&Å?HÆ
AG1	Ç	HÇ	H&Ç	I Ç1
G?Ç;HÈ	H&È
HÈH&È	I È&
H4	È0I É 
Ic                ó  ^^^^• SSK JnJn	  [        X5      n
[	        U [        [        U
5      5      S9n [        R                  " U SS9nU(       a  [        XS5        U" U 5        U	" UU U5      u  nmT Vs/ s H  oÑU   PM	     nn[        U5      nUR                  R                  Gt nnUR                  S   n[        U5       VVs/ s H3  u  nn[        U[         R"                  R$                  5      (       d  M1  UPM5     snnUR&                  S'   / n[         R(                  R*                  R-                  5       nS/mSmUGbA  UR.                  c   eUR.                  n[1        S[3        U5      S-
  5      m[4        [6           " 5       nUR8                  nUc   eSn[3        U5      S:”  a  / m[;        [3        U5      5       HN  nUT;  a   S UU'   US:”  a  UU   UUS-
     :X  a  US-  nOUR=                  UU   5        TR?                  U5        MP     UR@                  c   e[;        [3        UR@                  5      5       H  nUU;  d  M  S UR@                  U'   M     URB                  (       a  URB                  RD                  n[F        RH                  RK                  USS5         U" UUUUUSUUS	9mS S S 5        [L        RN                  (       a  T$ SUUUU4S
 jjnSUl(        U$ s  snf s  snnf ! , (       d  f       ND= f)Nr   )Ú%convert_conv_weights_to_channels_lastÚfreeze©rq  Tr«  rô   r[   r·  )rÎ  rÌ  rÐ  r}  rÓ  rÑ  c           
     ó†   >• T Vs/ s H  nXT[        UT5         -
     PM     nnU R                  5         T" U5      $ s  snf r€   )ÚminrŒ  )rŠ   r  Úargs_newÚmax_offset_idxÚoptimized_functionÚpreserved_arg_indicesÚunwrapped_args_offsetss      €€€€r…   ÚwrapperÚ%fw_compiler_freezing.<locals>.wrappern  sU   ø€ ñ +ó
â*�ð Ð+¬C°°>Ó,BÑCÑCÔDÙ*ð 	ð 
ð 	�
‰
ŒÙ! (Ó+Ð+ùò
s   †>)rŠ   zlist[object]r  zSequence[torch.Tensor]))Útorch._inductor.freezingr…  r†  r'   rp  rG  rH  rg   Údecide_layout_optrÀ  r$   rÜ   r  rŠ   rA  rÞ   rÊ   r   rß   rà   rË   rÌ   rÍ   Úparams_flat_unwrap_subclassesr  rõ   rS   r  Úparams_unwrapped_to_flat_indexrÏ   r'  râ   Úparams_flatrÐ   rÑ   r   r©  r»  ru   r1  Ú_boxed_call) Úaot_autograd_modelÚaot_example_inputsÚdynamo_modelÚnum_example_inputsrx  rÌ  rÐ  Úforward_devicer…  r†  Úinputs_devicesrÑ  Ú	opt_modelÚindr¾  r!  Úmodel_outputs_nodeÚmodel_outputsr÷   r“  rÎ  Útracing_contextÚparams_flat_unwrapÚpreserved_indices_params_flatÚunwrapped_idxsÚcurrent_offsetr  r�  r‹  rŒ  r�  rŽ  s                                @@@@r…   Úfw_compiler_freezingr¦    s  û€ ÷ Wô (Ð(:ÓO€NÜ6Ø¬¬d°>Ó.BÓ)CñÐô ×0Ò0Ð1CÐRVÑW€JÞäÐ+ÀÔFÙ-Ð.@ÔAá'-ØØØó(Ñ$€IÐ$ñ >SÓSÒ=R°c¨SÔ1Ñ=RÐÐSä Ð!3Ó4€Ið 'Ÿ_™_×2Ñ2Ñ€QÐØ&×+Ñ+¨AÑ.€Mä# MÔ2ô;Ú2‘��Q´jÀÄEÇHÁHÇMÁM×6R�Ñ2ò;Ð×ÑÐ6Ñ7ð $&Ðä—m‘m×2Ñ2×:Ñ:Ó<€OØ˜SÐØ€NØÒ"Ø×<Ñ<ÑHÐHÐHØ,×JÑJÐÜ˜Q¤Ð$6Ó 7¸!Ñ ;Ó<ˆÜ(2´3ªÓ(9Ð%Ø(×GÑGˆØÑ)Ð)Ð)ØˆÜÐ!Ó" QÓ&Ø%'Ð"ä”sÐ-Ó.Ö/ˆAØÐ-Ó-Ø(,Ð" 1Ñ%Ø�q“5˜^¨AÑ.°.ÀÀQÁÑ2GÓGØ" aÑ'�Nøà-×1Ñ1°.ÀÑ2CÔDØ"×)Ñ)¨.Ö9ñ 0ð ×*Ñ*Ñ6Ð6Ð6Ü”s˜?×6Ñ6Ó7Ö8ˆAØÐ5Õ5Ø15�×+Ñ+¨AÓ.ñ 9ð ×&×&Ø /× ;Ñ ;× PÑ PÐä	�‰×	Ñ	˜9Ð&=¸tÕ	DÙ*ØØØ/Ø!ØØØ'5Ø!ñ	
Ð÷ 
Eô 	××Ø!Ð!÷,ò ,ð €GÔà€NùòQ Tùó;÷L 
EÕ	Dús   Á5K'Ã0K,Ã:K,Ê&K2Ë2
L c                 óð   • [         R                  R                  (       a  [        [	        S5      5        [         R                  R
                  b  [         R                  R
                  O	[        5       SSSS.$ )Nzcpp wrapper enabledFT)ztriton.autotune_at_compile_timeztriton.autotune_cublasLtztriton.cudagraphsztriton.store_cubin)r   rJ  rÌ  r5   r4   Úautotune_at_compile_timerZ   r‰   r‡   r…   Úget_cpp_wrapper_configr©  {  sY   € Ü‡}�}××Ü+Ü'Ð(=Ó>ô	
ô �}‰}×5Ñ5ÑAô �M‰M×2Ò2ä“à$)Ø"Ø"ñ
ð 
r‡   c                óR  • [         R                  R                  5       (       d  [        R                  " 5       $ [        S [        U 5       5       5      n[        U5      S:X  a1  [         R                  R                  [        [        U5      5      5      $ [        R                  " 5       $ )zP
Returns a cuda device context manager if there is a single device in the graph
c              3  óH   #   • U  H  oR                   S :X  d  M  Uv •  M     g7f)rÿ   N)r�  r   s     r…   r­   Ú*get_cuda_device_context.<locals>.<genexpr>•  s   é € ð 8Ú0�6·K±KÀ6Ñ4I�‰Ò0ùs   ‚"™	"r[   )rÊ   rÿ   r   r¬  r­  rS   rD   rõ   r#  rG  rH  )rä   Úcuda_devicess     r…   rê  rê  Ž  s‡   € ô �:‰:×"Ñ"×$Ñ$Ü×%Ò%Ó'Ð'ä-7ñ 8Ü,¨RÔ0ó8ó .€Lô ˆ|Ó Ó!ô 	�
‰
×Ñœ$œt LÓ1Ó2Ó3ðô ×#Ò#Ó%ðr‡   c           
     óŠ  • [        U 5      nU   [        X5      n[        U S[        [	        U5      5      S9n S S S 5        UR                  SS 5      n[        R                  c/  [        R                  " SSS9   [        U U4SUS.UD6sS S S 5        $ [        [        R                  [        5      (       d   e[        R                  " [        R                  R                  R                  SS9   [        R                  " U U4SUS.UD6sS S S 5        $ ! , (       d  f       Ná= f! , (       d  f       g = f! , (       d  f       g = f)NT)rZ  rq  Ústatic_lifetime_input_indicesr   rŸ  rç  )Úcompilerr¯  )rê  r'   rp  rG  rH  r¼   r   Úcustom_partitioner_fnr�   r%   r   rÞ   r7   Ú	__class__r“   )rä   Újoint_inputsr‹   r  rœ  r¯  s         r…   Úpartition_fnr´     s=  € ô
 +¨2Ó.€LÚ	ô ,¨LÓ=ˆÜ*Ø T¼¼TÀ.Ó=QÓ8Rñ
ˆ÷ 
ð :@¿¹Ø'¨ó:Ð!ô ×#Ñ#Ñ+Ü×&Ò&Ø1Èó
ô 7ØØðð $Ø.Kñ	ð ñ÷
ñ 
ô œ&×6Ñ6Ô8K×LÑLÐLÐLÜ×&Ò&Ü×(Ñ(×2Ñ2×;Ñ;Ø"&ó
ô ×/Ò/ØØðð $Ø.Kñ	ð
 ñ÷	
ñ 
÷7 
�ú÷
õ 
ú÷
õ 
ús#   Ž)DÁ7D#Ã-D4Ä
D Ä#
D1Ä4
Ec                óh   • [        U 5      n[        R                  " UR                  6 n[	        U5      $ r€   )rr   rB  Úarg_tree_leavesrŠ   rõ   )rI  rŸ  r   s      r…   Úget_num_model_outputsr·  Î  s/   € Ü$ UÓ+ÐÜ×*Ò*Ð,>×,CÑ,CÐD€MÜˆ}ÓÐr‡   )Úfrozenc                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg	)
ÚCompilerConfigExtraiÔ  rA   rÌ  r  rÐ  r3   r›  r‰   Nr¢   r‰   r‡   r…   rº  rº  Ô  s   ‡ àÓØƒMØ$Ö$r‡   rº  c                óŠ   • [        U R                  R                  5      n[        [        5      n[        S 5      n[        UUUS9$ )N)rÌ  rÐ  r›  )rA   rJ  rÌ  rG  Ú_graph_counterr3   rº  )r   rÌ  rÐ  r›  s       r…   Úcreate_compiler_config_extrar½  Û  sF   € ô
 ˜6Ÿ=™=×3Ñ3Ó4€Jô ”NÓ#€Hô & dÓ+€NäØØØ%ñð r‡   c           
     óÆ  ^ • U(       aH  [        SS U 4S jS9  [        UT 5      n[        T [        [	        U5      5      S9m [        SS U 4S jS9  [
        R                  R                  R                  U[        U5      5      n[        T 5      n	[        R                  (       aí  [        R                  " U	R                  6 n
[        U
5      n[
        R                   R"                  R%                  5       nUb/  UR&                  (       a  U(       d  UR&                  R(                  nOSnX+::  d   eXÒ-   nXë::  d   e[+        XÞ5       Vs/ s H2  n[-        X¯   [
        R.                  R0                  5      (       d  M0  UPM4     snU	R2                  S	'   O/ U	R2                  S	'   [5        T 5        U" T U[7        U5      UR8                  UR:                  UUR<                  S
9$ s  snf )aû  
Compile the forward graph of the given graph module.

Args:
    gm: The graph module to compile.
    example_inputs: The example inputs to use for compilation.
    num_orig_model_outputs: The number of model outputs from the original dynamo graph.
    num_example_inputs: The number of example inputs from the original dynamo graph.
    compiler_config_extra: Extra configuration for the compiler.
    inner_compile: The inner compile function to use.
    is_inference: Whether this is an inference graph.
r  c                 ó   • SSS.$ )NÚbefore_joint_graphrš  r  r‰   r‰   r‡   r…   r  Ú$compile_fx_forward.<locals>.<lambda>	  s   € Ø,Ø$ò!r‡   c                 ó&   >• T R                  SSSS9$ r£  r¨  rª  s   €r…   r  rÁ  	  ó   ø€ ˜r×0Ñ0Ø"°4Èð  1ñ  r‡   r  r‡  c                 ó   • SSS.$ )NÚafter_joint_graphrš  r  r‰   r‰   r‡   r…   r  rÁ  	  s   € Ø+Ø$ò!r‡   c                 ó&   >• T R                  SSSS9$ r£  r¨  rª  s   €r…   r  rÁ  	  rÃ  r‡   r   rô   )rÎ  rÌ  rÐ  r}  rÓ  )rL   r'   rp  rG  rH  rÊ   r5  r   Únum_fw_fixed_argumentsrõ   rr   r   Úkeep_output_striderB  r¶  rŠ   rË   rÌ   rÍ   rÐ   Únum_mutated_inp_runtime_indicesrÏ   rÞ   r   rß   rà   rö   rÕ   rÌ  rÐ  r›  )rä   ri  Únum_orig_model_outputsrš  Úcompiler_config_extrarx  r}  rœ  rÔ   rŸ  r   Únum_model_outputsrÓ   Úoriginal_output_start_indexÚorig_output_end_idxr÷   s   `               r…   Úcompile_fx_forwardrÏ  ò  sÀ  ø€ ö, äØñôò		
ô ,¨N¸BÓ?ˆÜ*¨2¼DÄÀnÓAUÓ<VÑWˆäØñôò		
ô �O‰O×!Ñ!×8Ñ8ØœC Ó/ó€Eô % R›ÐÜ× × Ü×.Ò.Ð0B×0GÑ0GÐHˆÜ Ó.Ðä—-‘-×.Ñ.×6Ñ6Ó8ˆàÑ 7×#6×#6¾|à×#Ñ#×CÑCñ (ð +,Ð'à%Ó:Ð:Ð:ð :ÑRÐð #Ó7Ð7Ð7ô Ð8ÔNó?
âN�Ü˜-Ñ,¬e¯h©h¯m©m×<÷ ÙNñ?
Ð×ÑÐ :Ò;ð ?AÐ×ÑÐ :Ñ;ô
 /¨rÔ2áØ
ØÜ/°Ó6Ø(×3Ñ3Ø&×/Ñ/Ø!Ø#8×#GÑ#Gñð ùò?
s   Å/GÅ:Gc                ó  • SSK Jn  U   [        U 5      n[        R                  (       av  [
        R                  " UR                  6 n[        U5       VVs/ s H2  u  px[        U[        R                  R                  5      (       d  M0  UPM4     snnUR                  S'   O/ UR                  S'   [        U 5      n	[        R                  (       a  [        R                   " [#        5       5      O[$        R&                  " 5          U" U U[)        [+        U	5      5      UR,                  SUR.                  UR0                  S9sSSS5        sSSS5        $ s  snnf ! , (       d  f       O= f SSS5        g! , (       d  f       g= f)a  
Compile the backward graph of the given graph module.

Args:
    gm: The graph module to compile.
    example_inputs: The example inputs to use for compilation.
    compiler_config_extra: Extra configuration for the compiler.
    inner_compile: The inner compile function to use.
r   )Úcompile_lockrô   T)rÎ  rÌ  rÏ  rÐ  rÓ  N)Útorch._dynamo.convert_framerÑ  rr   r   Úbw_outputs_user_visiblerB  r¶  rŠ   rA  rÞ   rÊ   r   rß   rà   rB   r²  r©  r©  r¬  r­  rÎ   rÏ   rÌ  rÐ  r›  )
rä   ri  rË  rx  rÑ  rŸ  r   r÷   r“  rÔ   s
             r…   Úcompile_fx_backwardrÔ  a	  s4  € õ 9â	Ü(¨›_ÐÜ×)×)Ü"×2Ò2Ð4F×4KÑ4KÐLˆMô (¨Ô6ôCâ6‘F�CÜ˜a¤§¡§¡×/÷ Ù6òCÐ×#Ñ#Ð$>Ò?ð CEÐ×#Ñ#Ð$>Ñ?ä˜rÓ"ˆô ×!×!ô �LŠLÔ/Ó1Ô2ä×'Ò'Ó)ñ*ñ !ØØÜ"&¤u¨U£|Ó"4Ø0×;Ñ;Ø Ø.×7Ñ7Ø+@×+OÑ+Oñ÷	*ð *÷ 
‰ùóC÷*õ *úð *÷ 
�Žús=   ‰AE2Á/EÂEÂA4E2Ä<EÄ>	E2ÅE2Å
E%	Å!E2Å2
F c                ó  ^ • [        SS U 4S jS9  [        R                  S[        ST SSSS95        [	        T R
                  5      [        R                  R                  l        [        R                  R                  S	:X  ak  T R
                  R                   HQ  nUR                  (       d  M  UR                  [        R                  R                  R                  UR                  '   MS     [!        T U5      m [        SS
 U 4S jS9  T $ )Nr  c                 ó   • SSS.$ )NÚbefore_pre_grad_graphrš  r  r‰   r‰   r‡   r…   r  Ú%run_pre_grad_passes.<locals>.<lambda>–	  s   € Ø+Ø ò
r‡   c                 óX   >• T R                  SSSS9S[        T R                  5       3-   $ ©NFTr¤  z

 # graph id: ©r©  ÚidrÜ   ©r  s   €r…   r  rØ  š	  ó7   ø€ ˜6×0Ñ0Ø¨tÀDð 1ð 
ð œb §¡Ó.Ð/Ð
0ò1r‡   r  r¬  zBEFORE PRE GRADTr­  r[   c                 ó   • SSS.$ )NÚafter_pre_grad_graphrš  r  r‰   r‰   r‡   r…   r  rØ  µ	  s   € Ø*Ø ò
r‡   c                 óX   >• T R                  SSSS9S[        T R                  5       3-   $ rÚ  rÛ  rÝ  s   €r…   r  rØ  ¹	  rÞ  r‡   )rL   Úpre_grad_graphs_logrE  r)   rÜ  rÜ   rÊ   r5  rñ  r   rí  rî  r  rÓ  Ú#_inductor_pre_grad_node_stack_tracer½   ra  )r  r€  rñ   s   `  r…   Úrun_pre_grad_passesrä  �	  sä   ø€ ô
 Øñ
ô1ò
ô ×ÑØÜØØØØØñ	
ô	ô 02°&·,±,Ó/?„E‡O�O×ÑÔ,ä‡|�|×-Ñ-°Ó2Ø—L‘L×&Ô&ˆDØ××Ñà×$Ñ$ô —‘×%Ñ%×IÑIÈ$Ï)É)ÓTñ 'ô (¨°Ó@€FÜØñ
ô1ò
ð €Mr‡   c                ó>  • SSK Jn  UR                  SS5      (       a  U $ U(       aG  [        R                  " U5         [        U U[        R                  " U5      " U5      UUS9sSSS5        $ [        S U 5       5      (       a2  [        R                  R                  R                  R                  5         [        R                  (       d  [        R                  (       aÖ  SSKJn  [        R                  n[        R                  n	[        R                  " [!        5       5         ["        R$                  " U5         ['        U [(        5      (       a  [+        X5      OUn
[-        U
5      nU" X
0 U5       u  nnnnn[/        UU[0        R2                  " UUU	S	9UUS9sSSS5        sSSS5        sSSS5        $ [/        U UUUU5      $ ! , (       d  f       GNg= f! , (       d  f       O= f SSS5        O! , (       d  f       O= fSSS5        MW  ! , (       d  f       Ne= f)
a  
Main entry point for compiling given FX graph.  Despite the fact that this
lives in :mod:`torch._inductor`, this function is responsible for calling
into AOT Autograd (and we will eventually get a callback to
``inner_compile`` to perform actual compilation.  In other words, this
function orchestrates end-to-end compilation for the inductor backend when
you use :func:`torch.compile`.

NB: This function TAKES OWNERSHIP of the input ``model_`` and can potentially
mutate it!  Make a copy if you need to preserve the original GraphModule.
r   )ÚCompilerBisectorrç  Úpre_grad_graph©rx  ÚdecompositionsÚignore_shape_envNc              3  ó–   #   • U  H?  n[        U[        R                  5      =(       a    UR                  R                  S ;   v •  MA     g7f))rÿ   ÚxpuN)rÞ   rÊ   rá   r#  r�  )r«   rv  s     r…   r­   Úcompile_fx.<locals>.<genexpr>é	  s7   é € ð â ˆAô 	�1”e—l‘lÓ#×H¨¯©¯©¸Ñ(HÔHÚ ùs   ‚AA	)Ú_fakify_script_objects)r²  rÔ  )Ú!torch._inductor.compiler_bisectorræ  Údisable_subsystemr   r©  r~  r¥  rÊ   r5  r6  ÚAsyncCompileÚwakeupr²  rÔ  Útorch._export.non_strict_utilsrî  r©  ru   Úset_real_inputsrÞ   rN   Ú _extract_inputs_from_exported_gmr$   Ú_maybe_wrap_and_compile_fx_mainrM  rN  )r  r€  rx  rÃ  ré  rê  ræ  rî  Úcpp_wrapper_configÚfx_wrapper_configÚinputs_r¾  Úpatched_modÚ	fake_argsr!  s                  r…   r~  r~  Á	  sÅ  € õ, Cà×)Ñ)¨*Ð6F×GÑGàˆæÜ�\Š\˜.Õ)ÜØØä$Ÿlšl¨>Ô:¸=ÓIØ-Ø!1ñ÷ *Ñ)ô ñ á ó÷ ñ ô 	�‰×%Ñ%×2Ñ2×9Ñ9Ô;ä××œV×.×.ÝIä#×/Ñ/ÐÜ"×-Ñ-Ðô �LŠLÔ/Ó1Õ2Ü×Ò˜oÕ.ô ˜f¤k×2Ñ2ô 1°ÔIà$ð ô
 )¨Ó1ˆIÙ'¨¸¸YÔGñ LØØØØØä6ØØÜ"+×"3Ò"3Ø%Ø$6Ø#4ñ#ð
 $2Ø%5ñ
÷ HÐG÷ /Ð.÷ 3Ñ2ô8 +ØØØØØóð ÷i *Ö)ú÷B HÕGúÐG÷ /×.Ö.ú÷ 3×2×2úsM   ½'GÄ%HÄ<8G3Å4'GÆ	G3Æ$	HÇ
GÇ
G&Ç"G3Ç*	HÇ3
H	Ç=HÈ
Hc           
     óÌ  • U R                   R                   Vs/ s H/  o"R                  S:X  d  M  UR                  R	                  S5      PM1     nn[
        R                  (       d3  U Vs/ s H&  n[        U[        R                  5      (       a  UOS PM(     nn[        S U 5       5      (       aª  [        [        5       X15       H�  u  pVnUc  M  [        U[        R                  5      (       d  M,  [        U[        R                  5      (       d   eUR                  UR                  :w  d  Mi  [        SU SUR                   SUR                   S35      e   U$ U$ s  snf s  snf )Nr3  rÚ   c              3  ó(   #   • U  H  oS Lv •  M
     g 7fr€   r‰   )r«   Úvs     r…   r­   Ú3_extract_inputs_from_exported_gm.<locals>.<genexpr>*
  s   é € Ð
.¢+˜Q�D�=¢+ùs   ‚zBDevice mismatch between fake input and example input at position #z: z vs zx. If the model was exported via torch.export(), make sure torch.export() and torch.aot_compile() run on the same device.)rÜ   r  rÙ   rà   r²   r   rÔ  rÞ   rÊ   rá   r¥  r`  r
   r#  Ú
ValueError)rä   r€  rñ   Úfake_inputsÚinpr÷   Úfir  s           r…   rõ  rõ  
  s8  € ð *,¯©¯ªóÚ)7 ¿7¹7ÀmÑ;SÓˆ�	‰	�‰�eÖ©ð ð ô ××ñ
 GRó
ÚFQ¸s”:˜c¤5§<¡<×0Ñ0‰C°dÒ:Ákð 	ð 
ô Ñ
.¡+Ó
.×.Ñ.äœe›g {ÖD‰JˆC�QØ‹~¤*¨R´·±×">Ó">Ü! !¤U§\¡\×2Ñ2Ð2Ð2Ø—9‘9 §¡Õ(Ü$Ø\Ð]`Ð\aÐacØŸ9™9˜+ T¨!¯(©(¨ð 4cðcóð ñ	 Eð ÐàÐùò3ùò
s   ™E°EÁ*-E!c                óh  • [         R                  " [        UUUS9n[        U 5      (       d  [	        XU5      $ [        U [        5      (       a5  [        U R                  R                  [        5      (       a  [        XU5      $ [        S U 5       5      (       a  [        XU5      $ [        U UUUU5      $ )zâ
Part of compile_fx, called after patching configs.

Ultimately we want to call _compile_fx_main, where the actual work happens.
But under various conditions, various forms of wrapping might be needed
around _compile_fx_main.
rè  c              3  óX   #   • U  H   n[        U[        [        [        45      v •  M"     g 7fr€   )rÞ   rÎ   r=  r  rª   s     r…   r­   Ú2_maybe_wrap_and_compile_fx_main.<locals>.<genexpr>Y
  s!   é € Ð
G²°!Œ:�aœ$¤¤tÐ,×-Ð-²ùs   ‚(*)rM  rN  rö  Úgraph_returns_tupleÚmake_graph_return_tuplerÞ   rN   rÜ   Ú_codegenrY   Úhandle_dynamo_export_graphr¥  r&   Ú_compile_fx_main)r  r€  rx  ré  rê  Ú
compile_gms         r…   rö  rö  :
  s¯   € ô  ×"Ò"Ü'Ø#Ø%Ø)ñ	€Jô ˜v×&Ñ&Ü& vÀ
ÓKÐKä�&œ+×&Ñ&¬:Ø�‰×Ñœ~÷,ñ ,ô *¨&À:ÓNÐNä
Ñ
G±Ó
G×GÑGô $ F¸ZÓHÐHô ØØØØØóð r‡   c                ó6  ^ ^^^• [        [        R                  5         [        5          [        R
                  R                  R                  [        R                  R                  S:H  5         [        R                  R                  R                  5          [        T [        5      (       a  [!        T U5      m [        R"                  (       a   e[%        U5      m['        [        5      mUb  UO	[)        5       n        SUUU U4S jjn[*        R,                  " USS9n[/        [0        U5      n[        R2                  (       aW  [        R4                  " 5       (       d=  [*        R,                  " [6        T TTTR8                  TR:                  TR<                  S9nO%[*        R,                  " USS9n[/        [0        U5      n[?        SS	9      SUU4S
 jj5       n[/        [0        U5      n[A        U5      =(       d    [        RB                  RE                  SS9n	[        RF                  RH                  RK                  5       =(       d    [        RF                  RI                  U	5      n
[L        RN                  (       Gaì  [        RP                  (       GdÖ  SSK)J*n  U" 5         [V        RX                  " S[        RZ                  S9   []        T USUS9u  pÍ[        U[        5      (       d   eSSK/J0n  U" U5      n	URb                  Rd                   GH  nURf                  S:X  d  M  SURh                  ;  d  M(  [k        URl                  5      " U5      n[        U[        Rn                  5      (       a$  U	c   eU	Rq                  USS9URh                  S'   M†  [        U[        Rr                  5      (       d  [u        [w        U5      5      (       a9  [        Rx                  Rz                  R}                  U	U5      URh                  S'   M÷  [        U[~        5      (       d  GM  UURh                  S'   GM!     SSS5        [�        T WW5      nST Rh                  ;   a  T Rh                  S   URh                  S'   ST Rh                  ;   a  T Rh                  S   URh                  S'   [        R‚                  R…                  5       nU(       a  [        R‚                  R†                  O[ˆ        RŠ                  n[L        RŒ                  " U	5         [Ž        R�                  " 5          U" 5          U" UU5      sSSS5        sSSS5        sSSS5        sSSS5        sSSS5        sSSS5        sSSS5        $ [L        RŒ                  " U	5         [        RF                  R“                  U
5         [Ž        R�                  " 5          [V        RX                  " S[        RZ                  S9    [•        UUUU[–        STR8                  TR<                  US9	" T U5      sSSS5        sSSS5        sSSS5        sSSS5        sSSS5        sSSS5        sSSS5        sSSS5        $ ! , (       d  f       GN*= f! , (       d  f       O= fSSS5        O! , (       d  f       O= fSSS5        GM2  ! , (       d  f       GNA= f! [˜         a  nUR›                  5       SeSnAff = f! , (       d  f       O= f SSS5        O! , (       d  f       O= fSSS5        O! , (       d  f       O= fSSS5        O! , (       d  f       O= fSSS5        O! , (       d  f       O= fSSS5        O! , (       d  f       O= fSSS5        O! , (       d  f       O= fSSS5        g! , (       d  f       g= f)a)  
Main part of compile_fx, called after wrapping is done.

Roughly speaking, here the steps will be:
(1) apply pre-grad passes
(2) create `fw_compiler` and `bw_compiler` functions out of `inner_compile`
(3) call aot_autograd, which:
- (3a) creates a joint graph with `decompositions`,
- (3b) partitions it with `partition_fn` into fw and bw graphs (applying joint-graph passes),
- (3c) calls `fw_compiler` and `bw_compiler` on those graphs (applying post-grad passes)
- (3d) finally, assembles the fw and bw compiled functions back together and returns.
r[   Nc                óÜ   >• [         R                  " S5         [        T[        5      (       a  [	        T5      nO[	        U 5      n[        U UUTTTUS9sS S S 5        $ ! , (       d  f       g = f)Nz$compile_fx.<locals>.fw_compiler_base)rÊ  rš  rË  rx  r}  )r�   r%   rÞ   rN   r·  rÏ  )rä   ri  r}  rÊ  rË  rx  r  rš  s       €€€€r…   Úfw_compiler_baseÚ*_compile_fx_main.<locals>.fw_compiler_base•
  sa   ø€ ô
 ×*Ò*Ð+QÕRÜ˜f¤k×2Ñ2Ü-BÀ6Ó-JÑ*ä-BÀ2Ó-FÐ*Ü)ØØ"Ø+AØ'9Ø*?Ø"/Ø!-ñ÷ S×R×Rús   ˜;AÁ
A+Fr«  )r™  rš  rx  rÌ  rÐ  r›  TÚbackward)rä  c                ó~   >• [         R                  " S5         [        U UTTS9sS S S 5        $ ! , (       d  f       g = f)Nzcompile_fx.<locals>.bw_compiler)rË  rx  )r�   r%   rÔ  )rä   ri  rË  rx  s     €€r…   Úbw_compilerÚ%_compile_fx_main.<locals>.bw_compiler¾
  s5   ø€ ô
 ×)Ò)Ð*KÕLä*ØØ"Ø*?Ø"/ñ	÷ M×L×Lús   ˜.®
<r¶  )Úis_valid_aoti_model_name)Úunlift_effect_tokensÚselective_decompose)Útrace_jointré  r   )Ú_detect_fake_mode_from_gmr  rÚ   )Ústatic_shapesÚ dynamo_flat_name_to_original_fqnru  )	Úfw_compilerr  Úinference_compilerré  r´  Úkeep_inference_input_mutationsrÌ  rÓ  rê  )rä   rN   ri  rÝ  r}  rŸ   r  r?   )rä   rN   ri  rÝ  r  r?   )NrX   rî  rï  r   rÊ   r   rï  Úpreserve_node_metar   rí  rî  r5  rE  Úreset_provenance_globalsrÞ   rN   rä  Ú_raise_error_for_testingrõ   r½  ra   rM  rN  r/   r?   ÚfreezingÚis_grad_enabledr¦  rÌ  rÐ  r›  rM   r$   r¸  r¹  rË   rÌ   rÍ   ru   r1  Úenable_autograd_for_aotr   r  Úfunctorch_configr©  r  r,   Útorch._export.utilsr  rÜ   r  rÙ   rà   r   rë   rá   Úfrom_tensorÚScriptObjectrK   r�  Ú_libraryÚfake_class_registryÚmaybe_to_fake_objrJ   rT  Ú_CÚ_is_any_autocast_enabledÚ_DisableAutocastr¬  r­  ré  r   Ú_disableÚtracingrU   r´  rV   Úremove_dynamo_frames)r  r€  rx  ré  rê  r  r  r  r  r¾  r¡  r  rä   rE  r  rñ   rë   rS  Údisable_amprÓ   rv  rË  rš  s   ` `                  @@r…   r  r  h
  s	  û€ ô( 	œ}×BÑBÕCÜ Õ"Ü�‰×Ñ×-Ñ-Ü�L‰L×2Ñ2°aÑ7õ	
ô 	�‰×Ñ×6Ñ6Õ8ô �fœk×*Ñ*Ü(¨°ÓAˆFä×2×2Ð2Ð2ä  Ó1Ðä <¼VÓ DÐð -Ñ8‰NÔ>QÓ>Sð 	ð	Øð	à/ð	ð ð	ð ÷		ò 	ô* ×ÒÐ.¸UÑCð 	ô 6´jÀ+ÓNˆä�?�?¤5×#8Ò#8×#:Ñ#:Ü5>×5FÒ5FÜ$Ø#Ø#5Ø+Ø0×;Ñ;Ø.×7Ñ7Ø4×CÑCñ6Ñô "+×!2Ò!2Ð3CÐRVÑ!WÐÜ!@ÜÐ.ó"Ðô 
'°*Ñ	=ð	Øð	Ø-@ð	à÷	ó 
>ð	ô 6´jÀ+ÓNˆä$Øó
÷ Jä×Ñ×-Ñ-ÀDÐ-ÐIð 	ô �M‰M×(Ñ(×0Ñ0Ó2÷ 7Ü�}‰}×+Ñ+¨IÓ6ð 	ô
 ××Ð¤V×%C×%CÐ%CÝ7á$Ô&ä!×'Ò'Ø%)Ü$*×$>Ñ$>óô '8ØØ#Ø %Ø#1ñ	'Ñ#�ô " "¤k×2Ñ2Ð2Ð2ÝIá5°bÓ9�	ð ŸH™HŸN�N�DØ—w‘w *Õ,°¸d¿i¹iÕ1GÜ!+¨D¯K©KÔ!8¸Ó!<˜Ü% f¬e¯l©l×;Ñ;Ø#,Ñ#8Ð8Ð#8Ø/8×/DÑ/DØ &°dð 0Eð 0˜DŸI™I eÓ,ô (¨´×0BÑ0B×CÑCÄ~Ü  ›L÷Hñ Hô !&§¡× BÑ B× TÑ TØ$-¨vó!"ð !ŸI™I eÓ,ô
 (¨Ô0@×AÔAØ/5˜DŸI™I eÔ,ñ# +÷)ôN (¨°°OÓDˆKØ1°V·[±[Ó@ØGMÇ{Á{Ø6ñH�× Ñ Ð!CÑDð # f§k¡kÓ1Ø8>¿¹ÐDWÑ8X�× Ñ Ð!4Ñ5ô  Ÿ(™(×;Ñ;Ó=ˆKæ-8”—‘×)Ò)¼j×>TÑ>Tð ô —’ Õ+Ô->×-GÒ-GÕ-IÉ7Í9Ù)¨+°ÓG÷ LUÈ9×-IÐ-I×+Ð+÷i 	9Ð8÷	
ð 	
÷ 	#Ð"÷ 	DÑCôz �OŠO˜IÕ&Ü�M‰M×!Ñ! /Õ2Ü×&Ò&Õ(Ü×"Ò"Ø%)Ü$*×$>Ñ$>óð
9Ü#Ø +Ø +Ø'9Ø#1Ü!-Ø37Ø4×?Ñ?Ø/D×/SÑ/SØ%5ò
ð ˜/ó
+÷ð ÷ )Ð(÷ 3Ð2÷ 'Ð&÷q 	9Ð8÷	
ð 	
÷ 	#Ð"÷ 	DÑC÷~ö ú÷t LUÍ9ú×-I×-IÖ-Iú×+×+×+Ñ+ûô0 $ó 9ð ×,Ñ,Ó.°DÐ8ûð9ú÷#õ úð ÷ )×(Ö(ú÷ 3×2Ö2ú÷ '×&Ö&ú÷q 	9×8Ö8ú÷	
÷ 	
ö 	
ú÷ 	#×"Ö"ú÷ 	D×CÖCús�  ž^
©A]0Á.)]ÂH/\<	ËAYÌ&YÌ8C"YÐYÐ3C\<	ÔZÔZÔ#	Y(Ô,	ZÔ5	ZÔ>	\<	Õ	]Õ	]0Õ	^
Õ,\<	Ö \"Ö"\Ö8$[.×[×/Z0Ø	[.Ø	\Ø	\"Ø(	\<	Ø1	]Ø:	]0Ù	^
Ù
Y%Ù \<	Ù(
Y6Ù2ZÙ9	ZÚ
ZÚZÚ\<	Ú
Z-Ú(\<	Ú0
[Ú:[Û[Û[Û
[!Û[.Û%	\Û.
[<Û8\Û?	\"Ü
\Ü\"Ü	\<	Ü"
\0Ü,\<	Ü3	]Ü<
]
Ý]Ý	]0Ý
]$Ý ]0Ý'	^
Ý0
]>	Ý:^
Þ

^c                óø  • [        U [        5      (       d  g[        U 5      R                  u  n[        U[        [
        45      (       a  g[        U[        R                  R                  R                  5      (       a~  [        UR                  S5      (       ac  [        UR                  R                  R                  5      S:”  a6  [        S UR                  R                  R                   5       5      (       a  gg)z"True if a FX graph returns a tupleTÚ_schemar[   c              3  óR   #   • U  H  n[        UR                  5      S :H  v •  M     g7f)rá   N)r  r�  )r«   Úrets     r…   r­   Ú&graph_returns_tuple.<locals>.<genexpr>>  s   é € ÐOÒ5N¨c”�C—H‘H“ Ö)Ò5Nùs   ‚%'F)rÞ   rN   rr   rŠ   rÎ   r=  rÊ   r   rñ   rß   r!  rë   rõ   r4  ÚreturnsrM  )rä   Úrvs     r…   r  r  3  s©   € ä�bœ+×&Ñ&ØÜ˜‹O× Ñ �E€RÜ�"”tœU�m×$Ñ$Øä�2”u—x‘x—}‘}×)Ñ)×*Ñ*Ü�B—I‘I˜y×)Ñ)Ü�—	‘	×!Ñ!×)Ñ)Ó*¨QÓ.ÜÑO°R·Y±Y×5FÑ5F×5NÒ5NÓO×OÑOð Ør‡   c                ó¼  ^^• [        U 5      nUR                  u  n[        R                  " U5      u  nmU R                  R                  U5         U R                  R                  U5        SSS5        U R                  R                  U5        [        U 5      (       d   eU" X5      m[        R                  " T5      SUU4S jj5       nU$ ! , (       d  f       Ng= f)zu
Mutate gm so it returns a tuple.  This is only needed for graphs
not created by torchdynamo that return non-tuples.
Nc                 ó>   >• [         R                  " T" U 0 UD6T5      $ r€   )rB  Útree_unflatten)rŠ   r‹   r%  Úspecs     €€r…   r�  Ú(make_graph_return_tuple.<locals>.wrapperX  s    ø€ ä×$Ò$¡[°$Ð%A¸&Ñ%AÀ4ÓHÐHr‡   )rŠ   r   r‹   r   r  r   )rr   rŠ   rB  Útree_flattenrÜ   Úinserting_beforer×   r‡  r  rM  Úwraps)rä   r>  r  rñ   r9  r�  r%  r=  s         @@r…   r  r  E  s®   ù€ ô �r‹?€DØ�I‰I�E€RÜ×"Ò" 2Ó&�H€BˆØ	�‰×	"Ñ	" 4Õ	(Ø
�‰�‰˜Ô÷ 
)à‡H�H×Ñ˜ÔÜ˜r×"Ñ"Ð"Ð"á˜RÓ(€Kä‡_‚_�[Ó!÷Ió "ðIð €N÷ 
)Õ	(ús   ÁCÃ
Cc                ó4  ^^• U R                   R                  m[        R                  R                   R	                  5       U R                   l        U R                  5         U" U TR                  " U6 5      m[        R                  " T5      SUU4S jj5       nU$ )z…
`torch._dynamo.export` embeds pytrees in the FX graph codegen object,
convert that to a normal FX graph so inductor can compile it.
c                 óF   >• TR                  T" TR                  " U 6 6 5      $ r€   )Úprocess_outputsÚprocess_inputs)rŠ   r  r%  s    €€r…   r�  Ú+handle_dynamo_export_graph.<locals>.wrappern  s$   ø€ à×&Ñ&¡{°G×4JÒ4JÈDÐ4QÐ'RÓSÐSr‡   )rŠ   r   r  r   )	rÜ   r	  rÊ   r   ÚCodeGenrˆ  rE  rM  rA  )rä   r>  r  r�  r  r%  s       @@r…   r
  r
  _  su   ù€ ð �h‰h×Ñ€GÜŸ™Ÿ™×.Ñ.Ó0€B‡H�HÔØ‡L�L„Ná˜R ×!7Ò!7¸Ð!@ÓA€Kä‡_‚_�[Ó!÷Tó "ðTð €Nr‡   c                ó¶  • SS jn[         R                  " U R                  R                  5       U R                  5       H—  n[        U[        5      (       d  M  [        U5      nU(       a2  [        U5      (       a"  UR                  5       [        R                  :w  a  M`  [        U5      nUR                  SS9(       a    g U" UR                  5       5        M™     g )Nc                óº   • SSK Jn  U c   e[        U R                  5      nUR	                  U 5      n[
        R                  " UR                   S35        U" S5      e)Nr   )rW   z9 does not support bfloat16 compilation natively, skippingzBF16 is not supported)Útorch._dynamo.excrW   r   r�  Úget_device_propertiesr  r  r½   )r#  rW   Údevice_interfaceÚdevice_propss       r…   Úwarn_and_skipÚ1_check_triton_bf16_support.<locals>.warn_and_skipv  s\   € Ý/àÑ!Ð!Ð!ä3°F·K±KÓ@ÐØ'×=Ñ=¸fÓEˆÜ�ŠØ× Ñ Ð!Ð!ZÐ[ô	
ñ Ð/Ó0Ð0r‡   F)Úincluding_emulation)r#  úOptional[torch.device]r  r   )Ú	itertoolsÚchainÚgraph_inputsrD  rý  rÞ   ri   rh   rF   Ú	get_dtyperÊ   Úbfloat16r   Úis_bf16_supportedÚ
get_device)rÜ   rN  rñ   rÅ  rL  s        r…   r  r  u  s¢   € ô
1ô —’ × 2Ñ 2× 9Ñ 9Ó ;¸U×=PÑ=PÖQˆÜ˜$¤×'Ñ'ÙÜ% dÓ+ˆæÜ˜+×&Ñ&Ø�~‰~Ó¤5§>¡>Ó1áô 4°KÓ@ÐØ×-Ñ-À%Ð-ÖHÙÙ�d—o‘oÓ'Ö(ò Rr‡   )Úoptionsc               óš  • SSK Jn  U" U 5      (       d   S5       eSnSn[        U R                  R                  [
        R                  R                  R                  5      (       a¸  U R                  R                  n[
        R                  R                  R                  5       U R                  l        U R                  5         UR                  R                  b  UR                  R                  nUR                  R                  b  UR                  R                  nO:[        U S5      (       a  U R                  n[        U S5      (       a  U R                  nUb  [         R"                  " U5      OSnUb  [         R"                  " U5      OSn	[         R$                  " X=(       d    0 45      u  p«['        S U
 5       5      (       a  S	S
KJnJn  U" UR.                  S5      eU
 Vs/ s H,  n[        US   [
        R0                  5      (       a  US   OSPM.     nnUb  Xµ:w  a  [3        SU SU 35      eUc  UU	S.O0 UEUU	S.EnXó4$ s  snf )z­
Flatten the inputs to the graph module and return the flat inputs and options.
Add "aot_inductor.serialized_in_spec" and "aot_inductor.serialized_out_spec" to the options.
r[   )r  zŽGraph output must be a tuple(). This is so that we can avoid pytree processing of the outputs. Please change the module to have tuple outputs.NÚ_in_specÚ	_out_specÚ c              3  ó\   #   • U  H"  n[        US    [        R                  5      v •  M$     g7f)r[   N)rÞ   rÊ   r(  rª   s     r…   r­   Ú'_aoti_flatten_inputs.<locals>.<genexpr>Ä  s&   é € Ð
MÒ9L°AŒ:�a˜‘dœE×.Ñ.×/Ð/Ò9Lùs   ‚*,r   )Ú	UserErrorÚUserErrorTypez†TorchBind objects found in inputs. TorchBind object inputs are not supported in AOTInductor. TorchBind objects can only be attributes.z>Trying to flatten user inputs with exported input tree spec: 
z-
but actually got inputs with tree spec of: 
)zaot_inductor.serialized_in_specz aot_inductor.serialized_out_spec)r~  r  rÞ   rÜ   r	  rÊ   r   rY   rG  rˆ  Úpytree_infoÚin_specÚout_specr!  r[  r\  rB  Útreespec_dumpsÚtree_flatten_with_pathr¥  rJ  r`  ra  ÚINVALID_INPUTrá   r   )rä   rŠ   r‹   rY  r  rc  rd  r  Úserialized_in_specÚserialized_out_specÚflat_args_with_pathÚreceived_specr`  ra  r¬   Úflat_example_inputss                   r…   Ú_aoti_flatten_inputsrm  ”  s5  € õ 0á˜r×"Ñ"ð ð	óÐ"ð €GØ€HÜ�"—(‘(×#Ñ#¤U§X¡X§^¡^×%BÑ%B×CÑCØ—(‘(×#Ñ#ˆÜ!ŸH™HŸN™N×2Ñ2Ó4ˆ�‰ÔØ
�‰Œà×Ñ×&Ñ&Ñ2Ø×)Ñ)×1Ñ1ˆGØ×Ñ×'Ñ'Ñ3Ø×*Ñ*×3Ñ3ˆHøô �2�z×"Ñ"Ø—k‘kˆGÜ�2�{×#Ñ#Ø—|‘|ˆHà;BÑ;Nœ×.Ò.¨wÔ7ÐTVÐà+3Ñ+?Œ×Ò˜hÔ'ÀRð ô *0×)FÒ)FØ	�|˜Ðó*Ñ&Ðô Ñ
MÑ9LÓ
M×MÑMß>áØ×'Ñ'ð8ó
ð 	
ñ CVóÚBU¸Q”
˜1˜Q™4¤§¡×.Ñ.ˆˆ!Š°DÒ8ÑBUð ð ð Ñ˜}Ó7ÜØMØˆið <àˆoðó
ð 	
ð ‰?ð 0BØ0Cò	
ð

Øð
à/AØ0Cò
ð ð Ð'Ð'ùò1s   Ç&3I)r„   r  r  z.Callable[[Callable[_P, _T]], Callable[_P, _T]])rŠ   r»  r‹   r»  r  ru  )r  rœ   )r  zlist[dict[str, Any]])rÒ   r  r  ú	list[int])rä   rN   r  ru  )r  zCallable[..., None]r‘  )r(  rN   rä   rN   r  ru  )r(  rN   rä   rN   rE  r�   r  rN   )F)rä   rN   rZ  rŸ   r  zGenerator[str, None, None])rä   rN   ri  rÝ  r  rN   )FN)rä   rN   rZ  rŸ   rq  rQ  r  rN   )rä   rN   r}  rŸ   r  ru  )TNN)
rä   rN   r‰  rŸ   rŠ  zOptional[list[str]]r‹  z)Optional[Callable[[torch.fx.Node], bool]]r  z"tuple[GraphModule, dict[str, int]])rä   rN   r  rŸ   )ri  rÝ  r  ú"AbstractContextManager[None, None])r²  rŸ   r³  rŸ   r  ro  )rä   rN   ri  rÝ  r½  rŸ   r  z torch._subclasses.FakeTensorModer€   )rÃ  z$Optional[Union[str, dict[str, Any]]]r  zdict[str, Any])r  zGenerator[None, None, None]rÜ  )rä   rN   ri  rÝ  rf  rÞ  r  r?   )
rä   rN   ri  rÝ  rh  rÍ  rf  rÞ  r  r?   )r>  rÝ  rÎ  rÍ  r  rÍ  )r‰   )rI  úCallable[..., Any]rÎ  rÍ  rD  r  rE  zlist[Optional[str]]rÏ  rŸ   r}  rŸ   r  ztuple[torch.Tensor, ...]r@  zSequence[PlaceholderInfo]rA  ztuple[int, ...]r  rp  )r¬   útorch.Tensorr  rq  )rW  rq  rX  rq  rY  rn  r  ru  )rI  rp  r>  zlist[torch.Tensor]rÎ  rÍ  r  rj  )
r  rN   r€  ri  rx  r×  rÃ  úOptional[dict[str, Any]]r  z2Union[list[Union[str, Weights]], str, GraphModule])r—  rN   r˜  rÝ  r™  rN   rš  r  rx  rp  rÌ  rA   rÐ  r  r›  r3   r  z0Callable[[list[object]], Sequence[torch.Tensor]])r  zdict[str, object])rä   útorch.fx.GraphModuler  zAbstractContextManager[None])rä   rN   r³  zSequence[object]r‹   r»  r  ztuple[GraphModule, GraphModule])rI  rN   r  r  )r   ztypes.ModuleTyper  rº  )rä   rN   ri  rÝ  rÊ  r  rš  r  rË  rº  rx  úCallable[..., OutputCode]r}  rŸ   r  r?   )
rä   rN   ri  rÝ  rË  rº  rx  rt  r  r?   )r  rN   r€  rÝ  r  rN   )r  rN   r€  rÝ  rx  rt  rÃ  rr  ré  ú.Optional[dict[OpOverload, Callable[..., Any]]]rê  rŸ   r  ÚCompileFxOutput)rä   rN   r€  rÝ  r  rÝ  )r  rN   r€  rÝ  rx  rt  ré  ru  rê  rŸ   r  rv  )rä   rN   r>  rÝ  r  rp  r  rp  )rÜ   rg   r  ru  )
rä   rs  rŠ   z!Union[list[Any], tuple[Any, ...]]r‹   rr  rY  rr  r  z tuple[list[Any], dict[str, Any]](!  Ú
__future__r   r¬  rÜ  ÚenumrM  rà  rR  r  r   r°   rÝ  rL  r  Úabcr   r   Úcollectionsr   r   Údataclassesr   Úinspectr	   r
   Úoperatorr   Útypingr   r   r   r   r   Útyping_extensionsr   r   r   r   r   r   Úunittestr   Útorch._inductor.async_compilerÊ   Útorch.fxÚtorch.utils._pytreer   Ú_pytreerB  Úfunctorch.compiler   r   Útorch._dispatch.pythonr   Útorch._dynamor   r   rî  rù   r�   Útorch._dynamo.device_interfacer   Útorch._dynamo.repro.after_aotr    r<  r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   Útorch._functorchr%  Ú7torch._functorch._aot_autograd.subclass_parametrizationr+   Útorch._functorch.aot_autogradr,   r-   r.   r/   Útorch._inductor.codecacher0   r1   r2   r  r3   r4   r5   r6   Ú!torch._inductor.custom_graph_passr7   Útorch._inductor.debugr8   r9   Útorch._inductor.output_coder:   r;   r<   r=   r>   r?   Ú'torch._inductor.runtime.cache_dir_utilsr@   Útorch._inductor.utilsrA   rB   rC   rD   rE   rF   rG   rH   rI   Ú"torch._library.fake_class_registryrJ   Útorch._library.opaque_objectrK   Útorch._loggingrL   Útorch._utils_internalrM   rN   Ú%torch.fx.experimental.symbolic_shapesrO   rP   Ú torch.fx.passes.fake_tensor_proprQ   Útorch.monitorrR   Útorch.utils._ordered_setrS   Ú_dynamo.backends.commonrU   Ú_dynamo.excrV   rW   Úfx._lazy_graph_modulerX   Úfx.graphrY   Úutils._tritonrZ   r]  r\   r]   Úcodegen.commonr^   r_   rE  r`   Údecompositionra   Úexcrb   Úfx_passes.joint_graphrc   Úfx_passes.post_gradrd   re   Úfx_passes.pre_gradrf   rÜ   rg   Úirrh   ri   Úoutput_coderj   Útriton_bundlerrk   rl   rm   rn   ro   rp   rq   rr   rs   rt   Úvirtualizedru   Úcollections.abcrv   rw   rx   ry   Ú
torch._opsrz   Ú)torch.export.pt2_archive._package_weightsr{   r|   r}   r~   rõ  r†   rŒ   Útorch._inductor.fb.utilsÚtypesÚ&torch._functorch._aot_autograd.schemasr�   rŽ   r�   rÎ   r»  rá   r  rv  ÚEnumr‘   rœ   rÀ   rÃ   Ú_fx_compile_configrž   r4  r    r7  r¡   r9  r·   r“   r¿   Ú_loggingÚgetArtifactLoggerr§  râ  rì  rD  r  rÕ   rç   rð   rö   Ú	lru_cacherû   Úcacher  r.  rT  r_  ra  rp  rz  r”  rŸ  r¯  r´  rÀ  rÄ  ÚcontextmanagerrÉ  rË  r×  rà  rñ  r�  r‡  r•  r  rF  rP  rT  rZ  rC  rv  r¼  r¦  r©  rê  r´  r·  rº  r½  rÏ  rÔ  rä  r~  rõ  rö  r  r  r  r
  r  rm  r‰   r‡   r…   Ú<module>r·     s
  ðÝ "ã Û Û Û Û 	Û Û Û Û 	Û 
Û Û ß #Ý #Ý -Ý !Ý  Ý Ý ß ?Õ ?ß U× UÝ ã $Û ß $Ð $Ý AÝ Ý ;÷ó õ DÝ =÷÷ ÷ õ 8õ÷ó ÷ OÑ N÷ó õ B÷÷÷ õ >÷
÷ 
õ 
õ @Ý 7Ý +Ý ?Ý  ß WÝ ;Ý &Ý /å 2ß 5Ý :Ý %Ý &ß 3Ñ 3ß UÝ Ý .Ý Ý 5ß BÝ /Ý  ß 'Ý /Ý )÷
÷ 
õ 
õ ö ß=Ñ=å:Ý%ÝAå$ñ ˆtƒ_€ÙˆTƒ]€æ˜×(Ó(×*Ñ*ô%õ÷ LæÛ÷ñ ð Ø�$�v‘,� ¨%¯,ª,Ñ!7Ð7Ñ8ØØˆS‰	Øð	ñ€Oô�D—I’Iô ð ÷ð ó ðôCôDñ .Ó/Ð Ø$×)Ò)€Ø%×/Ò/Ð Ø+×;Ò;Ð à×Ó˜Ó!€Ø—’×0Ò0°¸<ÓH€Ø—n’n×6Ò6°xÐARÓSÐ Ø—~’~×7Ò7¸ÐBTÓUÐ Ø—N’N×4Ò4ØÐ'óÐ ð —~’~×7Ò7¸ÐBTÓUÐ ô
4ôAô,'ô=ð  ×Ó�TÓó/ó ð/ð ‡‚ó	
ó ð	
ôH/ðVMØ	ðMØ%ðMØ8FðMàôMðb 38ð!Øð!Ø+/ð!àõ!ð0NØðNà'ðNð ôNð0 "'Ø+/ð'Øð'àð'ð )ð'ð õ	'öT+ð" "Ø15ØFJð	E(ØðE(àðE(ð /ðE(ð Dð	E(ð
 (õE(ôPð*(Ø'ð(à'ô(ð.	(Øð	(Ø!%ð	(à'ô	(ð ).ðØðà'ðð "&ðð &õ	ð@ <@ð(Ø8ð(àõ(ð ×Òóó ðô�y¨ò ô˜õ ð+
Øð+
à'ð+
ð 'ð+
ð õ	+
ñ\ Ð2Ñ3ðXØðXà'ðXð -ðXð ó	Xó 4ñX÷v
Bò Bô#�õ #ô4R™)õ Rðj2YØð2Yà'ð2Yð
 #ð2Yð -ð2Yð õ2Yðj Øð à$ð ð õ ðJ (*ð)ð +-Ø.0Ø*,ñ)Øð)à$ð)ð ð	)ð
 &ð)ð ð)ð ð)ð (ð)ð ,ð)ð (ð)ð ÷)õXUðØ	ðà	ðð ðð 
õ	ð (*ð_MØð_Màð_Mð %ð_Mð &ö	_MñJ )9Ø/3ð	@+Øð@+à$ð@+ð &ð@+ð -ð	@+ð
 8ö@+ñF �q“�ðfØ#ðfà+ðfð ðfð ð	fð
 &ðfð ðfð ðfð %ðfð 6õfõRõ&ð$+Øð+à"ð+ð ð+ð %õ	+õ\ñ �$Ñ÷%ð %ó ñ%õñ: 0@ØðlØðlà'ðlð  ðlð ð	lð
 /ðlð -ðlð ðlð ölñf 0@ð	+Øð+à'ð+ð /ð+ð -ð	+ð
 ö+ð\/Øð/Ø*=ð/àõ/ñj 0@Ø/3ØEIØ"ðWØðWà(ðWð -ðWð -ð	Wð
 CðWð ðWð öWðtØðØ&9ðàõð>+Øð+à(ð+ð -ð+ð Cð	+ð
 ð+ð õ+ð\H9ØðH9à(ðH9ð -ðH9ð Cð	H9ð
 ðH9ð õH9õVð$Øðàðð #ðð õ	ð4Øðàðð #ðð õ	õ,)ðD (,ðS(ð
 )-ñS(ØðS(à
+ðS(ð %ðS(ð
 &ðS(ð &÷S(ð S(r‡   