§
    ŠŠtj¢Õ ã                  óÜ  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZ d dlmZ d dlmZmZmZ d dlZd dlmZ d dlZd dlZd dlZd dlmZmZ d dlmZ d d	lmZmZ d d
lm Z  d dl!m"Z"m#Z#m$Z$ d dl%m&Z& d dlm'Z'm(Z( d dl)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZD ddlEmFZFmGZGmHZH ddlImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQ ddlRmSZSmTZTmUZUmVZV ddlWmXZX ddlGmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZe ddlfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZs ddltmuZu dd lvmwZw dd!lxmyZy dd"lzm{Z{m|Z|m}Z}m~Z~mZm€Z€m�Z�m‚Z‚mƒZƒm„Z„m…Z…m†Z† dd#l‡mˆZˆm‰Z‰ er;d d$lŠm‹Z‹mŒZŒm�Z�mŽZŽ d d%l�m�Z� d d&l‘m’Z’ d d'lm“Z“ d d(l”m•Z• dd)l–m—Z— dd*l˜m™Z™ dd+lšm›Z› e�eLz  Zœd d,l�mžZž  ejŸ        e ¦  «        Z¡ej¢         £                    e d-¦  «        Z¤ej¥        j¦        Z¦ ej§        ¦   «         Z¨ eFj©        ¦   «         rd d.lªm«Z« d d/l¬m­Z­ ndUd5„Z­dUd6„Z«dVd:„Z®dWd@„Z¯dXdD„Z°dYdH„Z±dZdK„Z²d[dM„Z³d\dP„Z´ G dQ„ dRejµ        j¶        ¦  «        Z· G dS„ dTe·¦  «        Z¸dS )]é    )ÚannotationsN)Údefaultdict)Úcontextmanager)ÚAnyÚNoReturnÚTYPE_CHECKING)ÚExpr)ÚdeviceÚTensor)Úget_decompositions)ÚdefakeÚdynamo_timed)ÚFakeScriptObject)Úis_opaque_reference_typeÚis_opaque_typeÚis_opaque_value_type)Úget_layout_constraint_tag)Ú
LazyStringÚtrace_structured)Úcompute_required_storage_lengthÚmake_channels_last_strides_for)Ú
FakeTensor)Ú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é   )ÚconfigÚirÚmetrics)Ú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_codeÚargsr   ÚkwargsÚreturnÚNonec                 ó   — d S ©N© ©rs   rt   s     úS/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_inductor/graph.pyrr   rr   œ   ó   € Øˆó    c                 ó   — d S rx   ry   rz   s     r{   rq   rq   Ÿ   r|   r}   Úconstant_bufferú
sympy.Exprútorch.dtype | Nonec                óŽ  — t          | t          j        t          j        t          j        j        j        f¦  «        s
J d¦   «         ‚t          | t          j        j        j        ¦  «        rt          j        S t          | t          j        ¦  «        rt          | ¦  «        S | j
        rt          j        S | j        rt          j        S d S )Nzgget_constant_buffer_dtype only supports input of sympy.Symbol, sympy.Expr or sympy.core.numbers.Integer)Ú
isinstanceÚsympyÚSymbolr	   ÚcoreÚnumbersÚIntegerÚtorchÚint64rY   Ú
is_integerÚis_floatÚfloat32)r   s    r{   Úmay_get_constant_buffer_dtyperŽ   £   s·   € ÝØ�%œ,­¬
µE´JÔ4FÔ4NÐOñô ð ð ð 	rñô ð õ
 �/¥5¤:Ô#5Ô#=Ñ>Ô>ð ÝŒ{Ðå�/¥5¤:Ñ.Ô.ð 5Ý# OÑ4Ô4Ð4àÔ!ð ÝŒ{ÐØ	Ô	!ð ÝŒ}Ðàˆtr}   Úobjrj   ÚtargetÚstrú,Tensor | torch._C.ScriptObject | GraphModulec           	     óø   — |                      d¦  «        }| }t          |¦  «        D ]R\  }}t          ||¦  «        s-t          dd                     |d |…         ¦  «        › �¦  «        ‚t          ||¦  «        }ŒS|S )Nú.z#Node referenced nonexistent target )ÚsplitÚ	enumerateÚhasattrÚRuntimeErrorÚjoinÚgetattr)r�   r�   Útarget_atomsÚattr_itrÚiÚatoms         r{   Úgetattr_recursiverŸ   ·   s‘   € ð —<’< Ñ$Ô$€LØ€HÝ˜\Ñ*Ô*ð +ð +‰ˆˆ4Ý�x Ñ&Ô&ð 	ÝØR°c·h²h¸|ÈBÈQÈBÔ?OÑ6PÔ6PÐRÐRñô ð õ ˜8 TÑ*Ô*ˆˆØ€Or}   Úgrk   údict[Node, tuple[int, ...]]c                óJ  — i }|                       d¬¦  «        d         }d|j        vr|S t          |j        d         t          j        j        ¦  «        s|j        d         }n|j        }t          |¦  «        D ]*\  }}||j        d         v r|j        d         |         ||<   Œ+|S )NÚoutput©Úopr   Úuser_visible_output_idxsÚoriginal_output_strides)Ú
find_nodesÚmetarƒ   rs   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¬=Ñ9Ô9ð ,Ø&Ô+¨AÔ.ÐÐà&Ô+ÐåÐ/Ñ0Ô0ð Ið I‰	ˆˆTØ�+Ô"Ð#=Ô>Ð>Ð>Ø#Ô(Ð)BÔCÀCÔHˆC�‰IøØ€Jr}   Útútorch.TensorÚboolc                ót   — | j         j        dk    o(| j        t          j        k    o|                      ¦   «         S )NÚcpu)r
   ÚtypeÚlayoutr‰   ÚstridedÚ	is_pinned©r±   s    r{   Ú_is_cpu_strided_tensor_pinnedr»   ×   s,   € ØŒ8Œ=˜EÒ!ÐQ a¤hµ%´-Ò&?ÐQÀAÇKÂKÁMÄMÐQr}   Úuser_visible_outputsúdict[Node, object]c                ó¸  — i | ¥}g |                      ¦   «         ¢}t          g |¢¦  «        }|r¬|                     ¦   «         }t          |j        ¦  «        r‚|j        r{t          |j        d         t          j        j	        ¦  «        rQ|j        d         }||vr@| 
                    |d¦  «         |                     |¦  «         |                     |¦  «         |°¬|S )zc
    Extend user_visible_output_strides to include view ops that lead to user-visible outputs.
    r   N)Úkeysr&   Úpopr$   r�   rs   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ŒmÐ€EÝ˜˜5˜Ñ"Ô"€GØ
ð #Ø—)’)‘+”+ˆå˜œÑ'Ô'ð		#à”ð		#õ ˜7œ<¨œ?­E¬H¬MÑ:Ô:ð		#ð
 ”< ”?ˆDØ˜7Ð"Ð"Ø×!Ò! $¨Ñ-Ô-Ð-Ø—’˜DÑ!Ô!Ð!Ø—’˜TÑ"Ô"Ð"ð ð #ð €Mr}   Úuser_visible_output_stridesc                ó*  — t           j        sdS t          |¦  «        }t          t          j        t          j        t          j        t          j        g¦  «        }t          t          j	        t          j
        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        g¦  «        }d
d„}t+          | j        ¦  «        D �]}t/          |j        t2          j        j        j        ¦  «        rd|j        d<   Œ7t/          |j        t2          j        j        ¦  «        r7tA          |j        ¦  «        t2          j!        j"        j#        k    rd|j        d<   Œ’ ||¦  «        }|sŒ ||v r
d|j        d<   |j         $                    dd	¦  «        r&|j%        D ]} ||¦  «        }	|	sŒ|	|vr
d|j        d<   Œt           j&        s||v r||vr
d|j        d<   �ŒdS )aŠ  
    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.
    Nr¯   útorch.fx.Noderu   ú"torch._ops.OpOverloadPacket | Nonec                ó¦   — | j         dk    rEt          | j        t          j        j        ¦  «        r!t          | j        d¦  «        r| j        j        nd S )NÚcall_functionÚ_overloadpacket)r¥   rƒ   r�   r‰   Ú_opsÚ
OpOverloadr—   rÐ   )r¯   s    r{   Ú_get_overload_packetz8mark_nodes_dislike_padding.<locals>._get_overload_packet  sX   € ð
 Œw˜/Ò)Ð)å˜4œ;­¬
Ô(=Ñ>Ô>ð *õ ˜œÐ%6Ñ7Ô7ð *ð ŒKÔ'Ð'ð
 ð	
r}   TÚdislike_paddingF)r¯   rÌ   ru   rÍ   )'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ÝÔð		
ñô Ðõ "åŒMÝŒHÝŒIÝŒIÝŒHÝŒIÝŒIÝŒHÝŒHÝŒKÝŒKÝÔð	
ñô Ðð"

ð 

ð 

ð 

õ ˜œÑ Ô ð (3ñ (3ˆÝØŒJÝÔ#Ô6ÔRñ
ô 
ð 	ð +/ˆCŒHÐ&Ñ'Øõ �s”z¥5¤:Ô#8Ñ9Ô9ð	å)¨#¬*Ñ5Ô5ÝŒxŒ|Ô/ò0ð 0ð +/ˆCŒHÐ&Ñ'Øà!Ð! #Ñ&Ô&ˆØð 	ØØÐ$Ð$Ð$Ø*.ˆCŒHÐ&Ñ'àŒ8�<Š<Ð)¨5Ñ1Ô1ð 	9àÔ,ð 9ð 9�Ø/Ð/°Ñ6Ô6�Øð ØØÐ#3Ð3Ð3Ø48�E”JÐ0Ñ1øåÔ!ð 		3 cÐ-HÐ&HÐ&Hð Ð)Ð)Ð)Ø.2�”Ð*Ñ+ùðQ(3ð (3r}   r¯   r#   c                ó(  — t          t          j        dd ¦  «        �öt          t          j        j        dd ¦  «        �Öt	          | j        t          j        ¦  «        r·t          | j        j	        ¦  «        dk    ršt          | j        j	        d         d¦  «        rz| j        j	        d         j        D ]b}|j        d         t          j        j        j        j        t          j        j        j        j        t          j        j        j        j        fv r dS ŒcdS )NÚmkldnnÚ_convolution_pointwiser   ÚtargetsTF)rš   r‰   Úopsrú   rƒ   r�   Ú	functoolsÚpartialÚlenrs   r—   rü   Úfnsrû   ÚdefaultÚbinaryÚ_convolution_pointwise_)r¯   r�   s     r{   Úis_mkldnn_convr  U  sñ   € õ 	•”	˜8 TÑ*Ô*Ð6Ý•E”IÔ$Ð&>ÀÑEÔEÐQÝ�t”{¥IÔ$5Ñ6Ô6ð Rå�”Ô Ñ!Ô! AÒ%Ð%Ý�D”KÔ$ QÔ'¨Ñ3Ô3ð &ð ”kÔ& qÔ)Ô1ð 	ð 	ˆFØŒz˜!Œ}Ý”	Ô Ô7Ô?Ý”	Ô Ô7Ô>Ý”	Ô Ô8Ô?ð!ð ð ð
 �t�tðð ˆ5r}   c                  óB  ‡ — e Zd ZU dZded<   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dÁdÂˆ fd'„ZdÃd(„ZdÄd,„ZdÅd.„ZdÆd0„Z	dÇd4„Z
dÈd7„ZdÉd<„ZdÊdËdB„ZdÌdD„Zej        dÍdF„¦   «         ZdÎdH„ZedÏdJ„¦   «         ZdÐdK„ZdÑdO„ZdÒdQ„ZdÓdR„ZdÔdS„ZedÕdU„¦   «         ZedÖdV„¦   «         Zd×dY„ZdØd\„ZdÙd^„ZdÚd`„Z dÛdb„Z!dÜˆ fde„Z"dÝdh„Z#ddiœdÞdm„Z$dßdp„Z%dàds„Z&dÓdt„Z'dádu„Z(dâdx„Z)dãdädz„Z*dåd}„Z+dæˆ fdƒ„Z,e-j.        dçˆ fd†„¦   «         Z/edèdˆ„¦   «         Z0déd‹„Z1dêd�„Z2dêdŽ„Z3e-j.        dëˆ fd‘„¦   «         Z4dÃd’„Z5edìd”„¦   «         Z6edíd•„¦   «         Z7dîdœ„Z8edïdž„¦   «         Z9dðdŸ„Z:dñˆ fd¡„Z;dòd¤„Z<dÃd¥„Z=	 	 	 	 dódôd«„Z>dõd­„Z?död¯„Z@dÃd°„ZAdöd±„ZBd÷d³„ZCdødµ„ZDdZEd¶ed·<   dùd¹„ZFdùdº„ZGdúd½„ZHdûd¾„ZIdüd¿„ZJdýdÀ„ZKˆ xZLS )þÚGraphLoweringz?Lower an FX graph into Inductor IR and track compilation state.úlist[ir.IRNode]Úgraph_outputsNFÚgmútorch.fx.GraphModuleÚexample_inputsúSequence[object] | NoneÚ	shape_envúShapeEnv | NoneÚgraph_idú
int | NoneÚcpp_wrapperr³   Úaot_modeÚ
layout_optúbool | NoneÚextern_node_serializerú1Callable[[list[ir.ExternKernelNode]], Any] | NoneÚis_inferenceÚis_backwardÚis_const_graphÚconst_output_indexúdict[str, int] | NoneÚconst_wrapper_codeú
str | NoneÚconst_kernel_codeÚconst_moduleúGraphLowering | NoneÚnameÚinputs_to_checkúSequence[int] | NoneÚ
fx_wrapperÚget_decomp_fnú3Callable[..., dict[Any, Callable[..., Any]]] | Noneru   rv   c                óV  •— t          ¦   «                              |¦  «         || _        || _        |�|n|                      ||	¬¦  «        | _        d| _        |	| _        |
| _        || _	        || _
        || _        || _        || _        d| _        d| _        |€t!          ¦   «         }d| _        nd| _        || _        |j                             ¦   «         | _        t-          t.          j                 ¦   «         | _        t5          |¦  «        | _        g | _        i | _        i | _        i | _        d | _         t-          ¦   «         | _!        |r|j"        nt-          ¦   «         | _"        |r|j#        nt-          ¦   «         | _#        d| _$        tK          t,          ¦  «        | _&        tK          t,          ¦  «        | _'        i | _(        i | _)        g | _*        g | _+        |r|ni | _,        |r!t-          | -                    ¦   «         ¦  «        nt-          ¦   «         | _.        |r|j/        ni | _/        |r|j0        ni | _0        |j1         2                    dt-          ¦   «         ¦  «        | _3        |r|j4        ni | _4        i | _5        i | _6        i | _7        i | _8        t-          ¦   «         | _9        t-          ¦   «         | _:        t-          ¦   «         | _;        t-          ¦   «         | _<        i | _=        t-          ¦   «         | _>        t-          ¦   «         | _?        d | _@        d | _A        ddlBmC} t‰          jE        ¦   «         r|r|n|| _F        d | _G        i | _H        t-          ¦   «         | _I        g | _J        i | _K        tK          t˜          ¦  «        | _M        i | _N        i | _O        t¡          jP        ¦   «         | _Q        || _R        || _S        || _T        || _U        i | _V        || _W        || _X        t³          t´          ¦  «        | _[        d | _\        d | _]        d | _^        d | __        d | _`        | j        r|  a                    ¦   «         nt-          ¦   «         | _b        t-          dg¦  «        | _c        tÉ          |je        ¦  «        | _f        tÏ          |je        | jf        ¦  «         d	| _h        d	| _i        g | _j        d | _k        i | _l        | m                    ¦   «         | _n        | jn         0                    ¦   «         D ]\  }}|| j0        |<   Œ| jn         4                    ¦   «         D ]\  }}|| j4        |<   Œ| jo        j1         2                    d
i ¦  «        | _p        |�|jq        ni | _q        tå          ¦   «           tç          jt        d ¦  «        tê          ¦  «        | _u        i | _v        t-          ¦   «         | _w        t-          ¦   «         | _x        i | _y        t-          ¦   «         | _z        t-          ¦   «         | _{        t-          ¦   «         | _|        tû          j~        ¦   «         | _        d| _€        �t          ¦   «         | _‚        i | _ƒ        d S )N)r  r   FTrµ   Úmutated_named_buffers)Úextern_node_json_serializerzaten.convolution_backwardÚ Ú dynamo_flat_name_to_original_fqnéÿÿÿÿ)„ÚsuperÚ__init__r&  r  Údecide_layout_optr  Únum_channels_last_convr  r  r  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_symbolsrU   ÚsizevarsÚgraph_input_namesÚgraph_inputsÚgraph_inputs_originalÚgraph_input_storage_offsetsÚ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ï   r)  Únamed_parametersÚtorchbind_constantsÚ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_serializerr*  r)   Ú	is_fbcoder  Úcurrent_nodeÚlistsÚmutated_inputsÚmutated_input_idxsÚname_to_bufferÚlistÚname_to_usersÚ
name_to_opÚ_cutedsl_capture_nodesÚtimeÚcreation_timer"  r  r%  Úrecord_multi_kernel_choiceÚmulti_kernel_to_choicer  r  Ú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Údevice_node_mappingÚ__copy__Úorig_gmÚmoduler,  Úallocated_constant_namer2   rþ   Ú	lru_cacher/   Ú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_idxrX   Úbw_donated_idxsÚdep_size_hint_cache)Úselfr
  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r"  r#  r%  r&  r*  ÚkÚvÚ	__class__s                          €r{   r/  zGraphLowering.__init__o  s0  ø€ õ. 	‰Œ×Ò˜ÑÔÐØ*ˆÔØ,ˆÔð Ð%ð ˆJà×'Ò'¨¸Ð'ÑFÔFð 	Œð
 '(ˆÔ#Ø(ˆÔØ&ˆÔØ,ˆÔØ"4ˆÔØ!2ˆÔØ(ˆÔØ.ˆÔØ',ˆÔ$à$ˆÔØÐÝ ™
œ
ˆIØ#(ˆDÔ Ð à#'ˆDÔ Ø#ˆŒð Ô.×3Ò3Ñ5Ô5ð 	Ôõ '1µ´Ô&>Ñ&@Ô&@ˆÔ#å(¨Ñ3Ô3ˆŒØ,.ˆÔØQSˆÔØ=?ˆÔ"ð =?ˆÔ(Ø>BˆÔÝ9C¹¼ˆÔ%à)5ÐGˆLÔ%Ð%½:¹<¼<ð 	Ôð )5ÐFˆLÔ$Ð$½*¹,¼,ð 	Ôð !ˆÔÝBMÝñC
ô C
ˆÔ#õ ALÍJÑ@WÔ@WˆÔ!ð HJˆÔ$ð <>ˆÔ"à(*ˆŒØ.0ˆŒà"4Ð<ÐÐ¸"ð 	Ôð
 "ð�JÐ)×.Ò.Ñ0Ô0Ñ1Ô1Ð1å‘”ð 	Ôð '3Ð:ˆLÔ"Ð"¸ð 	Œð +7Ð>ˆLÔ&Ð&¸Bð 	Ôð @B¼w¿{º{Ø#¥Z¡\¤\ñ@
ô @
ˆÔ"ð .:ÐAˆLÔ)Ð)¸rð 	Ôð
 ð 	Ô ð ;=ˆÔ&Ø68ˆÔØ.0ˆÔÝ3=±<´<ˆÔÝ0:±´ˆÔÝ8B¹¼ˆÔ$Ý0:±´ˆÔØ=?ˆÔ"Ý4>±L´LˆÔ Ý3=±<´<ˆÔØ-1ˆŒØ26ˆÔàVÐVÐVÐVÐVÐVõ ÔÑ!Ô!ð-Ø&<ð-Ð"Ð"à,ð 	Ô#ð ,0ˆÔØ+-ˆŒ
Ý/9©|¬|ˆÔØ-/ˆÔØ46ˆÔÝ@KÍDÑ@QÔ@QˆÔØ35ˆŒà<>ˆÔ#Ý!œY™[œ[ˆÔØˆŒ	Ø&ˆÔØ$ˆŒð
 +6ˆÔ'Ø68ˆÔ#à ˆŒØ ˆŒÝ"&Õ'?Ñ"@Ô"@ˆÔØ>BˆŒð =AˆÔØDHˆÔØ7;ˆÔð 48ˆÔð 7;´oÐWˆD×0Ò0Ñ2Ô2Ð2Í:É<Ì<ð 	Ô'õ !+Ð,GÐ+HÑ IÔ IˆÔÝ+JÈ2Ì8Ñ+TÔ+TˆÔ(Ý" 2¤8¨TÔ-MÑNÔNÐNØ ˆŒØ!ˆŒð ð 	Ôð 6:ˆÔ&ð GIˆÔ Ø-/¯[ª[©]¬]ˆŒØ”L×.Ò.Ñ0Ô0ð 	&ð 	&‰DˆAˆqØ$%ˆDÔ˜qÑ!Ð!Ø”L×1Ò1Ñ3Ô3ð 	)ð 	)‰DˆAˆqØ'(ˆDÔ! !Ñ$Ð$Ø04´Ô0@×0DÒ0DØ.°ñ1
ô 1
ˆÔ-ð 5AÐ4LˆLÔ0Ð0ÐRTð 	Ô$õ 	"Ñ#Ô#Ð#Ø$=¥IÔ$7¸Ñ$=Ô$=Õ>RÑ$SÔ$SˆÔ!à;=ˆÔõ 3=±,´,ˆÔÝ5?±\´\ˆÔ!ð EGˆÔ&å:D¹,¼,ˆÔ&å1;±´ˆÔõ :D¹¼ˆÔ%õ &œOÑ-Ô-ˆÔð  "ˆÔæ/Ñ1Ô1ˆÔð ACˆÔ Ð Ð r}   c                ó8   — | j                              ¦   «          d S rx   )r5  Úfreeze_runtime_asserts©r�  s    r{   r’  z$GraphLowering.freeze_runtime_assertsN  s   € ØŒ×.Ò.Ñ0Ô0Ð0Ð0Ð0r}   Úexr²   ú1tuple[Sequence[int | Expr], Sequence[int | Expr]]c                ó<   — |                       |¦  «        \  }}}||fS rx   )Ú%symbolic_sizes_strides_storage_offset)r�  r”  ÚsizesÚstridesÚ_s        r{   Úget_placeholder_sizes_stridesz+GraphLowering.get_placeholder_sizes_stridesQ  s(   € ð !×FÒFÀrÑJÔJÑˆˆw˜Ø�gˆ~Ðr}   ú7tuple[Sequence[int | Expr], Sequence[int | Expr], Expr]c                ó<  — | j         r=|                     ¦   «         |                     ¦   «         }}|                     ¦   «         }n‚ddlm}  |dt          | j        j        ¦  «        › �¦  «        }| j         	                    |                     ¦   «         |                     ¦   «         |                     ¦   «         |¦  «        \  }}}d„ |D ¦   «         }d„ |D ¦   «         }t          |t          j        ¦  «        r|j        j        nt          j        |¦  «        }	|||	fS )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.
        r   )ÚConstantSourceÚ__inductor_unknown_tensor_c                ó6   — g | ]}t          j        |¦  «        ‘ŒS ry   ©r„   Úsympify©Ú.0r�   s     r{   ú
<listcomp>zGGraphLowering.symbolic_sizes_strides_storage_offset.<locals>.<listcomp>y  s"   € Ð1Ð1Ð1 q•%”- Ñ"Ô"Ð1Ð1Ð1r}   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS ry   r¡  r£  s     r{   r¥  zGGraphLowering.symbolic_sizes_strides_storage_offset.<locals>.<listcomp>z  s"   € Ð5Ð5Ð5¨•E”M !Ñ$Ô$Ð5Ð5Ð5r}   )r4  ÚsizeÚstrideÚstorage_offsetÚtorch._dynamo.sourcerž  r   r5  Úbacked_var_to_valÚ'transfer_symbols_from_foreign_shape_envrƒ   r‰   ÚSymIntr¯   Úexprr„   r¢  )
r�  r”  r§  r¨  r©  rž  ÚsourceÚr_sizeÚr_strideÚr_storage_offsets
             r{   r—  z3GraphLowering.symbolic_sizes_strides_storage_offsetW  s0  € ð Ôð 	ØŸ7š7™9œ9 b§i¢i¡k¤k�&ˆDØ×.Ò.Ñ0Ô0ˆNˆNà;Ð;Ð;Ð;Ð;Ð;ð $�^ØU­S°´Ô1RÑ-SÔ-SÐUÐUñô ˆFð ”×GÒGØ—’‘	”	Ø—	’	‘”Ø×!Ò!Ñ#Ô#Øñ	ô ñ	ØØØð 2Ð1¨DÐ1Ñ1Ô1ˆØ5Ð5¨fÐ5Ñ5Ô5ˆõ ˜.­%¬,Ñ7Ô7ð/ˆNÔÔ$Ð$å”˜~Ñ.Ô.ð 	ð
 �xÐ!1Ð1Ð1r}   ú)tuple[list[sympy.Expr], list[sympy.Expr]]c                ó‚   — d„ |                      ¦   «         D ¦   «         }d„ |                     ¦   «         D ¦   «         }||fS )z+
        Primarily used to weights
        c                ó6   — g | ]}t          j        |¦  «        ‘ŒS ry   ©r„   rˆ   r£  s     r{   r¥  z6GraphLowering.static_sizes_strides.<locals>.<listcomp>ˆ  s"   € Ð4Ð4Ð4 Q•”˜aÑ Ô Ð4Ð4Ð4r}   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS ry   r¶  r£  s     r{   r¥  z6GraphLowering.static_sizes_strides.<locals>.<listcomp>‰  s"   € Ð8Ð8Ð8 q•%”- Ñ"Ô"Ð8Ð8Ð8r}   )r§  r¨  )r�  r”  r§  r¨  s       r{   Ústatic_sizes_stridesz"GraphLowering.static_sizes_strides‚  sD   € ð 5Ð4¨"¯'ª'©)¬)Ð4Ñ4Ô4ˆØ8Ð8¨B¯IªI©K¬KÐ8Ñ8Ô8ˆØ�Vˆ|Ðr}   r¯   úLir.TensorBox | ir.StorageBox | ir.Buffer | WorkspaceArg | ir.TorchBindObjectúSequence[Expr]c                ó"  — t          |t          j        ¦  «        r|j        }t          |t          j        ¦  «        r|j        }t          |t          j        ¦  «        r |j        | j        v r| j        |j                 S |                     ¦   «         S rx   )	rƒ   r*   rD   ÚdatarC   ÚComputedBufferr"  rG  Úget_size)r�  r¯   s     r{   Úget_allocation_sizez!GraphLowering.get_allocation_sizeŒ  s   € õ �d�BœLÑ)Ô)ð 	Ø”9ˆDÝ�d�BœMÑ*Ô*ð 	Ø”9ˆDå�t�RÔ.Ñ/Ô/ð	#à”	˜TÔ7Ð7Ð7ð Ô-¨d¬iÔ8Ð8à—=’=‘?”?Ð"r}   ú-ir.Buffer | WorkspaceArg | ir.TorchBindObjectr	   c                ó’   — |                      ¦   «         }|                      |¦  «        }|j        }|j        }t	          |||¦  «        S rx   )Ú
get_layoutr¿  r¨  Úoffsetr   )r�  r¯   r·   r§  r¨  rÃ  s         r{   Úget_allocation_storage_sizez)GraphLowering.get_allocation_storage_size¡  sF   € ð —’Ñ"Ô"ˆØ×'Ò'¨Ñ-Ô-ˆØ”ˆØ”ˆÝ.¨t°V¸VÑDÔDÐDr}   r
   ú)torch._inductor.ir.IRNode | device | NoneÚfeaturer,   c                óˆ   — t          |t          ¦  «        s
J |¦   «         ‚||                      t          |¦  «        ¦  «        v S rx   )rƒ   r,   r/   r=   )r�  r
   rÆ  s      r{   Úhas_featurezGraphLowering.has_featureª  sC   € õ
 ˜'¥>Ñ2Ô2Ð;Ð;°GÑ;Ô;Ð2Ø˜$×3Ò3µOÀFÑ4KÔ4KÑLÔLÐLÐLr}   TÚdeprm   Úcount_bytesÚintc                óÚ  — ||f| j         vrÒd}| j                             |j        ¦  «        }t	          |t
          j        ¦  «        rd| j         ||f<   dS 	 |                     ¦   «         r,| j         	                    | 
                    ¦   «         ¦  «        r+|r|                     ¦   «         }n|                     ¦   «         }n# t          $ r Y nw xY w|| j         ||f<   | j         ||f         S )zc
        Get the size hint for a dependency with caching to avoid expensive recomputation.
        r   )rŒ  r<  rï   r"  rƒ   r*   ÚNonTensorObjÚhas_unbacked_symbolsr:  Úall_unbacked_explicitly_hintedÚ	get_numelÚnumbytes_hintÚ
numel_hintÚKeyError)r�  rÉ  rÊ  ÚresÚinps        r{   Úget_dep_size_hintzGraphLowering.get_dep_size_hint²  s  € ð �Ð TÔ%=Ð=Ð=ØˆCð Ô#×'Ò'¨¬Ñ1Ô1ˆCÝ˜#�rœÑ/Ô/ð Ø?@�Ô(¨#¨{Ð);Ñ<Ø�qðà×0Ò0Ñ2Ô2ð/à”}×CÒCÀCÇMÂMÁOÄOÑTÔTð/ð #ð /Ø!×/Ò/Ñ1Ô1˜˜à!ŸnšnÑ.Ô.˜øøÝð ð ð ð �ð	øøøð
 <?ˆDÔ$ c¨;Ð%7Ñ8ØÔ'¨¨kÐ(:Ô;Ð;s   ÁA+C Ã
CÃCútorch.devicec                ó6   — | j         x}r|S t          d¦  «        ‚)NzNo current device)rq  r˜   ©r�  r
   s     r{   Úget_current_device_or_throwz)GraphLowering.get_current_device_or_throwÏ  s&   € ØÔ(Ð(ˆ6ð 	4ØˆMåÐ2Ñ3Ô3Ð3r}   úIterator[None]c              #  óV   K  — | j         }|| _         	 d V — || _         d S # || _         w xY wrx   )rq  )r�  r
   rö   s      r{   Úset_current_devicez GraphLowering.set_current_deviceÕ  sF   è è € àÔ#ˆØ$ˆÔð	(ØˆEˆEˆEà"'ˆDÔÐÐø %ˆDÔÐ'Ð'Ð'Ð's   ’ Ÿ	(r‘   c                ó*   — | j         rdS | j        rdS dS )NÚ	inferenceÚbackwardÚforward)r  r  r“  s    r{   Úget_training_phasez GraphLowering.get_training_phaseÞ  s'   € ØÔð 	Ø�;ØÔð 	Ø�:Øˆyr}   rj   c               ó  — t           j        sdS t           j        rdS d„ | j        j        D ¦   «         }| j        j        D ]&}t          |¦  «        r|                     |¦  «         Œ't          |¦  «        }|dk    rdS t          j	        j
        j        r>t          j	        j
                             ¦   «         rt          d„ |D ¦   «         ¦  «        rdS t          t          | j        j        ¦  «        ¦  «        d|z  k    rt                               d¦  «         dS t#          d„ |D ¦   «         ¦  «        rt                               d	¦  «         dS d d„}d!d„}d!d„}|rÿt%          t&          ¦  «        }|D ]P}	t)          |	¦  «        }
|
€Œ ||	¦  «        rd}n ||	¦  «        rd}n ||	¦  «        rd}nd}||xx         |
z  cc<   ŒQt                               d¦  «         d}d}d}d}t+          |                     ¦   «         ¦  «        }|d         |z  |d         |z  z   |d         |z  z   |d         |z  z   }||k    }|st                               d||¦  «         |S t#          t/          ||¦  «        ¦  «        rt                               d¦  «         dS t#          t/          ||¦  «        ¦  «        rt                               d¦  «         dS t          t/          ||¦  «        ¦  «        rt                               d¦  «         dS dS )"zl
        Decide if we should enable layout optimization for this graph based on
        heuristics.
        FTc                óV   — g | ]&}|j         t          j        j        j        j        u ¯$|‘Œ'S ry   )r�   r‰   rý   rÖ   r×   r  )r¤  Úns     r{   r¥  z3GraphLowering.decide_layout_opt.<locals>.<listcomp>ñ  s5   € ð 
ð 
ð 
Ø¨¬µU´Y´^Ô5OÔ5WÐ)WÐ)WˆAÐ)WÐ)WÐ)Wr}   r   c              3  ór   K  — | ]2}d D ]-}|j         |         j        d         j        j        t          v V — Œ.Œ3dS ©)r   r(   ÚvalN)rs   r©   r
   r¶   r`   ©r¤  rå  r®   s      r{   ú	<genexpr>z2GraphLowering.decide_layout_opt.<locals>.<genexpr>  sg   è è € ð ð àØ!ðð ð ð ”�s”Ô  Ô'Ô.Ô3Õ7OÐOðð ð ð ð ð ð r}   i,  z*Skipped layout opt because only a few convc              3  ój   K  — | ].}d D ])}t          |j        |         j        d         ¦  «        V — Œ*Œ/dS rç  )r   rs   r©   ré  s      r{   rê  z2GraphLowering.decide_layout_opt.<locals>.<genexpr>  sc   è è € ð 
ð 
àØð
ð 
ð õ ˜QœV Cœ[Ô-¨eÔ4Ñ5Ô5ð
ð 
ð 
ð 
ð 
ð 
ð 
r}   zeSee perf regression with dynamic shape. Follow up in https://github.com/pytorch/pytorch/issues/102670rå  r   ru   r³   c                ó¾   — | j         d         j        d         }t          |t          j        ¦  «        sJ ‚| j         d         dk    o|                     d¦  «        dk    S )Nr(   rè  r-  )rs   r©   rƒ   r‰   r   r§  )rå  Úmeta_vals     r{   Ú
is_groupedz3GraphLowering.decide_layout_opt.<locals>.is_grouped  sR   € Ø”v˜a”y”~ eÔ,ˆHÝ˜h­¬Ñ5Ô5Ð5Ð5Ð5Ø”6˜"”: ’>Ð: h§m¢m°AÑ&6Ô&6¸Ò&:Ð:r}   rÌ   c                ó  — | j         d         j        d                              d¦  «        dz  | j         d         j        d                              d¦  «        k    o.| j         d         j        d                              d¦  «        dk    S )Nr(   rè  r   é   ©rs   r©   r§  ©rå  s    r{   Úis_in_out_channelz:GraphLowering.decide_layout_opt.<locals>.is_in_out_channel   ss   € à”�q”	”˜uÔ%×*Ò*¨1Ñ-Ô-°Ñ1°Q´V¸A´Y´^ÀEÔ5J×5OÒ5OÐPQÑ5RÔ5RÒRð 6Ø”F˜1”I”N 5Ô)×.Ò.¨qÑ1Ô1°AÒ5ðr}   c                ó¾   — | j         d         j        d                              d¦  «        dk    o.| j         d         j        d                              d¦  «        dk    S )Nr(   rè  r   é@   rñ  rò  s    r{   Úis_small_channelz9GraphLowering.decide_layout_opt.<locals>.is_small_channel&  sR   € à”�q”	”˜uÔ%×*Ò*¨1Ñ-Ô-°Ò3ð 8Ø”F˜1”I”N 5Ô)×.Ò.¨qÑ1Ô1°RÒ7ðr}   NÚ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å  r   ru   r³   )rå  rÌ   ru   r³   )r)   Úlayout_optimizationÚforce_layout_optimizationru  rè   r  rÃ   r   r‰   Úbackendsrú   ÚenabledÚis_availableÚallrb  ÚlogÚdebugrß   r   Úfloatr8   rÜ   ÚvaluesÚmap)r
  r  Ú
conv_nodesrå  Ú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{   r0  zGraphLowering.decide_layout_optå  sõ  € õ Ô)ð 	Ø�5åÔ+ð 	Ø�4ð
ð 
Ø”x”~ð
ñ 
ô 
ˆ
ð ””ð 	%ð 	%ˆAÝ˜aÑ Ô ð %Ø×!Ò! !Ñ$Ô$Ð$øå�J‘”ˆà�AŠ:ˆ:Ø�5õ ŒNÔ!Ô)ð		å”Ô%×2Ò2Ñ4Ô4ð		õ ð ð à#ðñ ô ñ ô ð		ð �4õ
 �t�B”H”NÑ#Ô#Ñ$Ô$¨¨e©Ò3Ð3Ý�IŠIÐBÑCÔCÐCØ�5åð 
ð 
àð
ñ 
ô 
ñ 
ô 
ð 	õ
 �IŠIØwñô ð ð �5ð	;ð 	;ð 	;ð 	;ð
	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð ð +	!Ý,7½Ñ,>Ô,>ˆKØ"ð 8ð 8�Ý .¨tÑ 4Ô 4�Ø Ð(Øà�:˜dÑ#Ô#ð *Ø )�I�IØ%Ð% dÑ+Ô+ð *Ø '�I�IØ&Ð& tÑ,Ô,ð *Ø (�I�Ià )�Ià˜IÐ&Ð&Ô&¨-Ñ7Ð&Ð&Ñ&Ð&å—	’	Ð6Ñ7Ô7Ð7ð
 "'ÐØ!&ÐØ %ÐØ$Ðå˜k×0Ò0Ñ2Ô2Ñ3Ô3ˆKð ˜IÔ&Ð);Ñ;Ø˜gÔ&Ð)9Ñ9ñ:à˜hÔ'Ð*;Ñ;ñ<ð ˜iÔ(Ð+=Ñ=ñ>ð ð +¨kÒ9ˆMØ ð Ý—	’	Ø~ØØ"ñô ð ð
 !Ð õ& �s�:˜zÑ*Ô*Ñ+Ô+ð 	Ý�IŠIØXñô ð ð �5õ �sÐ$ jÑ1Ô1Ñ2Ô2ð 	Ý�IŠIØTñô ð ð �5õ �sÐ# ZÑ0Ô0Ñ1Ô1ð 	Ý�IŠIÐVÑWÔWÐWØ�5àˆtr}   c                ó,   — | j         �| j         › d|› �S |S )z2Prepend the given name with the graph name if any.Nrš  ©r"  ©r�  r"  s     r{   Úqualify_namezGraphLowering.qualify_name†  s%   € àŒ9Ð Ø”iÐ(Ð( $Ð(Ð(Ð(Øˆr}   úlist[torch.Tensor]Úsubgraph_nameÚSubgraphLoweringc                ó–   — t          | ||| j        | j        | j        | j        | j        | j        |                      |¦  «        ¬¦
  «
        S )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  r  r  r  r  r  r  r"  )r  r5  r  r  r  r  r  r  )r�  r
  r  r  s       r{   Úmake_subgraphzGraphLowering.make_subgraphŒ  sW   € õ  ØØØ)Ø”oØÔ(Ø”]Ø#'Ô#>ØÔ*ØÔ(Ø×"Ò" =Ñ1Ô1ð
ñ 
ô 
ð 	
r}   úOrderedSet[Node]c                ól  — d}t           j        j        j        j        g}t          t                   ¦   «         }t          | j        j	        j
        ¦  «        D ]’}|j        t           j        j        j        j        u r|                     |¦  «         |€|}Œ>|j        |v rŒHt          |¦  «        r|                     |¦  «         Œm|j        D ]}||v r|                     |¦  «          nŒŒ“| j        j	        j
        D ]9}|�||k    r n.||v r)|j        D ]!}|j        |v rŒ|                     |¦  «         Œ"Œ:|S )aD  
        The rule to decide if an node prefer 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}  ru  rè   r�   r×   rÂ   r  Úusers)r�  Ú	last_convÚnodes_cannot_propagateÚ
output_setrå  Úusers         r{   rr  z-GraphLowering.find_nodes_prefer_channels_last§  sd  € ð& ˆ	Ý"'¤)¤.Ô"4Ô"<Ð!=ÐÝ¥Ô%Ñ'Ô'ˆ
Ý˜$œ+Ô+Ô1Ñ2Ô2ð 	ð 	ˆAØŒx�5œ9œ>Ô5Ô=Ð=Ð=Ø—’˜qÑ!Ô!Ð!ØÐ$Ø !�IØØŒxÐ1Ð1Ð1ØÝ˜aÑ Ô ð Ø—’˜qÑ!Ô!Ð!ØØœð ð �Ø˜:Ð%Ð%Ø—N’N 1Ñ%Ô%Ð%Ø�Eð &øð$ ”Ô"Ô(ð 	)ð 	)ˆAàÐ$¨¨iª¨Ø�Ø�JˆˆØœGð )ð )�DØ”{Ð&<Ð<Ð<Ø Ø—N’N 4Ñ(Ô(Ð(Ð(øàÐr}   c                ó†   — || j         vr7| j                              |¦  «         t                               d|¦  «         d S d S )NzUsing FallbackKernel: %s)rt  rÂ   Úperf_hint_logÚinfor  s     r{   Úwarn_fallbackzGraphLowering.warn_fallbackç  sL   € Ø�tÔ,Ð,Ð,ØÔ!×%Ò% dÑ+Ô+Ð+Ý×ÒÐ9¸4Ñ@Ô@Ð@Ð@Ð@ð -Ð,r}   c                óþ   — | j                              |j        ¦  «         |j        �| j                             |j        ¦  «         t
          j        j        r$|| j        vrt
          j        j        | j        |<   d S d S d S rx   )	rA  rÂ   r¶   ÚindexrB  rc   ru  r]  rz  rÙ  s     r{   Úadd_device_infozGraphLowering.add_device_infoì  s�   € ØÔ×Ò˜fœkÑ*Ô*Ð*ØŒ<Ð#ØÔ× Ò  ¤Ñ.Ô.Ð.ÝŒ7Ôð 	D F°$Ô2JÐ$JÐ$JÝ/0¬wÔ/CˆDÔ$ VÑ,Ð,Ð,ð	Dð 	DÐ$JÐ$Jr}   ú,torch._subclasses.fake_tensor.FakeTensorModec                ó   — t           j        S rx   )rc   Ú	fake_moder“  s    r{   r,  zGraphLowering.fake_modeó  s
   € åŒ{Ðr}   c                ór   — | j         rt          j        j        rdS t	          d„ | j        D ¦   «         ¦  «        S )a  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  ó>   K  — | ]}t          j        |¦  «        V — Œd S rx   )r*   Ú	is_triton)r¤  Úds     r{   rê  z5GraphLowering.is_dual_wrapper_mode.<locals>.<genexpr>  s*   è è € Ð>Ð> q•2”< ‘?”?Ð>Ð>Ð>Ð>Ð>Ð>r}   )r  r)   ÚtritonÚautotune_at_compile_timerß   rA  r“  s    r{   Úis_dual_wrapper_modez"GraphLowering.is_dual_wrapper_mode÷  s?   € ð Œ}ð 	¥¤Ô Fð 	Ø�5ÝÐ>Ð>¨DÔ,=Ð>Ñ>Ô>Ñ>Ô>Ð>r}   Úbuffer_nameú4ir.TensorBox | ir.Buffer | ir.TorchBindObject | Nonec           	     ó:  — || j         v r| j         |         S || j        v r| j        |         S || j        v ret          j        j        |         }t          j        |t          j        |j        |j	        gt          j         
                    |¦  «        ¢R Ž ¬¦  «        S d S )N©r"  r·   )ra  r<  rK  rc   ru  r*   ÚConstantBufferr<   r
   Údtyper¸  )r�  r4  r¼  s      r{   Útry_get_bufferzGraphLowering.try_get_buffer  s±   € ð ˜$Ô-Ð-Ð-ØÔ& {Ô3Ð3Ø˜$Ô+Ð+Ð+ØÔ$ [Ô1Ð1Ø˜$œ.Ð(Ð(Ý”7Ô$ [Ô1ˆDÝÔ$Ø Ý”~Ø”K ¤ðÝ./¬g×.JÒ.JÈ4Ñ.PÔ.Pðð ð ðñ ô ð ð ˆtr}   Úsymbolr€   c                ó    — t          d¦  «        ‚)Nz'Should not be called for the main graph)r˜   )r�  r;  s     r{   Úadd_symbol_graph_inputz$GraphLowering.add_symbol_graph_input  s   € ÝÐDÑEÔEÐEr}   ú-ir.TensorBox | ir.Buffer | ir.TorchBindObjectc                óX   — |                       |¦  «        }|�|S t          d|› �¦  «        ‚)Nz$Failed to find buffer matching name )r:  r˜   ©r�  r4  Úbufs      r{   Ú
get_bufferzGraphLowering.get_buffer  s8   € ð ×!Ò! +Ñ.Ô.ˆØˆ?ØˆJÝÐOÀ+ÐOÐOÑPÔPÐPr}   útorch.dtypec                ó„  — || j         v r| j         |         j        S t          | j        d¦  «        rp|| j        j        v rb| j        j        |         }|| j        v r| j        |                              ¦   «         S || j        v r| j        |                              ¦   «         S || j        v r| j        |                              ¦   «         S || j        v r| j        |                              ¦   «         S t          j	        d|¦  «        }|r(|                      | 
                    d¦  «        ¦  «        S t          d|› �¦  «        ‚)NÚmutation_real_namez1(as_strided|reinterpret_tensor)\(([a-zA-Z0-9_]+),r(   úcould not find )rK  r9  r—   rm  rE  ra  Ú	get_dtyper<  ÚreÚmatchÚgrouprÓ  )r�  r4  Úmutated_bufÚms       r{   rG  zGraphLowering.get_dtype   sC  € Ø˜$œ.Ð(Ð(Ø”> +Ô.Ô4Ð4õ �D”NÐ$8Ñ9Ô9ð	Bà˜tœ~Ô@Ð@Ð@àœ.Ô;¸KÔHˆKØ˜dÔ1Ð1Ð1ØÔ*¨;Ô7×AÒAÑCÔCÐCØ˜dÔ/Ð/Ð/ØÔ(¨Ô5×?Ò?ÑAÔAÐAØ˜$Ô-Ð-Ð-ØÔ& {Ô3×=Ò=Ñ?Ô?Ð?Ø˜$Ô+Ð+Ð+ØÔ$ [Ô1×;Ò;Ñ=Ô=Ð=ÝŒHÐIÈ;ÑWÔWˆØð 	.Ø—>’> !§'¢'¨!¡*¤*Ñ-Ô-Ð-ÝÐ6¨Ð6Ð6Ñ7Ô7Ð7r}   ú
int | Exprc                óF  — || j         v r| j         |                              ¦   «         S || j        v r7| j        |         }|                     ¦   «         sdS |                     ¦   «         S || j        v r| j        |                              ¦   «         S t          d|› �¦  «        ‚)Nr(   rF  )rK  Únumelra  Úhas_tensor_outputrÐ  r<  rÓ  r@  s      r{   rÐ  zGraphLowering.get_numel6  s©   € Ø˜$œ.Ð(Ð(Ø”> +Ô.×4Ò4Ñ6Ô6Ð6Ø˜$Ô-Ð-Ð-ØÔ% kÔ2ˆCØ×(Ò(Ñ*Ô*ð Ø�qØ—=’=‘?”?Ð"Ø˜$Ô+Ð+Ð+ØÔ$ [Ô1×;Ò;Ñ=Ô=Ð=ÝÐ6¨Ð6Ð6Ñ7Ô7Ð7r}   rs   r   c                ó‚   •— t          d¦  «        5   t          ¦   «         j        |Ž cd d d ¦  «         S # 1 swxY w Y   d S )NzGraphLowering.run)r   r.  Úrun)r�  rs   r�  s     €r{   rR  zGraphLowering.runB  s†   ø€ ÝÐ-Ñ.Ô.ð 	&ð 	&Ø•5‘7”7”; Ð%ð	&ð 	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð 	&ð 	&s   ‘4´8»8r¥   úir.Operationc                ó  — |j         �J d|› �¦   «         ‚t          |t          j        ¦  «        sJ ‚|                      dt          | j        ¦  «        › �¦  «        }| j                             |¦  «         || j        |<   ||_         |S )NzOperation registered twice: r¥   )	Úoperation_namerƒ   r*   Ú	Operationr  r   rI  rÃ   rd  )r�  r¥   r"  s      r{   Úregister_operationz GraphLowering.register_operationF  s�   € ØÔ Ð(Ð(Ð*MÈÐ*MÐ*MÑ(Ô(Ð(Ý˜"�bœlÑ+Ô+Ð+Ð+Ð+Ø× Ò Ð!<¥c¨$¬/Ñ&:Ô&:Ð!<Ð!<Ñ=Ô=ˆØŒ×Ò˜rÑ"Ô"Ð"Ø "ˆŒ˜ÑØ ˆÔØˆr}   ©Úset_nameÚbufferú	ir.BufferrY  c               ó–  — |                       dt          | j        ¦  «        › �¦  «        }| j                             |¦  «         || j        |<   |                     ¦   «         }|�[t          |t          j        ¦  «        r,| 	                    ¦   «         r|t          j        d¦  «        k    s|                      |¦  «         |r||_        |S )NrA  rµ   )r  r   rH  rÃ   ra  Ú
get_devicerƒ   r*   r½  Úis_zero_elementsr‰   r
   r)  r"  )r�  rZ  rY  r"  r
   s        r{   Úregister_bufferzGraphLowering.register_bufferO  sÐ   € Ø× Ò Ð!:¥s¨4¬<Ñ'8Ô'8Ð!:Ð!:Ñ;Ô;ˆØŒ×Ò˜FÑ#Ô#Ð#Ø$*ˆÔ˜DÑ!Ø×"Ò"Ñ$Ô$ˆð Ðå˜6¥2Ô#4Ñ5Ô5ð ð ×+Ò+Ñ-Ô-ð ð �eœl¨5Ñ1Ô1Ò1Ð1ð × Ò  Ñ(Ô(Ð(àð 	ØˆFŒKØˆr}   Úoperation_namesú	list[str]c                óp   — |                       dd                     |¦  «        z   ¦  «        }|| j        |<   |S )NÚlist_rš  )r  r™   r^  )r�  r`  r"  s      r{   Úregister_operation_listz%GraphLowering.register_operation_listc  s7   € Ø× Ò  ¨3¯8ª8°OÑ+DÔ+DÑ!DÑEÔEˆØ*ˆŒ
�4ÑØˆr}   Únode_outputúIterable[ir.IRNode] | ir.IRNodec                ó.   ‡ ‡— dˆˆ fd„Š ‰|¦  «         d S )NÚvaluerf  ru   rv   c                ó  •— t          | t          t          f¦  «        r| D ]} ‰|¦  «         Œt          | t          j        ¦  «        r7|                      ¦   «         D ]$}‰j        |                              | ¦  «         Œ#d S d S rx   )rƒ   rb  Útupler*   rD   Úget_read_namesrc  rÃ   )rh  ÚxÚ	read_nameÚregisterr�  s      €€r{   rn  z1GraphLowering.register_users_of.<locals>.registeri  s    ø€ Ý˜%¥$­ Ñ/Ô/ð  Øð  ð  �AØ�H˜Q‘K”K�K�KÝ˜%¥¤Ñ.Ô.ð @Ø!&×!5Ò!5Ñ!7Ô!7ð @ð @�IØÔ& yÔ1×8Ò8¸Ñ?Ô?Ð?Ð?ð@ð @ð@ð @r}   )rh  rf  ru   rv   ry   )r�  re  rn  s   ` @r{   Úregister_users_ofzGraphLowering.register_users_ofh  sF   øø€ ð	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	ˆ�ÑÔÐÐÐr}   c                óÆ   — t          |t          ¦  «        sJ ‚| j                             |¦  «         || j        vrdS | j        |         D ]}|                     ¦   «          ŒdS )z’
        When a buffer is mutated we need to make sure all the reads to
        the old version are realized before the mutation happens.
        N)rƒ   r‘   rU  rÂ   rc  Úrealize)r�  r"  r"  s      r{   Úmark_buffer_mutatedz!GraphLowering.mark_buffer_mutateds  st   € õ
 ˜$¥Ñ$Ô$Ð$Ð$Ð$ØÔ× Ò  Ñ&Ô&Ð&à�tÔ)Ð)Ð)ØˆFàÔ& tÔ,ð 	ð 	ˆDØ�LŠL‰NŒNˆNˆNð	ð 	r}   c                óÎ   — || j         v r	|| j        v sJ d|z   ¦   «         ‚t          | j         |         ¦  «        }|| j        j        v r| j        j        |         n| j        |         S )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~  rK  rW   r}  r©   )r�  r"  Ú	orig_names      r{   Úget_original_value_of_constantz,GraphLowering.get_original_value_of_constant�  s€   € ð �tÔ3Ð3Ð3¸ÀÄÐ8NÐ8NÐ8NØ2°TÑ9ñ 9OÔ8NÐNõ 5°TÔ5QÐRVÔ5WÑXÔXˆ	ð ˜DœKÔ,Ð,Ð,ð ŒKÔ˜YÔ'Ð'à” Ô%ð	
r}   r¼  r   c                ó’  — t           j        j        s3| j                             ¦   «         D ]\  }}t          ||¦  «        r|c S Œ|€dt          | j        ¦  «        › �}|}|d                              ¦   «         rd|› �}|                      |¦  «        }t          |¦  «        }|}d}|| j        v r|› d|› �}|dz  }|| j        v °|| j        |<   |j
        ›d|j        ›dt          |                     ¦   «         ¦  «        ›dt          |                     ¦   «         ¦  «        ›dt          |¦  «        d›�	| j        |<   || j        |<   |S )NÚconstantr   Ú	constant_rš  r(   ú rl  )r)   Úaot_inductorÚuse_runtime_constant_foldingrK  Úitemsr[   r   Úisdigitr  r]   r
   r9  rj  r§  r¨  ÚhashrQ  r~  )r�  r"  r¼  Úconstant_namerh  rt  ÚprefixÚcnts           r{   Úallocate_non_dup_const_namez)GraphLowering.allocate_non_dup_const_name‘  s›  € ÝÔ"Ô?ð 	)Ø(,¬×(<Ò(<Ñ(>Ô(>ð )ð )Ñ$�˜uÝ! $¨Ñ.Ô.ð )Ø(Ð(Ð(Ð(ð)ð ˆ<Ø3�c $¤.Ñ1Ô1Ð3Ð3ˆDØˆ	Ø�Œ7�?Š?ÑÔð 	&Ø%˜tÐ%Ð%ˆDØ× Ò  Ñ&Ô&ˆõ   Ñ%Ô%ˆØˆØˆØ�d”nÐ$Ð$ØÐ$Ð$˜sÐ$Ð$ˆDØ�1‰HˆCð �d”nÐ$Ð$ð  $ˆŒ�tÑàŒ{ð ð ˜tœzð ð Ý�T—Y’Y‘[”[Ñ!Ô!ðð Ý&+¨D¯KªK©M¬MÑ&:Ô&:ðð å�D‰zŒzÐðð ð 	Ô˜DÑ!ð
 .7ˆÔ$ TÑ*Øˆr}   rD   c                óð   — |                       ||¦  «        }t          j        t          j        |t          |j        |j        g|                      |¦  «        ¢R dt          |¦  «        iŽ¬¦  «        ¦  «        S )Nr¹   r7  )
r‚  rD   Úcreater*   r8  r<   r
   r9  r¸  r»   )r�  r¼  r"  Únew_names       r{   Úadd_tensor_constantz!GraphLowering.add_tensor_constant®  s�   € Ø×3Ò3°D¸$Ñ?Ô?ˆÝÔÝÔØÝ"Ø”KØ”Jðð ×.Ò.¨tÑ4Ô4ðð ð õ <¸DÑAÔAð	ð ðñ ô ñ

ô 

ð 
	
r}   Údevice_overrideútorch.device | Nonec                óD  ‡— | j         ‰         j        |k    s|€‰S t          j        j                             ¦   «         5  |                      ‰› d|j        › |j        pd› �| j         ‰          	                    |¦  «        ¦  «        }|| j         v sJ |› d�¦   «         ‚t          ˆfd„| j        D ¦   «         ¦  «        r| j         |         | j        |<   t          ˆfd„| j        D ¦   «         ¦  «        r| j         |         | j        |<   |cddd¦  «         S # 1 swxY w Y   dS )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š  r   z' should be in V.graph.constants alreadyc              3  ó>   •K  — | ]}‰t          |¦  «        k    V — Œd S rx   ©r]   )r¤  r4  r"  s     €r{   rê  z.GraphLowering.constant_name.<locals>.<genexpr>Ò  sD   øè è € ð ð àð � {Ñ3Ô3Ò3ðð ð ð ð ð r}   c              3  ó>   •K  — | ]}‰t          |¦  «        k    V — Œd S rx   r‹  )r¤  Ú
param_namer"  s     €r{   rê  z.GraphLowering.constant_name.<locals>.<genexpr>Ú  sD   øè è € ð ð àð � zÑ2Ô2Ò2ðð ð ð ð ð r}   )rK  r
   r‰   ÚutilsÚ_python_dispatchÚ_disable_current_modesr‚  r¶   r(  Útorß   rL  rM  )r�  r"  r‡  Únon_dup_const_names    `  r{   r  zGraphLowering.constant_name¼  sÍ  ø€ ð Œ>˜$ÔÔ&¨/Ò9Ð9¸_Ð=TØˆKÝŒ[Ô)×@Ò@ÑBÔBð 	&ð 	&ð "&×!AÒ!AØÐLÐL˜/Ô.ÐL°Ô0EÐ0JÈÐLÐLØ”˜tÔ$×'Ò'¨Ñ8Ô8ñ"ô "Ðð
 &¨¬Ð7Ð7Ð7Ø%ÐNÐNÐNñ 8Ô7Ð7õ ð ð ð ð à#'Ô#5ðñ ô ñ ô ð ð :>¼Ø&ô:�Ô"Ð#5Ñ6õ ð ð ð ð à"&Ô"7ðñ ô ñ ô ð ð =A¼NØ&ô=�Ô%Ð&8Ñ9ð &ð=	&ð 	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð 	&ð 	&s   ¿C	DÄDÄDr�   útuple[object]rt   údict[str, object]úExpr | TensorBox | Nonec                óh  •— | xj         dz  c_         t          ¦   «                              |||¦  «        }|                      |¦  «        }t	          |t
          ¦  «        rXt          j        j        st          |j
        ¦  «        }n|j
        j        }|| j        |<   | j                             |¦  «         |S t	          |t          t           t"          f¦  «        r:t%          j        |¦  «        }|| j        |<   | j                             |¦  «         |S t	          |t(          ¦  «        r7t+          ||¬¦  «        }|| j        |<   | j                             |¦  «         |S |€| j                             |¦  «         d S t	          |t,          ¦  «        r| j                             |¦  «         d S t	          |t.          j        ¦  «        rAt3          j        ||j        ¬¦  «        }|| j        |<   | j                             |¦  «         |S t9          t;          |¦  «        ¦  «        r<t3          j        ||¬¦  «        }|| j        |<   | j                             |¦  «         |S t	          |t.          j        ¦  «        s
J |¦   «         ‚|j         s?|  !                    |¦  «        \  }	}
t%          j"        | #                    ¦   «         ¦  «        }n|  $                    |¦  «        \  }	}
}| j        rS| j%        rL| j         | j%        v r>tM          j'        tQ          |tS          |j        |j*        |	|
¦  «        ¬¦  «        ¦  «        }n=tM          j'        tW          |tS          |j        |j*        |	|
¦  «        ¬¦  «        ¦  «        }|| j        |<   | j                             |¦  «         || j,        |<   |j-        j-        | j.        |<   | j/        j0        r|  1                    |j        ¦  «         te          ¦   «         5  tg          |¦  «        s| j4         5                    |¦  «         d d d ¦  «         n# 1 swxY w Y   |S )Nr(   ©r"  rh  )r"  r
   r7  )6rŠ  r.  Úplaceholderr  rƒ   r"   rc   ru  r  r   r¯   r®  r<  r;  rÃ   rË  r³   r  r„   r¢  r   rE   r   r‰   Ú	Generatorr*   ÚGeneratorStater
   r   r¶   ÚOpaqueObjectStater   Ú_has_symbolic_sizes_stridesr¸  rˆ   r©  r—  r‹  rD   r„  r;   r<   r9  r?   r>  r¼  r=  r]  r  r)  r\   r^   r�  rÂ   )r�  r�   rs   rt   Úexampler®  r�   ÚgenÚ
opaque_objr˜  r™  r©  Útensorr�  s                €r{   r˜  zGraphLowering.placeholderå  sf  ø€ ð 	ÐÔ Ñ!ÐÔÝ‘'”'×%Ò% f¨d°FÑ;Ô;ˆØ×"Ò" 6Ñ*Ô*ˆÝ�g�xÑ(Ô(ð 	õ ”7Ô&ð )Ý,¨W¬\Ñ:Ô:��à”|Ô(�Ø(,ˆDÔ˜fÑ%ØÔ"×)Ò)¨&Ñ1Ô1Ð1ØˆKÝ˜¥#¥t­UÐ!3Ñ4Ô4ð 	Ý”= Ñ)Ô)ˆDØ(,ˆDÔ˜fÑ%ØÔ"×)Ò)¨&Ñ1Ô1Ð1ØˆKÝ˜Õ!1Ñ2Ô2ð 	Ý! v°WÐ=Ñ=Ô=ˆCØ(+ˆDÔ˜fÑ%ØÔ"×)Ò)¨&Ñ1Ô1Ð1ØˆJØˆ_ØÔ"×)Ò)¨&Ñ1Ô1Ð1Ø�4Ý�g�}Ñ-Ô-ð 	ð Ô"×)Ò)¨&Ñ1Ô1Ð1Ø�4å˜¥¤Ñ1Ô1ð 		ÝÔ#¨¸¼ÐGÑGÔGˆCØ(+ˆDÔ˜fÑ%ØÔ"×)Ò)¨&Ñ1Ô1Ð1ØˆJÝ%¥d¨7¡m¤mÑ4Ô4ð 	ÝÔ-°6ÀÐIÑIÔIˆJØ(2ˆDÔ˜fÑ%ØÔ"×)Ò)¨&Ñ1Ô1Ð1ØÐå˜'¥5¤<Ñ0Ô0Ð9Ð9°'Ñ9Ô9Ð0ð
 Ô2ð 	à!×6Ò6°wÑ?Ô?‰NˆE�7Ý"œ]¨7×+AÒ+AÑ+CÔ+CÑDÔDˆNˆNà-1×-WÒ-WØñ.ô .Ñ*ˆE�7˜Nð
 Ôð	àÔ$ð	ð Ô$¨Ô(<Ð<Ð<åÔ%ÝØÝ& w¤~°w´}ÀeÈWÑUÔUðñ ô ñô ˆFˆFõ Ô%ÝØÝ& w¤~°w´}ÀeÈWÑUÔUðñ ô ñô ˆFð %+ˆÔ˜&Ñ!ØÔ×%Ò% fÑ-Ô-Ð-Ø3AˆÔ(¨Ñ0Ø-3¬[Ô-=ˆÔ" 6Ñ*ØÔÔ"ð 	1Ø× Ò  ¤Ñ0Ô0Ð0õ 1Ñ2Ô2ð 	3ð 	3Ý.¨wÑ7Ô7ð 3ØÔ&×*Ò*¨6Ñ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð ˆs   Ï1*P'Ð'P+Ð.P+rd   údict[str, Any]c           	     ó”	  •‡— ‰t           j        u rKt          |d         t          t          t
          f¦  «        r#t          ¦   «                              ‰||¦  «        S t          ‰t          j	        j
        ¦  «        st          ‰d¦  «        r ‰|i |¤ŽS ‰t          v�r†t          ‰t          j	        j        ¦  «        sJ ‰› d�¦   «         ‚‰                     ¦   «                              d¦  «        d         }|t           v rt#          ‰d| j        d¬¦  «         �n
t&          j        rÌt+          ‰g¦  «        rt,          nt.          }t0                               dt5          |j        ‰||¦  «        ¦  «         t9          ‰d¬	¦  «        }|€3t          j        j                             ‰¦  «        r| j         rtB          }n t9          ‰d¬	¦  «        }tE          |¦  «        }t#          ‰|| j        ¬
¦  «         n2t+          ‰g¦  «        rt-          ‰||¦  «        ‚t/          ‰||¦  «        ‚	 t0           #                    dt          ‰         ¦  «         | j$        }	tK          ‰¦  «        }
|
rŸ||}}|
tL          u rƒd|	j'        v ry|	j'        d         \  }}t          ‰t          j	        j        ¦  «        sJ ‚dˆfd„} |||¦  «        \  }} |||¦  «        \  }} |||¦  «        \  }}tM          ||||¦  «        \  }}n |
|	g|¢R i |¤Ž\  }}d|	j'        v s.|	j'         (                    di ¦  «         (                    d¦  «        r tS          ‰d¬¦  «        |i |¤Ž}nÄd }‰tT          v r„‰tV          j,        vrvtV          j,         -                    ‰¦  «         	 tU          ‰         |i |¤Ž}tV          j,         .                    ‰¦  «         n$# tV          j,         .                    ‰¦  «         w xY w|€3‰t          v rt          ‰         |i |¤Ž}n tS          ‰d¬¦  «        |i |¤Ž}|
r|  /                    |	||||¦  «         |S # t`          $ rŒ}d }t          | d¦  «        rH| j$        �At          | j$        d¦  «        r,| j$        j'        � | j$        j'         (                    dd ¦  «        }tc          |‰|||¬¦  «         2                    |j3        ¦  «        d ‚d }~ww xY w)Nr   Ú_inductor_lowering_functionz is not an OpOverloadr”   FT)Úwarnr&  Úoverride_decompz"Creating implicit fallback for:
%s)Úwith_default)Úlayout_constraintr&  z  via %sÚeager_input_valsrs   r   rt   ru   útuple[Any, Any]c                óx   •— t           j        j                             ‰| |¦  «        }|€J ‚|d         |d         fS )Nr   r(   )r‰   rª   Úoperator_schemasÚnormalize_function)rs   rt   rÄ   r�   s      €r{   Ú	normalizez.GraphLowering.call_function.<locals>.normalize®  sE   ø€ Ý%*¤XÔ%>×%QÒ%QØ &¨¨fñ&ô &˜Fð $*Ð#5Ð#5Ð#5Ø#)¨!¤9¨f°Q¬iÐ#7Ð7r}   Úshould_fallbackÚcustomÚfallback_to_eager©Úadd_to_fallback_setr]  r©   Ústack_trace©r³  )rs   r   rt   r   ru   r©  )4ÚoperatorÚgetitemrƒ   rb  rj  Údictr.  rÏ   r‰   rÑ   ÚOpOverloadPacketr—   rK   rÒ   r"  r•   rH   rL   r&  r)   Úimplicit_fallbacksr   r6   r7   r   r%  r   Úoperator_strr   Ú_libraryrŽ  Ú
is_builtinr  rO   rP   r  r]  rM   rF   r©   rï   rI   rR   rc   Úactive_user_lowering_opsrÂ   ÚdiscardÚpropagate_mutationÚ	Exceptionr5   Úwith_tracebackÚ__traceback__)r�  r�   rs   rt   Ú	base_nameÚerrorÚtagÚdecided_constraintÚdefault_tagrå  Úlayout_constraintsÚold_argsÚ
old_kwargsÚ	fake_argsÚfake_kwargsr­  ÚoutÚer³  r�  s    `                 €r{   rÏ   zGraphLowering.call_functionP  sÌ  øø€ à•XÔ%Ð%Ð%­*°T¸!´W½tÅUÍDÐ>QÑ*RÔ*RÐ%Ý‘7”7×(Ò(¨°°vÑ>Ô>Ð>õ ˜&¥%¤*Ô"=Ñ>Ô>ð 	+Å7ØÐ1ñD
ô D
ð 	+ð �6˜4Ð* 6Ð*Ð*Ð*à�Ð"Ñ"Ý˜f¥e¤jÔ&;Ñ<Ô<ð ð ØÐ0Ð0Ð0ñô Ð<ð Ÿš™œ×+Ò+¨CÑ0Ô0°Ô3ˆIØÕ/Ð/Ð/ÝØØØ"&Ô"4Ø$(ð	ñ ô ð ñ õ Ô*ð 1Iõ *¨6¨(Ñ3Ô3ð6Õ-Ð-å5ð õ
 —’Ø9Ý˜uÔ1°6¸4ÀÑHÔHñô ð õ
 ,EØ¨ð,ñ ,ô ,�ð �KÝœÔ,×7Ò7¸Ñ?Ô?ð  àÔ(ð  õ +ð 'Ð&õ 1JØ¨Tð1ñ 1ô 1�Kõ *BÀ+Ñ)NÔ)NÐ&åØØ&8Ø"&Ô"4ðñ ô ð ð õ $ V HÑ-Ô-ð Iõ 0°¸¸fÑEÔEÐEå2°6¸4ÀÑHÔHÐHðU	8Ý�IŠI�j¥)¨FÔ"3Ñ4Ô4Ð4àÔ!ˆAÝ!9¸&Ñ!AÔ!AÐØ!ð JØ'+¨V˜*�Ø%Õ)BÐBÐBð
 *¨Q¬VÐ3Ð3Ø12´Ð8JÔ1KÑ.˜	 ;õ  *¨&µ%´*Ô2GÑHÔHÐHÐHÐHð8ð 8ð 8ð 8ð 8ð 8ð 2;°¸9ÀkÑ1RÔ1RÑ.˜	 ;Ø'0 y°°vÑ'>Ô'>™˜˜fØ/8¨y¸À:Ñ/NÔ/NÑ,˜ *å'@Ø  &¨)°[ñ(ô (™˜˜føð $6Ð#5°aÐ#I¸$Ð#IÐ#IÐ#IÀ&Ð#IÐ#I‘L�D˜&à  A¤FÐ*Ð*¨a¬f¯jªj¸À2Ñ.FÔ.F×.JÒ.JØ#ñ/ô /Ð*ð JÕ& vÀ5ÐIÑIÔIØðØ#ðð ��ð �ð �nÐ,Ð,Ø¥aÔ&@Ð@Ð@õ Ô.×2Ò2°6Ñ:Ô:Ð:ðCå,¨VÔ4°dÐE¸fÐEÐE˜åÔ2×:Ò:¸6ÑBÔBÐBÐBø�Ô2×:Ò:¸6ÑBÔBÐBÐBøøøð �;Ø¥Ð*Ð*Ý'¨Ô/°Ð@¸Ð@Ð@˜˜ð RÕ.¨vÈ5ÐQÑQÔQØ!ðØ%+ðð ˜ð "ð Oð ×'Ò'¨¨8°ZÀÀvÑNÔNÐNàˆJøÝð 	8ð 	8ð 	8ØˆKå˜˜nÑ-Ô-ðNàÔ%Ð1Ý˜DÔ-¨vÑ6Ô6ð 2àÔ%Ô*Ð6à"Ô/Ô4×8Ò8¸ÈÑMÔM�Ý#Ø�6˜4 °[ðñ ô çŠn˜Qœ_Ñ-Ô-°4ð8øøøøð	8øøøs3   È$E$P1 Î	N; Î P1 Î;!OÏAP1 Ð1
SÐ;BSÓSr±   c                óT   — t          | j        ¦  «        dk    o| j        d         dk    S )zM
        True if this is a small constant attr that will be inlined.
        r(   r   é   )r   Úshaperº   s    r{   Úcan_inline_constantz!GraphLowering.can_inline_constantò  s&   € õ
 �1”7‰|Œ|˜qÒ Ð4 Q¤W¨Q¤Z°1¢_Ð4r}   ú	tuple[()]úLConstant | TensorBox | ShapeAsConstantBuffer | ir.Subgraph | TorchBindObjectc           	     ó  — t          | j        |¦  «        }t          |t          j        j        ¦  «        r8|| j        v r| j        |         S t          j        ||¬¦  «        }|| j        |<   |S t          |t          j	        j
        ¦  «        r%|| j        |<   d| j        |<   t          ||¬¦  «        S t          |t          ¦  «        r%|| j        |<   d| j        |<   t          ||¬¦  «        S t          t!          |¦  «        ¦  «        r%|| j        |<   d| j        |<   t          ||¬¦  «        S t          |t          j        ¦  «        sJ ‚t$          j        j        s$t$          j        st-          |¦  «        s	|| j        v r|                      ||¦  «        S t3          ¦   «         5  |j        dk    r:t7          |                     ¦   «         |j        |j        ¬¦  «        cd d d ¦  «         S |                      |¦  «        ret@           !                    d|¦  «         ddl"m#}  || $                    ¦   «         |j        |j        tK          |¦  «        ¬	¦  «        cd d d ¦  «         S 	 d d d ¦  «         n# 1 swxY w Y   |                      ||¦  «        S )
N)r"  Úgraph_moduler+  r—  ry   )rh  r9  r
   zInlining constant: %s r(   )r   )r9  r
   Ú
pin_memory)&rŸ   r}  rƒ   r‰   rª   rj   rP  r*   ÚSubgraphrì   ÚScriptObjectrN  rQ  rE   r   r   r¶   r   r)   rz  r{  Úalways_keep_tensor_constantsrQ   r)  r†  r%   rÑ  r:   Úitemr9  r
   rÒ  r   r  Úloweringr   Útolistr»   )r�  r�   rs   rt   rh  rÍ  r   s          r{   Úget_attrzGraphLowering.get_attrú  s  € õ " $¤+¨vÑ6Ô6ˆå�e�UœXÔ1Ñ2Ô2ð 	à˜Ô,Ð,Ð,ØÔ*¨6Ô2Ð2å”+ 6¸Ð>Ñ>Ô>ˆCØ*-ˆDÔ Ñ'ØˆJå�e�UœXÔ2Ñ3Ô3ð 	=Ø/4ˆDÔ$ VÑ,Ø*,ˆDÔ Ñ'Ý"¨°eÐ<Ñ<Ô<Ð<Ý˜Õ/Ñ0Ô0ð 	=Ø/4ˆDÔ$ VÑ,Ø*,ˆDÔ Ñ'Ý"¨°eÐ<Ñ<Ô<Ð<Ý�D ™KœKÑ(Ô(ð 	=Ø/4ˆDÔ$ VÑ,Ø*,ˆDÔ Ñ'Ý"¨°eÐ<Ñ<Ô<Ð<å˜%¥¤Ñ.Ô.Ð.Ð.Ð.åÔÔ<ð	;åÔ2ð	;õ )¨Ñ/Ô/ð	;ð ˜Ô3Ð3Ð3à×+Ò+¨E°6Ñ:Ô:Ð:å‰]Œ]ð 	ð 	ØŒ{˜bÒ Ð ÝØŸ*š*™,œ,¨e¬kÀ%Ä,ðñ ô ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð
 ×'Ò'¨Ñ.Ô.ð 
Ý—	’	Ð2°FÑ;Ô;Ð;à,Ð,Ð,Ð,Ð,Ð,à�vØ—L’L‘N”NØœ+Ø œ<Ý<¸UÑCÔCð	ñ ô ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð

ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð" ×'Ò'¨¨vÑ6Ô6Ð6s   Æ!9I.Ç'A-I.É.I2É5I2r   c                ó   — t           ‚rx   ©ÚAssertionError©r�  r�   rs   rt   s       r{   Úcall_modulezGraphLowering.call_module5  ó   € ÝÐr}   c                ó   — t           ‚rx   rà  râ  s       r{   Úcall_methodzGraphLowering.call_method8  rä  r}   útorch.fx.node.Targetú"tuple[torch.fx.node.Argument, ...]c                ó*  •— t          ¦   «                              |||¦  «        }t          |t          t          f¦  «        s|f}t          |t          t          f¦  «        sJ t          |¦  «        ¦   «         ‚d„ |D ¦   «         }t          d„ |D ¦   «         ¦  «        s
J |¦   «         ‚t          j        j	        j
        d         }t          |t          t          f¦  «        s|f}d„ |D ¦   «         }g }t          |¦  «        t          |¦  «        k    sJ ‚t          ||¦  «        D �]\  }}t          |t          j        t          j        f¦  «        s|                     |¦  «         ŒBt          |                     ¦   «         t          j        ¦  «        r3|                     t          j                             |¦  «        ¦  «         Œ¡t*          j        j                             |¦  «        sJ ‚d„ |j        d                              ¦   «         D ¦   «         }	|                     t          j        ||	¦  «        ¦  «         �Œ|| _        | j                             ¦   «         D �]s\  }
}t          |t<          t>          j         t*          j        j        j!        t*          j        j        j"        f¦  «        rŒRt          |t          ¦  «        sJ dt          |¦  «        › �¦   «         ‚| #                    ¦   «          t          |t          ¦  «        sJ ‚|j$        }t          |t          j%        ¦  «        sJ ‚|}|j$        }t          |tL          ¦  «        r| '                    ¦   «         |
k    rnt          j(         )                    || j*        |
         ¦  «         	 | j         +                    |¦  «        }| j*        |
         | j        |<   �Œb# tX          $ r Y �Œow xY w�Œu|  -                    ¦   «          t\           /                    d| j0        | j1        �| j1        nd	¦  «         d S )
Nc                ót   — g | ]5}t          t          |¦  «        ¦  «        rt          j        |¬ ¦  «        n|‘Œ6S )©rh  )r   r¶   r*   ÚOpaqueValueTypeConstant©r¤  rl  s     r{   r¥  z(GraphLowering.output.<locals>.<listcomp>G  sP   € ð 
ð 
ð 
àõ 4HÍÈQÉÌÑ3PÔ3PÐW�BÔ&¨QÐ/Ñ/Ô/Ð/ÐVWð
ð 
ð 
r}   c              3  óP  K  — | ]¡}t          |t          t          j        t	          d ¦  «        t          j        t          j        t          j        j	        j
        t          t          j        t          j        t          t          j        t          j        t          j        f¦  «        V — Œ¢d S rx   )rƒ   rD   r*   r:   r¶   r8  r„   r	   ÚlogicÚboolalgÚBooleanrË  ÚEffectfulKernelrB   rE   ÚOpaqueMultiOutputrì  r›  rí  s     r{   rê  z'GraphLowering.output.<locals>.<genexpr>K  s•   è è € ð 
ð 
ð& õ% ØåÝ”KÝ˜‘J”JÝÔ%Ý”JÝ”KÔ'Ô/ÝÝÔ&ÝÔ,Ý#ÝÔ(ÝÔ.ÝÔ(ðñô ð
ð 
ð 
ð 
ð 
ð 
r}   r   c                óL   — g | ]!}t           j                             |¦  «        ‘Œ"S ry   )r*   ÚExternKernelÚrealize_inputrí  s     r{   r¥  z(GraphLowering.output.<locals>.<listcomp>e  s(   € ÐCÐCÐC°q•"”/×/Ò/°Ñ2Ô2ÐCÐCÐCr}   c                ó^   — g | ]*}t          |t          j        ¦  «        r|j        j        n|‘Œ+S ry   )rƒ   r‰   r­  r¯   r®  ©r¤  Úss     r{   r¥  z(GraphLowering.output.<locals>.<listcomp>v  sC   € ð  ð  ð  ð õ $.¨aµ´Ñ#>Ô#>ÐE�A”F”K�KÀAð ð  ð  r}   rè  z'Unsupported inductor graph input type: zGForce channels last inputs for %d conv for the current graph with id %dr-  )2r.  r£   rƒ   rj  rb  r¶   rÿ  rc   ru  r]  rs   r   Úzipr*   rD   ÚBaseViewrÃ   Úget_output_specÚCommBufferLayoutrõ  Ú
copy_inputr‰   Ú	_inductorÚis_storage_and_layoutr©   r¨  Útry_match_insignificant_stridesr	  r<  r|  rE   r„   ÚBasicrš  r›  rq  r¼  rC   r?   Úget_nameÚMutationLayoutSHOULDREMOVEÚrealize_intor=  r(  Ú
ValueErrorÚfinalizer   r  r1  r  )r�  r�   rs   rt   rÄ   Úfx_node_argsÚresult_correct_stridesÚrÚfx_nodeÚmeta_stridesr"  rh  Úvalue_storage_boxÚindr�  s                 €r{   r£   zGraphLowering.output;  s0  ø€ õ ‘”—’ ¨¨fÑ5Ô5ˆÝ˜&¥5­$ -Ñ0Ô0ð 	à�YˆFÝ˜&¥5­$ -Ñ0Ô0Ð>Ð>µ$°v±,´,Ñ>Ô>Ð0ð
ð 
àð
ñ 
ô 
ˆõ ð 
ð 
ð& ð'
ñ 
ô 
ñ 
ô 
ð 	ð 	ð( ñ)	ô 	ð 
õ, ”wÔ+Ô0°Ô3ˆÝ˜,­µ¨Ñ6Ô6ð 	+à(˜?ˆLØCÐC¸FÐCÑCÔCˆØ!#Ðå�<Ñ Ô ¥C¨¡K¤KÒ/Ð/Ð/Ð/Ý˜f lÑ3Ô3ð 	ñ 	‰JˆAˆwÝ˜a¥"¤,µ´Ð!<Ñ=Ô=ð Ø&×-Ò-¨aÑ0Ô0Ð0Ð0Ý˜A×-Ò-Ñ/Ô/µÔ1DÑEÔEð ð '×-Ò-­b¬o×.HÒ.HÈÑ.KÔ.KÑLÔLÐLÐLõ ”Ô)×?Ò?ÀÑBÔBÐBÐBÐBð ð  ð %œ\¨%Ô0×7Ò7Ñ9Ô9ð ñ  ô  �ð
 '×-Ò-ÝÔ6°q¸,ÑGÔGñô ð ñ ð 4ˆÔàÔ,×2Ò2Ñ4Ô4ð 	ñ 	‰KˆD�%ÝØå#Ý”KÝ”OÔ&Ô5Ý”OÔ&Ô8ð	ñô ð 	ð Ý˜e¥YÑ/Ô/ð ð ØG½$¸u¹+¼+ÐGÐGñô Ð/ð �MŠM‰OŒOˆOÝ˜e¥YÑ/Ô/Ð/Ð/Ð/Ø”JˆEÝ˜e¥R¤]Ñ3Ô3Ð3Ð3Ð3Ø %ÐØ”JˆEÝ˜e¥[Ñ1Ô1ð 
°U·^²^Ñ5EÔ5EÈÒ5MÐ5MåÔ-×:Ò:Ø˜4Ô5°dÔ;ñô ð ðØÔ,×2Ò2Ð3DÑEÔE�CØ.2Ô.HÈÔ.N�DÔ& sÑ+Ñ+øÝ!ð ð ð Ø‘Dðøøøñ 6Nð 	�Š‰ŒˆÝ�	Š	ØUØÔ'Ø!œ]Ð6ˆDŒMˆM¸Bñ	
ô 	
ð 	
ð 	
ð 	
s   Î/N=Î=
OÏ
Oc                óB   — | j         D ]}|                     ¦   «          Œd S rx   )rH  Údecide_layout)r�  rA  s     r{   r  zGraphLowering.finalize¨  s2   € Ø”<ð 	 ð 	 ˆCØ×ÒÑÔÐÐð	 ð 	 r}   rÌ   c              #  óV   K  — | j         }	 || _         d V — || _         d S # || _         w xY wrx   )r]  )r�  r¯   Úolds      r{   Úset_current_nodezGraphLowering.set_current_node¬  sF   è è € àÔˆð	$Ø $ˆDÔØˆEˆEˆEà #ˆDÔÐÐø ˆDÔÐ#Ð#Ð#Ð#s   ‹ Ÿ	(c              #  óH   K  — | j         }	 d V — || _         d S # || _         w xY wrx   ©rZ  )r�  r  s     r{   Úset_current_wrapper_codez&GraphLowering.set_current_wrapper_codeµ  s>   è è € àÔˆð	$ØˆEˆEˆEà #ˆDÔÐÐø ˆDÔÐ#Ð#Ð#Ð#s   ‹ ˜	!r  rÉ  ú
tuple[Any]rÊ  Únew_argsÚ
new_kwargsc                óÖ  ‡ — t          |¦  «        t          |¦  «        k    sJ ‚t          |¦  «        t          |¦  «        k    sJ ‚|j        t          j        j        j        u rÓ|j        d         }t          |t          ¦  «        sJ ‚t          j	        j
                             |d         |d         d„ |                     ¦   «         D ¦   «         |d         ¦  «        }|D ]U}|d         |         }	|d         |         }
|	|
u rŒ#‰                      t          j        j        j        j        |	|
fi ¦  «         ŒVdS t          |j        t          j        j        ¦  «        sJ ‚dˆ fd„}|j        j        }t)          t+          ||¦  «        ¦  «        D ]"\  }\  }	}
|j        |         } |||	|
¦  «         Œ#d„ |j        D ¦   «         }|D ]'}||         }	||         }
||         } |||	|
¦  «         Œ(dS )ax  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.
        rt   Ú
kernel_idxÚconstant_args_idxc                ór   — i | ]4\  }}|t          |t          j        j        ¦  «        r|j        d          n|“Œ5S ©rè  ©rƒ   r‰   rª   r#   r©   ©r¤  rŽ  r�  s      r{   ú
<dictcomp>z4GraphLowering.propagate_mutation.<locals>.<dictcomp>Ö  óK   € ð ð ð á˜˜1ð ­
°1µe´h´mÑ(DÔ(DÐK�q”v˜e”}�}È!ðð ð r}   Útma_descriptor_metadataNÚ
schema_argútorch._C.ArgumentÚold_argú	ir.IRNodeÚnew_argru   rv   c                ó  •— ||u rd S | j         �y| j         j        rot          |t          j        ¦  «        r|f}|f}t          ||¦  «        D ]@\  }}||u rŒ
‰                     t          j        j	        j
        j        ||fi ¦  «         Œ=d S d S d S rx   )Ú
alias_infoÚis_writerƒ   r*   ÚIRNoderú  rÏ   r‰   rý   rÖ   Úcopy_r  )r$  r&  r(  Úold_arg_itemÚnew_arg_itemr�  s        €r{   Úmaybe_propagatez9GraphLowering.propagate_mutation.<locals>.maybe_propagateç  sÅ   ø€ ð ˜'Ð!Ð!Ø�ØÔ$Ð0°ZÔ5JÔ5SÐ0õ ˜g¥r¤yÑ1Ô1ð )Ø&˜j�GØ&˜j�Gå25°g¸wÑ2GÔ2Gð ð Ñ.�L ,Ø# |Ð3Ð3Ø Ø×&Ò&Ýœ	œÔ,Ô4°|À\Ð6RÐTVñô ð ð ð 1Ð0Ð0Ð0ðð r}   c                ó   — i | ]
}|j         |“ŒS ry   r  )r¤  Úargs     r{   r!  z4GraphLowering.propagate_mutation.<locals>.<dictcomp>   s   € ÐCÐCÐC¨3˜œ 3ÐCÐCÐCr}   )r$  r%  r&  r'  r(  r'  ru   rv   )r   r�   r‰   rý   Úhigher_orderÚtriton_kernel_wrapper_mutationrt   rƒ   r·  ré   rê   Úget_mutated_tensorsr|  rÏ   rÖ   r-  r  rÑ   rÒ   Ú_schemar–   rú  Ú	arguments)r�  r  rÉ  rÊ  r  r  rt   Úmutatedr"  r&  r(  r0  Úschemar®   r$  Úschema_kwargsÚkeys   `                r{   r¿  z GraphLowering.propagate_mutation½  s8  ø€ õ  �8‰}Œ}¥ H¡¤Ò-Ð-Ð-Ð-Ý�:‰Œ¥# j¡/¤/Ò1Ð1Ð1Ð1àŒ>�UœYÔ3ÔRÐRÐRØ”^ HÔ-ˆFÝ˜f¥dÑ+Ô+Ð+Ð+Ð+ÝÔ-Ô@×TÒTØ˜<Ô(ØÐ.Ô/ðð à &§¢¡¤ðñ ô ð Ð4Ô5ñô ˆGð  ð Yð Y�Ø$ XÔ.¨tÔ4�Ø$ XÔ.¨tÔ4�Ø˜gÐ%Ð%Øà×"Ò"¥5¤9¤>Ô#7Ô#?À'È7ÐASÐUWÑXÔXÐXÐXØˆFå˜'œ.­%¬*Ô*?Ñ@Ô@Ð@Ð@Ð@ð	ð 	ð 	ð 	ð 	ð 	ð( ”Ô'ˆÝ'0µ°X¸xÑ1HÔ1HÑ'IÔ'Ið 	:ð 	:Ñ#ˆCÑ#�'˜7ØÔ)¨#Ô.ˆJØˆO˜J¨°Ñ9Ô9Ð9Ð9àCÐC°&Ô2BÐCÑCÔCˆàð 	:ð 	:ˆCØ  ”oˆGØ  ”oˆGØ& sÔ+ˆJØˆO˜J¨°Ñ9Ô9Ð9Ð9ð		:ð 	:r}   rå  c                ó^   — | j                              di ¦  «                             d¦  «        S )z:Get the user-annotated stream index from FX node metadata.r¯  Ústream)r©   rï   rò  s    r{   Ú_get_node_streamzGraphLowering._get_node_stream  s(   € ð Œv�zŠz˜( BÑ'Ô'×+Ò+¨HÑ5Ô5Ð5r}   c                ó  — |                       |¦  «        }|j        D ]f}|                       |¦  «        }||k    rŒ| j                             |¦  «        }t	          |t
          j        ¦  «        r|                     ¦   «          ŒgdS )aV  Realize IR inputs that are on a different stream.

        Without this, pointwise ops across stream boundaries would be inlined
        into each other during lowering, making it impossible for the scheduler
        to split them into separate kernels.

        None means the default stream, so it is compared like any other value.
        N)r>  rð   Úenvrï   rƒ   r*   rD   rq  )r�  rå  Únode_streamÚ
input_nodeÚinput_streamÚir_values         r{   Ú$_realize_inputs_at_stream_boundariesz2GraphLowering._realize_inputs_at_stream_boundaries  sŽ   € ð ×+Ò+¨AÑ.Ô.ˆØÔ+ð 	#ð 	#ˆJØ×0Ò0°Ñ<Ô<ˆLØ˜{Ò*Ð*ØØ”x—|’| JÑ/Ô/ˆHÝ˜(¥B¤LÑ1Ô1ð #Ø× Ò Ñ"Ô"Ð"øð	#ð 	#r}   Úobjectc                ón  •‡ ‡‡#‡$‡%‡&‡'— d.ˆfd„}d/ˆ%ˆ&ˆ fd
„}ddl m} t          ‰ j        ¦  «        Š$t          ‰ j        ¦  «        Š't          ‰g¦  «        }‰j        dk    }|r@‰                      ‰¦  «        \  }}|t          ||¦  «        z  }‰  	                    ‰¦  «         t          j                             |¦  «        5  t          j                             ‰                      ‰¦  «        ¦  «        5  ‰                      ‰¦  «        5  t!          j        ‰¦  «        5  |r¦‰j        rŸt%          ‰j        t&          j        j        ¦  «        r{t&          j        j                             ‰j        ¦  «        rRt3          ‰¦  «        s|                     ddˆfd„¦  «        r) |d¦  «          t7          ‰j        d¬¦  «        |i |¤Ž}	�n¢‰j        dk    rmt%          ‰j        t&          j        j        t&          j        j        f¦  «        r8t;          ‰¦  «        r) |d¦  «          t7          ‰j        d¬¦  «        |i |¤Ž}	�n*‰j        dk    ró‰j        t&          j        j        j         u rÖtB          j"        dk    rÆ |d¦  «         tB          j"        dk    r�|}
|}‰j#         $                    d¦  «        x}r&|d         }|d         }tK          ||||¦  «        \  }}ntM          ‰g|¢R i |¤Ž\  }}‰  '                    ‰j        ||¦  «        }	‰  (                    ‰|
|||¦  «         nHtS          dtB          j"        › �¦  «        ‚ |d¦  «         tU          ¦   «          +                    ‰¦  «        }	t&          j        j,        j-        j.        t&          j        j,        j/        j.        t&          j        j,        j0        j.        t&          j        j,        j1        j.        t&          j        j,        j2        j.        gŠ#tg          d„ ‰j4        D ¦   «         ¦  «        }‰‰ j5        v Š&tg          ˆ#fd„‰j4        D ¦   «         ¦  «        Š%‰j#         $                    dd¦  «        r®t%          |	tl          ¦  «        r™|	 7                    ¦   «          ‰j#        d          8                    ¦   «         }t'          j9        j        j:        |Ž }|	 ;                    ¦   «         |k    r6|s4t          j<        |¦  «        }t          j=         >                    |	|¦  «        }	|rHt%          |	tl          ¦  «        r3t%          |	j?        t          j@        ¦  «        r|	 7                    ¦   «          |s‰%�r4t%          ‰j#         $                    d¦  «        t&          jA        ¦  «        �r‰&r‰ j5         $                    ‰¦  «        }n‰j#        d          8                    ¦   «         }|��Ât          |¦  «        dk    �r®tB          jB        p‰& o‰% }t&          jC         D                    ‰j#        d         ¦  «        }t          t‹          |¦  «        ¦  «        dk    }|sp|rnt          |	 F                    ¦   «         ¦  «        d k    rI‰‰ jG        v r@‰&s>‰%s<t          jH         I                    |	 F                    ¦   «         t&          jJ        ¦  «        }|sÞt          |¦  «        rÏ‰j#        d          K                    ¦   «         st%          |	j?        t          j@        ¦  «        r5t          j=         >                    |	t          j<        |¦  «        |¬!¦  «        }	n\t          |	 F                    ¦   «         ¦  «        dk    rt          |¦  «        dk    rg }t          j=         L                    |	||¬!¦  «        }	t          t          ‰j4        ¦  «        ¦  «        }|dk    �r§t%          |	tl          ¦  «        �r‘‰j4        D �]•}|j        tš          v �rú|	 N                    ¦   «          t&          j        j,        jO        j.        t&          j        j,        jP        j.        t&          j        j,        jQ        j.        g}g }‰ jR        s.| S                    t&          j        j,        jT        j.        ¦  «         t&          jU        jV        �rŒ|t&          j        jW        jX        j.        t&          j        jW        jX        jY        t&          j        j,        jZ        j.        t&          j        j[        j\        j.        t&          j        j[        j\        j]        t&          j        j[        j\        jY        t&          j        j[        j\        j^        gz  }|t&          j        jW        j_        j.        t&          j        jW        j_        jY        t&          j        jW        j`        jY        t&          j        jW        ja        j.        t&          j        j[        jb        j.        t&          j        j[        jc        jY        gz  }t&          jU        jd        r|t&          j        je        jf        j.        gz  }|j        |v rQt          j=         >                    |	t          j<        ‰j#        d          8                    ¦   «         ¦  «        d"¬!¦  «        }	|j        |v r^‰|jg        d         u rOt          j=         >                    |	t          j<        tÑ          ‰j#        d         ji        ¦  «        ¦  «        ¦  «        }	|j        d#k    r~t%          |	j?        j?        tÔ          tÖ          f¦  «        rXtB          jl        r8|	j?         m                    ¦   «         dk    r|	j?         n                    ¦   «         s�Œ�|	 7                    ¦   «          �Œ—|	j?        }t%          |tÞ          ¦  «        sht%          |t          j@        t          jp        f¦  «        rB|j?        }t%          |tÞ          ¦  «        s&t%          |t          j@        t          jp        f¦  «        °Bt%          |tÞ          ¦  «        r3| q                    t          ‰j4        ¦  «        ¦  «        r ||	‰¦  «        }	|	 r                    t          ‰j4        ¦  «        ¦  «         t%          |	tl          ¦  «        r4|	 s                    ¦   «         r  ||	‰¦  «        }	|	 N                    ¦   «          t%          |	tl          ¦  «        ret%          |	j?        tÞ          ¦  «        rK|	j?        j?        }t%          |tÔ          ¦  «        r*| n                    d$¬%¦  «        r|	 7                    ¦   «          ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   té          |	‰¦  «         ‰  u                    |	¦  «         t          tì          jw                 ¦   «         }‰ j        ‰$d…         D ]}|| x                    ¦   «         z  }Œ‰ j        ‰'d…         D ]}|| x                    ¦   «         z  }Œt           jy        jz        j{        }‰j        d&k    rDt%          |	tì          jw        ¦  «        r*| |                    |	¦  «        r| }                    |	¦  «         d0ˆ$ˆ'ˆ fd'„} t           jy        j~        r‰j        d&k    r|	S tÿ          t           jy        jz        j{        ‰j#         $                    d(i ¦  «        ¦  «        }!|!€J ‚t          d)„ |!D ¦   «         ¦  «        }"||"k    s0J d*|› d+|"› d,‰ €                    ¦   «         › d- | ¦   «         › �¦   «         ‚‰  �                    ‰|¦  «         |	S )1z4Lower and execute a single FX node into Inductor IR.Úmsgr‘   ru   rv   c                ód   •— t                                dt          ‰j        ¦  «        | ¦  «         d S )Nzlowering %s %s)r   r  r   Úformat_node)rH  rå  s    €r{   r  z%GraphLowering.run_node.<locals>.debug"  s*   ø€ Ý�IŠIÐ&­
°1´=Ñ(AÔ(AÀ3ÑGÔGÐGÐGÐGr}   rÄ   r'  rå  rÌ   c           	     óä  •— t           j                             |j        d         ¦  «        }|j        d                              ¦   «         }t          t          |¦  «        ¦  «        dk    }|sƒ|r�t          |                      ¦   «         ¦  «        dk    r\|‰j        v rS‰sQ‰sOt          j
                             | t          j        t          |j        d         j        ¦  «        ¦  «        ¦  «        } | S )Nrè  r   é   )r‰   Ú_prims_commonÚ%is_non_overlapping_and_dense_or_falser©   r¨  r   r   r¾  rs  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_orderzFGraphLowering.run_node.<locals>.maybe_apply_channels_last_stride_order(  sð   ø€ õ Ô'×MÒMØ”�u”ñô ˆEð ”f˜U”m×*Ò*Ñ,Ô,ˆGÝ*-Õ.CÀGÑ.LÔ.LÑ*MÔ*MÐPQÒ*QÐ'à/ðàðõ ˜ŸšÑ)Ô)Ñ*Ô*¨aÒ/Ð/Ø˜Ô8Ð8Ð8Ø'ð 9à/ð 9õ œ×=Ò=ØÝÔ'Ý6°q´v¸e´}Ô7JÑKÔKñô ñô �ð ˆMr}   r   )ÚCompilerBisectorrÏ   ÚinductorrK   c                 ó"   •— t          ‰ ¦  «        S rx   )Úreprrò  s   €r{   ú<lambda>z(GraphLowering.run_node.<locals>.<lambda>[  s   ø€ ½¸a¹¼€ r}   rI   Fr±  Úflexible_layoutÚ-user_defined_triton_kernel_layout_constraintsÚneeds_fixed_stride_orderr¨  r(   z1Unknown triton_kernel_default_layout_constraint: r+  c              3  ó,   K  — | ]}|j         d k    V — ŒdS )r£   Nr¤   )r¤  r"  s     r{   rê  z)GraphLowering.run_node.<locals>.<genexpr>¤  s)   è è € ÐDÐD°D˜DœG xÒ/ÐDÐDÐDÐDÐDÐDr}   c              3  ó*   •K  — | ]}|j         ‰v V — Œd S rx   )r�   )r¤  r"  Úas_strided_opss     €r{   rê  z)GraphLowering.run_node.<locals>.<genexpr>¦  s;   øè è € ð *ð *Ø26�”˜~Ð-ð*ð *ð *ð *ð *ð *r}   Úinductor_realize_to_stridesrè  NrL  )Úallow_paddingTr£   éd   )Ú	thresholdr˜  c                 ó¸   •— d„ ‰j         ‰d …         D ¦   «         } |                      d„ ‰j        ‰d …         D ¦   «         ¦  «         d                     | ¦  «        S )Nc                óD   — g | ]}d |                      ¦   «         › d|› d�‘ŒS )úunbacked_symbol_defs=ú in:
ú
©Úget_unbacked_symbol_defs)r¤  rA  s     r{   r¥  zCGraphLowering.run_node.<locals>.format_new_defs.<locals>.<listcomp>q  sH   € ð ð ð àð V¨×(DÒ(DÑ(FÔ(FÐUÐUÈcÐUÐUÐUðð ð r}   c              3  óL   K  — | ]}d |                      ¦   «         › d|› d�V — Œ dS )rg  rh  ri  Nrj  ©r¤  r¥   s     r{   rê  zBGraphLowering.run_node.<locals>.format_new_defs.<locals>.<genexpr>u  sV   è è € ð ð àð T¨×(CÒ(CÑ(EÔ(EÐSÐSÈRÐSÐSÐSðð ð ð ð ð r}   z***
)rH  ÚextendrI  r™   )r
  Úbuffer_watermarkÚoperation_watermarkr�  s    €€€r{   Úformat_new_defsz/GraphLowering.run_node.<locals>.format_new_defsp  sƒ   ø€ ðð àœ<Ð(8Ð(9Ð(9Ô:ðñ ô ˆAð �HŠHð ð àœ/Ð*=Ð*>Ð*>Ô?ðñ ô ñ ô ð ð —<’< ‘?”?Ð"r}   Úunbacked_bindingsc              3  ój   K  — | ].}t           j        j        j                             ||¦  «        V — Œ/d S rx   )rc   r,  r  Úunbacked_renamingsrï   rø  s     r{   rê  z)GraphLowering.run_node.<locals>.<genexpr>¦  sN   è è € ð /
ð /
àõ ŒKÔ!Ô4×8Ò8¸¸AÑ>Ô>ð/
ð /
ð /
ð /
ð /
ð /
r}   zfailed ú >= z (inductor >= fx)
fx node is: z
new operations are:

)rH  r‘   ru   rv   )rÄ   r'  rå  rÌ   ru   r'  ©ru   r‘   )‚Ú!torch._inductor.compiler_bisectorrV  r   rH  rI  r&   r¥   Úfetch_args_kwargs_from_envrV   rE  r*   r,  Úcurrent_originsÚcurrent_stream_idxr>  r  rc   r�   rƒ   r‰   rÑ   rÒ   r»  rŽ  r¼  rJ   Údisable_subsystemrI   ÚHigherOrderOperatorr_   rý   r3  r4  r)   Ú'triton_kernel_default_layout_constraintr©   rï   rF   rG   rÏ   r¿  r˜   r.  Úrun_noderÖ   Ú
as_stridedr  Úas_strided_Úas_strided_scatterÚresizeÚ	resize_asrß   r  rÊ   rD   rq  r¨  rÿ  Úany_is_symbolicÚmaybe_get_striderP  rõ  rO  r¼  rû  r   rñ   rM  rN  r   r¾  rs  ÚFlexibleLayoutÚ stride_ordered_for_memory_formatÚchannels_lastÚ_is_viewÚrequire_exact_stridesrN   Úrealize_hintrØ   ÚmmÚ_int_mmr  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_linearrs   r   rÑ  r@   rA   Údelay_realize_cheap_outputsÚ	num_readsÚhas_large_inner_fnrC   Ú
MutableBoxÚshould_realize_on_reuseÚ
mark_reuseÚhas_exceeded_max_readsr9   ro  r„   r…   rk  ru  r:  r  Úis_unbacked_symintrÂ   r  r   rJ  Úcreate_deferred_runtime_asserts))r�  rå  r  rU  rV  ÚoriginsÚis_call_functionrs   rt   rÄ   rÉ  rÊ  r¨  Úinp_argsÚ
inp_kwargsÚ	is_outputr™  Úsym_stridesÚstride_orderrb  rQ  rR  Ú	num_usersr"  Úneed_fixed_layoutÚneed_fixed_channels_last_layoutÚ_dataÚcurrÚnew_unbacked_defsrA  r¥   r  rq  rr  Úrenamed_unbacked_bindingsr`  ro  rS  rT  rp  r�  s)   ``                                 @@@@@€r{   r~  zGraphLowering.run_node  sX  øøøøøøøø€ ð	Hð 	Hð 	Hð 	Hð 	Hð 	Hð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð0 	GÐFÐFÐFÐFÐFå˜tœ|Ñ,Ô,ÐÝ! $¤/Ñ2Ô2Ðõ $.¨q¨c¡?¤?ˆØœ4 ?Ò2ÐØð 	9Ø×:Ò:¸1Ñ=Ô=‰LˆD�&Ø•~ d¨FÑ3Ô3Ñ3ˆGØ×5Ò5°aÑ8Ô8Ð8åŒI×%Ò% gÑ.Ô.ðN	)ð N	)åŒI×(Ò(¨×)>Ò)>¸qÑ)AÔ)AÑBÔBðN	)ð N	)ð ×!Ò! !Ñ$Ô$ðN	)ð N	)õ Ô˜qÑ!Ô!ð	N	)ð N	)ð !ðB-ð ”HðB-õ ˜qœx­¬Ô)>Ñ?Ô?ð	B-õ
 ”NÔ(×3Ò3°A´HÑ=Ô=ðB-õ :¸!Ñ<Ô<ðB-ð (×9Ò9Ø" K°°°°ñô ðB-ð �Ð(Ñ)Ô)Ð)ØNÕ)¨!¬(ÈÐNÑNÔNØðàðð �‘ð
 ”˜Ò'Ð'ÝØ”H�uœzÔ4µe´jÔ6TÐUñô ð (õ /¨qÑ1Ô1ð	 (ð �Ð(Ñ)Ô)Ð)ØNÕ)¨!¬(ÈÐNÑNÔNØðàðð �‘ð
 ”˜Ò'Ð'Ø”H¥¤	Ô 6Ô UÐUÐUÝÔBÐFWÒWÐWà�ÐEÑFÔFÐFåÔBØ1ò2ð 2ð  $�HØ!'�Jà+,¬6¯:ª:Ð6HÑ+IÔ+IÐIÐ'ð SØ#3°AÔ#6˜Ø%5°aÔ%8˜
Ý'@à à"Ø$Ø&ñ(ô (™˜˜f˜fõ (?¸qÐ'RÀ4Ð'RÐ'RÐ'RÈ6Ð'RÐ'R™˜˜fØ!×/Ò/°´¸$ÀÑGÔG�FØ×+Ò+¨A¨x¸ÀTÈ6ÑRÔRÐRÐRå&Ø|ÍFÔLzÐ|Ð|ñô ð ð ��b‘	”	�	Ý™œ×)Ò)¨!Ñ,Ô,�õ ”	”Ô)Ô1Ý”	”Ô*Ô2Ý”	”Ô1Ô9Ý”	”Ô%Ô-Ý”	”Ô(Ô0ðˆNõ ÐDÐD¸A¼GÐDÑDÔDÑDÔDˆIØ 4Ô#CÐCˆOÝ&)ð *ð *ð *ð *Ø:;¼'ð*ñ *ô *ñ 'ô 'Ð#ð Œv�zŠzÐ7¸Ñ?Ô?ð XÅJØ�	ñEô Eð Xð —’Ñ Ô Ð Øœ& œ-×.Ò.Ñ0Ô0�Ý#œoÔ3ÔCÀWÐM�Ø×*Ò*Ñ,Ô,°Ò7Ð7ÀÐ7Ý#%Ô#6°wÑ#?Ô#?�LÝœ_×AÒAÀ&È,ÑWÔW�Fàð!å˜v¥yÑ1Ô1ð!õ ˜vœ{­B¬KÑ8Ô8ð!ð —’Ñ Ô Ð àð 1Ð4ñ 1½*Ø”—
’
˜5Ñ!Ô!¥5¤<ñ;ô ;ñ 1ð #ð 5Ø"Ô>×BÒBÀ1ÑEÔE�G�Gàœf Uœm×2Ò2Ñ4Ô4�GàÑ&­3¨w©<¬<¸!Ò+;Ñ+;åÔ*ÐA°/Ð.Að%6à5Ð5ð "õ "Ô/×UÒUØœ˜uœñô �Eõ Õ1°'Ñ:Ô:Ñ;Ô;¸aÒ?ð 0ð 8ð
à!ð
õ   §¢Ñ 1Ô 1Ñ2Ô2°aÒ7Ð7Ø Ô!@Ð@Ð@Ø /ð Aà 7ð Aõ #%Ô"3×"TÒ"TØ"ŸOšOÑ-Ô-­uÔ/Bñ#ô #˜ð 7ð ½3¸w¹<¼<ð ð œ6 %œ=×1Ò1Ñ3Ô3ð µzØ"œKÝœKñ8ô 8ð õ &(¤_×%IÒ%IØ &Ý "Ô 3°GÑ <Ô <Ø.;ð &Jñ &ô &˜F˜Fõ  # 6§?¢?Ñ#4Ô#4Ñ5Ô5¸Ò:Ð:½sÀ7¹|¼|ÈaÒ?OÐ?OØ*, Ý%'¤_×%JÒ%JØ &¨¸}ð &Kñ &ô &˜Fõ �J q¤wÑ/Ô/Ñ0Ô0ˆIØ˜1Š}‰}¥¨FµIÑ!>Ô!>‰}ØœGð I-ñ I-�DØ”{Õ&;Ð;Ñ;Ø×+Ò+Ñ-Ô-Ð-õ "œIœNÔ?ÔGÝ!œIœNÔ-Ô5Ý!œIœNÔ2Ô:ð-Ð)ð
 ;=Ð7Ø#œð YØ-×4Ò4µU´Y´^Ô5OÔ5WÑXÔXÐXÝ œ8Ô/ñ YØ-Ý %¤	Ô 0Ô BÔ JÝ %¤	Ô 0Ô BÔ IÝ %¤	¤Ô ?Ô GÝ %¤	Ô 0Ô BÔ JÝ %¤	Ô 0Ô BÔ IÝ %¤	Ô 0Ô BÔ IÝ %¤	Ô 0Ô BÔ Pð2ñ Ð-ð <Ý %¤	Ô 0Ô GÔ OÝ %¤	Ô 0Ô GÔ NÝ %¤	Ô 0Ô HÔ OÝ %¤	Ô 0Ô QÔ YÝ %¤	Ô 0Ô @Ô HÝ %¤	Ô 0Ô BÔ Ið@ñ Ð;õ  %œxÔ/ð YØ 1µe´i´mÔ6OÔ6WÐ5XÑ XÐ 1Øœ;Ð*;Ð;Ð;Ý%'¤_×%IÒ%IØ &Ý "Ô 3°A´F¸5´M×4HÒ4HÑ4JÔ4JÑ KÔ KØ.2ð &Jñ &ô &˜Fð !œKÐ+JÐJÐJØ ! T¤Y¨q¤\Ð 1Ð 1å%'¤_×%IÒ%IØ &Ý "Ô 3Ý$BÀ1Ä6È%Ä=ÔCVÑ$WÔ$Wñ!"ô !"ñ&ô &˜Fð ”w (Ò*Ð*å% f¤kÔ&6½ÅIÐ8NÑOÔOð -õ !'Ô Bð)ð %+¤K×$9Ò$9Ñ$;Ô$;¸qÒ$@Ð$@à(.¬×(FÒ(FÑ(HÔ(Hð %Añ !)Ø"ŸNšNÑ,Ô,Ð,ùàœ�Ý$ U­JÑ7Ô7ð '½JØ�BœK­¬Ð7ñ=ô =ð 'ð "œJ�Eõ % U­JÑ7Ô7ð '½JØ�BœK­¬Ð7ñ=ô =ð 'õ
 ˜e¥ZÑ0Ô0ð O°U×5RÒ5RÝ˜œ‘L”Lñ6ô 6ð Oð DÐCÀFÈAÑNÔN�Fð ×!Ò!¥# a¤g¡,¤,Ñ/Ô/Ð/õ ˜&¥)Ñ,Ô,ð &°×1NÒ1NÑ1PÔ1Pð &ð @Ð?ÀÈÑJÔJ�Ø×#Ò#Ñ%Ô%Ð%õ ˜&¥)Ñ,Ô,ð )µ¸F¼KÍÑ1TÔ1Tð )Ø”{Ô'�Ý˜d¥IÑ.Ô.ð )à×.Ò.¸Ð.Ñ=Ô=ð )ØŸšÑ(Ô(Ð(ð]N	)ð N	)ð N	)ñ N	)ô N	)ð N	)ð N	)ð N	)ð N	)ð N	)ð N	)øøøð N	)ð N	)ð N	)ð N	)ð N	)ð N	)ð N	)ñ N	)ô N	)ð N	)ð N	)ð N	)ð N	)ð N	)ð N	)øøøð N	)ð N	)ð N	)ð N	)ð N	)ð N	)ð N	)ñ N	)ô N	)ð N	)ð N	)ð N	)ð N	)ð N	)ð N	)øøøð N	)ð N	)ð N	)ð N	)ð N	)ð N	)ð N	)ñ N	)ô N	)ð N	)ð N	)ð N	)ð N	)ð N	)ð N	)øøøð N	)ð N	)ð N	)ð N	)õ` 	˜6 1Ñ%Ô%Ð%Ø×Ò˜vÑ&Ô&Ð&å&¥u¤|Ô4Ñ6Ô6ÐØ”<Ð 0Ð 1Ð 1Ô2ð 	@ð 	@ˆCØ ×!=Ò!=Ñ!?Ô!?Ñ?ÐÐØ”/Ð"5Ð"6Ð"6Ô7ð 	?ð 	?ˆBØ ×!<Ò!<Ñ!>Ô!>Ñ>ÐÐå”GÔ$Ô.ˆ	ð
 ŒD�MÒ!Ð!Ý˜6¥5¤<Ñ0Ô0ð "à×,Ò,¨VÑ4Ô4ð "ð ×!Ò! &Ñ)Ô)Ð)ð		#ð 		#ð 		#ð 		#ð 		#ð 		#ð 		#ð 		#õ Œ7Ôð 	 1¤4¨=Ò#8Ð#8ØˆMõ. 6ÝŒGÔÔ&¨¬¯
ª
Ð3FÈÑ(KÔ(Kñ
ô 
Ðð !Ð,Ð,Ð,õ %/ð /
ð /
à&ð/
ñ /
ô /
ñ %
ô %
Ð!ð
 !Ð$=Ò=Ð=Ð=ð:Ð'ð :ð :Ð-Fð :ð :ØŸ=š=™?œ?ð:ð :à&5 oÑ&7Ô&7ð:ð :ñ >Ô=Ð=ð
 	×,Ò,¨QÐ0AÑBÔBÐBØˆs   Ã3u$Ã4uÄ
t6Äo4t	ôt6ôt#ô#t6ô&t#ô't6ô*uô6t:ô:uô=t:ô>uõu$õu	õu$õu	õu$õ$u(õ+u(r¯  úOrderedSet[sympy.Symbol]c                óâ  ‡ — t           j        rd S dˆ fd„}t          ¦   «         rl|j        t          j        j        j        j        u rJ‰ j	        rC‰  
                    |¦  «        \  }}|d         d	k    r ||d         |d         › d
�¦  «         d S d S ‰ xj        |z  c_        t          j        j        j        }|D �]5}‰ j                             |g ¦  «        }|j        |         }	|                     ¦   «                              |	¦  «        sbdd„}
 |
|	j        ¦  «        r |||	j        k    |› d|	j        › �¦  «          |
|	j        ¦  «        r |||	j        k    |› d|	j        › �¦  «         |D ]~}t/          |j        ¦  «        }|‰ j        z
  }|rEt3          |t4          ¬¦  «        }‰ j                             |g ¦  «                             |¦  «         Œg ||j        |j        › ¦  «         Œ�Œ7d S )Nr®  r!   rH  r‘   ru   rv   c                óŠ   •— t          j        | |¦  «        }‰                     |d¬¦  «         ‰                     |¦  «         d S )NTrX  )r*   ÚAssertScalarr_  rW  )r®  rH  Ú	assert_opr�  s      €r{   Úmake_assertzBGraphLowering.create_deferred_runtime_asserts.<locals>.make_assert×  sG   ø€ Ýœ¨¨cÑ2Ô2ˆIØ× Ò  °TÐ Ñ:Ô:Ð:Ø×#Ò# IÑ.Ô.Ð.Ð.Ð.r}   r   Tz to be Truerù  r	   r³   c                ón   — | t           t            fv rdS 	 t          | ¦  «         dS # t          $ r Y dS w xY w)NFT)r'   rË  Ú	TypeError)rù  s    r{   Úis_convertiblezEGraphLowering.create_deferred_runtime_asserts.<locals>.is_convertibleó  sP   € Ø¥­&¨Ð 1Ð1Ð1Ø#( 5ð)Ý ™FœF˜FØ#' 4øÝ(ð )ð )ð )Ø#( 5 5ð)øøøs   •& ¦
4³4ru  z <= )r;  )r®  r!   rH  r‘   ru   rv   )rù  r	   ru   r³   )r)   Údo_not_emit_runtime_assertionsr   r�   r‰   rý   rÖ   Ú_assert_scalarr  r  rx  r9  rc   ru  r:  r  r8  rÀ   Úvar_to_rangeÚ _default_unspecified_value_rangeÚissubsetÚlowerÚupperr   r®  râ   r‘   rÁ   rÃ   )r�  rå  r¯  r¶  Ú	node_argsrš  r  Úi0ÚrasÚvrr¹  ÚraÚfvsÚmissingÚi1s   `              r{   r¢  z-GraphLowering.create_deferred_runtime_asserts³  se  ø€ õ Ô0ð 	ØˆFð@	/ð 	/ð 	/ð 	/ð 	/ð 	/õ %Ñ&Ô&ð,	;à”�EœIœNÔ9ÔAÐAÐAØ”ð Bð  ×:Ò:¸1Ñ=Ô=‰LˆI�qØ˜Œ|˜tÒ#Ð#Ø�˜I aœL¨Y°q¬\Ð*FÐ*FÐ*FÑGÔGÐGÐGÐGð $Ð#ð Ð'Ô'Ð+<Ñ<Ð'Ô'åœÔ(Ô2ˆIð (ð ;ñ ;�ØÔ(×,Ò,¨R°Ñ4Ô4�àÔ+¨BÔ/�Ø ×AÒAÑCÔC×LÒLÈRÑPÔPð Kð)ð )ð )ð )ð &�~ b¤hÑ/Ô/ð KØ#˜ B¨"¬(¢N°rÐ4IÐ4I¸r¼xÐ4IÐ4IÑJÔJÐJØ%�~ b¤hÑ/Ô/ð KØ#˜ B¨"¬(¢N°rÐ4IÐ4I¸r¼xÐ4IÐ4IÑJÔJÐJàð ;ð ;�BÝ/°´Ñ8Ô8�CØ! DÔ$?Ñ?�GØð ;Ý  ­cÐ2Ñ2Ô2˜ØÔ*×5Ò5°b¸"Ñ=Ô=×DÒDÀRÑHÔHÐHÐHà#˜ B¤G°´¨\Ñ:Ô:Ð:Ð:ñ;ð);ð ;r}   c                ó�   — t           j        rt          d¦  «        ‚t          j        dvrt          dt          j        › �¦  «        ‚d S )NzC++ codegen is disabled)ÚlinuxÚdarwinÚwin32zUnsupported platform )r)   Údisable_cpp_codegenr4   ÚsysÚplatformr“  s    r{   Ú!validate_can_generate_cpp_wrapperz/GraphLowering.validate_can_generate_cpp_wrapper
	  sL   € ÝÔ%ð 	DÝ(Ð)BÑCÔCÐCåŒ<Ð;Ð;Ð;Ý(Ð)OÅÄÐ)OÐ)OÑPÔPÐPð <Ð;r}   Úis_subgraphÚparent_wrapper_codeúPythonWrapperCodegen | NoneÚpartition_signaturesúGraphPartitionSignature | Nonec                óÆ  — | j                              ¦   «         }|                     d¦  «         |                     d¦  «         t          |¦  «        dk    s0J d                     d                     |¦  «        ¦  «        ¦   «         ‚t          |¦  «        dk    }|rdn|                     ¦   «         | _        | j        r|  	                    ¦   «          t          | j        ¦  «        | _        t          | j        | j        | j        ¦  «        }|€J d| j        › d�¦   «         ‚|                     ||||¦  «        | _        | j        r| j        j        j        | j        _        d S d S )	Nrµ   r©   r(   zDoes not support mixing {}ú+r   zDevice z not supported)rA  r7  r¾  r   Úformatr™   rÀ   rC  r  rÐ  r0   rY  r1   r%  r„  rZ  r   Ú_names_iter)r�  rÑ  r  rÒ  rÔ  rA  Úonly_cpuÚwrapper_code_gen_clss           r{   Úinit_wrapper_codezGraphLowering.init_wrapper_code	  s�  € ð Ô(×-Ò-Ñ/Ô/ˆØ×Ò˜UÑ#Ô#Ð#Ø×Ò˜VÑ$Ô$Ð$å�<Ñ Ô  AÒ%Ð%Ð%Ð'C×'JÒ'JØ�HŠH�\Ñ"Ô"ñ(
ô (
Ñ%Ô%Ð%õ �|Ñ$Ô$¨Ò)ˆØ$,ÐD˜5˜5°,×2BÒ2BÑ2DÔ2DˆÔàÔð 	5Ø×2Ò2Ñ4Ô4Ð4å1°$Ô2BÑCÔCˆŒÝ=ØÔ˜dÔ.°´ñ 
ô  
Ðð $Ð/Ð/Ø6�dÔ&Ð6Ð6Ð6ñ 0Ô/Ð/ð 1×7Ò7ØØØØ ñ	
ô 
ˆÔð Ôð 	WØ,0Ô,=Ô,JÔ,VˆDÔÔ)Ð)Ð)ð	Wð 	Wr}   ú list[int | float | torch.Tensor]c                ó¢  — dd l }|                     | j        ¦  «        }|                     |¦  «        }g }|j        j        D ]?}|j        dk    r2|j        t          j        j	        j
        u r|                     |¦  «         Œ@g }i }i }g }	i }
|D �]Â}|j        d         D ]R}|D ]M}||v rŒt          |t          j        j        ¦  «        r't!          |¦  «        ||<   |                     |¦  «         ŒNŒS|j        d         }t          j        j                             |j        d         |j        d         d„ |                     ¦   «         D ¦   «         |j        d         ¦  «        }i }|j                             |¦  «        5  |                     ¦   «         D ]š\  }}||v rO|j                             t          j        |f¬	¦  «        }t!          |	¦  «        ||<   |	                     |¦  «         ŒX||
v r|
|         ||<   Œht!          |	¦  «        |
|<   |	                     |¦  «         |
|         ||<   Œ›	 d d d ¦  «         n# 1 swxY w Y   |||j        <   �ŒÄ|	|z   }|j        j        D ]$}|j        d
k    rt3          |¦  «        f|_         nŒ%|                     ¦   «          t          j                             |¦  «        }|                     |¦  «        }t!          |¦  «        dk    rÉ|t!          |	¦  «        d …         }i | _        |D ]¨}d}g }|j        d         D ]ƒ}g }|D ]Z}t          |t          j        j        ¦  «        s|                     |¦  «         Œ7d}|                     |||                  ¦  «         Œ[|                     t3          |¦  «        ¦  «         Œ„|r|| j        |j        <   Œ©|d t!          |	¦  «        …         | _        || _         d S )Nr   rÏ   Úgridrt   r  r  c                ór   — i | ]4\  }}|t          |t          j        j        ¦  «        r|j        d          n|“Œ5S r  r  r   s      r{   r!  z9GraphLowering.extract_autotune_inputs.<locals>.<dictcomp>\	  r"  r}   r#  )rs   r£   FT)!r7  Údeepcopyr|  ru  rè   r¥   r�   r‰   rý   r3  r4  rÃ   rt   rƒ   rª   r#   r   ré   rê   r5  r|  Úinserting_beforerÏ   Úcloner"  rj  rs   Ú	recompileÚInterpreterrR  rp  rn  ro  )r�  r  r7  Ú	cloned_gmÚtriton_nodesr¯   Úgrid_inputsÚvisited_gridsÚtriton_inputsÚkwargs_inputsÚvisited_kwargsrß  rè  rt   r8  r  rŽ  r�  Únew_nodeÚnew_outputsÚrunnerÚreturned_outputsÚgrid_outputsÚdynamic_gridÚ	new_gridsÚnew_grids                             r{   Úextract_autotune_inputsz%GraphLowering.extract_autotune_inputs6	  s  € ð 	ˆˆˆà—M’M $¤,Ñ/Ô/ˆ	ØŸš ~Ñ6Ô6ˆØˆØ”OÔ)ð 	*ð 	*ˆDà”˜?Ò*Ð*Ø”K¥5¤9Ô#9Ô#XÐXÐXà×#Ò# DÑ)Ô)Ð)øð ,.ˆØ24ˆà(*ˆØ-/ˆØ)+ˆØ ð &	2ñ &	2ˆDàœ FÔ+ð 0ð 0�Øð 0ð 0�CØ˜mÐ+Ð+Ø å! #¥u¤x¤}Ñ5Ô5ð 0Ý-0°Ñ-=Ô-=˜ cÑ*Ø#×*Ò*¨3Ñ/Ô/Ð/øð0ð ”[ Ô*ˆFåÔ-Ô@×TÒTØ”˜LÔ)Ø”Ð/Ô0ðð à &§¢¡¤ðñ ô ð ”Ð5Ô6ñô ˆGð *,ˆJØ”×1Ò1°$Ñ7Ô7ð 6ð 6Ø"ŸLšL™NœNð 6ð 6‘D�A�qØ˜G�|�|Ø#,¤?×#@Ò#@ÅÄÐTUÐSWÐ#@Ñ#XÔ#X˜Ý(+¨MÑ(:Ô(:˜
 1™Ø%×,Ò,¨XÑ6Ô6Ð6Ø à˜NÐ*Ð*Ø(6°qÔ(9˜
 1™Ø Ý(+¨MÑ(:Ô(:�N 1Ñ%Ø!×(Ò(¨Ñ+Ô+Ð+Ø$2°1Ô$5�J˜q‘M�Mð6ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ð (2ˆM˜$œ)Ñ$Ñ$à# kÑ1ˆØ”OÔ)ð 	ð 	ˆDØŒw˜(Ò"Ð"Ý" ;Ñ/Ô/Ð1�”	Ø�ð #ð 	×ÒÑÔÐÝ”×%Ò% iÑ0Ô0ˆØ!Ÿ:š: nÑ5Ô5Ðåˆ{ÑÔ˜aÒÐØ+­C°Ñ,>Ô,>Ð,@Ð,@ÔAˆLØ$&ˆDÔ!Ø$ð Að A�Ø$�Ø.0�	Ø œK¨Ô/ð 	6ð 	6�DØ!�HØ#ð Jð J˜Ý)¨#­u¬x¬}Ñ=Ô=ð %Ø$ŸOšO¨CÑ0Ô0Ð0Ø$Ø'+˜Ø Ÿš¨°]À3Ô5GÔ(HÑIÔIÐIÐIà×$Ò$¥U¨8¡_¤_Ñ5Ô5Ð5Ð5àð AØ7@�DÔ)¨$¬)Ñ4øà!1Ð2FµC¸Ñ4FÔ4FÐ2FÔ!GˆÔØ"/ˆÔÐÐs   Å>B0H;È;H?	ÉH?	ú)tuple[ValueWithLineMap, ValueWithLineMap]c                ó"  ‡ — t          ˆ fd„dD ¦   «         ¦  «        }d‰ j        v o6‰ j        o/t          j        j         ot          d„ ‰ j        D ¦   «         ¦  «        }|s|�rdˆ fd„}t          j        j        rt          j        j        rZd}‰ j        D ] }t          |t          j
        ¦  «        rd	} nŒ!|r. |¦   «         }‰                      |¦  «         t          ‰ ¦  «         ‰                      ¦   «         S ‰ j        s‰                      ¦   «         S d‰ _        ‰                      ¦   «         j        } |¦   «         }t"          j        j                             ¦   «         5   ||¦  «         d
d
d
¦  «         n# 1 swxY w Y   ~d	‰ _        ‰ j                             ¦   «          ‰ j                             ¦   «          ‰ j                             ¦   «          t2          j        j        j                             ¦   «          t2          j        j        j                             ¦   «          t=          j        ¦   «          t          j         ddi¦  «        5  ‰                      ¦   «         cd
d
d
¦  «         S # 1 swxY w Y   d
S ‰                      ¦   «         S )a„  
        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  ó*   •K  — | ]}|‰j         v V — Œd S rx   )rA  )r¤  r
   r�  s     €r{   rê  z9GraphLowering.codegen_with_cpp_wrapper.<locals>.<genexpr>¡	  s+   øè è € ÐPÐP°f�f Ô 1Ð1ÐPÐPÐPÐPÐPÐPr}   )ÚcudaÚxpurµ   c              3  óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rx   )rƒ   r*   ÚUserDefinedTritonKernelrm  s     r{   rê  z9GraphLowering.codegen_with_cpp_wrapper.<locals>.<genexpr>©	  s@   è è € ð ð Ø?A•
˜2�rÔ9Ñ:Ô:ðð ð ð ð ð r}   ru   rÝ  c                 óž  •‡‡— dd„Št           j        j                             ¦   «         } | �|t	          t
          j        t          ¦  «        s]| j        r| j         	                    ¦   «          d„ | j
        D ¦   «         }ˆfd„t          j        |t
          j        ¦  «        D ¦   «         Šn>ˆfd„t	          t
          j        t          ¦  «        r‰j        nt
          j        D ¦   «         Š‰j        r_d	d
lm} ˆˆfd„t#          ‰j        ¦  «        D ¦   «         }|D ]5}‰|         }t	          |t           j        ¦  «        sJ ‚ ||¦  «        ‰|<   ~Œ6‰S )Nrl  ú,torch.SymInt | torch.SymFloat | torch.Tensorru   úint | float | torch.Tensorc                ó<  — | €d S t          | t          j        t          j        f¦  «        r| j        j        S t          | t          ¦  «        rt          | ¦  «        S t          | t          j        ¦  «        s'J dt          t          | ¦  «        ¦  «        z   ¦   «         ‚| S )Nz&Unknown type when creating real inputs)rƒ   r‰   r­  ÚSymFloatr¯   Úhintr   r   r   r‘   r¶   )rl  s    r{   ÚmaterializezXGraphLowering.codegen_with_cpp_wrapper.<locals>.extract_real_inputs.<locals>.materialize°	  s“   € ð �yà#˜tÝ# A­¬µe´nÐ'EÑFÔFð 	!à œvœ{Ð*Ý# A¥zÑ2Ô2ð !Ý% a™yœyÐ(å)¨!­U¬\Ñ:Ô:ð ð ØDÅsÍ4ÐPQÉ7Ì7Á|Ä|ÑSñô Ð:ð  !˜r}   c                ó   — g | ]}|®|‘ŒS rx   ry   )r¤  Úparams     r{   r¥  zWGraphLowering.codegen_with_cpp_wrapper.<locals>.extract_real_inputs.<locals>.<listcomp>È	  s(   € ð #ð #ð #à!Ø Ð,ð à,Ð,Ð,r}   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS ry   ry   ©r¤  rl  r  s     €r{   r¥  zWGraphLowering.codegen_with_cpp_wrapper.<locals>.extract_real_inputs.<locals>.<listcomp>Í	  s1   ø€ ð #ð #ð #àð $˜ A™œð#ð #ð #r}   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS ry   ry   r  s     €r{   r¥  zWGraphLowering.codegen_with_cpp_wrapper.<locals>.extract_real_inputs.<locals>.<listcomp>Õ	  s1   ø€ ð #ð #ð #àð $˜ A™œð#ð #ð #r}   r(   )Úclone_preserve_stridesc                ól   •— g | ]0\  }}|‰j         v ¯t          ‰|         t          j        ¦  «        ¯.|‘Œ1S ry   )r_  rƒ   r‰   r   )r¤  r®   r"  Úreal_inputsr�  s      €€r{   r¥  zWGraphLowering.codegen_with_cpp_wrapper.<locals>.extract_real_inputs.<locals>.<listcomp>á	  sN   ø€ ð *ð *ð *á%˜C Ø 4Ô#6Ð6Ð6Ý& {°3Ô'7½¼ÑFÔFð 7ð à6Ð6Ð6r}   )rl  rþ  ru   rÿ  )r‰   Ú_guardsÚTracingContextÚtry_getrƒ   rc   r  rb   Úoutput_stridesÚclearÚparams_flatr‡  Úchainr  r_  Ú
compile_fxr	  r–   r<  r   )	Útracing_contextr  r	  r`  r®   Úmutated_inpr  r  r�  s	         @@€r{   Úextract_real_inputszCGraphLowering.codegen_with_cpp_wrapper.<locals>.extract_real_inputs¯	  s½  øøø€ ð!ð !ð !ð !õ" #(¤-Ô">×"FÒ"FÑ"HÔ"H�Ø"Ð.µzÝ”M¥;ñ8ô 8Ð.ð 'Ô5ð ?Ø'Ô6×<Ò<Ñ>Ô>Ð>ð#ð #à%4Ô%@ð#ñ #ô #�Kð
#ð #ð #ð #å!*¤°½a¼mÑ!LÔ!Lð#ñ #ô #�K�Kð#ð #ð #ð #õ  *­!¬-½ÑEÔEð/˜DÔ/Ð/å!"¤ð#ñ #ô #�Kð Ô&ð (ØBÐBÐBÐBÐBÐBð*ð *ð *ð *ð *å)2°4Ô3DÑ)EÔ)Eð*ñ *ô *Ð&ð  2ð (ð (˜ð '2°#Ô&6˜Ý)¨+µu´|ÑDÔDÐDÐDÐDØ+AÐ+AÀ+Ñ+NÔ+N˜ CÑ(Ø'˜KØ"Ð"r}   FTNztriton.autotune_at_compile_time)ru   rÝ  )!rß   rA  r  r)   r1  r2  rI  Úautotune_with_sample_inputsrƒ   r*   rü  rõ  rq   Úcodegenr  Úcompile_to_moduleÚcallr‰   rŽ  r�  r�  rS  r  rR  rX  rc   ru  r:  Úprecomputed_replacementsÚinv_precomputed_replacementsr+   ÚresetÚpatch)r�  Úhas_gpuÚneeds_cpu_triton_two_passr  Úuser_defined_kernelsr¥   r  Úcompileds   `       r{   Úcodegen_with_cpp_wrapperz&GraphLowering.codegen_with_cpp_wrapper•	  sB  ø€ õ ÐPÐPÐPÐPÀÐPÑPÔPÑPÔPˆð
 �TÔ&Ð&ð Ø”ðå”MÔ:Ð:ðõ ð ð ØEIÄ_ðñ ô ñ ô ð	 	"ð ð q	"Ð/ñ q	"ðD#ð D#ð D#ð D#ð D#ð D#õL Œ}Ô5ð &*õ ”=Ô<ð 	?Ø+0Ð(Ø"œoð "ð "˜Ý% b­"Ô*DÑEÔEð "Ø37Ð0Ø!˜Eð"ð ,ð ?Ø&9Ð&9Ñ&;Ô&;˜Ø×4Ò4°[ÑAÔAÐAÝ8¸Ñ>Ô>Ð>Ø—|’|‘~”~Ð%à”}ð *ð  Ÿ<š<™>œ>Ð)ð $)�Ô Ø×1Ò1Ñ3Ô3Ô8�à1Ð1Ñ3Ô3�Ý”[Ô1×HÒHÑJÔJð *ð *Ø�H˜[Ñ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *àð $(�Ô ØÔ$×*Ò*Ñ,Ô,Ð,ØÔ'×-Ò-Ñ/Ô/Ð/ØÔ'×-Ò-Ñ/Ô/Ð/Ý”Ô Ô9×?Ò?ÑAÔAÐAÝ”Ô Ô=×CÒCÑEÔEÐEÝ”‘”�Ý”\Ð#DÀeÐ"LÑMÔMð *ð *ØŸ<š<™>œ>ð*ð *ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð *ð *ð —<’<‘>”>Ð!s$   Å E8Å8E<Å?E<ÉI0É0I4É7I4c                ó˜   — ddl m} t          j        dd¦  «        5   || j        ¦  «        | _         ddd¦  «         dS # 1 swxY w Y   dS )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).
        r(   )Ú	Schedulerztriton.store_cubinFN)rm  r%  r)   r  rI  )r�  r%  s     r{   Ú_update_schedulerzGraphLowering._update_scheduler 
  s    € ð 	)Ð(Ð(Ð(Ð(Ð(åŒ\Ð.°Ñ6Ô6ð 	8ð 	8Ø&˜Y t¤Ñ7Ô7ˆDŒNð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8s   œ?¿AÁAc                ó4  — t          dd¬¦  «        5  |                      ¦   «          |                      ¦   «          t          j                             | j        | j        j        ¦  «         | j	         
                    | ¦  «         | j                             ¦   «          t                               dt          j        j        ¦  «         | j	                             | j        ¦  «        }| j	                             ¦   «          |cd d d ¦  «         S # 1 swxY w Y   d S )NzGraphLowering.codegenT©Úlog_pt2_compile_eventzFFinished codegen for all nodes. The list of kernel names available: %s)r   rÜ  r&  rc   r  Údraw_orig_fx_graphr|  rm  rè   rZ  Úpush_codegened_graphr  r   ru  r†  Úgenerater  Úpop_codegened_graph)r�  rÄ   s     r{   r  zGraphLowering.codegen+
  s<  € ÝÐ1ÈÐNÑNÔNð 	ð 	Ø×"Ò"Ñ$Ô$Ð$à×"Ò"Ñ$Ô$Ð$ÝŒG×&Ò& t¤|°T´^Ô5IÑJÔJÐJàÔ×2Ò2°4Ñ8Ô8Ð8ØŒN×"Ò"Ñ$Ô$Ð$å�IŠIØXÝ”Ô0ñô ð ð
 Ô&×/Ò/°Ô0AÑBÔBˆFØÔ×1Ò1Ñ3Ô3Ð3Øð!	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ’C.DÄDÄDÚparent_graphc                óD  — t          dd¬¦  «        5  |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |                      ¦   «          | j         	                    ¦   «          ddd¦  «         dS # 1 swxY w Y   dS )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   rZ  rY  r  rA  rB  rC  r&  rm  r  )r�  r.  s     r{   Úcodegen_subgraphzGraphLowering.codegen_subgraph>
  sä   € õ Ð:ÐRVÐWÑWÔWð 		%ð 		%Ø ,Ô 9ˆDÔØ*Ô5ˆDŒOØ+Ô7ˆDÔØ ,Ô 9ˆDÔØ+Ô7ˆDÔØ+Ô7ˆDÔà×"Ò"Ñ$Ô$Ð$ØŒN×"Ò"Ñ$Ô$Ð$ð		%ð 		%ð 		%ñ 		%ô 		%ð 		%ð 		%ð 		%ð 		%ð 		%ð 		%ð 		%øøøð 		%ð 		%ð 		%ð 		%ð 		%ð 		%s   ’A6BÂBÂBúVtuple[int, list[tuple[BaseSchedulerNode, int]], list[tuple[BaseSchedulerNode, float]]]c                óî   — d}g }g }| j         j        D ]^}|                     ¦   «         }||z  }|                     ||dz  f¦  «         |                     ||                     ¦   «         f¦  «         Œ_|||fS )Nr   rL  )rm  rè   Úget_read_write_buffers_sizesrÃ   Úget_estimated_runtime)r�  Útotal_bytesÚnode_countsÚnode_runtimesr¯   Ú	num_bytess         r{   rÊ  zGraphLowering.count_bytesS
  s–   € ð
 ˆØˆØˆØ”NÔ(ð 	Gð 	GˆDØ×9Ò9Ñ;Ô;ˆIØ˜9Ñ$ˆKØ×Ò  i°1¡nÐ5Ñ6Ô6Ð6Ø× Ò  $¨×(BÒ(BÑ(DÔ(DÐ!EÑFÔFÐFÐFà˜K¨Ð6Ð6r}   zCallable[[str], None] | NoneÚsave_output_codeÚCompiledModulec                ó„   — t          dddd¬¦  «        5  |                      ¦   «         cd d d ¦  «         S # 1 swxY w Y   d S )NzGraphLowering.compile_to_moduleÚcode_genTÚ,inductor_code_gen_cumulative_compile_time_us)Ú
phase_namer)  Údynamo_compile_column_us)r   Ú_compile_to_moduler“  s    r{   r  zGraphLowering.compile_to_modulef
  s˜   € ÝØ-Ø!Ø"&Ø%Sð	
ñ 
ô 
ð 	-ð 	-ð ×*Ò*Ñ,Ô,ð	-ð 	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	-ð 	-s   ”5µ9¼9c                ó@  — | j         r|                      ¦   «         n|                      ¦   «         \  }}t          |t          ¦  «        r|                      |¦  «        }n7t          |t          ¦  «        r|}nt          dt          |¦  «        › �¦  «        ‚|j	        €J ‚t          |j	        ¦  «         t                               d|j	        ¦  «         t          j        d|j	        ¦  «         t          j        r#t#          d|j	        › �t$          j        ¬¦  «         t          |t          ¦  «        rnt(          j                             |j	        ¦  «         t(          j                             t.          j                             |j	        ¦  «        d         dz   ¦  «         |S )Nz Unrecognized wrapper code type: úOutput code written to: %szCompiled module path: )Úfiler   ú.debug)r  r#  r  rƒ   ra   Ú_compile_to_module_linesr.   ÚNotImplementedErrorr¶   Ú__file__rr   r   r  ro   r%  r)   Úbenchmark_kernelÚprintrÎ  Ústderrrc   Úoutput_coder7  ÚosÚpathÚsplitext)r�  rZ  rš  Úmods       r{   r@  z GraphLowering._compile_to_moduleo
  st  € ð 04Ô/?ÐSˆD×)Ò)Ñ+Ô+Ð+ÀTÇ\Â\Á^Ä^ñ 	ˆ�aõ �lÕ$4Ñ5Ô5ð 	Ø×/Ò/°Ñ=Ô=ˆCˆCÝ˜Õ&;Ñ<Ô<ð 	ØˆCˆCå%ØGµ4¸Ñ3EÔ3EÐGÐGñô ð ð Œ|Ð'Ð'Ð'å˜œÑ%Ô%Ð%Ý�	Š	Ð.°´Ñ=Ô=Ð=ÝÔÐ9¸3¼<ÑHÔHÐHÝÔ"ð 	LÝÐ9¨3¬<Ð9Ð9ÅÄ
ÐKÑKÔKÐKÝ�lÕ$9Ñ:Ô:ð 	GÝŒG×Ò ¤Ñ-Ô-Ð-ÝŒG�LŠL�œ×)Ò)¨#¬,Ñ7Ô7¸Ô:¸XÑEÑFÔFÐFàˆ
r}   rZ  ra   c                ó  ‡‡
— ddl m} t          j        j        rj| j        j                             ¦   «         }|                     dd¦  «        }d|z   | j        j	                             ¦   «         z   dz   }|‰j
        z   ‰_
        t          j        �t                               ‰j
        ¦  «         t          j        d‰j
        ¦  «         t          j        ¦   «         }t#          j        |‰j
        ¬¦  «         	 d	„ ‰j        D ¦   «         }|                     ‰j
        ¦  «        \  }Š
t          j        d
‰
¦  «         t*          j                             ‰
¦  «         t*          j                             t0          j                             ‰
¦  «        d         dz   ¦  «         t7          dˆ
fd„ˆfd„¬¦  «         n## t8          $ r t7          dˆfd„¬¦  «         ‚ w xY wt;          dd¬¦  «        5  |                     |‰
|i | j        ¥| j         ¥| j!        ¥¬¦  «        }d d d ¦  «         n# 1 swxY w Y   || _"        ‰
| _#        || _$        t          j%        r8t          j&        r,| '                    ¦   «         }	| (                    |	dd¬¦  «         |S )Nr(   )ÚPyCodeCachez"""z\"\"\"z&r"""
Compile-time auto-tuning block: 
z"""
zOutput code: 
%s)Úcodec                ó&   — g | ]\  }}||j         f‘ŒS ry   r´  )r¤  Úline_nor¯   s      r{   r¥  z:GraphLowering._compile_to_module_lines.<locals>.<listcomp>¨
  s4   € ð ð ð á!�G˜Tð ˜$Ô*Ð+ðð ð r}   rB  r   rD  Úinductor_output_codec                 óH   •— ‰ t           j                             ‰ ¦  «        dœS )N)ÚfilenameÚ	file_path)rL  rM  Úabspath)rM  s   €r{   rZ  z8GraphLowering._compile_to_module_lines.<locals>.<lambda>»
  s#   ø€ Ø $Ý!#¤§¢°Ñ!6Ô!6ðð € r}   c                 ó   •— ‰ j         S rx   rë  r  s   €r{   rZ  z8GraphLowering._compile_to_module_lines.<locals>.<lambda>¿
  ó
   ø€  <Ô#5€ r}   )Ú
payload_fnc                 ó   •— ‰ j         S rx   rë  r  s   €r{   rZ  z8GraphLowering._compile_to_module_lines.<locals>.<lambda>µ
  r[  r}   zPyCodeCache.load_by_key_pathTr(  )ÚlinemapÚattrs)ÚtimesÚrepeat))Ú	codecacherQ  r)   r1  r2  rZ  Úkernel_autotune_defsÚgetvalueÚreplaceÚkernel_autotune_callsrh  r  r9  ro   r  rS   Úinductor_meta_from_configrT   Úbegin_compileÚline_mapÚwriterc   rK  r7  rL  rM  rN  r   rÀ  r   Úload_by_key_pathrK  rN  rO  rv  rw  rx  Úbenchmark_harnessÚprofile_bandwidth_outputÚget_argsÚbenchmark_compiled_module)r�  rZ  rQ  rc  Útuning_codeÚinductor_metar^  r;  rO  rs   rM  s    `        @r{   rE  z&GraphLowering._compile_to_module_linesŽ
  s4  øø€ ð 	+Ð*Ð*Ð*Ð*Ð*åŒ=Ô1ð 	Bà#'Ô#4Ô#I×#RÒ#RÑ#TÔ#TÐ Ø#7×#?Ò#?ÀÀ{Ñ#SÔ#SÐ ð7à&ñ'ð Ô#Ô9×BÒBÑDÔDñEð ñ	ð ð "-¨|Ô/AÑ!AˆLÔÝÔ)Ð5Ý×*Ò*¨<Ô+=Ñ>Ô>Ð>ÝÔÐ1°<Ô3EÑFÔFÐFå&Ô@ÑBÔBˆÝÔ*¨=¸|Ô?QÐRÑRÔRÐRð	ðð à%1Ô%:ðñ ô ˆGð $×)Ò)¨,Ô*<Ñ=Ô=‰IˆC�ÝÔ!Ð">ÀÑEÔEÐEåŒG×Ò Ñ%Ô%Ð%ÝŒG�LŠL�œ×)Ò)¨$Ñ/Ô/°Ô2°XÑ=Ñ>Ô>Ð>õ Ø&ðð ð ð ð 6Ð5Ð5Ð5ðñ ô ð ð øõ ð 	ð 	ð 	ÝØ&à5Ð5Ð5Ð5ðñ ô ð ð
 ð	øøøõ  Ð8ÐPTÐUÑUÔUð 
	ð 
	Ø×.Ò.ØØØðØ”nðàÔ.ðð Ô4ðð	 /ñ 	ô 	ˆCð
	ð 
	ð 
	ñ 
	ô 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	øøøð 
	ð 
	ð 
	ð 
	ð ˆŒØˆŒØ$ˆÔåÔ#ð 	C­Ô(Gð 	Cà—<’<‘>”>ˆDØ×)Ò)¨$°aÀÐ)ÑBÔBÐBàˆ
s   Ã8B'F8 Æ8 GÇ,/H'È'H+È.H+c                óÎ  — g }t          j        d¦  «        }t          j        d¦  «        }|D ]·}t          |t          j        ¦  «        r-|                     | j        › dt          |¦  «        › �¦  «         ŒIt          |t          j        ¦  «        r-|                     | j        › dt          |¦  «        › �¦  «         Œ�|                     | 	                    ¦   «         ¦  «         Œ¸|S )Nr   Ú_noneÚ_shape)
r‡  rˆ  rƒ   r*   ÚNoneAsConstantBufferrÃ   r"  rj  rB   r  )r�  r	  ÚnamesÚshape_counterÚnone_counterr¯   s         r{   Ú_get_output_nameszGraphLowering._get_output_names×
  sÚ   € ØˆÝ!œ¨Ñ*Ô*ˆÝ ” qÑ)Ô)ˆØ!ð 	.ð 	.ˆDÝ˜$¥Ô 7Ñ8Ô8ð .Ø—’ ¤	ÐDÐDµ°\Ñ0BÔ0BÐDÐDÑEÔEÐEÐEÝ˜D¥"Ô":Ñ;Ô;ð .Ø—’ ¤	ÐFÐFµ°mÑ1DÔ1DÐFÐFÑGÔGÐGÐGà—’˜TŸ]š]™_œ_Ñ-Ô-Ð-Ð-Øˆr}   c                ó6   — |                       | j        ¦  «        S rx   )ry  r	  r“  s    r{   Úget_output_nameszGraphLowering.get_output_namesä
  s   € Ø×%Ò% dÔ&8Ñ9Ô9Ð9r}   c                ó  — || j         v op| j         |                              ¦   «         dk    oMt          | j         |                              ¦   «         ¦  «        dk    ot	          | j         |         ¦  «        dk    p|| j        v S )Nr(   r   rµ   )r<  rÐ  r   r¾  r=   r@  r  s     r{   Úis_unspec_argzGraphLowering.is_unspec_argç
  s’   € ð �DÔ%Ð%ð BØÔ! $Ô'×1Ò1Ñ3Ô3°qÒ8ðBå�DÔ% dÔ+×4Ò4Ñ6Ô6Ñ7Ô7¸1Ò<ðBõ   Ô 1°$Ô 7Ñ8Ô8¸EÒAð	3ð
 �TÔ2Ð2ð	3r}   )NNNFFNNFFFNNNNNNFN)(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'  ru   rv   )ru   rv   )r”  r²   ru   r•  )r”  r²   ru   rœ  )r”  r²   ru   r³  )r¯   r¹  ru   rº  )r¯   rÀ  ru   r	   )r
   rÅ  rÆ  r,   ru   r³   )T)rÉ  rm   rÊ  r³   ru   rË  )ru   r×  )r
   r×  ru   rÛ  rv  )r
  rj   r  r³   ru   r³   )r"  r‘   ru   r‘   )r
  r  r  r  r  r‘   ru   r  )ru   r  )r"  r‘   ru   rv   )r
   r×  ru   rv   )ru   r*  )ru   r³   )r4  r‘   ru   r5  )r;  r€   ru   rv   )r4  r‘   ru   r>  )r4  r‘   ru   rC  )r4  r‘   ru   rM  )rs   r   ru   r   )r¥   rS  ru   r‘   )rZ  r[  rY  r³   ru   r‘   )r`  ra  ru   r‘   )re  rf  ru   rv   )r"  r‘   ru   r²   )r"  r  r¼  r   ru   r‘   rx   )r¼  r   r"  r  ru   rD   )r"  r‘   r‡  rˆ  ru   r‘   )r�   r‘   rs   r“  rt   r”  ru   r•  )r�   rd   rs   r   rt   r¡  ru   r   ©r±   r²   ru   r³   )r�   r‘   rs   rÓ  rt   r”  ru   rÔ  )r�   r   rs   r   rt   r   ru   r   )r�   rç  rs   rè  rt   r”  ru   rv   )r¯   rÌ   )ru   rÛ  )r  rÌ   rÉ  r  rÊ  r¡  r  r  r  r¡  ru   rv   )rå  rÌ   ru   r  )rå  rÌ   ru   rv   )rå  rÌ   ru   rF  )rå  rÌ   r¯  r±  ru   rv   ©FNNN©
rÑ  r³   r  r  rÒ  rÓ  rÔ  rÕ  ru   rv   )r  rÝ  ru   rv   )ru   rö  )r.  r  ru   rv   )ru   r1  )ru   r:  )rZ  ra   ru   r:  )r	  r  ru   ra  )ru   ra  )r"  r‘   ru   r³   )MÚ__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r/  r’  r›  r—  r¸  r¿  rÄ  rÈ  rÖ  rÚ  Ú
contextlibr   rÝ  râ  Ústaticmethodr0  r  r  rr  r&  r)  Úpropertyr,  r3  r:  r=  rB  rG  rÐ  rR  rW  r_  rd  ro  rr  ru  r‚  r†  r  r˜  Útyping_extensionsÚoverriderÏ   rÒ  rÞ  rã  ræ  r£   r  r  r  r¿  r>  rE  r~  r¢  rÐ  rÜ  rõ  r#  r&  r  r0  rÊ  r9  r  r@  rE  ry  r{  r}  Ú__classcell__©r�  s   @r{   r  r  j  sá  ø€ € € € € € ØIÐIà"Ð"Ð"Ñ"ð
 37Ø%)Ø#Ø!ØØ"&àØ"Ø!Ø$Ø48Ø)-Ø(,Ø-1ØØ04Ø ØMQð+]Cð ]Cð ]Cð ]Cð ]Cð ]Cð ]Cð~1ð 1ð 1ð 1ðð ð ð ð)2ð )2ð )2ð )2ðVð ð ð ð#ð #ð #ð #ð*Eð Eð Eð EðMð Mð Mð Mð<ð <ð <ð <ð <ð:4ð 4ð 4ð 4ð Ôð(ð (ð (ñ Ôð(ðð ð ð ð ð^ð ^ð ^ñ „\ð^ð@ð ð ð ð
ð 
ð 
ð 
ð6>ð >ð >ð >ð@Að Að Að Að
Dð Dð Dð Dð ðð ð ñ „Xðð ð	?ð 	?ð 	?ñ „Xð	?ðð ð ð ð$Fð Fð Fð FðQð Qð Qð Qð8ð 8ð 8ð 8ð,
8ð 
8ð 
8ð 
8ð&ð &ð &ð &ð &ð &ðð ð ð ð FKð ð ð ð ð ð ð(ð ð ð ð
	ð 	ð 	ð 	ðð ð ð ð
ð 
ð 
ð 
ð ð ð ð ð:
ð 
ð 
ð 
ð 
ð&&ð &&ð &&ð &&ðRið ið ið ið ið iðV Ôð_8ð _8ð _8ð _8ð _8ñ  Ôð_8ðB ð5ð 5ð 5ñ „\ð5ð97ð 97ð 97ð 97ðvð ð ð ðð ð ð ð Ôðj
ð j
ð j
ð j
ð j
ñ  Ôðj
ðX ð  ð  ð  ð ð$ð $ð $ñ „^ð$ð ð$ð $ð $ñ „^ð$ðI:ð I:ð I:ð I:ðV ð6ð 6ð 6ñ „\ð6ð#ð #ð #ð #ð$Rð Rð Rð Rð Rð RðhU;ð U;ð U;ð U;ðnQð Qð Qð Qð "Ø$(Ø;?Ø?Cð#Wð #Wð #Wð #Wð #WðJ]0ð ]0ð ]0ð ]0ð~I"ð I"ð I"ð I"ðV	8ð 	8ð 	8ð 	8ðð ð ð ð&%ð %ð %ð %ð*7ð 7ð 7ð 7ð" 6:ÐÐ9Ð9Ð9Ñ9ð-ð -ð -ð -ðð ð ð ð>Gð Gð Gð GðRð ð ð ð:ð :ð :ð :ð3ð 3ð 3ð 3ð 3ð 3ð 3ð 3r}   r  c                  ó:   ‡ — e Zd ZdZdˆ fd	„Z	 	 	 	 ddˆ fd„Zˆ xZS )r  zŽ
    Mostly a helper class for the subgraph lowering. The main goal is to call
    init_wrapper_code with the subgraph related arguments.
    r  r  rs   r   rt   ru   rv   c                óH   •— || _          t          ¦   «         j        |i |¤Ž d S rx   )r  r.  r/  )r�  r  rs   rt   r�  s       €r{   r/  zSubgraphLowering.__init__ø
  s,   ø€ ØˆŒØ�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ð)Ð)r}   FNrÑ  r³   r  r  rÒ  rÓ  rÔ  rÕ  c                ón   •— t          ¦   «                              d| j        | j        j        ¬¦  «         d S )NT)rÑ  r  rÒ  )r.  rÜ  r"  r  rZ  )r�  rÑ  r  rÒ  rÔ  r�  s        €r{   rÜ  z"SubgraphLowering.init_wrapper_codeü
  s@   ø€ õ 	‰Œ×!Ò!ØØœ)Ø $¤Ô 8ð 	"ñ 	
ô 	
ð 	
ð 	
ð 	
r}   )r  r  rs   r   rt   r   ru   rv   r  r€  )r�  r‚  rƒ  r„  r/  rÜ  r‹  rŒ  s   @r{   r  r  ò
  sx   ø€ € € € € ðð ð
*ð *ð *ð *ð *ð *ð "Ø$(Ø;?Ø?Cð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r}   r  )rs   r   rt   r   ru   rv   )r   r€   ru   r�   )r�   rj   r�   r‘   ru   r’   )r    rk   ru   r¡   r~  )r¼   r¡   ru   r½   )r    rk   rÊ   r¡   ru   rv   )r¯   r#   ru   r³   )¹Ú
__future__r   r†  rþ   r‡  Úloggingrµ  rL  rH  rÎ  rf  r‰  Úcollectionsr   r   Útypingr   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'   r+  r)   r*   r+   Úcodegen.commonr,   r-   r.   r/   r0   r1   r2   r3   Úexcr4   r5   r6   r7   Úfx_utilsr8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rÜ  rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   ÚruntimerS   Úruntime.autotune_cacherT   r:  rU   rŽ  rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   Úvirtualizedrb   rc   Úcollections.abcrd   re   rf   rg   Útypesrh   Útorch._higher_order_ops.effectsri   rj   Útorch.fx.graphrk   Úcodegen.wrapperrl   Údependenciesrm   rm  rn   r:  Útorch._inductor.codecachero   Ú	getLoggerr�  r   Ú_loggingÚgetArtifactLoggerr$  rý   rÖ   rˆ  rk  r\  Ú)torch._inductor.fb.triton_kernel_metadatarq   Útorch._inductor.fb.utilsrr   rŽ   rŸ   r°   r»   rÉ   rø   r  rª   rå  r  r  ry   r}   r{   ú<module>r·     s%  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø %Ð %Ð %Ð %Ð %Ð %Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /à €€€Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ø €€€Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð
 ;Ð :Ð :Ð :Ð :Ð :Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4Ø :Ð :Ð :Ð :Ð :Ð :Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø /Ð /Ð /Ð /Ð /Ð /Ø /Ð /Ð /Ð /Ð /Ð /Ø -Ð -Ð -Ð -Ð -Ð -à !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ð !ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ðð ð ð ð ð ð ð ð ð ð ð ð %Ð $Ð $Ð $Ð $Ð $ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð $Ð #Ð #Ð #Ð #Ð #Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø &Ð &Ð &Ð &Ð &Ð &ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð (Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'ð ð 8ØFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFØ Ð Ð Ð Ð Ð à;Ð;Ð;Ð;Ð;Ð;Ø$Ð$Ð$Ð$Ð$Ð$Ø$Ð$Ð$Ð$Ð$Ð$à5Ð5Ð5Ð5Ð5Ð5Ø!Ð!Ð!Ð!Ð!Ð!Ø,Ð,Ð,Ð,Ð,Ð,àÐ"7Ñ7€Nà 5Ð 5Ð 5Ð 5Ð 5Ð 5ð €gÔ˜Ñ!Ô!€Ø”×0Ò0°¸<ÑHÔH€à„y„~€à*˜9œ?Ñ,Ô,Ð à€6ÔÑÔð ðð ð ð ð ð ð 9Ð8Ð8Ð8Ð8Ð8Ð8ðð ð ð ðð ð ð ðð ð ð ð(ð ð ð ðð ð ð ð$Rð Rð Rð Rðð ð ð ð0_3ð _3ð _3ð _3ðDð ð ð ð*E&3ð E&3ð E&3ð E&3ð E&3�E”HÔ(ñ E&3ô E&3ð E&3ðPL
ð 
ð 
ð 
ð 
�}ñ 
ô 
ð 
ð 
ð 
r}   