+
    –°³j ã                  ó€  € ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIHt ^ RIHt ^ RIHtHtHtHtHt ^ RIt^ RIHt ^ RIt^ RIt^ RIt^ RIHtHt ^ RIHt ^ R	IH t H!t! ^ R
I"H#t# ^ RI$H%t%H&t&H't' ^ RI(H)t) ^ RIH*t*H+t+ ^ RI,H-t-H.t. ^ RI/H0t0 ^ RI1H2t2 ^ RI3H4t4 ^ RI5H6t6H7t7H8t8H9t9H:t:H;t;H<t<H=t= ^ RI>H?t? ^ RI@HAtA ^ RIBHCtC ^ RIDHEtE ^ RIFHGtG ^ RIHHItI ^RIJHKtKHLtL ^RIMHNtNHOtOHPtPHQtQHRtRHStSHTtTHUtU ^RIVHWtWHXtXHYtYHZtZ ^RI[H\t\ ^RILH]t]H^t^H_t_H`t`HataHbtbHctcHdtdHeteHftfHgtgHhthHiti ^RIjHktkHltlHmtmHntnHotoHptpHqtqHrtrHstsHtttHutuHvtvHwtw ^RIxHyty ^R IzH{t{ ^R!I|H}t} ^R"I~HtH€t€H�t�H‚t‚HƒtƒH„t„H…t…H†t†H‡t‡HˆtˆH‰t‰HŠtŠ ^R#I‹HŒtŒH�t� ]'       d@   ^ R$IŽH�t�H�t�H‘t‘H’t’ ^ R%I“H”t” ^ R&I•H–t– ^ R'IH—t— ^ R(I˜H™t™ ^R)IšH›t› ^R*IœH�t� ^R+IžHŸtŸ ]”]P,          t ^ R,I¡H¢t¢ ]EPF                  ! ]¤4      t¥]EPL                  EPO                  ]¤R-4      t¨]EPR                  EPT                  tª]EPV                  ! 4       t¬]KEPZ                  ! 4       '       d   ^ R.I®H¯t¯ ^ R/I°H±t± MR0 R1 lt±R2 R3 lt¯R4 R5 lt²R6 R7 lt³R8 R9 lt´R: R; ltµR< R= lt¶R> R? lt·R@ RA lt¸RB RC lt¹ ! RD RE]EPt                  EPv                  4      t¼ ! RF RG]¼4      t½R# )Hé    )ÚannotationsN)Údefaultdict)Úcontextmanager)ÚAnyÚcastÚLiteralÚNoReturnÚTYPE_CHECKING)ÚExpr)ÚdeviceÚTensor)Úget_decompositions)ÚdefakeÚdynamo_timed)ÚFakeScriptObject)Úis_custom_classÚis_opaque_constant_typeÚis_opaque_symbolic_type)Úget_layout_constraint_tag)Ú
LazyStringÚtrace_structured)Úcompute_required_storage_lengthÚmake_channels_last_strides_for)Úis_fake_tensor)Úfull_aoti_runtime_assert)ÚBackwardState)Ú_get_placeholder_exprÚfree_unbacked_symbolsÚhas_free_symbolsÚresolve_unbacked_bindingsÚRuntimeAssertÚShapeEnvÚSympyBooleanÚSymTypes)ÚNode)Ú_is_view_op)Úno_dispatch)Ú
OrderedSet)Úint_oo)Únot_none)ÚconfigÚir)ÚBackendFeatureÚDeviceOpOverridesÚFileBackedGraphModuleÚget_backend_featuresÚget_device_op_overridesÚget_wrapper_codegen_for_deviceÚinit_backend_registrationÚWorkspaceArg)ÚCppWrapperCodegenErrorÚLoweringExceptionÚMissingOperatorWithDecompÚMissingOperatorWithoutDecomp)Úcount_flops_fx)Úassign_origin_nodeÚConstantÚDonatedBufferÚFixedLayoutÚget_device_typeÚGraphPartitionSignatureÚInputBufferÚ	PointwiseÚ	ReductionÚShapeAsConstantBufferÚ
StorageBoxÚ	TensorBoxÚTorchBindObject)Úconstrain_to_fake_tensorsÚconstrain_to_fx_stridesÚFALLBACK_ALLOW_LISTÚfallback_handlerÚ%fallback_node_due_to_unsupported_typeÚ	loweringsÚmake_fallbackÚmaybe_layout_constraintsÚneeds_realized_inputsÚrequire_contiguousÚtag_to_layout_constraintÚunsupported_output_tensorÚuser_lowerings)Úautotune_cache)ÚAutotuneCacheBundler)ÚSizeVarAllocator)Úgather_originsÚ get_cloned_parameter_buffer_nameÚget_donated_idxsÚget_sympy_Expr_dtypeÚGraphPartitionMapÚis_same_tensorÚ#maybe_get_suppress_shape_guards_ctxÚnormalize_nameÚshould_assume_input_alignedÚshould_fallback_by_defaultÚSUPPORTED_MKLDNN_DEVICESÚValueWithLineMap)ÚNullHandlerÚV)ÚCallableÚIterableÚIteratorÚSequence)Ú
ModuleType)Ú_EffectType)ÚGraphModule)ÚGraph)ÚPythonWrapperCodegen)ÚDep)ÚBaseSchedulerNode)Úoutput_code_logÚ
perf_hints)Ú save_triton_kernel_perf_artifact)Úlog_module_codec               ó$   € V ^8„  d   QhRRRRRR/# ©é   Úargsr   ÚkwargsÚreturnÚNone© )Úformats   "ÚV/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_inductor/graph.pyÚ__annotate__r~   ž   s!   € ÷ ñ ˜sð ¨cð °dñ ó    c                 ó   € R # ©Nr{   ©rw   rx   s   *,r}   rs   rs   ž   ó   € Ùr   c               ó$   € V ^8„  d   QhRRRRRR/# ru   r{   )r|   s   "r}   r~   r~   ¡   s!   € ÷ ñ °ð ¸sð Àtñ r   c                 ó   € R # r�   r{   r‚   s   *,r}   rr   rr   ¡   rƒ   r   c               ó    € V ^8„  d   QhRRRR/# )rv   Úconstant_bufferú
sympy.Exprry   ztorch.dtype | Noner{   )r|   s   "r}   r~   r~   ¥   s   € ÷ ñ °:ð ÐBTñ r   c                ó(  € \        V \        P                  \        P                  \        P                  P
                  P                  34      '       g   \        R 4      h\        V \        P                  P
                  P                  4      '       d   \        P                  # \        V \        P                  4      '       d   \        V 4      # V P                  '       d   \        P                  # V P                  '       d   \        P                  # R# )zgget_constant_buffer_dtype only supports input of sympy.Symbol, sympy.Expr or sympy.core.numbers.IntegerN)Ú
isinstanceÚsympyÚSymbolr   ÚcoreÚnumbersÚIntegerÚAssertionErrorÚtorchÚint64rZ   Ú
is_integerÚis_floatÚfloat32)r‡   s   &r}   Úmay_get_constant_buffer_dtyper–   ¥   s¹   € ÜØœ%Ÿ,™,¬¯
©
´E·J±J×4FÑ4F×4NÑ4NÐO÷ò ô Øuó
ð 	
ô �/¤5§:¡:×#5Ñ#5×#=Ñ#=×>Ò>Ü�{‰{Ðä�/¤5§:¡:×.Ò.Ü# OÓ4Ð4à×!×!Ð!Ü�{‰{ÐØ	×	!×	!Ð	!Ü�}‰}Ðár   c               ó$   € V ^8„  d   QhRRRRRR/# )rv   Úobjrk   ÚtargetÚstrry   z,Tensor | torch._C.ScriptObject | GraphModuler{   )r|   s   "r}   r~   r~   º   s$   € ÷ ñ Ø	ðØ!ðà1ñr   c           	     óÌ   € VP                  R 4      pT p\        V4       FA  w  rE\        W54      '       g!   \        RR P	                  VRV 4       24      h\        W54      pKC  	  V# )Ú.z#Node referenced nonexistent target N)ÚsplitÚ	enumerateÚhasattrÚRuntimeErrorÚjoinÚgetattr)r˜   r™   Útarget_atomsÚattr_itrÚiÚatoms   &&    r}   Úgetattr_recursiver§   º   sn   € ð —<‘< Ó$€LØ€HÜ˜\Ö*‰ˆÜ�x×&Ò&ÜØ5°c·h±h¸|ÈBÈQÐ?OÓ6PÐ5QÐRóð ô ˜8Ó*Šñ +ð €Or   c               ó    € V ^8„  d   QhRRRR/# )rv   Úgrl   ry   údict[Node, tuple[int, ...]]r{   )r|   s   "r}   r~   r~   È   s   € ÷ ñ  uð Ð1Lñ r   c                óª  € / pV P                  R R7      ^ ,          pRVP                  9  d   V# \        VP                  ^ ,          \        P
                  P                  4      '       g   VP                  ^ ,          pMVP                  p\        V4       F:  w  rEWBP                  R,          9   g   K  VP                  R,          V,          W&   K<  	  V# )Úoutput©ÚopÚuser_visible_output_idxsÚoriginal_output_strides)Ú
find_nodesÚmetarŠ   rw   r‘   Úfxr%   rž   )r©   ÚretÚoutput_nodeÚoutput_node_argsÚidxÚnodes   &     r}   Úget_user_visible_output_stridesr¹   È   s¯   € Ø')€CØ—,‘, (�,Ó+¨AÕ.€Kà!¨×)9Ñ)9Ô9Øˆ
ä�k×&Ñ& qÕ)¬5¯8©8¯=©=×9Ò9Ø&×+Ñ+¨AÕ.Ñà&×+Ñ+ÐäÐ/Ö0‰	ˆØ×"Ñ"Ð#=Õ>Ö>Ø#×(Ñ(Ð)BÕCÀCÕHˆC‹Iñ 1ð €Jr   c               ó    € V ^8„  d   QhRRRR/# ©rv   Útútorch.Tensorry   Úboolr{   )r|   s   "r}   r~   r~   Ú   s   € ÷ Rñ R \ð R°dñ Rr   c                ó®   € V P                   P                  R 8H  ;'       d6    V P                  \        P                  8H  ;'       d    V P                  4       # )Úcpu)r   ÚtypeÚlayoutr‘   ÚstridedÚ	is_pinned©r¼   s   &r}   Ú_is_cpu_strided_tensor_pinnedrÆ   Ú   s8   € Ø�8‰8�=‰=˜EÑ!×QÐQ a§h¡h´%·-±-Ñ&?×QÐQÀAÇKÁKÃMÐQr   c               ó    € V ^8„  d   QhRRRR/# )rv   Úuser_visible_outputsrª   ry   zdict[Node, object]r{   )r|   s   "r}   r~   r~   Þ   s   € ÷ ñ Ø5ðàñr   c                óú  € / V Cp. VP                  4       Op\        . VO4      pV'       dÐ   VP                  4       p\        VP                  4      '       g   K5  VP
                  '       g   KI  \        VP
                  ^ ,          \        P                  P                  4      '       g   K†  VP
                  ^ ,          pWS9  g   K¡  VP                  VR4       VP                  V4       VP                  V4       K×  V# )z[
Extend user_visible_output_strides to include view ops that lead to user-visible outputs.
N)Úkeysr(   Úpopr&   r™   rw   rŠ   r‘   r³   r%   Ú
setdefaultÚaddÚappend)rÈ   ÚresultÚqueueÚvisitedÚcurrentÚbases   &     r}   Ú"extend_user_visible_output_stridesrÔ   Þ   s°   € ð ":Ð$8Ð!9€FØˆf�k‰k‹mÐ€EÜ˜˜5˜Ó"€Gß
Ø—)‘)“+ˆä˜Ÿ™×'Ô'Ø——’Ü˜7Ÿ<™<¨�?¬E¯H©H¯M©M×:Ô:à—<‘< •?ˆDØÖ"Ø×!Ñ! $¨Ô-Ø—‘˜DÔ!Ø—‘˜TÖ"Ø€Mr   c               ó$   € V ^8„  d   QhRRRRRR/# )rv   r©   rl   Úuser_visible_output_stridesrª   ry   rz   r{   )r|   s   "r}   r~   r~   ö   s)   € ÷ _3ñ _3Øð_3Ø+Fð_3à	ñ_3r   c                ó¾  € \         P                  '       g   R# \        V4      p\        \        P
                  \        P                  \        P                  \        P                  .4      p\        \        P                  \        P                  \        P                  \        P                  \        P                  \        P                  \        P                  \        P                   \        P"                  \        P$                  \        P&                  \        P(                  .4      pR R lp\+        V P,                  4       EF“  p\/        VP0                  \2        P4                  P6                  P8                  4      '       d   RVP:                  R&   KS  \/        VP0                  \2        P<                  P>                  4      '       dN   \A        VP0                  4      \2        PB                  PD                  PF                  8X  d   RVP:                  R&   KÔ  V! V4      pV'       g   Kæ  Ws9   d   RVP:                  R&   VP:                  PI                  RR4      '       d=   VPJ                   F,  pV! V4      p	V	'       g   K  W”9  g   K  RVP:                  R&   K.  	  \         PL                  '       d   EKr  Wb9   g   EK{  Wt9  g   EK„  RVP:                  R&   EK–  	  R# )ar  
Nodes like convolution/convolution_backward want its input to be dense.
If we pad their inputs, we result in extra calls to copy kernels!  On the other hand, padding usually helps reduction.

The pass finds nodes that dislike padding. These are nodes that can be reached
from a convolution/convolution_backward in the backward direction without
going thru a reduction.
Nc               ó    € V ^8„  d   QhRRRR/# )rv   r¸   útorch.fx.Nodery   z"torch._ops.OpOverloadPacket | Noner{   )r|   s   "r}   r~   Ú0mark_nodes_dislike_padding.<locals>.__annotate__!  s   € ÷ 

ñ 

Øð

à	+ñ

r   c                óô   € V P                   R 8X  dg   \        V P                  \        P                  P
                  4      '       d3   \        V P                  R4      '       d   V P                  P                  # R# )Úcall_functionÚ_overloadpacketN)r®   rŠ   r™   r‘   Ú_opsÚ
OpOverloadrŸ   rÝ   )r¸   s   &r}   Ú_get_overload_packetÚ8mark_nodes_dislike_padding.<locals>._get_overload_packet!  s[   € ð
 �w‰w˜/Ô)ä˜4Ÿ;™;¬¯
©
×(=Ñ(=×>Ò>Ü˜Ÿ™Ð%6×7Ò7ð	 �K‰K×'Ñ'ð	
ð ð	
r   TÚdislike_paddingF)'r+   Úcomprehensive_paddingrÔ   r(   ÚatenÚconvolutionÚconvolution_backwardÚ
_scaled_mmÚ_scaled_mm_v2Úvar_meanÚsumÚmeanÚprodÚanyÚaminÚamaxÚminÚmaxÚargminÚargmaxÚscatter_reduceÚreversedÚnodesrŠ   r™   r‘   Ú_higher_order_opsÚtriton_kernel_wrapÚTritonKernelWrapperMutationr²   rÞ   rß   r   Ú_CÚTagÚneeds_exact_stridesÚgetÚall_input_nodesÚpad_outputs)
r©   rÖ   Úextended_user_visible_nodesÚops_dislike_paddingÚops_like_paddingrà   Úcurr®   ÚpriorÚprior_ops
   &&        r}   Úmark_nodes_dislike_paddingr  ö   s  € ô ×'×'Ð'Ùä"DØ#ó#Ðô %ä×ÑÜ×%Ñ%Ü�O‰OÜ×Ñð		
óÐô "ä�M‰MÜ�H‰HÜ�I‰IÜ�I‰IÜ�H‰HÜ�I‰IÜ�I‰IÜ�H‰HÜ�H‰HÜ�K‰KÜ�K‰KÜ×Ñð	
óÐõ"

ô ˜Ÿ™× ˆÜØ�J‰JÜ×#Ñ#×6Ñ6×RÑR÷
ò 
ð +/ˆC�H‰HÐ&Ñ'Ùô �s—z‘z¤5§:¡:×#8Ñ#8×9Ò9Ü)¨#¯*©*Ó5Ü�x‰x�|‰|×/Ñ/ô0ð +/ˆC�H‰HÐ&Ñ'Ùá! #Ó&ˆßÙØÔ$Ø*.ˆC�H‰HÐ&Ñ'à�8‰8�<‰<Ð)¨5×1Ò1à×,Ô,�Ù/°Ó6�ßÙØÖ3Ø48�E—J‘JÐ0Ó1ñ -ô ×!×!Ó! c×&Hð ×)Ø.2�—‘Ð*Ô+óQ !r   c               ó    € V ^8„  d   QhRRRR/# )rv   r¸   r%   ry   r¾   r{   )r|   s   "r}   r~   r~   X  s   € ÷ ñ ˜ð  $ñ r   c                ó*  € \        \        P                  R R4      Eeu   \        \        P                  P                  RR4      EeM   \	        V P
                  \        P                  4      '       Ed"   \        V P
                  P                  4      ^ 8”  dþ   \        V P
                  P                  ^ ,          R4      '       dÑ   V P
                  P                  ^ ,          P                   F¥  pVP                  ^ ,          \        P                  P                  P                  P                  \        P                  P                  P                  P                  \        P                  P                  P                   P                  39   g   K¤   R# 	  R# )ÚmkldnnNÚ_convolution_pointwiseÚtargetsTF)r¢   r‘   Úopsr	  rŠ   r™   Ú	functoolsÚpartialÚlenrw   rŸ   r  Úfnsr
  ÚdefaultÚbinaryÚ_convolution_pointwise_)r¸   r™   s   & r}   Úis_mkldnn_convr  X  s  € ô 	”—	‘	˜8 TÓ*Ó6Ü”E—I‘I×$Ñ$Ð&>ÀÓEÓQÜ�t—{‘{¤I×$5Ñ$5×6Ó6Ü�—‘× Ñ Ó! AÔ%Ü�D—K‘K×$Ñ$ QÕ'¨×3Ò3à—k‘k×&Ñ& qÕ)×1Ô1ˆFØ�z‰z˜!�}Ü—	‘	× Ñ ×7Ñ7×?Ñ?Ü—	‘	× Ñ ×7Ñ7×>Ñ>Ü—	‘	× Ñ ×8Ñ8×?Ñ?ð!ö ò
 ñ 2ñ r   c               ó$   € V ^8„  d   QhRRRRRR/# )rv   Úrú	ir.IRNodeÚfx_nodeÚobjectry   r{   )r|   s   "r}   r~   r~   m  s!   € ÷ ñ ¨Ið Àð È9ñ r   c           
     óx  € \        V\        P                  P                  4      '       Ed   VP                  \        P
                  P                  P                  P                  J dÓ   \        V \        P                  \        P                  34      '       d£   \        P                  P                  \        \        P
                  P                  P                  P                  R R7      ! \        V P!                  4       4      V P#                  4       \        P$                  V P'                  4       R R7      4      # V # )F©Úadd_to_fallback_set)ÚdtyperÂ   r   Ú
pin_memory)rŠ   r‘   r³   r%   r™   r  rä   Ú_efficientzerotensorr  r,   rE   ÚBaseViewÚExternKernelÚrealize_inputrJ   ÚlistÚget_sizeÚ	get_dtyperÃ   Ú
get_device)r  r  s   &&r}   Ú$_realize_efficient_zerotensor_outputr'  m  sÂ   € ä�7œEŸH™HŸM™M×*Ó*Ø�N‰NœeŸi™iŸn™n×AÑA×IÑIÓIÜ�qœ2Ÿ<™<¬¯©Ð5×6Ò6ä�‰×,Ñ,ÜÜ—	‘	—‘×3Ñ3×;Ñ;Ø$)õô �Q—Z‘Z“\Ó"Ø—k‘k“mÜ—}‘}Ø—|‘|“~Ø ô	ó
ð 	
ð €Hr   c                  ó˜  a € ] tR tRt$ RtR]R&   R•R V 3R llltR	 R
 ltR R ltR R lt	R R lt
R R ltR R ltR R ltR–R R lltR R lt]P"                  R R l4       tR R lt]R R  l4       tR! R" ltR# R$ ltR% R& ltR' R( ltR) R* lt]R+ R, l4       t]R- R. l4       tR/ R0 ltR1 R2 ltR3 R4 lt R5 R6 lt!R7 R8 lt"R9 V 3R: llt#R; R< lt$R=R/R> R? llt%R@ RA lt&RB RC lt'RD RE lt(RF RG lt)RH RI lt*R—RJ RK llt+RL RM lt,]-P\                  RN V 3RO ll4       t/]-P\                  RP V 3RQ ll4       t0]RR RS l4       t1RT RU lt2RV RW lt3RX RY lt4]-P\                  RZ V 3R[ ll4       t5R\ R] lt6]R^ R_ l4       t7]R` Ra l4       t8Rb Rc lt9]Rd Re l4       t:]Rf Rg l4       t;Rh Ri lt<Rj V 3Rk llt=Rl Rm lt>Rn Ro lt?R˜Rp Rq llt@Rr Rs ltARt Ru ltB]Rv Rw l4       tC]Rx Ry l4       tD]ERz R{ l4       tFR| R} ltGR~ R ltHR€ R� ltIR‚ Rƒ ltJR„ R… ltKRtLR†]R‡&   Rˆ R‰ ltMRŠ R‹ ltNRŒ R� ltORŽ R� ltPR� R‘ ltQR’ R“ ltRR”tSV ;tT# )™ÚGraphLoweringi‚  aó  Lowers an FX graph to Inductor IR and drives backend code generation.

Walks the FX graph node-by-node, materializing inputs/outputs and
constants, dispatching each call to an Inductor lowering, and accumulating
the resulting IR nodes. Holds graph-wide state needed by lowerings and
codegen (sizevars, scheduler inputs, device/dtype tracking, wrapper code,
etc.) and orchestrates the call into `codegen()` to produce a wrapper +
kernel module via the configured backend (Python/C++ wrappers, AOTI).
úlist[ir.IRNode]Úgraph_outputsNFc          (     óh   € V ^8„  d   QhRRRRRRRRR	R
RR
RRRRRR
RR
RR
RRRRRRRRRRRRRR
RRR R!/# )"rv   Úgmútorch.fx.GraphModuleÚexample_inputszSequence[object] | NoneÚ	shape_envzShapeEnv | NoneÚgraph_idú
int | NoneÚcpp_wrapperr¾   Úaot_modeÚ
layout_optzbool | NoneÚextern_node_serializerz1Callable[[list[ir.ExternKernelNode]], Any] | NoneÚis_inferenceÚis_backwardÚis_const_graphÚconst_output_indexzdict[str, int] | NoneÚconst_wrapper_codeú
str | NoneÚconst_kernel_codeÚconst_modulezGraphLowering | NoneÚnameÚinputs_to_checkzSequence[int] | NoneÚ
fx_wrapperÚget_decomp_fnz3Callable[..., dict[Any, Callable[..., Any]]] | Nonery   rz   r{   )r|   s   "r}   r~   ÚGraphLowering.__annotate__�  sÿ   € ÷ dCñ dCà ðdCð 0ðdCð #ð	dCð
 ðdCð ðdCð ðdCð  ðdCð!ðdCð ðdCð ðdCð ðdCð 2ðdCð 'ðdCð  &ð!dCð" +ð#dCð$ ð%dCð& .ð'dCð( ð)dCð* Kð+dCð, 
ñ-dCr   c                	óZ  <€ \         SV `  V4       VV n        W n        Ve   TMV P	                  WR7      V n        ^ V n        W�n        W n        W°n	        WÐn
        Wàn        Wðn        VV n        RV n        RV n        Vf   \!        4       pRV n        MRV n        W0n        VP&                  P)                  4       V n        \,        \.        P0                  ,          ! 4       V n        \5        V4      V n        . V n        / V n        / V n        / V n        / V n         R V n!        \-        4       V n"        V'       d   VPF                  M	\-        4       V n#        V'       d   VPH                  M	\-        4       V n$        RV n%        \M        \,        4      V n'        \M        \,        4      V n(        / V n)        / V n*        . V n+        . V n,        V'       d   TM/ V n-        V'       d   \-        VP]                  4       4      M	\-        4       V n/        V'       d   VP`                  M/ V n0        V'       d   VPb                  M/ V n1        VPd                  Pg                  R\-        4       4      V n4        V'       d   VPj                  M/ T n5        / V n6        / V n7        / V n8        / V n9        / V n:        \-        4       V n;        \-        4       V n<        \-        4       V n=        \-        4       V n>        / V n?        \-        4       V n@        \-        4       V nA        R V nB        R V nC        ^ RIDHEp \Œ        PŽ                  ! 4       '       d   V'       d   TMTV nH        R V nI        / V nJ        \-        4       V nK        . V nL        / V nM        \M        \œ        4      V nO        / V nP        / V nQ        \¤        P¤                  ! 4       V nS        VV nT        WPnU        VV nV        WPnW        / V nX        W`nY        W@nZ        \·        \¸        4      V n]        R V n^        R V n_        R V n`        R V na        R V nb        V P
                  '       d   V PÇ                  4       M	\-        4       V nd        \-        R.4      V ne        \Í        VPÎ                  4      V nh        \Ó        VPÎ                  V PÐ                  4       RV nj        RV nk        . V nl        R V nm        RV nn        / V no        VPá                  4       V nq        V Pâ                  Pc                  4        F  w  ppVV Pb                  V&   K  	  V Pâ                  Pk                  4        F  w  ppVV Pj                  V&   K  	  V Pä                  Pd                  Pg                  R	/ 4      V ns        Ve   VPè                  M/ V nt        \ë        4        \ì        Pî                  ! R 4      ! \ð        4      V nx        / V ny        \-        4       V nz        \-        4       V n{        / V n|        \-        4       V n}        \-        4       V n~        \-        4       V n        E\         EP                  ! 4       V n‚        R
V nƒ        E\	        4       V n…        / V n†        R # )N)r7  FTrÀ   Úmutated_named_buffers)Úextern_node_json_serializerzaten.convolution_backwardÚ Ú dynamo_flat_name_to_original_fqnéÿÿÿÿ)‡ÚsuperÚ__init__rB  r/  Údecide_layout_optr5  Únum_channels_last_convr7  r8  r9  r;  r=  r>  r@  Ú_defers_input_alignmentÚextra_tracebackr"   Úreuse_shape_envÚ
_shape_envÚdeferred_runtime_assertsÚcopyÚras_by_symbolr(   r‹   rŒ   Úbound_unbacked_symbolsrV   ÚsizevarsÚgraph_input_namesÚgraph_inputsÚgraph_inputs_originalÚgraph_input_storage_offsetsÚsymbolic_input_sourcesÚpartition_mapsÚzero_dim_cpu_tensor_listÚdevice_typesÚdevice_idxsÚdevice_typer   Úadditional_buffer_depsÚadditional_star_depsÚ_void_ctrl_dep_op_namesÚbuffer_to_padded_sizeÚbuffersÚ
operationsr:  rÊ   Úfolded_constantsÚ	constantsÚnamed_buffersr²   rý   rE  Únamed_parametersÚtorchbind_constantsÚtorchbind_replay_objectsÚopaque_value_type_classesÚseen_subgraphsÚconstant_reprsÚremoved_operationsÚremoved_buffersÚremoved_inplace_buffersÚmutated_buffersÚsdpa_constraint_cacheÚnever_reuse_buffersÚinplaced_to_removeÚ
device_opsÚwrapper_codeÚ&torch._inductor.extern_node_serializerrF  r+   Ú	is_fbcoder6  Úcurrent_nodeÚlistsÚmutated_inputsÚmutated_input_idxsÚname_to_bufferr#  Úname_to_usersÚ
name_to_opÚ_cutedsl_capture_nodesÚtimeÚcreation_timer?  r3  rA  Úrecord_multi_kernel_choiceÚmulti_kernel_to_choicer4  r1  ÚnextÚ_post_grad_graph_counterÚpost_grad_graph_idÚ	schedulerÚautotuning_inputsÚautotuning_mappingÚautotuning_gridsÚcurrent_deviceÚfind_nodes_prefer_channels_lastÚnodes_prefer_channels_lastÚ_warned_fallbackr¹   ÚgraphrÖ   r  Ú	cache_keyÚ
cache_pathÚcache_linemapÚdisable_cudagraphs_reasonÚkernel_free_cudagraphÚdevice_node_mappingÚ__copy__Úorig_gmÚmodulerH  Úallocated_constant_namer3   r  Ú	lru_cacher0   Úeffectful_opsÚunaligned_buffersÚno_fuse_buffer_namesÚbuffer_layout_constraintsÚlow_precision_codegen_opsÚinvoke_quant_opsÚall_codegen_kernel_namesÚ	itertoolsÚcountÚworkspace_idÚplaceholder_idxrY   Úbw_donated_idxsÚdep_size_hint_cache)Úselfr-  r/  r0  r1  r3  r4  r5  r6  r7  r8  r9  r:  r;  r=  r>  r?  r@  rA  rB  rF  ÚkÚvÚ	__class__s   &&&&&&&&&&&&&&&&&&&&   €r}   rK  ÚGraphLowering.__init__�  s‡  ø€ ô. 	‰Ñ˜ÔØ*ˆÔØ,Ôð Ò%ñ à×'Ñ'¨Ð'ÓFð 	Œð
 '(ˆÔ#Ø(ÔØ&ÔØ,ÔØ"4ÔØ!2ÔØ(ÔØ.ˆÔØ',ˆÔ$à$ˆÔØÒÜ ›
ˆIØ#(ˆDÕ à#'ˆDÔ Ø#Œð ×.Ñ.×3Ñ3Ó5ð 	Ôô '1´·±Ö&>Ó&@ˆÔ#ä(¨Ó3ˆŒØ,.ˆÔØQSˆÔØ=?ˆÔ"ð =?ˆÔ(ð ð 	Ô#ð ?CˆÔÜ9C»ˆÔ%ç)5ˆL×%Ò%¼:»<ð 	Ô÷ )5ˆL×$Ò$¼*»,ð 	Ôð !ˆÔÜBMÜóC
ˆÔ#ô ALÌJÓ@WˆÔ!ð HJˆÔ$ð <>ˆÔ"à(*ˆŒØ.0ˆŒç"4Ñ¸"ð 	Ô÷
 "ô Ð)×.Ñ.Ó0Ô1ä“ð 	Ô÷ '3ˆL×"Ò"¸ð 	Œ÷ +7ˆL×&Ò&¸Bð 	Ôð @B¿w¹w¿{¹{Ø#¤Z£\ó@
ˆÔ"÷ .:ˆL×)Ò)¸rð 	Ôð
 ð 	Ô ð
 ð 	Ô%ð ;=ˆÔ&Ø68ˆÔØ.0ˆÔÜ3=³<ˆÔÜ0:³ˆÔÜ8B»ˆÔ$Ü0:³ˆÔØ=?ˆÔ"Ü4>³LˆÔ Ü3=³<ˆÔØ-1ˆŒØ26ˆÔåVô ×Ò×!Ò!×&<ñ #à,ð 	Ô#ð ,0ˆÔØ+-ˆŒ
Ü/9«|ˆÔØ-/ˆÔØ46ˆÔÜ@KÌDÓ@QˆÔØ35ˆŒà<>ˆÔ#Ü!ŸYšY›[ˆÔØˆŒ	Ø&ÔØ$ˆŒð
 +6Ô'Ø68ˆÔ#à ŒØ ŒÜ"&Ô'?Ó"@ˆÔØ>BˆŒð =AˆÔØDHˆÔØ7;ˆÔð 48ˆÔð 7;·o·o°oˆD×0Ñ0Ô2Ì:Ë<ð 	Ô'ô !+Ð,GÐ+HÓ IˆÔÜ+JÈ2Ï8É8Ó+TˆÔ(Ü" 2§8¡8¨T×-MÑ-MÔNØ ˆŒØ!ˆŒð ð 	Ôð 6:ˆÔ&Ø+0ˆÔ"ð GIˆÔ Ø-/¯[©[«]ˆŒØ—L‘L×.Ñ.Ö0‰DˆAˆqØ$%ˆD×Ñ˜qÓ!ñ 1à—L‘L×1Ñ1Ö3‰DˆAˆqØ'(ˆD×!Ñ! !Ó$ñ 4à04·±×0@Ñ0@×0DÑ0DØ.°ó1
ˆÔ-ð 5AÒ4LˆL×0Ò0ÐRTð 	Ô$ô 	"Ô#Ü$-×$7Ò$7¸Ô$=Ô>RÓ$SˆÔ!à;=ˆÔô 3=³,ˆÔÜ5?³\ˆÔ!ð EGˆÔ&ä:D»,ˆÔ&ä1;³ˆÔô :D»ˆÔ%õ &ŸO›OÓ-ˆÔð  "ˆÔå/Ó1ˆÔð ACˆÖ r   c               ó   € V ^8„  d   QhRR/# ©rv   ry   rz   r{   )r|   s   "r}   r~   rC  u  s   € ÷ 1ñ 1¨ñ 1r   c                	ó:   € V P                   P                  4        R # r�   )rQ  Úfreeze_runtime_asserts©r«  s   &r}   r³  Ú$GraphLowering.freeze_runtime_assertsu  s   € Ø�‰×.Ñ.Ö0r   c               ó    € V ^8„  d   QhRRRR/# )rv   Úexr½   ry   z1tuple[Sequence[int | Expr], Sequence[int | Expr]]r{   )r|   s   "r}   r~   rC  x  s   € ÷ ñ Øðà	:ñr   c                	ó0   € V P                  V4      w  r#pW#3# r�   )Ú%symbolic_sizes_strides_storage_offset)r«  r·  ÚsizesÚstridesÚ_s   &&   r}   Úget_placeholder_sizes_stridesÚ+GraphLowering.get_placeholder_sizes_stridesx  s!   € ð !×FÑFÀrÓJÑˆ˜Øˆ~Ðr   c               ó    € V ^8„  d   QhRRRR/# )rv   r·  r½   ry   z7tuple[Sequence[int | Expr], Sequence[int | Expr], Expr]r{   )r|   s   "r}   r~   rC  ~  s   € ÷ )2ñ )2Øð)2à	@ñ)2r   c                óÂ  € V P                   '       d1   VP                  4       VP                  4       r2VP                  4       pMz^ RIHp V! R\        V P                  P                  4       24      pV P                  P                  VP                  4       VP                  4       VP                  4       V4      w  pppV Uu. uF  p\        P                  ! V4      NK  	  ppV Uu. uF  p\        P                  ! V4      NK  	  p	p\        V\        P                  4      '       d   VP                  P                   M\        P                  ! V4      p
W‰V
3# u upi u upi )zÁ
Support dynamic shapes and dynamic strides by assigning variables
to each dimension.  We duck-shape tensors, so if two tensors
have the same size they get assigned the same symbolic variable.
)ÚConstantSourceÚ__inductor_unknown_tensor_)rP  ÚsizeÚstrideÚstorage_offsetÚtorch._dynamo.sourcerÁ  r  rQ  Úbacked_var_to_valÚ'transfer_symbols_from_foreign_shape_envr‹   ÚsympifyrŠ   r‘   ÚSymIntr¸   Úexpr)r«  r·  rÃ  rÄ  rÅ  rÁ  Úsourcer¥   Úr_sizeÚr_strideÚr_storage_offsets   &&         r}   r¹  Ú3GraphLowering.symbolic_sizes_strides_storage_offset~  s$  € ð ××ÐØŸ7™7›9 b§i¡i£k�&Ø×.Ñ.Ó0‰Nå;ñ $Ø,¬S°·±×1RÑ1RÓ-SÐ,TÐUóˆFð —‘×GÑGØ—‘“	Ø—	‘	“Ø×!Ñ!Ó#Øó	ñ	ØØØñ -1Ó1©D q”%—-’- Ö"©DˆÐ1Ù.4Ó5©f¨”E—M’M !Ö$©fˆÐ5ô ˜.¬%¯,©,×7Ò7ð ×Ñ×$Ò$ä—’˜~Ó.ð 	ð
 Ð!1Ð1Ð1ùò 2ùÚ5s   ÃEÃ&Ec               ó    € V ^8„  d   QhRRRR/# )rv   r·  r½   ry   z)tuple[list[sympy.Expr], list[sympy.Expr]]r{   )r|   s   "r}   r~   rC  ©  s   € ÷ ñ Øðà	2ñr   c                óè   € VP                  4        Uu. uF  p\        P                  ! V4      NK  	  ppVP                  4        Uu. uF  p\        P                  ! V4      NK  	  ppW43# u upi u upi )z
Primarily used to weights
)rÃ  r‹   r�   rÄ  )r«  r·  r¥   rÃ  rÄ  s   &&   r}   Ústatic_sizes_stridesÚ"GraphLowering.static_sizes_strides©  sZ   € ð +-¯'©'¬)Ó4©) Q”—’˜aÖ ©)ˆÐ4Ø,.¯I©I¬KÓ8©K q”%—-’- Ö"©KˆÐ8Øˆ|Ðùò 5ùÚ8s   “A*ÁA/c               ó    € V ^8„  d   QhRRRR/# )rv   r¸   zLir.TensorBox | ir.StorageBox | ir.Buffer | WorkspaceArg | ir.TorchBindObjectry   zSequence[Expr]r{   )r|   s   "r}   r~   rC  ³  s    € ÷ #ñ #ðð#ð 
ñ#r   c                	ó‚  € \        V\        P                  4      '       d   VP                  p\        V\        P                  4      '       d   VP                  p\        V\        P
                  4      '       d9   VP                  V P                  9   d   V P                  VP                  ,          # VP                  4       # r�   )	rŠ   r,   rE   ÚdatarD   ÚComputedBufferr?  rd  r$  )r«  r¸   s   &&r}   Úget_allocation_sizeÚ!GraphLowering.get_allocation_size³  s€   € ô �dœBŸL™L×)Ò)Ø—9‘9ˆDÜ�dœBŸM™M×*Ò*Ø—9‘9ˆDä�tœR×.Ñ.×/Ò/Ø—	‘	˜T×7Ñ7Ô7ð ×-Ñ-¨d¯i©iÕ8Ð8à—=‘=“?Ð"r   c               ó    € V ^8„  d   QhRRRR/# )rv   r¸   z-ir.Buffer | WorkspaceArg | ir.TorchBindObjectry   r   r{   )r|   s   "r}   r~   rC  È  s    € ÷ Eñ EØAðEà	ñEr   c                	óŒ   € VP                  4       pV P                  V4      pVP                  pVP                  p\	        W4V4      # r�   )Ú
get_layoutrÙ  rÄ  Úoffsetr   )r«  r¸   rÂ   rÃ  rÄ  rÞ  s   &&    r}   Úget_allocation_storage_sizeÚ)GraphLowering.get_allocation_storage_sizeÈ  s?   € ð —‘Ó"ˆØ×'Ñ'¨Ó-ˆØ—‘ˆØ—‘ˆÜ.¨t¸VÓDÐDr   c               ó$   € V ^8„  d   QhRRRRRR/# )rv   r   z)torch._inductor.ir.IRNode | device | NoneÚfeaturer-   ry   r¾   r{   )r|   s   "r}   r~   rC  Ñ  s-   € ÷ 	Mñ 	Mà9ð	Mð  ð	Mð 
ñ		Mr   c                	óš   € \        V\        4      '       g   \        R \        V4       RV 24      hW P	                  \        V4      4      9   # )zExpected BackendFeature, got ú: )rŠ   r-   r�   rÁ   r0   r>   )r«  r   râ  s   &&&r}   Úhas_featureÚGraphLowering.has_featureÑ  sM   € ô
 ˜'¤>×2Ò2Ü Ø/´°W³¨¸bÀÀ	ÐJóð ð ×3Ñ3´OÀFÓ4KÓLÑLÐLr   c               ó$   € V ^8„  d   QhRRRRRR/# )rv   Údeprn   Úcount_bytesr¾   ry   Úintr{   )r|   s   "r}   r~   rC  Ü  s!   € ÷ <ñ < Sð <°tð <Àsñ <r   c                ó  € W3V P                   9  dØ   ^ pV P                  P                  VP                  4      p\	        V\
        P                  4      '       d   ^ V P                   W3&   ^ #  VP                  4       '       d0   V P                  P                  VP                  4       4      '       d*   V'       d   VP                  4       pMVP                  4       pW0P                   W3&   V P                   W3,          #   \         d     L0i ; i)zS
Get the size hint for a dependency with caching to avoid expensive recomputation.
)rª  rX  rý   r?  rŠ   r,   ÚNonTensorObjÚhas_unbacked_symbolsrV  Úall_unbacked_explicitly_hintedÚ	get_numelÚnumbytes_hintÚ
numel_hintÚKeyError)r«  rè  ré  ÚresÚinps   &&&  r}   Úget_dep_size_hintÚGraphLowering.get_dep_size_hintÜ  sæ   € ð Ð T×%=Ñ%=Ô=ØˆCð ×#Ñ#×'Ñ'¨¯©Ó1ˆCÜ˜#œrŸ™×/Ò/Ø?@�×(Ñ(¨#Ð);Ñ<Ùðà×0Ñ0×2Ò2Ø—}‘}×CÑCÀCÇMÁMÃO×TÒTç"Ø!×/Ñ/Ó1™à!Ÿn™nÓ.˜ð <?×$Ñ$ cÐ%7Ñ8Ø×'Ñ'¨Ð(:Õ;Ð;øô ô ñ ð	ús*   Á-C> Â.C> Â2C> Â:C> ÃC> Ã>DÄDc               ó   € V ^8„  d   QhRR/# )rv   ry   útorch.devicer{   )r|   s   "r}   r~   rC  ù  s   € ÷ 4ñ 4¨\ñ 4r   c                	óD   € V P                   ;p'       d   V# \        R 4      h)zNo current device)rŽ  r    ©r«  r   s   & r}   Úget_current_device_or_throwÚ)GraphLowering.get_current_device_or_throwù  s$   € Ø×(Ñ(Ð(ˆ6Ö(ØˆMäÐ2Ó3Ð3r   c               ó    € V ^8„  d   QhRRRR/# )rv   r   rø  ry   úIterator[None]r{   )r|   s   "r}   r~   rC     s   € ÷ (ñ (¨ð (¸.ñ (r   c              #  	ó^   "  € V P                   pWn          R x € W n         R #   Y n         i ; i5ir�   )rŽ  )r«  r   r  s   && r}   Úset_current_deviceÚ GraphLowering.set_current_deviceÿ  s*   é € à×#Ñ#ˆØ$Ôð	(Ûà"'Öø %Õüs   ‚-–" š-¢*ª-c               ó   € V ^8„  d   QhRR/# ©rv   ry   rš   r{   )r|   s   "r}   r~   rC    s   € ÷ ñ  Cñ r   c                	óV   € V P                   '       d   R # V P                  '       d   R# R# )Ú	inferenceÚbackwardÚforward)r7  r8  r´  s   &r}   Úget_training_phaseÚ GraphLowering.get_training_phase  s#   € Ø××ÐÙØ××ÐÙÙr   c               ó$   € V ^8„  d   QhRRRRRR/# )rv   r-  rk   r7  r¾   ry   r{   )r|   s   "r}   r~   rC    s&   € ÷ _ñ _˜kð _¸Dð _ÀTñ _r   c               óÔ  € \         P                  '       g   R# \         P                  '       d   R# V P                  P                   Uu. uFB  q"P
                  \        P                  P                  P                  P                  J g   K@  VNKD  	  ppV P                  P                   F'  p\        V4      '       g   K  VP                  V4       K)  	  \        V4      pV^ 8X  d   R# \        P                  P                  P                   '       dk   \        P                  P                  P#                  4       '       d=   \$        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d   R# \        \'        V P                  P                  4      4      RV,          8¼  d   \(        P+                  R4       R# \,        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   \(        P+                  R4       R# R R	 lpR
 R lpR R lpV'       Ed   \/        \0        4      pV F]  p	\3        V	4      p
V
f   K  V! V	4      '       d   RpM$V! V	4      '       d   RpMV! V	4      '       d   RpMRpW‹;;,          V
,          uu&   K_  	  \(        P+                  R4       RpRpRpRp\5        VP7                  4       4      pVR,          V,          VR,          V,          ,           VR,          V,          ,           VR,          V,          ,           pVV8*  pV'       g   \(        P+                  RVV4       V# \-        \9        WS4      4      '       d   \(        P+                  R4       R# \-        \9        Wc4      4      '       d   \(        P+                  R4       R# \%        \9        Ws4      4      '       d   \(        P+                  R4       R# R# u upi )zT
Decide if we should enable layout optimization for this graph based on
heuristics.
FTc              3  ó²   "  € T FM  pR FD  pVP                   V,          P                  R,          P                  P                  \        9   x € KF  	  KO  	  R# 5i©r   ÚvalN)r   é   )rw   r²   r   rÁ   ra   ©Ú.0Únr·   s   &  r}   Ú	<genexpr>Ú2GraphLowering.decide_layout_opt.<locals>.<genexpr>,  sJ   é € ð á#�AÛ!�Cð —‘�s•× Ñ  Õ'×.Ñ.×3Ñ3Ô7OÖOá!ñ PÛ#ùs   ‚AAi,  z*Skipped layout opt because only a few convc              3  óŽ   "  € T F;  pR F2  p\        VP                  V,          P                  R,          4      x € K4  	  K=  	  R# 5ir  )r   rw   r²   r  s   &  r}   r  r  ;  s?   é € ð 
á�Û�ô ˜QŸV™V C�[×-Ñ-¨eÕ4×5Ð5áñ 6Ûùs   ‚AAzeSee perf regression with dynamic shape. Follow up in https://github.com/pytorch/pytorch/issues/102670c               ó    € V ^8„  d   QhRRRR/# )rv   r  r   ry   r¾   r{   )r|   s   "r}   r~   Ú5GraphLowering.decide_layout_opt.<locals>.__annotate__E  s   € ÷ 	;ñ 	;˜#ð 	; $ñ 	;r   c                ó  € V P                   ^,          P                  R,          p\        V\        P                  4      '       g   \        R\        V4       24      hV P                   R,          ^8„  ;'       d    VP                  ^4      ^8„  # )r  r  úExpected torch.Tensor, got rI  )rw   r²   rŠ   r‘   r   r�   rÁ   rÃ  )r  Úmeta_vals   & r}   Ú
is_groupedÚ3GraphLowering.decide_layout_opt.<locals>.is_groupedE  si   € Ø—v‘v˜a•y—~‘~ eÕ,ˆHÜ˜h¬¯©×5Ò5Ü$Ð'BÄ4ÈÃ>ÐBRÐ%SÓTÐTØ—6‘6˜"•: ‘>×:Ð: h§m¡m°AÓ&6¸Ñ&:Ð:r   c               ó    € V ^8„  d   QhRRRR/# ©rv   r  rÙ   ry   r¾   r{   )r|   s   "r}   r~   r  K  s   € ÷ 	ñ 	 ð 	°4ñ 	r   c                óZ  € V P                   ^,          P                  R,          P                  ^ 4      ^,          V P                   ^,          P                  R,          P                  ^4      8*  ;'       d7    V P                   ^,          P                  R,          P                  ^4      ^8„  # ©r  r  ©rw   r²   rÃ  ©r  s   &r}   Úis_in_out_channelÚ:GraphLowering.decide_layout_opt.<locals>.is_in_out_channelK  s{   € à—‘�q•	—‘˜uÕ%×*Ñ*¨1Ó-°Õ1°Q·V±V¸AµY·^±^ÀEÕ5J×5OÑ5OÐPQÓ5RÑR÷ 6ð 6Ø—F‘F˜1•I—N‘N 5Õ)×.Ñ.¨qÓ1°AÑ5ðr   c               ó    € V ^8„  d   QhRRRR/# r  r{   )r|   s   "r}   r~   r  Q  s   € ÷ 	ñ 	 ð 	°$ñ 	r   c                óê   € V P                   ^,          P                  R,          P                  ^ 4      ^@8*  ;'       d7    V P                   ^,          P                  R,          P                  ^4      ^@8*  # r   r!  r"  s   &r}   Úis_small_channelÚ9GraphLowering.decide_layout_opt.<locals>.is_small_channelQ  sY   € à—‘�q•	—‘˜uÕ%×*Ñ*¨1Ó-°Ñ3÷ 8ð 8Ø—F‘F˜1•I—N‘N 5Õ)×.Ñ.¨qÓ1°RÑ7ðr   ÚgroupedÚsmallÚin_outr  zConv inputs meta not foundgî|?5^ºõ?g¼t“Vê?g333333ç?gu“Vé?zhSkipped layout opt in inference because weighted flops indicate slowdown, default: %d, channels last: %dzFSkip layout opt because found grouped convolution with >1 in_channels!zBSkip layout opt because some convolutions have smaller out_channelz>Skip layout opt because all convolution channels are too small)r+   Úlayout_optimizationÚforce_layout_optimizationr’  rö   r™   r‘   r  rä   rå   r  r  rÎ   r  Úbackendsr	  ÚenabledÚis_availableÚallr#  ÚlogÚdebugrí   r   Úfloatr9   rê   ÚvaluesÚmap)r-  r7  r  Ú
conv_nodesÚnconvr  r#  r'  Úflop_countsr¸   Úcounted_flopsÚ	node_typeÚGROUPED_MULTIPLIERÚDEFAULT_MULTIPLIERÚIN_OUT_MULTIPLIERÚSMALL_MULTIPLIERÚtotal_flopsÚweighted_flopsÚdo_layout_opts   &$                 r}   rL  ÚGraphLowering.decide_layout_opt  s4  € ô ×)×)Ð)Ùä×+×+Ð+Ùð —x‘x—~’~ó
Ù%�!¯©´U·Y±Y·^±^×5OÑ5O×5WÑ5WÐ)W�AˆA‘~ð 	ð 
ð —‘—”ˆAÜ˜a× Ô Ø×!Ñ! !Ö$ñ  ô �J“ˆà�AŒ:Ùô �N‰N×!Ñ!×)×)Ð)Ü—‘×%Ñ%×2Ñ2×4Ò4ß“ñ á#ó——’ñ á#ó÷ ò ñ ô
 Œt�B—H‘H—N‘NÓ#Ó$¨¨e­Ô3Ü�I‰IÐBÔCÙç‹3ñ 
áó
�3�3Š3ñ 
áó
÷ 
ò 
ô
 �I‰IØwôñ õ	;õ	õ	÷ ˆ<Ü,7¼Ó,>ˆKÛ"�Ü .¨tÓ 4�Ø Ò(Ùá˜d×#Ò#Ø )‘IÙ% d×+Ò+Ø '‘IÙ& t×,Ò,Ø (‘Ià )�Ià×&¨-Õ7Õ&ñ #ô  —	‘	Ð6Ô7ð
 "'ÐØ!&ÐØ %ÐØ$Ðä˜k×0Ñ0Ó2Ó3ˆKð ˜IÕ&Ð);Õ;Ø˜gÕ&Ð)9Õ9õ:à˜hÕ'Ð*;Õ;õ<ð ˜iÕ(Ð+=Õ=õ>ð ð +¨kÑ9ˆMß Ü—	‘	Ø~ØØ"ôð
 !Ð ô& Œs�:Ó*×+Ò+Ü�I‰IØXôñ ô ŒsÐ$Ó1×2Ò2Ü�I‰IØTôñ ô ŒsÐ#Ó0×1Ò1Ü�I‰IÐVÔWÙáùòi
s   Á	=O%ÂO%c               ó    € V ^8„  d   QhRRRR/# )rv   r?  rš   ry   r{   )r|   s   "r}   r~   rC  ±  s   € ÷ ñ  ð ¨ñ r   c                óD   € V P                   e   V P                    RV 2# V# )z2Prepend the given name with the graph name if any.r¼  )r?  ©r«  r?  s   &&r}   Úqualify_nameÚGraphLowering.qualify_name±  s&   € à�9‰9Ò Ø—i‘i�[  $ Ð(Ð(Øˆr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rv   r-  r.  r/  zlist[torch.Tensor]Úsubgraph_namerš   ry   ÚSubgraphLoweringr{   )r|   s   "r}   r~   rC  ·  s2   € ÷ 
ñ 
à ð
ð +ð
ð ð	
ð
 
ñ
r   c                óÂ   € \        V VVV P                  V P                  V P                  V P                  V P
                  V P                  V P                  V4      R7
      # )a¦  
Make a subgraph of the current graph with all inherited parts, except
the graph module (`gm`) and `example_inputs`.  The subgraphs are lowered
separately and lifted into a separate function in the parent output
wrapper code.  The subgraph name is qualified by the parent graph's
name. Note that the lifting of subgraph is supported for python wrapper
only. For cpp wrapper, we inline the subgraphs in the parent wrapper.
)
Úparentr-  r/  r0  r3  r4  r6  r7  r8  r?  )rK  rQ  r3  r4  r6  r7  r8  rG  )r«  r-  r/  rJ  s   &&&&r}   Úmake_subgraphÚGraphLowering.make_subgraph·  sZ   € ô  ØØØ)Ø—o‘oØ×(Ñ(Ø—]‘]Ø#'×#>Ñ#>Ø×*Ñ*Ø×(Ñ(Ø×"Ñ" =Ó1ô
ð 	
r   c               ó   € V ^8„  d   QhRR/# )rv   ry   zOrderedSet[Node]r{   )r|   s   "r}   r~   rC  Ò  s   € ÷ >ñ >Ð1Añ >r   c                óL  € Rp\         P                  P                  P                  P                  .p\
        \        ,          ! 4       p\        V P                  P                  P                  4       F¼  pVP                  \         P                  P                  P                  P                  J d   VP                  V4       Vf   TpKX  VP                  V9   d   Kk  \        V4      '       d   VP                  V4       K�  VP                   F  pWS9   g   K  VP                  V4        Kº  	  K¾  	  V P                  P                  P                   FO  pVe
   WA8X  d    V# WC9   g   K  VP                   F'  pVP                  V9   d   K  VP                  V4       K)  	  KQ  	  V# )aÌ  
The rule to decide if a node prefers channels last is simple.
1. if it's input/output of a convolution
2. if one of its user prefers channels last

We have rule 1 because cudnn runs a faster convolution kernel for channels last inputs;
Rule 2 is also important. It makes sure that indirect inputs to convolution also prefers
channels last.

Consider the scenario: conv -> batch-norm -> relu -> conv
Without rule 2, batch-norm output may use a contiguous layout. That will cause 2 extra copies:
1. the output of batch-norm should be channels last initially since its input is a conv's output.
   Forcing the batch-norm's output to be contiguous results in the first copy
2. The second conv's input is initially contiguous. This layout is propagated from the batch-norm's output.
   We need to convert it to channels last layout which results in the second copy.
With rule 2, we make sure all the tensors in the chain use channels last layout. So both copies
can be saved.
N)r‘   r  rä   Úbmmr  r(   r%   rõ   r›  r’  rö   r™   rå   rÍ   r  Úusers)r«  Ú	last_convÚnodes_cannot_propagateÚ
output_setr  Úusers   &     r}   r�  Ú-GraphLowering.find_nodes_prefer_channels_lastÒ  sC  € ð& ˆ	Ü"'§)¡)§.¡.×"4Ñ"4×"<Ñ"<Ð!=ÐÜ¤Ö%Ó'ˆ
Ü˜$Ÿ+™+×+Ñ+×1Ñ1Ö2ˆAØ�x‰xœ5Ÿ9™9Ÿ>™>×5Ñ5×=Ñ=Ó=Ø—‘˜qÔ!ØÒ$Ø !�IÙØ�x‰xÐ1Ô1ÙÜ˜a× Ò Ø—‘˜qÔ!ÙØŸœ�ØÖ%Ø—N‘N 1Ô%Úó  ñ 3ð< —‘×"Ñ"×(Ô(ˆAàÒ$¨¬Øð Ðð ŽØŸGœG�DØ—{‘{Ð&<Ô<Ù Ø—N‘N 4Ö(ó $ñ )ð Ðr   c               ó    € V ^8„  d   QhRRRR/# ©rv   r?  rš   ry   rz   r{   )r|   s   "r}   r~   rC    s   € ÷ Añ A #ð A¨$ñ Ar   c                	óŒ   € WP                   9  d4   V P                   P                  V4       \        P                  R V4       R# R# )zUsing FallbackKernel: %sN)r‘  rÍ   Úperf_hint_logÚinforF  s   &&r}   Úwarn_fallbackÚGraphLowering.warn_fallback  s8   € Ø×,Ñ,Ô,Ø×!Ñ!×%Ñ% dÔ+Ü×ÑÐ9¸4Ö@ñ -r   c               ó    € V ^8„  d   QhRRRR/# )rv   r   rø  ry   rz   r{   )r|   s   "r}   r~   rC    s   € ÷ Dñ D lð D°tñ Dr   c                	ól  € V P                   P                  VP                  4       VP                  e&   V P                  P                  VP                  4       \
        P                  P                  '       d<   WP                  9  d*   \
        P                  P                  V P                  V&   R # R # R # r�   )	r^  rÍ   rÁ   Úindexr_  rd   r’  r{  r˜  rú  s   &&r}   Úadd_device_infoÚGraphLowering.add_device_info  sz   € Ø×Ñ×Ñ˜fŸk™kÔ*Ø�<‰<Ò#Ø×Ñ× Ñ  §¡Ô.Ü�7‰7××Ð F×2JÑ2JÔ$JÜ/0¯w©w×/CÑ/CˆD×$Ñ$ VÓ,ñ %KÑr   c               ó   € V ^8„  d   QhRR/# )rv   ry   z,torch._subclasses.fake_tensor.FakeTensorModer{   )r|   s   "r}   r~   rC    s   € ÷ ñ ÐGñ r   c                	ó"   € \         P                  # r�   )rd   Ú	fake_moder´  s   &r}   rg  ÚGraphLowering.fake_mode  s   € ä�{‰{Ðr   c               ó   € V ^8„  d   QhRR/# )rv   ry   r¾   r{   )r|   s   "r}   r~   rC  #  s   € ÷ 	?ñ 	? dñ 	?r   c                óú   € V P                   '       d!   \        P                  P                  '       d   R# \        ;QJ d&    R V P
                   4       F  '       g   K   R# 	  R# ! R V P
                   4       4      # )zóTrue when generating dual-wrapper-mode C++ for both JIT and AOTI.

Dual-wrapper mode emits a JIT pass that drives Triton autotune/compile
alongside the AOTI output, so it is needed iff at least one device in
the graph uses the Triton backend.
Fc              3  óN   "  € T F  p\         P                  ! V4      x € K  	  R # 5ir�   )r,   Ú	is_triton©r  Úds   & r}   r  Ú5GraphLowering.is_dual_wrapper_mode.<locals>.<genexpr>,  s   é € Ð>Ñ,= q”2—<’< —?�?Ó,=ùs   ‚#%T)r4  r+   ÚtritonÚautotune_at_compile_timerí   r^  r´  s   &r}   Úis_dual_wrapper_modeÚ"GraphLowering.is_dual_wrapper_mode"  sT   € ð �}�}ˆ}¤§¡× F× FÐ FÙß‹sÑ>¨D×,=Ò,=Ó>�sŒsÐ>ŠsÐ>ˆsÑ>¨D×,=Ò,=Ó>Ó>Ð>r   c               ó    € V ^8„  d   QhRRRR/# )rv   Úbuffer_namerš   ry   z4ir.TensorBox | ir.Buffer | ir.TorchBindObject | Noner{   )r|   s   "r}   r~   rC  .  s   € ÷ ñ Øðà	=ñr   c           	     	ó´  € WP                   9   d   V P                   V,          # WP                  9   d   V P                  V,          # WP                  9   d‚   \        P                  P                  V,          p\
        P                  ! V\
        P                  ! VP                  VP                  .\        P                  P                  V4      O5!  R 7      # R# )©r?  rÂ   N)r  rX  rh  rd   r’  r,   ÚConstantBufferr=   r   r  rÓ  )r«  ru  r×  s   && r}   Útry_get_bufferÚGraphLowering.try_get_buffer.  s§   € ð ×-Ñ-Ô-Ø×&Ñ& {Õ3Ð3Ø×+Ñ+Ô+Ø×$Ñ$ [Õ1Ð1ØŸ.™.Ô(Ü—7‘7×$Ñ$ [Õ1ˆDÜ×$Ò$Ø Ü—~’~Ø—K‘K §¡ðÜ./¯g©g×.JÑ.JÈ4Ó.Póôð ñ r   c               ó    € V ^8„  d   QhRRRR/# )rv   Úsymbolrˆ   ry   rz   r{   )r|   s   "r}   r~   rC  @  s   € ÷ Fñ F¨Zð F¸Dñ Fr   c                	ó   € \        R 4      h)z'Should not be called for the main graph)r    )r«  r|  s   &&r}   Úadd_symbol_graph_inputÚ$GraphLowering.add_symbol_graph_input@  s   € ÜÐDÓEÐEr   c               ó    € V ^8„  d   QhRRRR/# )rv   ru  rš   ry   z-ir.TensorBox | ir.Buffer | ir.TorchBindObjectr{   )r|   s   "r}   r~   rC  C  s    € ÷ Qñ QØðQà	6ñQr   c                	óL   € V P                  V4      pVe   V# \        RV 24      h)Nz$Failed to find buffer matching name )ry  r    ©r«  ru  Úbufs   && r}   Ú
get_bufferÚGraphLowering.get_bufferC  s1   € ð ×!Ñ! +Ó.ˆØŠ?ØˆJÜÐAÀ+ÀÐOÓPÐPr   c               ó    € V ^8„  d   QhRRRR/# )rv   ru  rš   ry   ztorch.dtyper{   )r|   s   "r}   r~   rC  K  s   € ÷ 8ñ 8 Sð 8¨[ñ 8r   c                	ó$  € WP                   9   d   V P                   V,          P                  # \        V P                  R 4      '       dš   WP                  P                  9   d€   V P                  P                  V,          pW P
                  9   d"   V P
                  V,          P                  4       # W P                  9   d"   V P                  V,          P                  4       # WP
                  9   d"   V P
                  V,          P                  4       # WP                  9   d"   V P                  V,          P                  4       # \        P                  ! RV4      pV'       d!   V P                  VP                  ^4      4      # \        RV 24      h)Úmutation_real_namez1(as_strided|reinterpret_tensor)\(([a-zA-Z0-9_]+),úcould not find )rh  r  rŸ   rŠ  rˆ  r  r%  rX  ÚreÚmatchÚgrouprò  )r«  ru  Úmutated_bufÚms   &&  r}   r%  ÚGraphLowering.get_dtypeK  s.  € ØŸ.™.Ô(Ø—>‘> +Õ.×4Ñ4Ð4ô �D—N‘NÐ$8×9Ò9ØŸ~™~×@Ñ@Ô@àŸ.™.×;Ñ;¸KÕHˆKØ×1Ñ1Ô1Ø×*Ñ*¨;Õ7×AÑAÓCÐCØ×/Ñ/Ô/Ø×(Ñ(¨Õ5×?Ñ?ÓAÐAØ×-Ñ-Ô-Ø×&Ñ& {Õ3×=Ñ=Ó?Ð?Ø×+Ñ+Ô+Ø×$Ñ$ [Õ1×;Ñ;Ó=Ð=Ü�HŠHÐIÈ;ÓWˆßØ—>‘> !§'¡'¨!£*Ó-Ð-Ü˜¨¨Ð6Ó7Ð7r   c               ó    € V ^8„  d   QhRRRR/# )rv   ru  rš   ry   z
int | Exprr{   )r|   s   "r}   r~   rC  a  s   € ÷ 
8ñ 
8 Sð 
8¨Zñ 
8r   c                	óx  € WP                   9   d"   V P                   V,          P                  4       # WP                  9   d<   V P                  V,          pVP                  4       '       g   ^# VP	                  4       # WP
                  9   d"   V P
                  V,          P	                  4       # \        RV 24      h)r  r‰  )rh  Únumelr  Úhas_tensor_outputrï  rX  rò  r‚  s   && r}   rï  ÚGraphLowering.get_numela  s–   € ØŸ.™.Ô(Ø—>‘> +Õ.×4Ñ4Ó6Ð6Ø×-Ñ-Ô-Ø×%Ñ% kÕ2ˆCØ×(Ñ(×*Ò*ÙØ—=‘=“?Ð"Ø×+Ñ+Ô+Ø×$Ñ$ [Õ1×;Ñ;Ó=Ð=Ü˜¨¨Ð6Ó7Ð7r   c               ó    € V ^8„  d   QhRRRR/# )rv   rw   r   ry   r{   )r|   s   "r}   r~   rC  m  s   € ÷ &ñ &˜ð & ñ &r   c                	ó„   <€ \        R 4      ;_uu_ 4        \        SV `  ! V!  uuRRR4       #   + '       g   i     R# ; i)zGraphLowering.runN)r   rJ  Úrun)r«  rw   r®  s   &*€r}   r—  ÚGraphLowering.runm  s*   ø€ ÜÐ-×.Õ.Ü‘7’; Ñ%÷ /×.×.Ó.ús   •.®?	c               ó    € V ^8„  d   QhRRRR/# )rv   r®   zir.Operationry   rš   r{   )r|   s   "r}   r~   rC  q  s   € ÷ 	ñ 	 \ð 	°cñ 	r   c                	óX  € VP                   e   \        RV 24      h\        V\        P                  4      '       g   \        R\        V4       24      hV P                  R\        V P                  4       24      pV P                  P                  V4       WP                  V&   W!n         V# )NzOperation registered twice: zExpected ir.Operation, got r®   )Úoperation_namer�   rŠ   r,   Ú	OperationrÁ   rG  r  rf  rÎ   r�  )r«  r®   r?  s   && r}   Úregister_operationÚ GraphLowering.register_operationq  s“   € Ø×ÑÒ(Ü Ð#?À¸tÐ!DÓEÐEÜ˜"œbŸl™l×+Ò+Ü Ð#>¼tÀB»x¸jÐ!IÓJÐJØ× Ñ  2¤c¨$¯/©/Ó&:Ð%;Ð!<Ó=ˆØ�‰×Ñ˜rÔ"Ø "�‰˜ÑØ ÔØˆr   Úset_namec               ó$   € V ^8„  d   QhRRRRRR/# )rv   Úbufferz	ir.BufferrŸ  r¾   ry   rš   r{   )r|   s   "r}   r~   rC  |  s!   € ÷ ñ  ið ¸dð Èsñ r   c               	ó®  € V P                  R \        V P                  4       24      pV P                  P                  V4       WP                  V&   VP                  4       pVec   \        V\        P                  4      '       d2   VP                  4       '       d   V\        P                  ! R4      8X  g   V P                  V4       V'       d   W1n        V# )rƒ  rÀ   )rG  r  re  rÎ   r  r&  rŠ   r,   rØ  Úis_zero_elementsr‘   r   rc  r?  )r«  r¡  rŸ  r?  r   s   &&$  r}   Úregister_bufferÚGraphLowering.register_buffer|  s©   € Ø× Ñ  3¤s¨4¯<©<Ó'8Ð&9Ð!:Ó;ˆØ�‰×Ñ˜FÔ#Ø$*×Ñ˜DÑ!Ø×"Ñ"Ó$ˆð Òä˜6¤2×#4Ñ#4×5Ò5Ø×+Ñ+×-Ò-ØœeŸlšl¨5Ó1Ô1ð × Ñ  Ô(çØŒKØˆr   c               ó    € V ^8„  d   QhRRRR/# )rv   Úoperation_namesú	list[str]ry   rš   r{   )r|   s   "r}   r~   rC  �  s   € ÷ ñ °yð ÀSñ r   c                	óp   € V P                  R RP                  V4      ,           4      pWP                  V&   V# )Úlist_r¼  )rG  r¡   r|  )r«  r§  r?  s   && r}   Úregister_operation_listÚ%GraphLowering.register_operation_list�  s1   € Ø× Ñ  ¨3¯8©8°OÓ+DÕ!DÓEˆØ*�
‰
�4ÑØˆr   c               ó    € V ^8„  d   QhRRRR/# )rv   Únode_outputúIterable[ir.IRNode] | ir.IRNodery   rz   r{   )r|   s   "r}   r~   rC  •  s   € ÷ 	ñ 	Ð-Lð 	ÐQUñ 	r   c                	ó.   a a€ R  VV 3R lloS! V4       R# )c               ó    € V ^8„  d   QhRRRR/# )rv   Úvaluer¯  ry   rz   r{   )r|   s   "r}   r~   Ú5GraphLowering.register_users_of.<locals>.__annotate__–  s   € ÷ 	@ñ 	@Ð;ð 	@Àñ 	@r   c                ó  <€ \        V \        \        34      '       d   V  F  pS! V4       K  	  \        V \        P                  4      '       d<   V P                  4        F%  pSP                  V,          P                  V 4       K'  	  R # R # r�   )rŠ   r#  Útupler,   rE   Úget_read_namesr€  rÎ   )r²  ÚxÚ	read_nameÚregisterr«  s   &  €€r}   r¹  Ú1GraphLowering.register_users_of.<locals>.register–  sg   ø€ Ü˜%¤$¬ ×/Ò/Û�AÙ˜Q–Kñ ä˜%¤§¡×.Ò.Ø!&×!5Ñ!5Ö!7�IØ×&Ñ& yÕ1×8Ñ8¸Ö?ó "8ñ /r   Nr{   )r«  r®  r¹  s   f&@r}   Úregister_users_ofÚGraphLowering.register_users_of•  s   ù€ ÷	@ñ 	@ñ 	�Ör   c               ó    € V ^8„  d   QhRRRR/# rZ  r{   )r|   s   "r}   r~   rC     s   € ÷ ñ ¨ð °ñ r   c                ó  € \        V\        4      '       g   \        R\        V4       24      hV P                  P                  V4       WP                  9  d   R# V P                  V,           F  pVP                  4        K  	  R# )zz
When a buffer is mutated we need to make sure all the reads to
the old version are realized before the mutation happens.
zExpected str, got N)rŠ   rš   r�   rÁ   rs  rÍ   r€  Úrealize)r«  r?  rW  s   && r}   Úmark_buffer_mutatedÚ!GraphLowering.mark_buffer_mutated   sl   € ô
 ˜$¤×$Ò$Ü Ð#5´d¸4³j°\Ð!BÓCÐCØ×Ñ× Ñ  Ô&à×)Ñ)Ô)Ùà×&Ñ& t×,Ð,ˆDØ�L‰LŽNó -r   c               ó    € V ^8„  d   QhRRRR/# ©rv   r?  rš   ry   r½   r{   )r|   s   "r}   r~   rC  ¯  s   € ÷ 
ñ 
°3ð 
¸<ñ 
r   c                ó2  € WP                   9  g   WP                  9  d   \        RV,           4      h\        V P                   V,          4      pW P                  P
                  9   d   V P                  P
                  V,          # V P                  V,          # )zÒ
In AOTI, module buffers may have been mutated during the tracing and compilation.
Thus we need to read from previously stored original buffers, to make sure the
generated model.so uses correct initial values.
z$Can not find the original value for )rœ  rh  r�   rX   r›  r²   )r«  r?  Ú	orig_names   && r}   Úget_original_value_of_constantÚ,GraphLowering.get_original_value_of_constant¯  s~   € ð ×3Ñ3Ô3°tÇ>Á>Ô7QÜ Ð!GÈ$Õ!NÓOÐOÜ4°T×5QÑ5QÐRVÕ5WÓXˆ	ð ŸK™K×,Ñ,Ô,ð �K‰K×Ñ˜YÕ'ð	
ð —‘ Õ%ð	
r   c               ó$   € V ^8„  d   QhRRRRRR/# ©rv   r?  r<  r×  r   ry   rš   r{   )r|   s   "r}   r~   rC  ¾  s!   € ÷ ñ °
ð À&ð ÈSñ r   c                	óÌ  € \         P                  P                  '       g9   V P                  P	                  4        F  w  r4\        W$4      '       g   K  Vu # 	  Vf   R\        V P                  4       2pTpV^ ,          P                  4       '       d   RV 2pV P                  V4      p\        V4      pTp^ pWP                  9   d   V RV 2pV^,          pK"  W P                  V&   VP                  : RVP                  : R\        VP                  4       4      : R\        VP                  4       4      : R\        V4      R 2	V P                   V&   WPP"                  V&   V# )NÚconstantÚ	constant_r¼  Ú r·  )r+   Úaot_inductorÚuse_runtime_constant_foldingrh  Úitemsr\   r  ÚisdigitrG  r^   r   r  rµ  rÃ  rÄ  Úhashro  rœ  )r«  r?  r×  Úconstant_namer²  rÅ  ÚprefixÚcnts   &&&     r}   Úallocate_non_dup_const_nameÚ)GraphLowering.allocate_non_dup_const_name¾  sB  € Ü×"Ñ"×?×?Ð?Ø(,¯©×(<Ñ(<Ö(>Ñ$�Ü! $×.Ô.Ø(Ò(ñ )?ð Š<Øœc $§.¡.Ó1Ð2Ð3ˆDØˆ	Ø��7�?‰?×ÒØ˜t˜fÐ%ˆDØ× Ñ  Ó&ˆô   Ó%ˆØˆØˆØ—n‘nÔ$Ø�X˜Q˜s˜eÐ$ˆDØ�1�HŠCØ#�‰�tÑà�{‰{‰o˜Q˜tŸz™z™n¨AÜ�T—Y‘Y“[Ó!Ñ$ A¤e¨D¯K©K«MÓ&:Ñ%=¸QÜ�D‹z˜!ˆnðð 	×Ñ˜DÑ!ð
 .7×$Ñ$ TÑ*Øˆr   c               ó$   € V ^8„  d   QhRRRRRR/# )rv   r×  r   r?  r<  ry   rE   r{   )r|   s   "r}   r~   rC  Û  s!   € ÷ 
ñ 
¨ð 
°jð 
ÈIñ 
r   c                	óð   € V P                  W!4      p\        P                  ! \        P                  ! V\        VP                  VP                  .V P                  V4      O5R \        V4      / R7      4      # )rÄ   rw  )
rÖ  rE   Úcreater,   rx  r=   r   r  rÓ  rÆ   )r«  r×  r?  Únew_names   &&& r}   Úadd_tensor_constantÚ!GraphLowering.add_tensor_constantÛ  sp   € Ø×3Ñ3°DÓ?ˆÜ×ÒÜ×ÒØÜ"Ø—K‘KØ—J‘Jðð ×.Ñ.¨tÓ4òô <¸DÓAñ	ôó

ð 
	
r   c               ó$   € V ^8„  d   QhRRRRRR/# )rv   r?  rš   Údevice_overrideztorch.device | Nonery   r{   )r|   s   "r}   r~   rC  é  s#   € ÷ '&ñ '& #ð '&Ð8Kð '&ÐPSñ '&r   c           	     ó°  a€ V P                   S,          P                  V8X  g   Vf   S# \        P                  P                  P                  4       ;_uu_ 4        T P                  S RVP                   VP                  ;'       g    ^  2V P                   S,          P                  V4      4      pW0P                   9  d   \        V R24      h\        ;QJ d)    V3R lV P                   4       F  '       g   K   RM	  RM! V3R lV P                   4       4      '       d!   V P                   V,          V P                  V&   \        ;QJ d)    V3R lV P                   4       F  '       g   K   RM	  RM! V3R lV P                   4       4      '       d!   V P                   V,          V P                  V&   VuuRRR4       #   + '       g   i     R# ; i)zœ
We AOT copy constants to the devices they are needed on.
If device_override doesn't match the constant's device, then
copy it and return a different name.
Nr¼  z' should be in V.graph.constants alreadyc              3  ó@   <"  € T F  pS\        V4      8H  x € K  	  R # 5ir�   ©r^   )r  ru  r?  s   & €r}   r  Ú.GraphLowering.constant_name.<locals>.<genexpr>   s"   øé € ð á#5�Kð œ {Ó3Ö3Û#5ùó   ƒTFc              3  ó@   <"  € T F  pS\        V4      8H  x € K  	  R # 5ir�   râ  )r  Ú
param_namer?  s   & €r}   r  rã    s"   øé € ð á"7�Jð œ zÓ2Ö2Û"7ùrä  )rh  r   r‘   ÚutilsÚ_python_dispatchÚ_disable_current_modesrÖ  rÁ   rb  Útor�   rí   ri  rj  )r«  r?  rß  Únon_dup_const_names   &f& r}   rÓ  ÚGraphLowering.constant_nameé  s„  ø€ ð �>‰>˜$Õ×&Ñ&¨/Ô9¸_Ò=TØˆKÜ�[‰[×)Ñ)×@Ñ@×BÕBð "&×!AÑ!AØ�&˜˜/×.Ñ.Ð/°×0EÑ0E×0JÐ0JÈÐ/KÐLØ—‘˜tÕ$×'Ñ'¨Ó8ó"Ðð
 "¯©Ô7Ü$Ø)Ð*Ð*QÐRóð ÷ ‹sô à#'×#5Ò#5ó�s�sŠsô à#'×#5Ò#5ó÷ ò ð :>¿¹Ø&õ:�×"Ñ"Ð#5Ñ6÷ ‹sô à"&×"7Ò"7ó�s�sŠsô à"&×"7Ò"7ó÷ ò ð =A¿N¹NØ&õ=�×%Ñ%Ð&8Ñ9ð &÷? C×B×BÓBús1   ÁB GÃGÃ<'GÄ$*GÅGÅ0'GÆ!GÇG	c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rv   r™   rš   rw   ztuple[object]rx   údict[str, object]ry   zExpr | TensorBox | Noner{   )r|   s   "r}   r~   rC    s8   € ÷ gñ gàðgð ðgð "ð	gð
 
!ñgr   c                	óF	  <€ V ;P                   ^,          un         \        SV `	  WV4      pV P                  V4      p\	        V\
        4      '       dA   \        VP                  4      pWPP                  V&   V P                  P                  V4       V# \	        V\        \        \        34      '       dB   \        P                  ! V4      pWPP                  V&   V P                  P                  V4       V# \	        V\         4      '       d8   \#        WR7      pW`P                  V&   V P                  P                  V4       V# Vf   V P                  P                  V4       R# \	        V\$        4      '       d   V P                  P                  V4       R# \	        V\&        P(                  4      '       dM   \*        P,                  ! WP.                  R7      pWpP                  V&   V P                  P                  V4       V# \1        \3        V4      4      '       dC   \*        P4                  ! WR7      pW€P                  V&   V P                  P                  V4       V# \	        V\&        P6                  4      '       g   \9        R\3        V4       RV 24      hVP:                  '       g9   V P=                  V4      w  rš\        P>                  ! VPA                  4       4      pMV PC                  V4      w  ršpV PD                  '       do   V PF                  '       d]   V P                   V PF                  9   dB   \H        PJ                  ! \M        V\O        VP.                  VPP                  Wš4      R7      4      pM@\H        PJ                  ! \S        V\O        VP.                  VPP                  Wš4      R7      4      pWÀP                  V&   V P                  P                  V4       W°PT                  V&   VPV                  PV                  V PX                  V&   V PZ                  P\                  '       d   V P_                  VP.                  4       \a        4       ;_uu_ 4        \c        V4      '       g   V Pd                  Pg                  V4       RRR4       V#   + '       g   i     T# ; i)r  ©r?  r²  N)r?  r   r  rä  rw  )4r¨  rJ  ÚplaceholderrG  rŠ   r$   r   r¸   rX  rW  rÎ   rê  r¾   r4  r‹   rÉ  r   rF   r   r‘   Ú	Generatorr,   ÚGeneratorStater   r   rÁ   ÚOpaqueObjectStater   r�   Ú_has_symbolic_sizes_stridesrÓ  r�   rÅ  r¹  r8  r©  rE   rÚ  r<   r=   r  r@   rZ  r×  rY  r{  rS  rc  r]   r_   rŸ  rÍ   )r«  r™   rw   rx   ÚexamplerË  r˜   ÚgenÚ
opaque_objrº  r»  rÅ  Útensorr®  s   &&&&         €r}   rñ  ÚGraphLowering.placeholder  s›  ø€ ð 	×Ò Õ!ÕÜ‘'Ñ% f°FÓ;ˆØ×"Ñ" 6Ó*ˆÜ�gœx×(Ò(Ü(¨¯©Ó6ˆDØ(,×Ñ˜fÑ%Ø×"Ñ"×)Ñ)¨&Ô1ØˆKÜ˜¤#¤t¬UÐ!3×4Ò4Ü—=’= Ó)ˆDØ(,×Ñ˜fÑ%Ø×"Ñ"×)Ñ)¨&Ô1ØˆKÜ˜Ô!1×2Ò2Ü! vÔ=ˆCØ(+×Ñ˜fÑ%Ø×"Ñ"×)Ñ)¨&Ô1ØˆJØŠ_Ø×"Ñ"×)Ñ)¨&Ô1ÙÜ�gœ}×-Ò-ð ×"Ñ"×)Ñ)¨&Ô1Ùä˜¤§¡×1Ò1Ü×#Ò#¨¿¹ÔGˆCØ(+×Ñ˜fÑ%Ø×"Ñ"×)Ñ)¨&Ô1ØˆJÜ$¤T¨'£]×3Ò3Ü×-Ò-°6ÔIˆJØ(2×Ñ˜fÑ%Ø×"Ñ"×)Ñ)¨&Ô1ØÐä˜'¤5§<¡<×0Ò0Ü Ø-¬d°7«m¨_¸B¸w¸iÐHóð ð ×2×2Ð2à!×6Ñ6°wÓ?‰NˆEÜ"Ÿ]š]¨7×+AÑ+AÓ+CÓD‰Nà-1×-WÑ-WØó.Ñ*ˆE˜Nð
 ××ÐØ×$×$Ð$Ø×$Ñ$¨×(<Ñ(<Ô<ä×%Ò%ÜØÜ& w§~¡~°w·}±}ÀeÓUôó‰Fô ×%Ò%ÜØÜ& w§~¡~°w·}±}ÀeÓUôóˆFð %+×Ñ˜&Ñ!Ø×Ñ×%Ñ% fÔ-Ø3A×(Ñ(¨Ñ0Ø-3¯[©[×-=Ñ-=ˆ×"Ñ" 6Ñ*Ø×Ñ×"×"Ð"Ø× Ñ  §¡Ô0ô 1×2Õ2Ü.¨w×7Ò7Ø×&Ñ&×*Ñ*¨6Ô2÷ 3ð ˆ÷ 3Ö2ð ˆús   Ñ-RÒR 	c               ó(   € V ^8„  d   QhRRRRRRRR/# )rv   r™   re   rw   r   rx   údict[str, Any]ry   r{   )r|   s   "r}   r~   rC  }  s/   € ÷ d8ñ d8 Hð d8°Cð d8Àð d8ÐTWñ d8r   c           	     	óP
  <a€ S\         P                  J d9   \        V^ ,          \        \        \
        34      '       d   \        SV `  SW#4      # \        S\        P                  P                  4      '       g   \        SR4      '       d	   S! V/ VB # S\        9  Ed˜   \        S\        P                  P                  4      '       g   \        S R24      hSP                  4       P!                  R4      ^ ,          pV\"        9   d   \%        SRV P&                  RR7       EM\(        P*                  '       dÔ   \-        S.4      '       d   \.        M\0        p\2        P5                  R\7        VP8                  SW#4      4       \;        SRR7      pVfI   \        P<                  P>                  PA                  S4      '       d   V PB                  '       d   \D        pM\;        SRR7      p\G        V4      p\%        SVV P&                  R
7       M*\-        S.4      '       d   \/        SW#4      h\1        SW#4      h \2        PI                  R\        S,          4       V PJ                  p	\M        S4      p
V
'       d¸   Y#rËV
\N        J dž   RV	PP                  9   dŒ   V	PP                  R,          w  rÞ\        S\        P                  P                  4      '       g   \        R\S        S4       24      hR V3R llpV! WÞ4      w  rÞV! W#4      w  r#V! W¼4      w  r¼\O        W#WÞ4      w  r#MV
! V	.VO5/ VB w  r#RV	PP                  9   g2   V	PP                  PU                  R/ 4      PU                  R4      '       d   \W        SRR7      ! V/ VB pMªR	pS\X        9   dh   S\Z        P\                  9  dS   \Z        P\                  P_                  S4        \X        S,          ! V/ VB p\Z        P\                  Pa                  S4       Vf3   S\        9   d   \        S,          ! V/ VB pM\W        SRR7      ! V/ VB pV
'       d   V Pc                  V	XXW#4       V#   \Z        P\                  Pa                  S4       i ; i  \d         d«   pR	p\        T R4      '       di   T PJ                  e[   \        T PJ                  R4      '       d?   T PJ                  PP                  e'   T PJ                  PP                  PU                  RR	4      p\g        TSY#TR7      Pi                  TPj                  4      R	hR	p?ii ; i)r   Ú_inductor_lowering_functionz is not an OpOverloadrœ   FT)ÚwarnrB  Úoverride_decompz"Creating implicit fallback for:
%s)Úwith_defaultN)Úlayout_constraintrB  z  via %sÚeager_input_valsú$Expected torch._ops.OpOverload, got c               ó$   € V ^8„  d   QhRRRRRR/# )rv   rw   r   rx   ry   ztuple[Any, Any]r{   )r|   s   "r}   r~   Ú1GraphLowering.call_function.<locals>.__annotate__Ü  s!   € ÷ 8ñ 8¨Cð 8¸ð 8Àñ 8r   c                ó    <€ \         P                  P                  P                  SW4      pVf   \	        RS 24      hV^ ,          V^,          3# )Nz%normalize_function returned None for )r‘   r³   Úoperator_schemasÚnormalize_functionr�   )rw   rx   rÏ   r™   s   && €r}   Ú	normalizeÚ.GraphLowering.call_function.<locals>.normalizeÜ  sU   ø€ Ü%*§X¡X×%>Ñ%>×%QÑ%QØ &¨ó&˜Fð  &š~Ü&4Ø&KÈFÈ8Ð$Tó'"ð !"ð $*¨!¥9¨f°Q­iÐ#7Ð7r   Úshould_fallbackÚcustomÚfallback_to_eagerr  r{  r²   Ústack_trace)r  )6ÚoperatorÚgetitemrŠ   r#  rµ  ÚdictrJ  rÜ   r‘   rÞ   ÚOpOverloadPacketrŸ   rL   rß   r�   r?  r�   rI   rM   rB  r+   Úimplicit_fallbacksr   r7   r8   r2  r]  r   Úoperator_strr   Ú_libraryrç  Ú
is_builtinr8  rP   rQ   r3  r{  rN   rG   r²   rÁ   rý   rJ   rS   rd   Úactive_user_lowering_opsrÍ   ÚdiscardÚpropagate_mutationÚ	Exceptionr6   Úwith_tracebackÚ__traceback__)r«  r™   rw   rx   Ú	base_nameÚerrorÚtagÚdecided_constraintÚdefault_tagr  Úlayout_constraintsÚold_argsÚ
old_kwargsÚ	fake_argsÚfake_kwargsr
  ÚoutÚer  r®  s   &f&&               €r}   rÜ   ÚGraphLowering.call_function|  s”  ù€ à”X×%Ñ%Ó%¬*°T¸!µW¼tÄUÌDÐ>Q×*RÒ*RÜ‘7Ñ(¨°Ó>Ð>ô ˜&¤%§*¡*×"=Ñ"=×>Ò>Ä7ØÐ1÷D
ò D
ñ ˜4Ð* 6Ñ*Ð*àœÕ"Ü˜f¤e§j¡j×&;Ñ&;×<Ò<Ü$¨ xÐ/DÐ%EÓFÐFØŸ™›×+Ñ+¨CÓ0°Õ3ˆIØÔ/Ô/ÜØØØ"&×"4Ñ"4Ø$(÷	ô ×*×*Ð*ô *¨6¨(×3Ò3õ .ä5ð ô
 —‘Ø9Ü˜u×1Ñ1°6¸4ÓHôô
 ,EØ¨ô,�ð ’KÜŸ™×,Ñ,×7Ñ7¸×?Ò?Ø×(×(Ð(ô +ñ 'ô 1JØ¨Tô1�Kô *BÀ+Ó)NÐ&äØØ&8Ø"&×"4Ñ"4öô $ V H×-Ò-ô 0°¸ÓEÐEä2°6¸4ÓHÐHð[	8Ü�I‰I�j¤)¨FÕ"3Ô4à×!Ñ!ˆAÜ!9¸&Ó!AÐß!Ø'+˜*Ø%Ô)BÓBð
 *¨Q¯V©VÔ3Ø12·±Ð8JÕ1KÑ.˜	ô  *¨&´%·*±*×2GÑ2G×HÒHÜ"0Ø"FÄtÈFÃ|ÀnÐ Uó#ð ÷8ð 8ñ 2;¸9Ó1RÑ.˜	Ù'0°Ó'>™˜Ù/8¸Ó/NÑ,˜ä'@Ø ¨)ó(™˜øñ $6°aÐ#I¸$Ò#IÀ&Ñ#I‘L�Dà  A§F¡FÔ*¨a¯f©f¯j©j¸À2Ó.F×.JÑ.JØ#÷/ò /ô ' vÀ5ÕIØðØ#ñ‘ð �ð œnÔ,Ø¤a×&@Ñ&@Ô@ô ×.Ñ.×2Ñ2°6Ô:ðCä,¨VÖ4°dÐE¸fÑE˜ä×2Ñ2×:Ñ:¸6ÔBð ’;Ø¤Ô*Ü'¨Ö/°Ð@¸Ñ@™ô /¨vÈ5ÕQØ!ðØ%+ñ˜÷ "ð ×'Ñ'¨¨8°ZÀÔNàˆJøô% ×2Ñ2×:Ñ:¸6ÕBûô& ô 	8ØˆKä˜˜n×-Ò-Ø×%Ñ%Ò1Ü˜D×-Ñ-¨v×6Ò6Ø×%Ñ%×*Ñ*Ò6à"×/Ñ/×4Ñ4×8Ñ8¸ÈÓM�Ü#Ø�6˜4°[ôç‰n˜QŸ_™_Ó-°4ð8ûð	8ús@   È7D8Q0 Í0AQ0 ÏQ ÏAQ0 Ð6Q0 Ñ!Q-Ñ-Q0 Ñ0T%Ñ;B%T Ô T%c               ó    € V ^8„  d   QhRRRR/# r»   r{   )r|   s   "r}   r~   rC  $  s   € ÷ 5ñ 5˜|ð 5°ñ 5r   c                ón   € \        V P                  4      ^8H  ;'       d    V P                  ^ ,          ^8*  # )z=
True if this is a small constant attr that will be inlined.
)r  ÚshaperÅ   s   &r}   Úcan_inline_constantÚ!GraphLowering.can_inline_constant#  s+   € ô
 �1—7‘7‹|˜qÑ ×4Ð4 Q§W¡W¨Q¥Z°1¡_Ð4r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rv   r™   rš   rw   z	tuple[()]rx   rî  ry   zLConstant | TensorBox | ShapeAsConstantBuffer | ir.Subgraph | TorchBindObjectr{   )r|   s   "r}   r~   rC  +  s9   € ÷ B7ñ B7àðB7ð ðB7ð "ð	B7ð
 
VñB7r   c           
     	óR  € \        V P                  V4      p\        V\        P                  P
                  4      '       dv   WP                  9   d   V P                  V,          # \        VR / 4      P                  R4      p\        VRR4      p\        P                  ! VVVR7      pWpP                  V&   V# \        V\        P                  P                  4      '       d*   W@P                  V&   RV P                  V&   \        WR7      # \        V\         4      '       d*   W@P                  V&   RV P                  V&   \        WR7      # \#        \%        V4      4      '       d*   W@P                  V&   RV P                  V&   \        WR7      # \        V\        P&                  4      '       g   \)        R\%        V4       24      h\*        P,                  P.                  '       g8   \*        P0                  '       g"   \3        V4      '       g   WP4                  9   d   V P7                  WA4      # \9        4       ;_uu_ 4        VP:                  R8X  d;   \=        VP?                  4       VP@                  VPB                  R7      uuRRR4       # V PE                  V4      '       d^   \F        PI                  R	V4       ^R
I%H&p V! VPO                  4       VP@                  VPB                  \Q        V4      R7      uuRRR4       #  RRR4       V P7                  WA4      #   + '       g   i     L!; i)r²   Únested_region_configÚinductor_config_patchesN)r?  Úgraph_moduler3  rG  rð  r  )r²  r  r   zInlining constant: %s ©rù  )r  r   r  r{   ))r§   r›  rŠ   r‘   r³   rk   rn  r¢   rý   r,   ÚSubgraphrú   ÚScriptObjectrk  ro  rF   r   r   rÁ   r   r�   r+   rÎ  rÏ  Úalways_keep_tensor_constantsrR   rE  rÜ  r'   r-  r;   Úitemr  r   r.  r2  r3  Úloweringrù  ÚtolistrÆ   )	r«  r™   rw   rx   r²  Únested_configr3  r(  rù  s	   &&&&     r}   Úget_attrÚGraphLowering.get_attr+  so  € ô " $§+¡+¨vÓ6ˆä�eœUŸX™X×1Ñ1×2Ò2à×,Ñ,Ô,Ø×*Ñ*¨6Õ2Ð2ä# E¨6°2Ó6×:Ñ:Ð;QÓRˆMÜ&-ØÐ8¸$ó'Ð#ô —+’+ØØ"Ø(?ôˆCð
 +.×Ñ Ñ'ØˆJä�eœUŸX™X×2Ñ2×3Ò3Ø/4×$Ñ$ VÑ,Ø*,ˆD×Ñ Ñ'Ü"¨Ô<Ð<Ü˜Ô/×0Ò0Ø/4×$Ñ$ VÑ,Ø*,ˆD×Ñ Ñ'Ü"¨Ô<Ð<ÜœT %›[×)Ò)Ø/4×$Ñ$ VÑ,Ø*,ˆD×Ñ Ñ'Ü"¨Ô<Ð<ä˜%¤§¡×.Ò.Ü Ð#>¼tÀE»{¸mÐ!LÓMÐMä×Ñ×<×<Ð<Ü×2×2Ð2Ü(¨×/Ò/Ø×3Ñ3Ô3à×+Ñ+¨EÓ:Ð:ä�]�]Ø�{‰{˜bÔ ÜØŸ*™*›,¨e¯k©kÀ%Ç,Á,ô÷ Š]ð
 ×'Ñ'¨×.Ò.Ü—	‘	Ð2°FÔ;å,áØ—L‘L“NØŸ+™+Ø Ÿ<™<Ü<¸UÓCô	÷ Š]ð
 /÷ ð" ×'Ñ'¨Ó6Ð6÷# �]ús   È<ALÊLÊALÌL&	c               ó(   € V ^8„  d   QhRRRRRRRR/# ©rv   r™   r   rw   rx   ry   r	   r{   )r|   s   "r}   r~   rC  o  ó(   € ÷ ñ  #ð ¨Sð ¸#ð À(ñ r   c                	ó   € \         hr�   ©r�   ©r«  r™   rw   rx   s   &&&&r}   Úcall_moduleÚGraphLowering.call_moduleo  ó   € ÜÐr   c               ó(   € V ^8„  d   QhRRRRRRRR/# r@  r{   )r|   s   "r}   r~   rC  r  rA  r   c                	ó   € \         hr�   rC  rD  s   &&&&r}   Úcall_methodÚGraphLowering.call_methodr  rG  r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rv   r™   ztorch.fx.node.Targetrw   z"tuple[torch.fx.node.Argument, ...]rx   rî  ry   rz   r{   )r|   s   "r}   r~   rC  v  s8   € ÷ v
ñ v
à$ðv
ð 1ðv
ð "ð	v
ð
 
ñv
r   c                	óF  <a€ \         SV `  WV4      p\        V\        \        34      '       g   V3p\        V\        \        34      '       g   \        R \        V4       24      hV Uu. uF6  p\        \        V4      4      '       d   \        P                  ! VR7      MTNK8  	  pp\        \        P                  \        R4      \        P                  \        P                  \        P                  P                   P"                  \$        \        P&                  \        P(                  \*        \        P,                  \        P                  \        P.                  3o\0        ;QJ d    V3R lV 4       F  '       d   K   RM	  RM! V3R lV 4       4      '       gP   V Uu. uF  p\        VS4      '       d   K  VNK  	  pp\        RV Uu. uF  p\        V4      NK  	  up RV 24      h\2        P4                  P6                  P8                  ^ ,          p\        V\        \        34      '       g   V3pV Uu. uF"  p\        P:                  P=                  V4      NK$  	  pp. p\?        V4      \?        V4      8w  d%   \        R\?        V4       R	\?        V4       R
24      h\A        WG4       EFƒ  w  rš\C        Wš4      p	\        V	\        P                  \        PD                  34      '       g   VPG                  V	4       KT  \        V	PI                  4       \        PJ                  4      '       d1   VPG                  \        P:                  PM                  V	4      4       K²  \N        PP                  P                  PS                  V	4      '       g   \        R\        V	4       24      hV
PT                  R,          PW                  4        Uu. uF;  p\        V\N        PX                  4      '       d   VPZ                  P\                  MTNK=  	  ppVPG                  \        P^                  ! Wœ4      4       EK†  	  W€n0        V Pb                  Pe                  4        EFÉ  w  rÞ\        V\*        \        Pf                  \N        PP                  P                  Ph                  \N        PP                  P                  P.                  34      '       d   Kt  \        V\        4      '       g   \        R\        V4       24      hVPk                  4        \        V\        4      '       g   \        R\        V4       24      hVPl                  p\        V\        Pn                  4      '       g   \        R\        V4       24      hTpVPl                  p\        V\p        4      '       d   VPs                  4       V8w  g   EK]  \        Pt                  Pw                  WàPx                  V,          4        V P`                  P{                  V4      pV Px                  V,          V P`                  V&   EKÌ  	  V P                  4        \€        Pƒ                  RV P„                  V P†                  e   V P†                  4       R# R4       R# u upi u upi u upi u upi u upi   \|         d     EKI  i ; i)zExpected tuple or list, got ©r²  Nc              3  ó<   <"  € T F  p\        VS4      x € K  	  R # 5ir�   )rŠ   )r  r·  Ú_allowed_output_typess   & €r}   r  Ú'GraphLowering.output.<locals>.<genexpr>—  s   øé € ÐHÁ¸A”:˜aÐ!6×7Ð7Ãùs   ƒFTzUnexpected output types: z, full result: z&Mismatch between fx_node_args length (z) and result length (Ú)z!Expected storage_and_layout, got r  z'Unsupported inductor graph input type: z(Expected TensorBox after realize(), got zExpected ir.StorageBox, got zGForce channels last inputs for %d conv for the current graph with id %drI  )DrJ  r¬   rŠ   rµ  r#  r�   rÁ   r   r,   ÚOpaqueValueTypeConstantrE   r;   rx  r‹   r   ÚlogicÚboolalgÚBooleanrê  ÚEffectfulKernelrC   rF   ÚOpaqueMultiOutputrô  r1  rd   r’  r{  rw   r!  r"  r  Úzipr'  r   rÎ   Úget_output_specÚCommBufferLayoutÚ
copy_inputr‘   Ú	_inductorÚis_storage_and_layoutr²   rÄ  rÊ  r¸   rË  Útry_match_insignificant_stridesr+  rX  rÐ  ÚBasicró  r¿  r×  rD   r@   Úget_nameÚMutationLayoutSHOULDREMOVEÚrealize_intorY  rb  Ú
ValueErrorÚfinalizer2  r3  rM  r1  )r«  r™   rw   rx   rÏ   r·  ÚbadÚfx_node_argsÚresult_correct_stridesr  r  ÚsÚmeta_stridesr?  r²  Úvalue_storage_boxÚindrP  r®  s   &&&&             @€r}   r¬   ÚGraphLowering.outputu  s5  ù€ ô ‘‘ ¨fÓ5ˆÜ˜&¤5¬$ -×0Ò0à�YˆFÜ˜&¤5¬$ -×0Ò0Ü Ð#?ÄÀVÃ¸~Ð!NÓOÐOñ
 ó	
ñ �ô '¤t¨A£w×/Ò/ô ×&Ò&¨QÕ/àòñ ð	 	ð 
ô Ü�K‰KÜ�‹JÜ×ÑÜ�J‰JÜ�K‰K×Ñ×'Ñ'ÜÜ×ÑÜ×$Ñ$ÜÜ× Ñ Ü×&Ñ&Ü× Ñ ð!
Ð÷ ‹sÔHÁÓH�s�sŠsÔHÁÓH×HÒHÙ$ÓQ™f˜¬J°qÐ:O×,P—1�1™fˆCÐQÜ Ø+¹cÓ,B¹c¸¬T°!®W¹cÑ,BÐ+CÀ?ÐSYÐRZÐ[óð ô —w‘w×+Ñ+×0Ñ0°Õ3ˆÜ˜,¬´¨×6Ò6à(˜?ˆLÙ<BÓC¹F°q”"—/‘/×/Ñ/°Ö2¹FˆÐCØ!#Ðäˆ|Ó¤ F£Ô+Ü Ø8¼¸\Ó9JÐ8KÐK`ÔadÐekÓalÐ`mÐmnÐoóð ô ˜f×3‰JˆAÜ4°QÓ@ˆAÜ˜a¤"§,¡,´·±Ð!<×=Ò=Ø&×-Ñ-¨aÖ0Ü˜A×-Ñ-Ó/´×1DÑ1D×EÒEð '×-Ñ-¬b¯o©o×.HÑ.HÈÓ.KÖLô —‘×)Ñ)×?Ñ?À×BÒBÜ(Ð+LÌTÐRSËWÈIÐ)VÓWÐWð %Ÿ\™\¨%Õ0×7Ñ7Ô9ó ñ :˜ô $.¨a´·±×#>Ò#>�A—F‘F—K’KÀAÒEá9ð ð  ð
 '×-Ñ-Ü×6Ò6°qÓG÷ñ) 4ð0 4Ôà×,Ñ,×2Ñ2×4‰KˆDÜØä#Ü—K‘KÜ—O‘O×&Ñ&×5Ñ5Ü—O‘O×&Ñ&×8Ñ8ð	÷ò ñ Ü˜e¤Y×/Ò/Ü$Ø=¼dÀ5»k¸]ÐKóð ð �M‰MŒOÜ˜e¤Y×/Ò/Ü$Ø>¼tÀE»{¸mÐLóð ð —J‘JˆEÜ˜e¤R§]¡]×3Ò3Ü$Ð'CÄDÈÃKÀ=Ð%QÓRÐRØ %ÐØ—J‘JˆEÜ˜e¤[×1Ò1°U·^±^Ó5EÈ×5Mä×-Ñ-×:Ñ:Ø×5Ñ5°dÕ;ôðØ×,Ñ,×2Ñ2Ð3DÓE�CØ.2×.HÑ.HÈÕ.N�D×&Ñ& sÔ+ñC 5ðJ 	�‰ŒÜ�	‰	ØUØ×'Ñ'Ø!Ÿ]™]Ò6ˆD�M‰Mö	
ð =?ö	
ùòM
ùò, Rùâ,Bùò Dùò, øôZ "ô Ûðús7   Á)<Y7Æ!Y<Æ:Y<ÇZ
È:(ZÏ	AZ×$;ZÚZ ÚZ c               ó   € V ^8„  d   QhRR/# r±  r{   )r|   s   "r}   r~   rC  î  s   € ÷  ñ  ˜$ñ  r   c                	óL   € V P                    F  pVP                  4        K  	  R # r�   )re  Údecide_layout)r«  rƒ  s   & r}   re  ÚGraphLowering.finalizeî  s   € Ø—<”<ˆCØ×ÑÖó  r   c               ó   € V ^8„  d   QhRR/# )rv   r¸   rÙ   r{   )r|   s   "r}   r~   rC  ó  s   € ÷ $ñ $ ]ñ $r   c              #  	ó^   "  € V P                   p Wn         R x € W n         R #   Y n         i ; i5ir�   )r{  )r«  r¸   Úolds   && r}   Úset_current_nodeÚGraphLowering.set_current_nodeò  s*   é € à×Ñˆð	$Ø $ÔÛà #Öø Õüs   ‚-�
" š-¢*ª-c               ó   € V ^8„  d   QhRR/# )rv   ry   rþ  r{   )r|   s   "r}   r~   rC  ü  s   € ÷ $ñ $¨.ñ $r   c              #  	óR   "  € V P                   p R x € Wn         R #   Yn         i ; i5ir�   ©rx  )r«  rt  s   & r}   Úset_current_wrapper_codeÚ&GraphLowering.set_current_wrapper_codeû  s$   é € à×Ñˆð	$Ûà #Öø Õüs   ‚'� ”'œ$¤'c               ó0   € V ^8„  d   QhRRRRRRRRRRR	R
/# )rv   r  rÙ   r$  z
tuple[Any]r%  rü  Únew_argsÚ
new_kwargsry   rz   r{   )r|   s   "r}   r~   rC    sN   € ÷ a:ñ a:àða:ð ða:ð #ð	a:ð
 ða:ð #ða:ð 
ña:r   c                óF  a a€ \        V4      \        V4      8w  d%   \        R\        V4       R\        V4       R24      h\        V4      \        V4      8w  d%   \        R\        V4       R\        V4       R24      hR R loVP                  \        P                  P
                  P                  J Ed]   VP                  R,          p\        V\        4      '       g   \        R	\        V4       24      h\        P                  P                  P                  VR
,          VR,          VP                  4        UUu/ uFE  w  rxT\        V\        P                  P                   4      '       d   VP"                  R,          MTbKG  	  uppVR,          4      p	V	 Fs  p
VR,          V
,          pVR,          V
,          pS! W¼4      '       d   K3  S P%                  \        P                  P&                  P(                  P*                  W¼3/ 4       Ku  	  R# \        VP                  \        P,                  P.                  4      '       g"   \        R\        VP                  4       24      hR VV 3R llpVP                  P0                  p\3        \5        W$4      4       F$  w  pw  r¼VP6                  V,          pV! VW¼4       K&  	  VP6                   Uu/ uF  pVP8                  VbK  	  ppV F'  pVV,          pVV,          pVV,          pV! VW¼4       K)  	  R# u uppi u upi )aP  Propagate mutations on new_args/new_kwargs back to old_args/old_kwargs.

Assumes we may have cloned old_args/old_kwargs into new_args/new_kwargs
and then called fx_node(*new_args, **new_kwargs).

If fx_node mutates any of new_args/new_kwargs, and they are different from
old_args/old_kwargs, then we need to update the original tensor.
zold_args length (z) != new_args length (rR  zold_kwargs length (z) != new_kwargs length (c               ó$   € V ^8„  d   QhRRRRRR/# )rv   Úold_argr   Únew_argry   r¾   r{   )r|   s   "r}   r~   Ú6GraphLowering.propagate_mutation.<locals>.__annotate__  s!   € ÷ 	ñ 	 sð 	°Sð 	¸Tñ 	r   c                óð   € WJ d   R # \        V \        P                  4      '       dO   \        V\        P                  4      '       d/   V P                  4       pVRJ;'       d    W!P                  4       8H  # R# )TNF)rŠ   r,   ÚIRNodeÚmaybe_get_name)r�  r‚  r?  s   && r}   Úalready_reflectedÚ;GraphLowering.propagate_mutation.<locals>.already_reflected  s^   € ð Ó!ÙÜ˜'¤2§9¡9×-Ò-´*¸WÄbÇiÁi×2PÒ2PØ×-Ñ-Ó/�Ø 4Ð'×LÐL¨D×4JÑ4JÓ4LÑ,LÐLÙr   rx   zExpected dict, got Ú
kernel_idxÚconstant_args_idxr  Útma_descriptor_metadataNr  c               ó(   € V ^8„  d   QhRRRRRRRR/# )rv   Ú
schema_argztorch._C.Argumentr�  r  r‚  ry   rz   r{   )r|   s   "r}   r~   rƒ  E  s,   € ÷ 	ñ 	Ø)ð	Ø4=ð	ØHQð	àñ	r   c                ó†  <€ WJ d   R # V P                   e«   V P                   P                  '       d�   \        V\        P                  4      '       d   V3pV3p\        W4       FU  w  r4S! W44      '       d   K  SP                  \        P                  P                  P                  P                  W43/ 4       KW  	  R # R # R # r�   )Ú
alias_infoÚis_writerŠ   r,   r…  rY  rÜ   r‘   r  rä   Úcopy_r  )r�  r�  r‚  Úold_arg_itemÚnew_arg_itemr‡  r«  s   &&&  €€r}   Úmaybe_propagateÚ9GraphLowering.propagate_mutation.<locals>.maybe_propagateE  s£   ø€ ð Ó!ÙØ×$Ñ$Ò0°Z×5JÑ5J×5S×5SÐ5Sô ˜g¤r§y¡y×1Ò1Ø&˜j�GØ&˜j�Gä25°gÖ2GÑ.�LÙ(¨×DÒDÙ Ø×&Ñ&ÜŸ	™	Ÿ™×,Ñ,×4Ñ4°|Ð6RÐTVöó 3Hñ 6TÑ0r   )r  r�   r™   r‘   r  Úhigher_orderÚtriton_kernel_wrapper_mutationrx   rŠ   r  rÁ   r÷   rø   Úget_mutated_tensorsrÐ  r³   r%   r²   rÜ   rä   r‘  r  rÞ   rß   Ú_schemarž   rY  Ú	argumentsr?  )r«  r  r$  r%  r}  r~  rx   r¬  r­  Úmutatedr?  r�  r‚  r”  Úschemar·   r�  ÚargÚschema_kwargsÚkeyr‡  s   f&&&&&              @r}   r  Ú GraphLowering.propagate_mutation  s©  ù€ ô  ˆx‹=œC ›MÔ)Ü Ø#¤C¨£M ?Ð2HÌÈXËÈÐWXÐYóð ô ˆz‹?œc *›oÔ-Ü Ø%¤c¨*£oÐ%6Ð6NÌsÐS]ËÐN_Ð_`Ðaóð õ	ð �>‰>œUŸY™Y×3Ñ3×RÑRÔRØ—^‘^ HÕ-ˆFÜ˜f¤d×+Ò+Ü$Ð':¼4À»<¸.Ð%IÓJÐJÜ×-Ñ-×@Ñ@×TÑTØ˜<Õ(ØÐ.Õ/ð !'§¡¤ôá .™˜ð ¬
°1´e·h±h·m±m×(DÒ(D�q—v‘v˜e–}È!ÒKÙ .òð Ð4Õ5óˆGó  �Ø$ XÕ.¨tÕ4�Ø$ XÕ.¨tÕ4�Ù$ W×6Ò6Ùà×"Ñ"¤5§9¡9§>¡>×#7Ñ#7×#?Ñ#?À'ÐASÐUWÖXñ  ñ ä˜'Ÿ.™.¬%¯*©*×*?Ñ*?×@Ò@Ü Ø6´t¸G¿N¹NÓ7KÐ6LÐMóð ÷	ñ 	ð( —‘×'Ñ'ˆÜ'0´°XÓ1HÖ'IÑ#ˆCÑ#�'Ø×)Ñ)¨#Õ.ˆJÙ˜J¨Ö9ñ (Jð 39×2BÒ2BÓCÑ2B¨3˜Ÿ™ 3šÑ2BˆÐCãˆCØ  •oˆGØ  •oˆGØ& sÕ+ˆJÙ˜J¨Ö9ó	 ùó_ùòZ Ds   Ä<ALËLc               ó    € V ^8„  d   QhRRRR/# )rv   r  rÙ   ry   r2  r{   )r|   s   "r}   r~   rC  g  s   € ÷ 6ñ 6˜Mð 6¨jñ 6r   c                óX   € V P                   P                  R/ 4      P                  R4      # )z:Get the user-annotated stream index from FX node metadata.r  Ústream©r²   rý   r"  s   &r}   Ú_get_node_streamÚGraphLowering._get_node_streamf  s$   € ð �v‰v�z‰z˜( BÓ'×+Ñ+¨HÓ5Ð5r   c               ó    € V ^8„  d   QhRRRR/# )rv   r  rÙ   ry   ztuple[int, int] | Noner{   )r|   s   "r}   r~   rC  l  s   € ÷ ;ñ ;˜]ð ;Ð/Eñ ;r   c                óp   € V P                   P                  R/ 4      pRV9  d   R# VR,          VR,          3# )z:Get the user-annotated CUDA MemPool from FX node metadata.r  ÚmempoolNÚmempool_devicer¤  )r  r  s   & r}   Ú_get_node_mempoolÚGraphLowering._get_node_mempoolk  s9   € ð —‘—‘˜H bÓ)ˆØ˜FÔ"ÙØ�iÕ  &Ð)9Õ":Ð:Ð:r   c               ó    € V ^8„  d   QhRRRR/# )rv   r  rÙ   ry   rz   r{   )r|   s   "r}   r~   rC  s  s   € ÷ #ñ #°}ð #Èñ #r   c                ój  € V P                  V4      pV P                  V4      pVP                   F€  pV P                  V4      pV P                  V4      pWR8X  d	   Wc8X  d   K3  V P                  P	                  V4      p\        V\        P                  4      '       g   Kp  VP                  4        K‚  	  R# )ao  Realize IR inputs that are in a different stream or mempool context.

Without this, pointwise ops across context boundaries would be inlined
into each other during lowering, making it impossible for the scheduler
to split them into separate kernels or allocate buffers in the right
memory pool.

None means the default stream, so it is compared like any other value.
N)	r¥  r«  rþ   Úenvrý   rŠ   r,   rE   r¿  )r«  r  Únode_streamÚnode_mempoolÚ
input_nodeÚinput_streamÚinput_mempoolÚir_values   &&      r}   Ú%_realize_inputs_at_context_boundariesÚ3GraphLowering._realize_inputs_at_context_boundariess  s‘   € ð ×+Ñ+¨AÓ.ˆØ×-Ñ-¨aÓ0ˆØ×+Ô+ˆJØ×0Ñ0°Ó<ˆLØ ×2Ñ2°:Ó>ˆMØÔ*¨}Ô/LÙØ—x‘x—|‘| JÓ/ˆHÜ˜(¤B§L¡L×1Ô1Ø× Ñ Ö"ó ,r   c               ó    € V ^8„  d   QhRRRR/# )rv   r  rÙ   ry   r  r{   )r|   s   "r}   r~   rC  ˆ  s   € ÷ cñ c˜-ð c¨Fñ cr   c                óþ'  <a aa%a&a'a(a)€ R V3R llpR V'V(V 3R llp^ RI Hp \        S P                  4      o&\        S P                  4      o)\        S.4      pSP                  R8H  pV'       dV   \        SP                  \        P                  P                  4      '       d"   SP                  P                  4       R'9   d   R# V'       d7   S P                  S4      w  rxV\        Wx4      ,          pS P                  S4       S P!                  S4      p	V	e   S P"                  f   RS n        \$        P&                  P)                  V4      ;_uu_ 4        \$        P&                  P+                  S P-                  S4      4      ;_uu_ 4        \$        P&                  P/                  V	4      ;_uu_ 4        S P1                  S4      ;_uu_ 4        \2        P0                  ! S4      ;_uu_ 4        V'       dÕ   SP                  '       dÃ   \        SP                  \        P                  P                  4      '       d�   \        P4                  P6                  P9                  SP                  4      '       dV   \;        S4      '       g   VP=                  R	R
V3R l4      '       d(   V! R4       \?        SP                  RR7      ! X/ XB p
EMËSP                  R8X  d‡   \        SP                  \        P                  P                  \        P                  P@                  34      '       d9   \C        S4      '       d(   V! R4       \?        SP                  RR7      ! X/ XB p
EM4SP                  R8X  Ed   SP                  \        PD                  PF                  PH                  J dÚ   \J        PL                  R8w  dÅ   V! R4       \J        PL                  R8X  dŒ   XpXpSPN                  PQ                  R4      ;p'       d$   V^ ,          pV^,          p\S        VVVV4      w  rxM\U        S.VO5/ VB w  rxS PW                  SP                  Wx4      p
S PY                  SW¼Wx4       M3\[        R\J        PL                   24      hV! R4       \\        S*S `½  S4      p
\        PD                  P`                  Pb                  Pd                  \        PD                  P`                  Pf                  Pd                  \        PD                  P`                  Ph                  Pd                  \        PD                  P`                  Pj                  Pd                  \        PD                  P`                  Pl                  Pd                  .o%\n        ;QJ d&    R SPp                   4       F  '       g   K   RM	  RM! R SPp                   4       4      pSS Pr                  9   o(\n        ;QJ d)    V%3R lSPp                   4       F  '       g   K   RM	  RM! V%3R lSPp                   4       4      o'SPN                  PQ                  RR4      '       dÃ   \        V
\t        4      '       d­   V
Pw                  4        SPN                  R,          Py                  4       p\        Pz                  P6                  P|                  ! V!  pV
P                  4       V8w  d?   V'       g7   \$        P€                  ! V4      p\$        P‚                  P…                  V
V4      p
V'       dQ   \        V
\t        4      '       d;   \        V
P†                  \$        Pˆ                  4      '       d   V
Pw                  4        V'       g
   S''       Ed¬   \        SPN                  PQ                  R4      \        PŠ                  4      '       Edr   S('       d   S Pr                  PQ                  S4      pM!SPN                  R,          Py                  4       pVEe(   \        V4      ^ 8”  Ed   \J        PŒ                  ;'       g    S('       * ;'       d    S''       * p\        PŽ                  P‘                  SPN                  R,          4      p\        \“        V4      4      ^ 8„  pV'       g„   V'       d|   \        V
P•                  4       4      ^8X  d^   SS P–                  9   dM   S('       gE   S''       g=   \$        P˜                  P›                  V
P•                  4       \        Pœ                  4      pV'       Eg   \        V4      '       dý   SPN                  R,          PŸ                  4       ;'       g%    \        V
P†                  \$        Pˆ                  4      pV'       dV   V'       d   \J        P                   '       g8   \$        P‚                  P…                  V
\$        P€                  ! V4      VR7      p
MR\        V
P•                  4       4      ^ 8X  d   \        V4      ^ 8”  d   . p\$        P‚                  P£                  V
VVR7      p
\        \        SPp                  4      4      pV^8”  Eda   \        V
\t        4      '       EdJ   SPp                   EFk  pVP                  \¤        9   Ed£   V
P§                  4        \        PD                  P`                  P¨                  Pd                  \        PD                  P`                  Pª                  Pd                  \        PD                  P`                  P¬                  Pd                  .p. pS P®                  '       g>   VP±                  \        PD                  P`                  P²                  Pd                  4       \        P´                  P¶                  '       Ed²   V\        PD                  P¸                  Pº                  Pd                  \        PD                  P¸                  Pº                  P¼                  \        PD                  P`                  P¾                  Pd                  \        PD                  PÀ                  PÂ                  Pd                  \        PD                  PÀ                  PÂ                  PÄ                  \        PD                  PÀ                  PÂ                  P¼                  \        PD                  PÀ                  PÂ                  PÆ                  .,          pV\        PD                  P¸                  PÈ                  Pd                  \        PD                  P¸                  PÈ                  P¼                  \        PD                  P¸                  PÊ                  P¼                  \        PD                  P¸                  PÌ                  Pd                  \        PD                  PÀ                  PÎ                  Pd                  \        PD                  PÀ                  PÐ                  P¼                  .,          p\        P´                  PÒ                  '       d7   V\        PD                  PÔ                  PÖ                  Pd                  .,          pVP                  V9   dV   \$        P‚                  P…                  V
\$        P€                  ! SPN                  R,          Py                  4       4      RR7      p
VP                  V9   dp   SVPØ                  ^ ,          J dY   \$        P‚                  P…                  V
\$        P€                  ! \Û        SPN                  R,          PÜ                  4      4      4      p
VP                  R8X  g   EKÐ  \        V
P†                  P†                  \Þ        \à        34      '       g   EK  \J        Pâ                  '       dC   V
P†                  På                  4       ^ 8X  d$   V
P†                  Pç                  4       '       g   EK[  V
Pw                  4        EKn  	  V
P†                  p\        V\è        4      '       g?   \        V\$        Pˆ                  \$        Pê                  34      '       d   VP†                  pKT  \        V\è        4      '       d4   VPí                  \        SPp                  4      4      '       d
   V! V
S4      p
V
Pï                  \        SPp                  4      4       \        V
\t        4      '       d0   V
Pñ                  4       '       d   V! V
S4      p
V
P§                  4        \        V
\t        4      '       du   \        V
P†                  \è        4      '       dU   V
P†                  P†                  p\        V\Þ        4      '       d)   VPç                  ^dR7      '       d   V
Pw                  4        RRR4       RRR4       RRR4       RRR4       RRR4       \ó        X
S4       S Põ                  V
4       \
        \ö        Pø                  ,          ! 4       pS P                  S&R  F  pVVPû                  4       ,          pK  	  S P                  S)R  F  p VV Pû                  4       ,          pK  	  \2        Pü                  Pþ                  EP                   p!SP                  R8X  dK   \        V
\ö        Pø                  4      '       d+   V!EP                  V
4      '       d   VEP                  V
4       R V&V)V 3R llp"\2        Pü                  EP                  '       d   SP                  R8X  d   V
# E\	        \2        Pü                  Pþ                  EP                   SPN                  PQ                  R / 4      4      p#V#f   E\        R!4      h\        R" V# 4       4      p$VV$8¼  g-   E\        R#V R$V$ R%SEP                  4        R&V"! 4        24      hS EP                  SV4       V
#   + '       g   i     EL;; i  + '       g   i     ELG; i  + '       g   i     ELS; i  + '       g   i     EL_; i  + '       g   i     ELk; i)(z4Lower and execute a single FX node into Inductor IR.c               ó    € V ^8„  d   QhRRRR/# )rv   Úmsgrš   ry   rz   r{   )r|   s   "r}   r~   Ú,GraphLowering.run_node.<locals>.__annotate__‹  s   € ÷ 	Hñ 	H�sð 	H˜tñ 	Hr   c                ó\   <€ \         P                  R \        SP                  4      V 4       R# )zlowering %s %sN)r2  r3  r   Úformat_node)r»  r  s   &€r}   r3  Ú%GraphLowering.run_node.<locals>.debug‹  s   ø€ Ü�I‰IÐ&¬
°1·=±=Ó(AÀ3ÖGr   c               ó$   € V ^8„  d   QhRRRRRR/# )rv   rÏ   r  r  rÙ   ry   r{   )r|   s   "r}   r~   r¼  ‘  s$   € ÷ 	ñ 	Øð	Ø"/ð	àñ	r   c           	     ó&  <€ \         P                  P                  VP                  R ,          4      pVP                  R ,          P	                  4       p\        \        V4      4      ^ 8„  pV'       g    V'       d˜   \        V P                  4       4      ^8X  dz   VSP                  9   di   S'       ga   S'       gY   \        P                  P                  V \        P                  ! \        VP                  R ,          P                  4      4      4      p V # )r  )r‘   Ú_prims_commonÚ%is_non_overlapping_and_dense_or_falser²   rÄ  r  r   r$  r�  r,   r!  Úrequire_stride_orderÚget_stride_orderr   r-  )rÏ   r  Údenser»  Úunbacked_symbols_in_stridesÚis_input_for_as_stridedÚis_user_visibler«  s   &&   €€€r}   Ú&maybe_apply_channels_last_stride_orderÚFGraphLowering.run_node.<locals>.maybe_apply_channels_last_stride_order‘  sÅ   ø€ ô ×'Ñ'×MÑMØ—‘�u•óˆEð —f‘f˜U•m×*Ñ*Ó,ˆGÜ*-Ô.CÀGÓ.LÓ*MÐPQÑ*QÐ'ç/ßÜ˜Ÿ™Ó)Ó*¨aÔ/Ø˜×8Ñ8Ô8ß'ß/äŸ™×=Ñ=ØÜ×'Ò'Ü6°q·v±v¸eµ}×7JÑ7JÓKóó�ð ˆMr   )ÚCompilerBisectorrÜ   Nz>user CUDA MemPool contexts are not compatible with CUDA graphsÚinductorrL   c                 ó   <€ \        S 4      # r�   )Úreprr"  s   €r}   Ú<lambda>Ú(GraphLowering.run_node.<locals>.<lambda>Õ  s	   ø€ ¼¸a¼r   rJ   Fr  Úflexible_layoutÚ-user_defined_triton_kernel_layout_constraintsÚneeds_fixed_stride_orderr  z1Unknown triton_kernel_default_layout_constraint: rG  c              3  ó>   "  € T F  qP                   R 8H  x € K  	  R# 5i)r¬   Nr­   )r  rW  s   & r}   r  Ú)GraphLowering.run_node.<locals>.<genexpr>  s   é € ÐD¹G°DŸG™G xÖ/»Gùs   ‚Tc              3  ó@   <"  € T F  qP                   S9   x € K  	  R # 5ir�   )r™   )r  rW  Úas_strided_opss   & €r}   r  rÖ     s   øé € ð *Ù:A°$—‘˜~Ö-»'ùrä  Úinductor_realize_to_stridesr  )Úallow_paddingr¬   )Ú	thresholdrñ  c               ó   € V ^8„  d   QhRR/# r  r{   )r|   s   "r}   r~   r¼  æ  s   € ÷ 		#ñ 		# ñ 		#r   c                 óà   <€ SP                   SR   U u. uF  p RV P                  4        RV  R2NK  	  pp VP                  R SP                  SR   4       4       RP	                  V4      # u up i )Núunbacked_symbol_defs=ú in:
Ú
c              3  óP   "  € T F  pR VP                  4        RV R2x € K  	  R# 5i)rÞ  rß  rà  N)Úget_unbacked_symbol_defs©r  r®   s   & r}   r  ÚBGraphLowering.run_node.<locals>.format_new_defs.<locals>.<genexpr>ë  s1   é € ð á?�Bð (¨×(CÑ(CÓ(EÐ'FÀfÈRÈDÐPRÕSÛ?ùs   ‚$&z***
)re  râ  Úextendrf  r¡   )rƒ  r  Úbuffer_watermarkÚoperation_watermarkr«  s     €€€r}   Úformat_new_defsÚ/GraphLowering.run_node.<locals>.format_new_defsæ  s‰   ø€ ð  Ÿ<™<Ð(8Ð(9Ñ:óá:�Cð (¨×(DÑ(DÓ(FÐ'GÀvÈcÈUÐRTÓUÙ:ð ð ð �H‰Hñ àŸ/™/Ð*=Ð*>Ñ?óô ð —<‘< “?Ð"ùòs   “ A+Úunbacked_bindingsz'resolve_unbacked_bindings returned Nonec              3  óˆ   "  € T F8  p\         P                  P                  P                  P	                  W4      x € K:  	  R # 5ir�   )rd   rg  r0  Úunbacked_renamingsrý   )r  ri  s   & r}   r  rÖ  	  s7   é € ð /
ñ '�ô �K‰K×!Ñ!×4Ñ4×8Ñ8¸×>Ð>Û&ùs   ‚A Azfailed ú >= z (inductor >= fx)
fx node is: z
new operations are:

)zmempool::beginzmempool::end)ˆÚ!torch._inductor.compiler_bisectorrÌ  r  re  rf  r(   r®   rŠ   r™   r‘   rÞ   rß   r?  Úfetch_args_kwargs_from_envrW   r¶  r«  r–  r,   r…  Úcurrent_originsÚcurrent_stream_idxr¥  Úcurrent_mempoolru  rd   r  rç  r  rK   Údisable_subsystemrJ   ÚHigherOrderOperatorr`   r  r–  r—  r+   Ú'triton_kernel_default_layout_constraintr²   rý   rG   rH   rÜ   r  r    rJ  Úrun_noderä   Ú
as_stridedr  Úas_strided_Úas_strided_scatterÚresizeÚ	resize_asrí   rS  rÖ   rE   r¿  rÄ  r]  Úany_is_symbolicÚmaybe_get_striderÅ  r!  rÄ  r×  r   r   rÿ   rÂ  rÃ  r   r$  r�  ÚFlexibleLayoutÚ stride_ordered_for_memory_formatÚchannels_lastÚ_is_viewÚstrict_output_stridesÚrequire_exact_stridesrO   Úrealize_hintræ   ÚmmÚ_int_mmr5  rÎ   rå   rú   Ú_has_mkldnnr	  Ú_linear_pointwiser  Úmkldnn_rnn_layerÚonednnÚqlinear_pointwiserù  Úbinary_tensorr
  r  Ú _convolution_transpose_pointwiseÚqconv_pointwiseÚqconv2d_pointwiseÚhas_mklÚmklÚ_mkl_linearrw   r   r-  rA   rB   Údelay_realize_cheap_outputsÚ	num_readsÚhas_large_inner_fnrD   Ú
MutableBoxÚshould_realize_on_reuseÚ
mark_reuseÚhas_exceeded_max_readsr:   r»  r‹   rŒ   râ  r’  rV  r0  Úis_unbacked_symintrÍ   r8  r    r�   r¾  Úcreate_deferred_runtime_asserts)+r«  r  r3  rÊ  rÌ  ÚoriginsÚis_call_functionrw   rx   r±  rÏ   r$  r%  r  Úinp_argsÚ
inp_kwargsÚ	is_outputr»  Úsym_stridesÚstride_orderrÚ  rÆ  rÇ  Úis_viewÚ	num_usersrW  Úneed_fixed_layoutÚneed_fixed_channels_last_layoutÚ_dataÚcurrÚnew_unbacked_defsrƒ  r®   r0  rè  rê  Úrenamed_unbacked_bindingsrØ  ræ  rÈ  rÉ  rç  r®  s+   ff                                   @@@@@€r}   rö  ÚGraphLowering.run_nodeˆ  s  ÿ€ ÷	Hð 	H÷	ò 	õ0 	Gä˜tŸ|™|Ó,ÐÜ! $§/¡/Ó2Ðô $.¨q¨c£?ˆØŸ4™4 ?Ñ2ÐçÜ˜1Ÿ8™8¤U§Z¡Z×%:Ñ%:×;Ò;Ø—‘—‘“Ð#EÔEñ ßØ×:Ñ:¸1Ó=‰LˆDØ”~ dÓ3Õ3ˆGØ×6Ñ6°qÔ9Ø×-Ñ-¨aÓ0ˆØÒ#¨×(FÑ(FÒ(Nð
 Qð Ô*ô �I‰I×%Ñ% g×.Õ.Ü�I‰I×(Ñ(¨×)>Ñ)>¸qÓ)A×BÕBÜ�I‰I×%Ñ% l×3Õ3Ø×!Ñ! !×$Õ$Ü×Ò˜q×!Õ!÷ !à—H—H�HÜ˜qŸx™x¬¯©×)>Ñ)>×?Ò?Ü—N‘N×(Ñ(×3Ñ3°A·H±H×=Ò=ä9¸!×<Ò<Ø'×9Ñ9Ø" K´÷ò ñ
 Ð(Ô)Ü)¨!¯(©(ÈÕNØðàñ’ð
 —‘˜Ô'ÜØ—H‘HœuŸz™z×4Ñ4´e·j±j×6TÑ6TÐU÷ò ô /¨q×1Ò1ñ Ð(Ô)Ü)¨!¯(©(ÈÕNØðàñ’ð
 —‘˜Õ'Ø—H‘H¤§	¡	× 6Ñ 6× UÑ UÓUÜ×BÑBÐFWÔWáÐEÔFä×BÑBØ1ô2ð  $�HØ!'�Jà+,¯6©6¯:©:Ð6HÓ+IÐIÐ'ÖIØ#3°AÕ#6˜Ø%5°aÕ%8˜
Ü'@à à"Ø$Ø&ó(™˜˜fô (?¸qÐ'RÀ4Ò'RÈ6Ñ'R™˜Ø!×/Ñ/°·±¸$ÓG�FØ×+Ñ+¨A¨xÀTÕRä&ØKÌF×LzÑLzÐK{Ð|óð ñ �b”	Ü™Ñ)¨!Ó,�ô —	‘	—‘×)Ñ)×1Ñ1Ü—	‘	—‘×*Ñ*×2Ñ2Ü—	‘	—‘×1Ñ1×9Ñ9Ü—	‘	—‘×%Ñ%×-Ñ-Ü—	‘	—‘×(Ñ(×0Ñ0ðˆN÷ ›ÑD¸A¿GºGÓDŸŸšÑD¸A¿GºGÓDÓDˆIØ 4×#CÑ#CÑCˆOß&)£cô *Ø:;¿'º'ó*§c§c¢cô *Ø:;¿'º'ó*ó 'Ð#ð �v‰v�z‰zÐ7¸×?Ò?ÄJØœ	÷Eò Eð —‘Ô ØŸ&™& �-×.Ñ.Ó0�Ü#Ÿo™o×3Ñ3×CÒCÀWÑM�Ø×*Ñ*Ó,°Ô7ÇÜ#%×#6Ò#6°wÓ#?�LÜŸ_™_×AÑAÀ&È,ÓW�FçÜ˜v¤y×1Ò1Ü˜vŸ{™{¬B¯K©K×8Ò8ð —‘Ô ç×4Ð4¼*Ø—‘—
‘
˜5Ó!¤5§<¡<÷;ó ;÷ #Ø"×>Ñ>×BÑBÀ1ÓE‘GàŸf™f U�m×2Ñ2Ó4�GàÓ&¬3¨w«<¸!Õ+;ä×*Ñ*×AÐA°/Ô.A÷%6ð %6à5Ô5ð "ô "×/Ñ/×UÑUØŸ™˜u�ó�Eô Ô1°'Ó:Ó;¸aÑ?ð 0÷ 8ß!Ü §¡Ó 1Ó2°aÔ7Ø ×!@Ñ!@Ô@ß /ß 7ä"$×"3Ñ"3×"TÑ"TØ"ŸO™OÓ-¬u×/BÑ/Bó#˜÷ 7Ð6¼3¸w¿<º<Ø"#§&¡&¨¥-×"8Ñ"8Ó":÷ #ð #¼jØ"ŸK™KÜŸK™Kó?˜÷ #¯I¼&×:V×:VÐ:VÜ%'§_¡_×%IÑ%IØ &Ü "× 3Ò 3°GÓ <Ø.;ð &Jó &™Fô  # 6§?¡?Ó#4Ó5¸Ô:¼sÀ7»|ÈaÔ?OØ*, Ü%'§_¡_×%JÑ%JØ &¨¸}ð &Kó &˜Fô œJ q§w¡wÓ/Ó0ˆIØ˜1�}¤¨F´I×!>Ó!>ØŸG�G�DØ—{‘{Ô&;Õ;Ø×+Ñ+Ô-ô "ŸI™IŸN™N×?Ñ?×GÑGÜ!ŸI™IŸN™N×-Ñ-×5Ñ5Ü!ŸI™IŸN™N×2Ñ2×:Ñ:ð-Ð)ð
 ;=Ð7Ø#ŸŸ˜Ø-×4Ñ4´U·Y±Y·^±^×5OÑ5O×5WÑ5WÔXÜ Ÿ8™8×/×/Ñ/Ø-Ü %§	¡	× 0Ñ 0× BÑ B× JÑ JÜ %§	¡	× 0Ñ 0× BÑ B× IÑ IÜ %§	¡	§¡× ?Ñ ?× GÑ GÜ %§	¡	× 0Ñ 0× BÑ B× JÑ JÜ %§	¡	× 0Ñ 0× BÑ B× IÑ IÜ %§	¡	× 0Ñ 0× BÑ B× IÑ IÜ %§	¡	× 0Ñ 0× BÑ B× PÑ Pð2õ Ð-ð <Ü %§	¡	× 0Ñ 0× GÑ G× OÑ OÜ %§	¡	× 0Ñ 0× GÑ G× NÑ NÜ %§	¡	× 0Ñ 0× HÑ H× OÑ OÜ %§	¡	× 0Ñ 0× QÑ Q× YÑ YÜ %§	¡	× 0Ñ 0× @Ñ @× HÑ HÜ %§	¡	× 0Ñ 0× BÑ B× IÑ Ið@õ Ð;ô  %Ÿx™x×/×/Ð/Ø 1´e·i±i·m±m×6OÑ6O×6WÑ6WÐ5XÕ XÐ 1ØŸ;™;Ð*;Ô;Ü%'§_¡_×%IÑ%IØ &Ü "× 3Ò 3°A·F±F¸5µM×4HÑ4HÓ4JÓ KØ.2ð &Jó &˜Fð !ŸK™KÐ+JÔJØ ! T§Y¡Y¨q¥\Ó 1ä%'§_¡_×%IÑ%IØ &Ü "× 3Ò 3Ü$BÀ1Ç6Á6È%Å=×CVÑCVÓ$Wó!"ó&˜Fð —w‘w (×*ä% f§k¡k×&6Ñ&6¼ÄIÐ8N×OÕOô !'× B× BÐ Bà$*§K¡K×$9Ñ$9Ó$;¸qÔ$@à(.¯©×(FÑ(F×(HÒ(Hâ (Ø"ŸN™N×,ñS $ðV Ÿ™�Ü$ U¬J×7Ò7¼JØœBŸK™K¬¯©Ð7÷=ò =ð "ŸJ™J’Eä˜e¤Z×0Ò0°U×5RÑ5RÜ˜Ÿ™“L÷6ò 6ñ DÀFÈAÓN�Fð ×!Ñ!¤# a§g¡g£,Ô/ô ˜&¤)×,Ò,°×1NÑ1N×1PÒ1Pñ @ÀÈÓJ�Ø×#Ñ#Ô%ô ˜&¤)×,Ò,´¸F¿K¹KÌ×1TÒ1TØ—{‘{×'Ñ'�Ü˜d¤I×.Ò.à×.Ñ.¸Ð.×=Ò=ØŸ™Ô(÷M "÷ %÷ 4÷ C÷ /ôX 	˜6 1Ô%Ø×Ñ˜vÔ&ä&¤u§|¡|Ö4Ó6ÐØ—<‘<Ð 0Ð 1Ó2ˆCØ ×!=Ñ!=Ó!?Õ?Òñ 3à—/‘/Ð"5Ð"6Ó7ˆBØ ×!<Ñ!<Ó!>Õ>Òñ 8ô —G‘G×$Ñ$×.Ò.ˆ	ð
 �D‰D�MÔ!Ü˜6¤5§<¡<×0Ò0Ø×,Ò,¨V×4Ò4à×!Ò! &Ô)÷		#ò 		#ô �7‰7××Ñ 1§4¡4¨=Ô#8ØˆMõ. 6Ü�G‰G×Ñ×&Ò&¨¯©¯
©
Ð3FÈÓ(Kó
Ðð Ò$Ý Ð!JÓKÐKô %/ñ /
ñ 'ó	/
ó %
Ð!ð "Ð%>Ô>Ý ØÐ+Ð,¨DÐ1JÐ0Kð LØ Ÿ}š}›Ð/ð 0*Ù*9Ó*;Ð)<ð>óð ð
 	×,Ò,¨QÐ0AÔBØˆ÷C "×!Ð!ú÷ %×$Ð$ú÷ 4×3Ð3ú÷ C×BÐBú÷ /×.Ð.ús‹  Å7AO+Æ(AO	Æ3AOÇAN/Ç,ANÇ5ANÈA,ANÉ4-ANÊ"EANÏ=FANÖANÖ 8AN×AN×:AANØ>BANÛ
=ANÜAANÝ ANÝ)AANÞ+A)ANàANà$AANâ6ANâ:ANãAANä8ANå ,ANå-ANå5ANæFANì$AANîI:AN÷=D*ANü--ANý ANý6>ANþ5DANÁCBANÁEANÁE)AN/ÁE1AOÁE9AO	ÁFAO+ÁNAN,ÁN&	AN/ÁN/AO ÁN:	AOÁOAOÁO	AO	ÁOAO(ÁO"	AO+ÁO+AO<	c               ó$   € V ^8„  d   QhRRRRRR/# )rv   r  rÙ   r)  zOrderedSet[sympy.Symbol]ry   rz   r{   )r|   s   "r}   r~   rC  -	  s)   € ÷ U;ñ U;ØðU;Ø3KðU;à	ñU;r   c                	óâ  a € \         P                  '       d   R # R V 3R llp\        4       '       dŽ   VP                  \        P
                  P                  P                  P                  J dR   S P                  '       d@   S P                  V4      w  rEV^ ,          R8w  d   V! V^ ,          V^ ,           R24       R # R # S ;P                  V,          un        \        P                  P                  P                  pV EFk  pS P                   P#                  V. 4      pVP$                  V,          p	VP'                  4       P)                  V	4      '       g   R R lp
V
! V	P*                  4      '       d%   V! WyP*                  8¬  V RV	P*                   24       V
! V	P,                  4      '       d%   V! WyP,                  8*  V RV	P,                   24       V F�  p\/        VP0                  4      pVS P                  ,
          pV'       d?   \3        V\4        R	7      pS P                   P7                  V. 4      P9                  V4       Kq  V! VP0                  VP0                   4       K‘  	  EKn  	  R # )
Nc               ó$   € V ^8„  d   QhRRRRRR/# )rv   rË  r#   r»  rš   ry   rz   r{   )r|   s   "r}   r~   ÚCGraphLowering.create_deferred_runtime_asserts.<locals>.__annotate__Q	  s!   € ÷ 	/ñ 	/˜lð 	/°ð 	/¸ñ 	/r   c                ó|   <€ \         P                  ! W4      pSP                  VR R7       SP                  V4       R# )T)rŸ  N)r,   ÚAssertScalarr¤  r�  )rË  r»  Ú	assert_opr«  s   && €r}   Úmake_assertÚBGraphLowering.create_deferred_runtime_asserts.<locals>.make_assertQ	  s2   ø€ ÜŸš¨Ó2ˆIØ× Ñ  °TÐ Ô:Ø×#Ñ# IÖ.r   Tz to be Truec               ó    € V ^8„  d   QhRRRR/# )rv   ri  r   ry   r¾   r{   )r|   s   "r}   r~   r/  m	  s   € ÷ )ñ )¨$ð )°4ñ )r   c                ój   € V \         \         ) 39   d   R #  \        V 4       R#   \         d     R # i ; i)FT)r)   rê  Ú	TypeError)ri  s   &r}   Úis_convertibleÚEGraphLowering.create_deferred_runtime_asserts.<locals>.is_convertiblem	  s5   € Ø¤¬&¨Ð 1Ô1Ù#(ð)Ü œFÙ#'øÜ(ô )Ú#(ð)ús   –# £2±2rí  z <= )rŸ  )r+   Údo_not_emit_runtime_assertionsr   r™   r‘   r  rä   Ú_assert_scalarr  r4  rï  rU  rd   r’  rV  r0  rT  rË   Úvar_to_rangeÚ _default_unspecified_value_rangeÚissubsetÚlowerÚupperr   rË  rð   rš   rÌ   rÎ   )r«  r  r)  r3  Ú	node_argsr¼  r0  Úi0ÚrasÚvrr8  ÚraÚfvsÚmissingÚi1s   f&&            r}   r  Ú-GraphLowering.create_deferred_runtime_asserts-	  sÕ  ø€ ô ×0×0Ð0Ù÷@	/ð 	/ô %×&Ò&Ø—‘œEŸI™IŸN™N×9Ñ9×AÑAÓAØ——�à×:Ñ:¸1Ó=‰LˆIØ˜�|˜tÔ#Ù˜I a�L¨Y°q­\¨N¸+Ð*FÖGñ $ð ×'Ò'Ð+<Õ<Õ'äŸ™×(Ñ(×2Ñ2ˆIô (�Ø×(Ñ(×,Ñ,¨R°Ó4�à×+Ñ+¨BÕ/�Ø ×AÑAÓC×LÑLÈR×PÒPõ)ñ & b§h¡h×/Ò/Ù# B¯(©(¡N°r°d¸$¸r¿x¹x¸jÐ4IÔJÙ% b§h¡h×/Ò/Ù# B¯(©(¡N°r°d¸$¸r¿x¹x¸jÐ4IÔJã�BÜ/°·±Ó8�CØ! D×$?Ñ$?Õ?�GßÜ  ¬cÔ2˜Ø×*Ñ*×5Ñ5°b¸"Ó=×DÑDÀRÖHá# B§G¡G°·±¨yÖ:ô ó) (r   c               ó   € V ^8„  d   QhRR/# r±  r{   )r|   s   "r}   r~   rC  „	  s   € ÷ ñ °4ñ r   c                	óà  € \         P                  '       d   \        R 4      h\        P                  R9  d   \        R\        P                   24      h\        \        P                  P                  V P                  4      p\        ;QJ d0    R VP                  P                   4       F  '       g   K   RM%	  RM!! R VP                  P                   4       4      '       d   \        R4      hR# )zC++ codegen is disabledzUnsupported platform c              3  ó`   "  € T F$  pR VP                   P                  R/ 4      9   x € K&  	  R# 5i)r©  r  Nr¤  )r  r¸   s   & r}   r  ÚBGraphLowering.validate_can_generate_cpp_wrapper.<locals>.<genexpr>Œ	  s+   é € ð 
á0�ð ˜Ÿ™Ÿ™ x°Ó4Ö4Û0ùs   ‚,.TFzAtorch.cuda.use_mem_pool is not supported with C++ wrapper codegenN)ÚlinuxÚdarwinÚwin32)r+   Údisable_cpp_codegenr5   ÚsysÚplatformr   r‘   r³   rk   r›  rí   r’  rö   )r«  r4  s   & r}   Ú!validate_can_generate_cpp_wrapperÚ/GraphLowering.validate_can_generate_cpp_wrapper„	  s¶   € Ü×%×%Ð%Ü(Ð)BÓCÐCä�<‰<Ð;Ô;Ü(Ð+@ÄÇÁÀÐ)OÓPÐPäœEŸH™H×0Ñ0°$·+±+Ó>ˆß‹3ñ 
à$×*Ñ*×0Ò0ó
�3�3Š3ñ 
à$×*Ñ*×0Ò0ó
÷ 
ò 
ô )ØSóð ñ	
r   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# ©rv   Úis_subgraphr¾   rJ  r<  Úparent_wrapper_codezPythonWrapperCodegen | NoneÚpartition_signatureszGraphPartitionSignature | Nonery   rz   r{   )r|   s   "r}   r~   rC  ”	  sC   € ÷ #Wñ #Wàð#Wð "ð#Wð 9ð	#Wð
 =ð#Wð 
ñ#Wr   c                	ó
  € V P                   P                  4       pVP                  R 4       VP                  R4       \        V4      ^8”  d*   \	        RP                  RP                  V4      4      4      h\        V4      ^ 8H  pV'       d   R MVP                  4       V n        V P                  '       d   V P                  4        \        V P                  4      V n        \        V P                  V P                  V P                  4      pVf   \	        RV P                   R24      hVP                  VVVV4      V n        V P"                  '       d2   V P"                  P                   P$                  V P                   n        R# R# )rÀ   r²   zDoes not support mixing {}Ú+NzDevice z not supported)r^  rS  r  r  r�   r|   r¡   rË   r`  r3  rT  r1   rw  r2   rA  rÚ  rx  r>  Ú_names_iter)r«  rX  rJ  rY  rZ  r^  Úonly_cpuÚwrapper_code_gen_clss   &&&&&   r}   Úinit_wrapper_codeÚGraphLowering.init_wrapper_code”	  sL  € ð ×(Ñ(×-Ñ-Ó/ˆØ×Ñ˜UÔ#Ø×Ñ˜VÔ$äˆ|Ó˜qÔ Ü Ø,×3Ñ3°C·H±H¸\Ó4JÓKóð ô �|Ó$¨Ñ)ˆß$,™5°,×2BÑ2BÓ2DˆÔà××ÐØ×2Ñ2Ô4ä1°$×2BÑ2BÓCˆŒÜ=Ø×Ñ˜d×.Ñ.°·±ó 
Ðð  Ò'Ü  7¨4×+;Ñ+;Ð*<¸NÐ!KÓLÐLØ0×7Ñ7ØØØØ ó	
ˆÔð ××ÐØ,0×,=Ñ,=×,JÑ,J×,VÑ,VˆD×ÑÖ)ñ r   c               ó    € V ^8„  d   QhRRRR/# )rv   r/  ú list[int | float | torch.Tensor]ry   rz   r{   )r|   s   "r}   r~   rC  ¹	  s    € ÷ ]0ñ ]0Ø>ð]0à	ñ]0r   c                	ó0	  € ^ RI pVP                  V P                  4      pVP                  V4      p. pVP                  P                   F[  pVP
                  R8X  g   K  VP                  \        P                  P                  P                  J g   KJ  VP                  V4       K]  	  . p/ p/ p. p	/ p
V EF0  pVP                  R,           F^  pV FU  pWÇ9   d   K  \        V\        P                  P                  4      '       g   K7  \!        V4      W|&   VP                  V4       KW  	  K`  	  VP                  R,          p\        P"                  P$                  P'                  VP                  R,          VP                  R,          VP)                  4        UUu/ uFE  w  rïT\        V\        P                  P                  4      '       d   VP*                  R,          MTbKG  	  uppVP                  R,          4      p/ pVP                  P-                  V4      ;_uu_ 4        VP)                  4        F•  w  rïVV9   dN   VP                  P/                  \        P0                  V3R	7      p\!        V	4      VV&   V	P                  V4       KY  Wú9   d   W¯,          VV&   Kl  \!        V	4      W¯&   V	P                  V4       W¯,          VV&   K—  	  RRR4       VW…P2                  &   EK3  	  W–,           pVP                  P                   F'  pVP
                  R
8X  g   K  \5        V4      3Vn         M	  VP9                  4        \        P                  P;                  V4      pVP=                  V4      p\!        V4      ^ 8”  dâ   V\!        V	4      R p/ V n        V FÆ  pRp. pVP                  R,           F…  p. pV F`  p\        V\        P                  P                  4      '       g   VP                  V4       K@  RpVP                  VW|,          ,          4       Kb  	  VP                  \5        V4      4       K‡  	  V'       g   K­  VV P>                  VP2                  &   KÈ  	  VR\!        V	4       V n         W€n!        R# u uppi   + '       g   i     EL¿; i)r   NrÜ   Úgridrx   r‰  rŠ  r  r‹  )rw   r¬   FT)"rS  Údeepcopyrš  r’  rö   r®   r™   r‘   r  r–  r—  rÎ   rx   rŠ   r³   r%   r  r÷   rø   r˜  rÐ  r²   Úinserting_beforerÜ   Úcloner?  rµ  rw   Ú	recompileÚInterpreterr—  r�  r‹  rŒ  )r«  r/  rS  Ú	cloned_gmÚtriton_nodesr¸   Úgrid_inputsÚvisited_gridsÚtriton_inputsÚkwargs_inputsÚvisited_kwargsre  r  rx   r¬  r­  r›  r~  Únew_nodeÚnew_outputsÚrunnerÚreturned_outputsÚgrid_outputsÚdynamic_gridÚ	new_gridsÚnew_grids   &&                        r}   Úextract_autotune_inputsÚ%GraphLowering.extract_autotune_inputs¹	  s¾  € ó 	à—M‘M $§,¡,Ó/ˆ	ØŸ™ ~Ó6ˆØˆØ—O‘O×)Ô)ˆDà—‘˜?Ö*Ø—K‘K¤5§9¡9×#9Ñ#9×#XÑ#XÕXà×#Ñ# DÖ)ñ *ð ,.ˆØ24ˆà(*ˆØ-/ˆØ)+ˆÜ ˆDàŸ™ F×+Ð+�Û�CØÔ+Ù ä! #¤u§x¡x§}¡}×5Ô5Ü-0°Ó-=˜Ñ*Ø#×*Ñ*¨3Ö/ó  ñ ,ð —[‘[ Õ*ˆFä×-Ñ-×@Ñ@×TÑTØ—‘˜LÕ)Ø—‘Ð/Õ0ð !'§¡¤ôá .™˜ð ¬
°1´e·h±h·m±m×(DÒ(D�q—v‘v˜e–}È!ÒKÙ .òð —‘Ð5Õ6óˆGð *,ˆJØ—‘×1Ñ1°$×7Õ7Ø"ŸL™LžN‘D�AØ˜G”|Ø#,§?¡?×#@Ñ#@ÄÇÁÐTUÐSWÐ#@Ó#X˜Ü(+¨MÓ(:˜
 1™Ø%×,Ñ,¨XÔ6Ù àÔ*Ø(6Õ(9˜
 1™Ù Ü(+¨MÓ(:�NÑ%Ø!×(Ñ(¨Ô+Ø$2Õ$5�J˜q“Mñ +÷ 8ð (2ˆMŸ)™)Ô$ñM !ðP $Õ1ˆØ—O‘O×)Ô)ˆDØ�w‰w˜(Ö"Ü" ;Ó/Ð1�”	Ùñ *ð
 	×ÑÔÜ—‘×%Ñ% iÓ0ˆØ!Ÿ:™: nÓ5Ðäˆ{Ó˜aÔØ+¬C°Ó,>Ð,@ÐAˆLØ$&ˆDÔ!Û$�Ø$�Ø.0�	Ø ŸK™K¨×/Ð/�DØ!�HÛ#˜Ü)¨#¬u¯x©x¯}©}×=Ò=Ø$ŸO™O¨CÔ0Ù$Ø'+˜Ø Ÿ™¨°]Õ5GÕ(HÖIñ  $ð ×$Ñ$¤U¨8£_Ö5ñ 0÷  ‘<Ø7@�D×)Ñ)¨$¯)©)Ó4ñ %ð" "2Ð2F´C¸Ó4FÐ!GˆÔØ"/Öùóo÷ 8×7Ð7ús   ÆAQ>È$B*RÒRc               ó   € V ^8„  d   QhRR/# ©rv   ry   z)tuple[ValueWithLineMap, ValueWithLineMap]r{   )r|   s   "r}   r~   rC  
  s   € ÷ h"ñ h"à	2ñh"r   c                óØ  a € S P                  4        \        ;QJ d    V 3R lR 4       F  '       g   K   RM	  RM! V 3R lR 4       4      pRS P                  9   ;'       d„    S P                  ;'       dp    \        P
                  P                  '       * ;'       dI    \        ;QJ d&    R S P                   4       F  '       g   K   RM	  RM! R S P                   4       4      pV'       g
   V'       EdÇ   R V 3R llp\        P
                  P                  '       d•   \        P
                  P                  '       de   RpS P                   F'  p\        V\        P                  4      '       g   K%  Rp M	  V'       d$   V! 4       pS P                  V4       \        S 4       S P                  4       # S P                  '       g   S P                  4       # ^RIHpHp S P                  4       w  rš\        S P$                  V4      '       g"   \'        R	\)        S P$                  4       24      h\+        S P$                  P,                  4      pV'       d    S P/                  V	V
VV4       V! V4      pS P$                  P4                  pVf   \3        R4      h\7        VR,           V,           V	P8                  4      pWú3# S P                  4       #   \0         d   p\3        R
4      ThRp?ii ; i)aL  
For GPU, Triton kernels are autotuned and stored as cubin files.

For CPU with user-defined Triton kernels, AOTI also needs the
same two-pass compile when `autotune_at_compile_time` is off,
since `CpuTritonKernelCache` is otherwise only populated by the
autotune block (see `DeferredCpuTritonCallWrapper` in
`cpp_wrapper_cpu.py`).
c              3  ó@   <"  € T F  qSP                   9   x € K  	  R # 5ir�   )r^  )r  r   r«  s   & €r}   r  Ú9GraphLowering.codegen_with_cpp_wrapper.<locals>.<genexpr>%
  s   øé € ÐPÁ°f × 1Ñ 1Ö1Ãùrä  TFrÀ   c              3  óV   "  € T F  p\        V\        P                  4      x € K!  	  R # 5ir�   )rŠ   r,   ÚUserDefinedTritonKernelrã  s   & r}   r  r€  -
  s#   é € ð ÙET¸r”
˜2œr×9Ñ9×:Ð:Ã_ùs   ‚')c               ó   € V ^8„  d   QhRR/# )rv   ry   rc  r{   )r|   s   "r}   r~   Ú<GraphLowering.codegen_with_cpp_wrapper.<locals>.__annotate__3
  s   € ÷ I#ñ I#Ð)Iñ I#r   c                 ó4  <€ R  R lp \         P                  P                  P                  4       pVe­   \	        \
        P                  \        4      '       g‰   VP                  '       d   VP                  P                  4        VP                   Uu. uF  pVf   K	  VNK  	  pp\        P                  ! V\
        P                  4       Uu. uF  pV ! V4      NK  	  ppMU\	        \
        P                  \        4      '       d   SP                  M\
        P                   Uu. uF  pV ! V4      NK  	  ppSP                  '       d½   ^RIHp \#        SP$                  4       UUu. uFB  w  rxVSP                  9   g   K  \	        WW,          \         P&                  4      '       g   K@  VNKD  	  p	ppV	 FM  pWW,          p
\	        V
\         P&                  4      '       g   \)        R\+        V
4       24      hV! V
4      WW&   ?
KO  	  V# u upi u upi u upi u uppi )c               ó    € V ^8„  d   QhRRRR/# )rv   r·  z,torch.SymInt | torch.SymFloat | torch.Tensorry   zint | float | torch.Tensorr{   )r|   s   "r}   r~   ÚYGraphLowering.codegen_with_cpp_wrapper.<locals>.extract_real_inputs.<locals>.__annotate__4
  s   € ÷ !ñ !ØCð!à/ñ!r   c                ó\  € V f   R # \        V \        P                  \        P                  34      '       d   \	        V P
                  4      # \        V 4      '       d   \        V 4      # \        V \        P                  4      '       g%   \        R\        \        V 4      4      ,           4      hV # )Nz&Unknown type when creating real inputs)rŠ   r‘   rÊ  ÚSymFloatr*   Úhintr   r   r   r�   rš   rÁ   )r·  s   &r}   ÚmaterializeÚXGraphLowering.codegen_with_cpp_wrapper.<locals>.extract_real_inputs.<locals>.materialize4
  s€   € ð ’yá#Ü# A¬¯©´e·n±nÐ'E×FÒFä'¨¯©Ó/Ð/Ü'¨×*Ò*Ü% a›yÐ(ä)¨!¬U¯\©\×:Ò:Ü"0Ø HÌ3ÌtÐTUËwË<Õ Wó#ð ð  !˜r   )Úclone_preserve_stridesz-Expected torch.Tensor for mutated input, got )r‘   Ú_guardsÚTracingContextÚtry_getrŠ   rd   Úreal_inputsrc   Úoutput_stridesÚclearÚparams_flatr¥  Úchainr/  r}  Ú
compile_fxr�  rž   rX  r   r�   rÁ   )r‹  Útracing_contextÚparamr”  r·  r‘  r�  r·   r?  r~  Úmutated_inpr«  s              €r}   Úextract_real_inputsÚCGraphLowering.codegen_with_cpp_wrapper.<locals>.extract_real_inputs3
  sô  ø€ õ!ô$ #(§-¡-×">Ñ">×"FÑ"FÓ"H�Ø"Ò.´zÜ—M‘M¤;÷8ò 8ð '×5×5Ð5Ø'×6Ñ6×<Ñ<Ô>ð &5×%@Ò%@ó#á%@˜EØ ÷ ˜Ù%@ð  ð #ô "+§¢°¼a¿m¹mÔ!Ló#ñ "M˜Añ $ AžÙ!Lð  ð #�Kô  *¬!¯-©-¼×EÒEð !×/Ò/ä!"§¡ð/ó#ñ/ð ñ $ Ažñ/ð  ð #ð ×&×&Ð&ÝBô *3°4×3DÑ3DÔ)Eô*á)E™I˜CØ 4×#6Ñ#6Ñ6ô ô ' {Õ'7¼¿¹×F÷ ˜Ù)Eð 'ñ *ó  2˜ð '2Õ&6˜Ü)¨+´u·|±|×DÒDÜ"0Ø"OÔPTÐU`ÓPaÐObÐ có#ð ñ ,BÀ+Ó+N˜Ñ(Ú'ñ  2ð #Ð"ùò_#ùò
#ùò#ùó*s*   ÂHÂHÃH
Ä"HÅ%HÅ?#HÆ'H)ÚCppWrapperGpuÚ"generate_aoti_kernel_config_headerzexpected CppWrapperGpu, got zuWhen autotune_at_compile_time is False, AOTInductor generates both JIT code and AOT code. The JIT code failed to run.NzzWhen autotune_at_compile_time is False, AOTInductor generates both JIT code and AOT code. The AOT code should not be None.rà  ©ÚcudaÚxpu)rT  rí   r^  r4  r+   rp  rq  rf  Úautotune_with_sample_inputsrŠ   r,   r‚  rz  rr   ÚcodegenÚcodegen.cpp_wrapper_gpurœ  r�  rx  r�   rÁ   r#  Ú_lazy_kernel_namesÚ_run_jit_variant_for_autotuner  r    Ú_aot_outputrb   Úline_map)r«  Úhas_gpuÚneeds_cpu_triton_two_passrš  Úuser_defined_kernelsr®   r‘  rœ  r�  rx  Úkernel_codeÚlazy_kernel_namesÚexcÚconfig_headerÚ
aot_outputÚaoti_wrappers   f               r}   Úcodegen_with_cpp_wrapperÚ&GraphLowering.codegen_with_cpp_wrapper
  s‚  ø€ ð 	×.Ñ.Ô0ß“#ÔPÁÓP—#—#’#ÔPÁÓPÓPˆð
 �T×&Ñ&Ñ&÷ ð Ø—‘÷ð ä—M‘M×:Ñ:Ô:÷ð ÷ “ñ ØEIÇ_Â_ó——’ñ ØEIÇ_Â_óó ð	 	"÷ ×/Ð/÷I#ð I#ôV �}‰}×5×5Ð5ô —=‘=×<×<Ð<Ø+0Ð(Ø"Ÿoœo˜Ü% b¬"×*DÑ*D×EÔEØ37Ð0Ù!ñ .÷ ,Ù&9Ó&;˜Ø×4Ñ4°[ÔAÜ8¸Ô>Ø—|‘|“~Ð%à—}—}�}àŸ<™<›>Ð)÷ð
 -1¯L©L«NÑ)�Ü! $×"3Ñ"3°]×CÒCÜ(Ø6´t¸D×<MÑ<MÓ7NÐ6OÐPóð ô %)¨×):Ñ):×)MÑ)MÓ$NÐ!ß$ð#Ø×:Ñ:Ø(Ø'Ø/Ø-ô	ñ !CÐCTÓ U�Ø)-×):Ñ):×)FÑ)F�
ØÒ%Ü&ðWóð ô  0Ø! DÕ(¨:Õ5Ø ×)Ñ)ó �ð
 $Ð0Ð0ð —<‘<“>Ð!øô/ %ô #Ü*ðVóð  #ð#ûð#ús   ÉK ËK)ËK$Ë$K)c               ó$   € V ^8„  d   QhRRRRRR/# )rv   r?  rš   rÌ  r<  ry   r{   )r|   s   "r}   r~   rC  Ã
  s!   € ÷ 5ñ 5 Sð 5°*ð 5Àñ 5r   c                	ó\   € Vf   V  R2# VR8X  d   V  R2# RV9   d
   V  RV: R2# V  RV R2# )	Nz = None
rG  z = ''
ú"""z = rà  z
 = (
r"""
z"""
)
r{   )r?  rÌ  s   &&r}   Ú_python_source_literalÚ$GraphLowering._python_source_literalÂ
  sU   € àŠ>Ø�V˜9Ð%Ð%Ø�RŒ<Ø�V˜7Ð#Ð#Ø�FŒ?Ø�V˜3˜v™j¨Ð+Ð+Ø��| F 8¨8Ð4Ð4r   c               ó    € V ^8„  d   QhRRRR/# )rv   rù  r½   ry   rš   r{   )r|   s   "r}   r~   rC  Í
  s   € ÷ 
ñ 
 <ð 
°Cñ 
r   c                	óà   € R \        V P                  4       4      : R\        V P                  4       4      : RV P                  4       : RV P                   R\        V P                  4      : R2# )z_make_strided_tensor(z, rR  )rµ  rÃ  rÄ  rÅ  r  rš   r   r5  s   &r}   Ú_tensor_repro_exprÚ GraphLowering._tensor_repro_exprÌ
  sa   € ð $¤E¨&¯+©+«-Ó$8Ñ#;¸2Ü�V—]‘]“_Ó%Ñ(¨¨6×+@Ñ+@Ó+BÑ*EÀRØ�|‰|ˆn˜Bœs 6§=¡=Ó1Ñ4°Að7ð	
r   c               ó4   € V ^8„  d   QhRRRRRRRRRR	R
R	RR/# )rv   Ú
cpp_sourcerš   Úkernel_sourcer<  r`  Únum_outputsrê  Úkernel_namesr¨  Úinput_exprsry   rz   r{   )r|   s   "r}   r~   rC  Õ
  sd   € ÷ bBñ bBð ðbBð "ð	bBð
 ðbBð ðbBð  ðbBð ðbBð 
ñbBr   c          	     	ó
  € ^RI HpHp VP                  ! \        P
                  4      '       g)   VP                  ! \        P                  4      '       g   R# RP                  R V 4       4      p	Rp
\        P                  ! R4      P                  4       P                  V P                  RV4      V P                  RV4      VV	VVR	7      pVP                  ! R
W«4       VP                  V4      w  rÍVP                  ! RW­4       R# )r  )rp   ÚPyCodeCacheNrG  c              3  ó.   "  € T F  pR V R2x € K  	  R# 5i)z        z,
Nr{   )r  rË  s   & r}   r  ÚDGraphLowering._log_jit_variant_for_autotune_repro.<locals>.<genexpr>ç
  s   é € ÐK¹{°t ¨¨¨cÕ2»{ùs   ‚z(JIT wrapper code for AOT lazy autotuningaX	  
            import torch
            from torch._inductor import config
            from torch._inductor.codecache import (
                CppWrapperCodeCache,
                CudaKernelParamCache,
                get_cpp_wrapper_cubin_path_name,
            )

            {cpp_wrapper_src}
            {kernel_src}
            kernel_names = {kernel_names!r}


            def _make_strided_tensor(size, stride, storage_offset, dtype, device):
                if 0 in size:
                    storage_size = storage_offset + 1
                else:
                    storage_size = storage_offset + 1 + sum(
                        (dim - 1) * stride_dim
                        for dim, stride_dim in zip(size, stride)
                    )
                base = torch.zeros((storage_size,), dtype=dtype, device=device)
                return torch.as_strided(base, size, stride, storage_offset)


            def make_inputs():
                return [
            {input_lines}    ]


            def main():
                for name in kernel_names:
                    CudaKernelParamCache.cache.pop(name, None)
                with config.patch('aot_inductor.link_libtorch', True):
                    compiled_fn = CppWrapperCodeCache.load_pybinding(
                        argtypes=['std::vector<AtenTensorHandle>'],
                        main_code=cpp_wrapper_src,
                        device_type={device_type!r},
                        num_outputs={num_outputs!r},
                        kernel_code=kernel_src,
                    )
                input_tensors = make_inputs()
                input_handles = torch._C._aoti.unsafe_alloc_void_ptrs_from_tensors(
                    input_tensors
                )
                output_handles = compiled_fn(input_handles)
                output_tensors = torch._C._aoti.alloc_tensors_by_stealing_from_void_ptrs(
                    output_handles
                )
                print(f'Produced {{len(output_tensors)}} outputs')
                cubin_path_name = get_cpp_wrapper_cubin_path_name()
                for name in kernel_names:
                    params = CudaKernelParamCache.get(name)
                    if params and cubin_path_name in params:
                        print(f'{{name}}: {{params[cubin_path_name]}}')


            if __name__ == '__main__':
                main()
            Úcpp_wrapper_srcÚ
kernel_src)rÆ  rÇ  rÀ  Úinput_linesr`  r¿  z%s: 
%sz%s written to: %s)Ú	codecacherp   rÃ  ÚisEnabledForÚloggingÚDEBUGÚINFOr¡   ÚtextwrapÚdedentÚlstripr|   r¶  r3  Úwriter]  )Úclsr½  r¾  r`  r¿  rÀ  rÁ  rp   rÃ  rÈ  Úlog_namerÌ  r¼  Úpaths   &$$$$$$       r}   Ú#_log_jit_variant_for_autotune_reproÚ1GraphLowering._log_jit_variant_for_autotune_reproÔ
  sæ   € ÷ 	<ð ×(Ò(¬¯©×7Ò7Ø×+Ò+¬G¯L©L×9Ò9áà—g‘gÑK¹{ÓKÓKˆØ=ˆä�OŠOð<ó>÷~ ‰V‹Xß‰VØ #× :Ñ :Ø% zó!ð ×5Ñ5°lÀMÓRØ)Ø'Ø'Ø'ð ó 	ðC 	ðX 	×Ò˜j¨(Ô;Ø×#Ñ# FÓ+‰ˆØ×ÒÐ0°(ÖAr   c               ó    € V ^8„  d   QhRRRR/# )rv   rÀ  r¨  ry   rz   r{   )r|   s   "r}   r~   rC  9  s(   € ÷ lSñ lSð
  ðlSð 
ñlSr   c           
     ó  a € ^RI HpHpHp VP                  pV'       d   VP                  MRp	VR\        S 4       R2,          pV F  p
VP                  P                  V
R4       K!  	  \        R S P                   4       \        R S P                   4       R4      4      pS P                  '       d   . MV! 4       pR V 3R	 llp. p. pV F™  pVf   K	  \        V\        P                  4      '       d4   VP                  V4       VP                  S P                  V4      4       K\  VP                  \        P                   ! VRR
7      4       VP                  RV: R24       K›  	  S P"                   F<  p
V! V
4      pVP                  V4       VP                  S P                  V4      4       K>  	  S P%                  VV	V\'        S P(                  4      VVR7       \*        P,                  ! RR4      ;_uu_ 4        VP/                  R.VV\'        S P(                  4      V	R7      pRRR4       \        P0                  P2                  P5                  V4      p???X! V4      p\        P0                  P2                  P7                  V4      p?V! 4       pV FS  p
VP9                  V
4      pV'       g   K  VV9   g   K'  S P:                  P<                  P                  VV,          4       KU  	  R#   + '       g   i     LÐ; i)aM  Compile dual-wrapper-mode C++ as JIT variant and run to autotune kernels.

Compiles the dual-wrapper-mode C++ source without -DAOT_INDUCTOR, which
activates the JIT path (inductor_entry_impl). Running this with
real inputs triggers lazy Triton compilation and autotuning,
populating CudaKernelParamCache for the AOTI packaging step.
)ÚCppWrapperCodeCacheÚCudaKernelParamCacheÚget_cpp_wrapper_cubin_path_nameNz#
// AOTI lazy autotune first pass: rà  c              3  ó6   "  € T F  qR9   g   K  Vx € K  	  R# 5i)rŸ  Nrž  r{   rm  s   & r}   r  Ú>GraphLowering._run_jit_variant_for_autotune.<locals>.<genexpr>[  s   é € ÐBÑ)�1°/Ñ-A�QŠQÓ)ùó   ‚�
c              3  ó6   "  € T F  qR 8w  g   K  Vx € K  	  R# 5i)r²   Nr{   rm  s   & r}   r  rÝ  \  s   é € Ð>Ñ.˜°v±+—!’!Ó.ùrÞ  rÀ   c               ó    € V ^8„  d   QhRRRR/# rÃ  r{   )r|   s   "r}   r~   ÚAGraphLowering._run_jit_variant_for_autotune.<locals>.__annotate__f  s   € ÷ 	ñ 	 sð 	¨|ñ 	r   c                óÂ   <€ SP                   V ,          p\        V4      '       d   \        V4      p\        V\        P
                  4      '       g   \        R V  24      hV# )zExpected tensor constant for )rh  r   r   rŠ   r‘   r   r�   )r?  rË  r«  s   & €r}   Úmaterialize_constantÚIGraphLowering._run_jit_variant_for_autotune.<locals>.materialize_constantf  sO   ø€ Ø—~‘~ dÕ+ˆHÜ˜h×'Ò'Ü! (Ó+�Ü˜h¬¯©×5Ò5Ü$Ð'DÀTÀFÐ%KÓLÐLØˆOr   )r   ztorch.tensor(z, device='cpu'))r½  r¾  r`  r¿  rÀ  rÁ  zaot_inductor.link_libtorchTzstd::vector<AtenTensorHandle>)ÚargtypesÚ	main_coder`  r¿  r«  )rÉ  rÙ  rÚ  rÛ  r²  ÚidÚcacherË   r‡  r^  r9  rŠ   r‘   r   rÎ   rº  rù  rh  rÕ  r  r+  r+   ÚpatchÚload_pybindingrú   Ú_aotiÚ#unsafe_alloc_void_ptrs_from_tensorsÚ(alloc_tensors_by_stealing_from_void_ptrsrý   rx  Úadditional_files)r«  rx  r«  rš  rÀ  rÙ  rÚ  rÛ  r½  r¾  r?  r`  r‘  rã  Úinput_tensorsrÁ  r�  rË  Úcompiled_fnÚinput_handlesÚoutput_handlesÚoutput_tensorsÚcubin_path_nameÚparamss   f&&&&                   r}   r¥  Ú+GraphLowering._run_jit_variant_for_autotune9  s¡  ø€ ÷	
ñ 	
ð "×'Ñ'ˆ
ß-8˜×)Ò)¸dˆð 	Ð<¼RÀ»X¸JÀbÐIÕIˆ
Û ˆDØ ×&Ñ&×*Ñ*¨4°Ö6ñ !ô ÙB˜×)Ò)ÓBÜÑ>˜T×.Ò.Ó>ÀÓFó
ˆð !×/×/Ð/‘bÑ5HÓ5Jˆ÷	ð 	ð -/ˆØ!#ˆÛˆCØŠ{ÙÜ˜#œuŸ|™|×,Ò,Ø×$Ñ$ SÔ)Ø×"Ñ" 4×#:Ñ#:¸3Ó#?Ö@à×$Ñ$¤U§\¢\°#¸eÔ%DÔEØ×"Ñ" ]°3±'¸Ð#IÖJñ ð —N”NˆDÙ+¨DÓ1ˆHØ× Ñ  Ô*Ø×Ñ˜t×6Ñ6°xÓ@ÖAñ #ð
 	×0Ñ0Ø!Ø'Ø#Ü˜D×.Ñ.Ó/Ø%Ø#ð 	1ô 	
ô �\Š\Ð6¸×=Õ=Ø-×<Ñ<Ø9Ð:Ø$Ø'Ü × 2Ñ 2Ó3Ø)ð =ó ˆK÷ >ô Ÿ™Ÿ™×JÑJØó
ˆð ˜¨á$ ]Ó3ˆÜŸ™Ÿ™×PÑPØó
ˆð ñ :Ó;ˆÛ ˆDØ)×-Ñ-¨dÓ3ˆFß‰v˜/¨VÖ3Ø×!Ñ!×2Ñ2×9Ñ9¸&ÀÕ:QÖRó !÷- >×=ús   Ç=+K0Ë0L 	c               ó   € V ^8„  d   QhRR/# r±  r{   )r|   s   "r}   r~   rC  §  s   € ÷ 	8ñ 	8 4ñ 	8r   c                ó¸   € ^RI Hp \        P                  ! RR4      ;_uu_ 4        V! V P                  4      V n         RRR4       R#   + '       g   i     R# ; i)z°
(Re)initializes the scheduler member.  When initializing the scheduler, no CUBIN
files should be generated (to avoid biasing any benchmarks and pessimizing
fusion decisions).
)Ú	Schedulerztriton.store_cubinFN)rŠ  rù  r+   ré  rf  )r«  rù  s   & r}   Ú_update_schedulerÚGraphLowering._update_scheduler§  s8   € õ 	)ä�\Š\Ð.°×6Õ6Ù& t§¡Ó7ˆDŒN÷ 7×6×6Ò6ús   ¦AÁA	c               ó   € V ^8„  d   QhRR/# r}  r{   )r|   s   "r}   r~   rC  ²  s   € ÷ ñ ÐBñ r   c                	ón  € \        R RR7      ;_uu_ 4        V P                  4        V P                  4        \        P                  P                  V P                  V P                  P                  4       V P                  P                  V 4       V P                  P                  4        \        P	                  R\        P                  P                  4       V P                  P                  V P                   4      pV P                  P#                  4        VuuRRR4       #   + '       g   i     R# ; i)zGraphLowering.codegenT©Úlog_pt2_compile_eventzFFinished codegen for all nodes. The list of kernel names available: %sN)r   r`  rú  rd   r3  Údraw_orig_fx_graphrš  rŠ  rö   rx  Úpush_codegened_graphr¢  r2  r’  r¤  Úgenerater7  Úpop_codegened_graph)r«  rÏ   s   & r}   r¢  ÚGraphLowering.codegen²  sÍ   € ÜÐ1È×NÖNØ×"Ñ"Ô$à×"Ñ"Ô$Ü�G‰G×&Ñ& t§|¡|°T·^±^×5IÑ5IÔJà×Ñ×2Ñ2°4Ô8Ø�N‰N×"Ñ"Ô$ä�I‰IØXÜ—‘×0Ñ0ôð
 ×&Ñ&×/Ñ/°×0AÑ0AÓBˆFØ×Ñ×1Ñ1Ô3Ø÷! O×N×NÓNús   –DD#Ä#D4	c               ó    € V ^8„  d   QhRRRR/# )rv   Úparent_graphr)  ry   rz   r{   )r|   s   "r}   r~   rC  Å  s   € ÷ %ñ %¨]ð %¸tñ %r   c                óŠ  € \        RRR7      ;_uu_ 4        VP                  V n        VP                  V n        VP                  V n        VP                  V n        VP
                  V n        VP                  V n        V P                  4        V P                  P                  4        RRR4       R#   + '       g   i     R# ; i)a”  
This is a more compact version of the `codegen()` above
where we codegen this graph as a subgraph of some parent
graph. The parent graph is passed as an argument: the
intention is to inline codegening of the subgraph in
the parent graph's wrapper code (including the generated
kernels). The wrapper code is not finalized (via `.generate()`
call), as this will be done in the parent graph's `codegen()`.
zGraphLowering.codegen_subgraphTrþ  N)
r   rx  rw  r3  r^  r_  r`  rú  rŠ  r¢  )r«  r  s   &&r}   Úcodegen_subgraphÚGraphLowering.codegen_subgraphÅ  s’   € ô Ð:ÐRV×WÖWØ ,× 9Ñ 9ˆDÔØ*×5Ñ5ˆDŒOØ+×7Ñ7ˆDÔØ ,× 9Ñ 9ˆDÔØ+×7Ñ7ˆDÔØ+×7Ñ7ˆDÔà×"Ñ"Ô$Ø�N‰N×"Ñ"Ô$÷ X×W×WÒWús   –BB1Â1C	c               ó   € V ^8„  d   QhRR/# )rv   ry   zVtuple[int, list[tuple[BaseSchedulerNode, int]], list[tuple[BaseSchedulerNode, float]]]r{   )r|   s   "r}   r~   rC  Ú  s   € ÷ 7ñ 7ð
ñ7r   c                	óò   € ^ p. p. pV P                   P                   FT  pVP                  4       pW,          pVP                  WE^,          34       VP                  WDP	                  4       34       KV  	  WV3# )r   )rŠ  rö   Úget_read_write_buffers_sizesrÎ   Úget_estimated_runtime)r«  Útotal_bytesÚnode_countsÚnode_runtimesr¸   Ú	num_bytess   &     r}   ré  ÚGraphLowering.count_bytesÚ  sy   € ð
 ˆØˆØˆØ—N‘N×(Ô(ˆDØ×9Ñ9Ó;ˆIØÕ$ˆKØ×Ñ °1¥nÐ5Ô6Ø× Ñ  $×(BÑ(BÓ(DÐ!EÖFñ	 )ð ¨Ð6Ð6r   zCallable[[str], None] | NoneÚsave_output_codec               ó   € V ^8„  d   QhRR/# ©rv   ry   ÚCompiledModuler{   )r|   s   "r}   r~   rC  í  s   € ÷ -ñ - >ñ -r   c                	óŽ   € \        R RRRR7      ;_uu_ 4        V P                  4       uuRRR4       #   + '       g   i     R# ; i)zGraphLowering.compile_to_moduleÚcode_genTÚ,inductor_code_gen_cumulative_compile_time_us)Ú
phase_namerÿ  Údynamo_compile_column_usN)r   Ú_compile_to_moduler´  s   &r}   Úcompile_to_moduleÚGraphLowering.compile_to_moduleí  s>   € ÜØ-Ø!Ø"&Ø%S÷	
ö 
ð ×*Ñ*Ó,÷
÷ 
÷ 
ó 
ús	   ˜3³A	c               ó   € V ^8„  d   QhRR/# r  r{   )r|   s   "r}   r~   rC  ö  s   € ÷ ñ  Nñ r   c                	óž  € V P                   '       d   V P                  4       MV P                  4       w  r\        V\        4      '       d   V P                  V4      pM0\        V\        4      '       d   TpM\        R \        V4       24      hVP                  f   \        R4      h\        VP                  4       \        P                  RVP                  4       \        P                  ! RVP                  4       \         P"                  '       d)   \%        RVP                   2\&        P(                  R7       \        V\        4      '       d~   \*        P                  P-                  VP                  4       \*        P                  P/                  \0        P2                  P5                  VP                  4      ^ ,          R,           4       V# )z Unrecognized wrapper code type: zmod.__file__ is NoneúOutput code written to: %szCompiled module path: )Úfileú.debug)r3  r±  r¢  rŠ   rb   Ú_compile_to_module_linesr/   ÚNotImplementedErrorrÁ   Ú__file__r�   rs   r2  r3  rp   r]  r+   Úbenchmark_kernelÚprintrR  Ústderrrd   Úoutput_coderS  ÚosrÔ  Úsplitext)r«  rx  r¼  Úmods   &   r}   r  Ú GraphLowering._compile_to_moduleö  sB  € ð 04×/?×/?Ð/?ˆD×)Ñ)Ô+ÀTÇ\Á\Ã^ñ 	ˆô �lÔ$4×5Ò5Ø×/Ñ/°Ó=‰CÜ˜Ô&;×<Ò<Ø‰Cä%Ø2´4¸Ó3EÐ2FÐGóð ð �<‰<ÒÜ Ð!7Ó8Ð8ä˜Ÿ™Ô%Ü�	‰	Ð.°·±Ô=Ü×ÒÐ9¸3¿<¹<ÔHÜ×"×"Ð"ÜÐ*¨3¯<©<¨.Ð9ÄÇ
Á
ÕKÜ�lÔ$9×:Ò:Ü�G‰G×Ñ §¡Ô-Ü�G‰G�L‰LœŸ™×)Ñ)¨#¯,©,Ó7¸Õ:¸XÕEÔFàˆ
r   c               ó    € V ^8„  d   QhRRRR/# )rv   rx  rb   ry   r  r{   )r|   s   "r}   r~   rC    s    € ÷ Gñ GØ,ðGà	ñGr   c           	     	ó  aa€ ^RI Hp \        P                  P                  '       dˆ   V P
                  P                  P                  4       pVP                  RR4      pRV,           V P
                  P                  P                  4       ,           R,           pVSP                  ,           Sn
        \        P                  e    \        P                  SP                  4       \        P                  ! RSP                  4       \        P                   ! 4       p\"        P$                  ! VSP                  R7        SP&                   UUu. uF  w  rgWgP(                  3NK  	  pppVP+                  SP                  4      w  p	o\        P                  ! RS4       \,        P                  P/                  S4       \,        P                  P1                  \2        P4                  P7                  S4      ^ ,          R	,           4       \9        R
V3R lV3R lR7       \=        RRR7      ;_uu_ 4        TP?                  T	ST/ T P@                  CT PB                  CT PD                  CR7      p
RRR4       Y�n#        ST n$        Y€n%        \        PL                  '       d;   \        PN                  '       d%   X
PQ                  4       pT
PS                  T^^R7       X
# u uppi   \:         d    \9        R
T3R lR7       h i ; i  + '       g   i     Lœ; i)r  )rÃ  rµ  z\"\"\"z"""
NzOutput code: 
%s)Úcoder!  r#  Úinductor_output_codec                 óJ   <€ R S R\         P                  P                  S 4      /# )ÚfilenameÚ	file_path)r+  rÔ  Úabspath)rÔ  s   €r}   rÐ  Ú8GraphLowering._compile_to_module_lines.<locals>.<lambda>C  s   ø€ Ø Ø¤§¡§¡°Ó!6ñr   c                 ó   <€ S P                   # r�   rN  ry  s   €r}   rÐ  r7  G  ó   ø€  <×#5Ò#5r   )Ú
payload_fnc                 ó   <€ S P                   # r�   rN  ry  s   €r}   rÐ  r7  =  r9  r   zPyCodeCache.load_by_key_pathTrþ  )ÚlinemapÚattrs)ÚtimesÚrepeatz&r"""
Compile-time auto-tuning block: 
)*rÉ  rÃ  r+   rp  rq  rx  Úkernel_autotune_defsÚgetvalueÚreplaceÚkernel_autotune_callsr²  r)  r  rp   r3  rT   Úinductor_meta_from_configrU   Úbegin_compiler§  r  rÑ  rd   r*  rS  r+  rÔ  r,  r   r  r   Úload_by_key_pathrh  rk  rm  r“  r”  r•  Úbenchmark_harnessÚprofile_bandwidth_outputÚget_argsÚbenchmark_compiled_module)r«  rx  rÃ  r@  Útuning_codeÚinductor_metaÚline_nor¸   r<  rŸ  r-  rw   rÔ  s   &f          @r}   r$  Ú&GraphLowering._compile_to_module_lines  s‘  ù€ õ 	+ä�=‰=×1×1Ð1à#'×#4Ñ#4×#IÑ#I×#RÑ#RÓ#TÐ Ø#7×#?Ñ#?ÀÀ{Ó#SÐ ð7à&õ'ð ×#Ñ#×9Ñ9×BÑBÓDõEð õ	ð ð "-¨|×/AÑ/AÕ!AˆLÔÜ×)Ñ)Ò5Ü×*Ñ*¨<×+=Ñ+=Ô>Ü×ÒÐ1°<×3EÑ3EÔFä&×@Ò@ÓBˆÜ×*Ò*¨=¸|×?QÑ?QÕRð	ð &2×%:Ò%:ôá%:‘M�Gð ×*Ñ*Ó+Ù%:ð ñ ð $×)Ñ)¨,×*<Ñ*<Ó=‰IˆC�Ü×!Ò!Ð">ÀÔEä�G‰G×Ñ Ô%Ü�G‰G�L‰LœŸ™×)Ñ)¨$Ó/°Õ2°XÕ=Ô>ô Ø&ôô 6õô Ð8ÐPT×UÖUØ×.Ñ.ØØØðØ—n‘nðà×.Ñ.ðð ×4Ñ4ðð	 /ó 	ˆC÷ Vð ŒØˆŒØ$Ôä×#×#Ð#¬×(G×(GÐ(Gà—<‘<“>ˆDØ×)Ñ)¨$°aÀÐ)ÔBàˆ
ùó[øô ô 	ÜØ&ä5õð
 ð	ú÷  V×Uús+   Ä:K Å	KÅ!B!K È-:K;ËK ËK8Ë;L	c               ó    € V ^8„  d   QhRRRR/# )rv   r+  r*  ry   r¨  r{   )r|   s   "r}   r~   rC  _  s   € ÷ ñ ¨ð À9ñ r   c                	óÞ  € . p\         P                  ! ^ 4      p\         P                  ! ^ 4      pV F¸  p\        V\        P                  4      '       d,   VP                  V P                   R\        V4       24       KN  \        V\        P                  4      '       d,   VP                  V P                   R\        V4       24       K™  VP                  VP                  4       4       Kº  	  V# )r   Ú_noneÚ_shape)
r¥  r¦  rŠ   r,   ÚNoneAsConstantBufferrÎ   r?  r‡  rC   ra  )r«  r+  ÚnamesÚshape_counterÚnone_counterr¸   s   &&    r}   Ú_get_output_namesÚGraphLowering._get_output_names_  s®   € ØˆÜ!Ÿš¨Ó*ˆÜ —’ qÓ)ˆÛ!ˆDÜ˜$¤× 7Ñ 7×8Ò8Ø—‘ §	¡	˜{¨%´°\Ó0BÐ/CÐDÖEÜ˜D¤"×":Ñ":×;Ò;Ø—‘ §	¡	˜{¨&´°mÓ1DÐ0EÐFÖGà—‘˜TŸ]™]›_Ö-ñ "ð ˆr   c               ó   € V ^8„  d   QhRR/# )rv   ry   r¨  r{   )r|   s   "r}   r~   rC  l  s   € ÷ :ñ : )ñ :r   c                	ó8   € V P                  V P                  4      # r�   )rW  r+  r´  s   &r}   Úget_output_namesÚGraphLowering.get_output_namesl  s   € Ø×%Ñ% d×&8Ñ&8Ó9Ð9r   c               ó    € V ^8„  d   QhRRRR/# )rv   r?  rš   ry   r¾   r{   )r|   s   "r}   r~   rC  o  s   € ÷ 3ñ 3 #ð 3¨$ñ 3r   c                	óZ  € WP                   9   ;'       d‰    V P                   V,          P                  4       ^8H  ;'       d]    \        V P                   V,          P                  4       4      ^ 8H  ;'       d(    \	        V P                   V,          4      R8H  ;'       g    WP
                  9   # )r  rÀ   )rX  rï  r  r$  r>   r]  rF  s   &&r}   Úis_unspec_argÚGraphLowering.is_unspec_argo  s¨   € ð ×%Ñ%Ñ%÷ Bð BØ×!Ñ! $Õ'×1Ñ1Ó3°qÑ8÷Bð Bä�D×%Ñ% dÕ+×4Ñ4Ó6Ó7¸1Ñ<÷Bð Bô   × 1Ñ 1°$Õ 7Ó8¸EÑA÷	3ð 3ð
 ×2Ñ2Ñ2ð	3r   )fr‚  rN  rQ  rc  r‘  ra  rb  r¤  rœ  r4  r�  r‹  rŒ  rU  r¡  rd  re  r©  r“  r•  r”  r=  r>  r:  r;  ro  rh  r3  r„  rŽ  r{  rª  r_  r˜  rw  r`  r^  r–  rH  rž  r/  r6  rO  rg  rA  r0   rB  r1  rW  rZ  rX  rY  r+  rv  r@  r£  r8  r9  r7  r—  r5  r|  r¢  r†  rs  r~  r}  rE  r?  r  r�  r€  ri  rj  ru  r   r�  rM  rm  rf  rš  r\  r¨  r‰  rT  r…  rq  rr  rp  rP  rŠ  rt  rn  rV  r[  rk  rl  rŸ  rÖ   r§  rx  r]  )NNNFFNNFFFNNNNNNFN)Tr�   ©FNNN)UÚ__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__rK  r³  r½  r¹  rÓ  rÙ  rß  rå  rõ  rû  Ú
contextlibr   r   r  ÚstaticmethodrL  rG  rN  r�  r^  rc  Úpropertyrg  rr  ry  r~  r„  r%  rï  r—  r�  r¤  r«  r»  rÀ  rÆ  rÖ  rÜ  rÓ  Útyping_extensionsÚoverriderñ  rÜ   r.  r=  rE  rJ  r¬   re  ru  rz  r  r¥  r«  r¶  rö  r  rT  r`  rz  r±  r¶  rº  ÚclassmethodrÕ  r¥  rú  r¢  r  ré  r  r  r  r$  rW  r[  r_  Ú__static_attributes__Ú__classcell__©r®  s   @r}   r)  r)  ‚  s¿  ø‡ ñð #Ó"÷dCò dCõL1õõ)2õVõ#õ*Eõ	M÷<õ:4ð ×Ñô(ó ð(õð ô_ó ð_õBõ
õ6>õ@Aõ
Dð ôó ðð ô	?ó ð	?õõ$FõQõ8õ,
8÷&ð &õ	ðÀU÷ õ(õ
	õõ
õ÷:
õ'&ðR ×Ñ÷gó  ðgðR ×Ñ÷d8ó  ðd8ðL ô5ó ð5õB7õHõð ×Ñ÷v
ó  ðv
õp ð ô$ó ð$ð ô$ó ð$õa:ðF ô6ó ð6ð ô;ó ð;õ#÷*cð cõJU;õn÷ #WõJ]0õ~h"ðT ô5ó ð5ð ô
ó ð
ð ôbBó ðbBõHlSõ\	8õõ&%õ*7ð" 6:ÐÐ2Ó9õ-õõ@GõRõ:÷3ó 3r   r)  c                  óZ   a € ] tR tRtRtR V 3R lltR V 3R lltR
R V 3R llltR	tV ;t	# )rK  iz  z‚
Mostly a helper class for the subgraph lowering. The main goal is to call
init_wrapper_code with the subgraph related arguments.
c               ó(   € V ^8„  d   QhRRRRRRRR/# )rv   rM  r)  rw   r   rx   ry   rz   r{   )r|   s   "r}   r~   ÚSubgraphLowering.__annotate__€  s(   € ÷ *ñ *˜}ð *°Sð *ÀCð *ÈDñ *r   c                	ó4   <€ Wn         \        SV `  ! V/ VB  R # r�   )rM  rJ  rK  )r«  rM  rw   rx   r®  s   &&*,€r}   rK  ÚSubgraphLowering.__init__€  s   ø€ ØŒÜ‰Ò˜$Ð) &Ô)r   c               ó$   € V ^8„  d   QhRRRRRR/# rÉ  r{   )r|   s   "r}   r~   rs  „  s!   € ÷ 	ñ 	°
ð 	À&ð 	ÈSñ 	r   c                	ó¢   <€ \         SV `  W4      pV P                  p\        V\        4      '       d   VP                  pK$  W#P
                  V&   V# r�   )rJ  rÖ  rM  rŠ   rK  rh  )r«  r?  r×  Úrootr®  s   &&& €r}   rÖ  Ú,SubgraphLowering.allocate_non_dup_const_name„  sE   ø€ Ü‰wÑ2°4Ó>ˆð �{‰{ˆÜ˜Ô/×0Ò0Ø—;‘;ŠDØ#�‰�tÑØˆr   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# rW  r{   )r|   s   "r}   r~   rs  �  s<   € ÷ 
ñ 
àð
ð "ð
ð 9ð	
ð
 =ð
ð 
ñ
r   c                	óh   <€ \         SV `  R V P                  V P                  P                  R7       R# )T)rX  rJ  rY  N)rJ  r`  r?  rM  rx  )r«  rX  rJ  rY  rZ  r®  s   &&&&&€r}   r`  Ú"SubgraphLowering.init_wrapper_code�  s.   ø€ ô 	‰Ñ!ØØŸ)™)Ø $§¡× 8Ñ 8ð 	"ö 	
r   )rM  ra  )
rb  rc  rd  re  rf  rK  rÖ  r`  rn  ro  rp  s   @r}   rK  rK  z  s+   ø† ñ÷
*ð *÷	ð 	÷
÷ 
ð 
r   rK  )¾Ú
__future__r   rh  r  r¥  rË  r  r+  rŠ  rR  rÎ  rƒ  rk  Úcollectionsr   r   Útypingr   r   r   r	   r
   r‹   r   r‘   Útorch._loggingÚtorch.fxr   r   Útorch._decompr   Útorch._dynamo.utilsr   r   Ú"torch._library.fake_class_registryr   Útorch._library.opaque_objectr   r   r   Útorch._library.utilsr   r   r   Útorch._prims_commonr   r   Útorch._subclasses.fake_tensorr   Útorch._utils_internalr   Ú%torch.fx.experimental._backward_stater   Ú%torch.fx.experimental.symbolic_shapesr   r   r   r    r!   r"   r#   r$   Útorch.fx.noder%   Útorch.fx.passes.reinplacer&   Útorch.utils._mode_utilsr'   Útorch.utils._ordered_setr(   Útorch.utils._sympy.numbersr)   Útorch.utils._typing_utilsr*   rG  r+   r,   Úcodegen.commonr-   r.   r/   r0   r1   r2   r3   r4   r­  r5   r6   r7   r8   Úfx_utilsr9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r:  rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   ÚruntimerT   Úruntime.autotune_cacherU   rV  rV   rç  rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   Úvirtualizedrc   rd   Úcollections.abcre   rf   rg   rh   Útypesri   Útorch._higher_order_ops.effectsrj   rk   Útorch.fx.graphrl   Úcodegen.wrapperrm   Údependenciesrn   rŠ  ro   r  Útorch._inductor.codecacherp   Ú	getLoggerrb  r2  Ú_loggingÚgetArtifactLoggerr\  r  rä   r¦  rˆ  rz  Ú)torch._inductor.fb.triton_kernel_metadatarr   Útorch._inductor.fb.utilsrs   r–   r§   r¹   rÆ   rÔ   r  r  r'  r³   rj  r)  rK  r{   r   r}   Ú<module>r£     sæ  ðÝ "ã Û Û Û Û Û 	Û 	Û 
Û Û Û Ý #Ý %ß >Õ >ã Ý ã Û Û ß  Ý ,ß 4Ý ?÷ñ õ
 ;ß 7÷õ 9Ý :Ý ?÷	÷ 	ó 	õ Ý 1Ý /Ý /Ý -Ý .ç ÷	÷ 	ó 	÷ó õ %÷÷ ÷ õ ÷÷ ÷ õ õ $Ý 8Ý &÷÷ ÷ ó ÷ (÷ ßFÓFÝ å;Ý$Ý$å5Ý!Ý,àÐ"7Õ7€Nå 5ð ×Ó˜Ó!€Ø—’×0Ò0°¸<ÓH€à‡y‚y‡~‚~€à$Ÿ?›?Ó,Ð à	×Ó×Òõö 9õõõõ*õõ$Rõõ0_3õDõ*ô*u+3�E—H’H×(Ò(ô u+3ôpW 
�}ö  
r   