+
    –°³jyß ã                  ó”  a € 0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIHtHtHtHtHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t% ^ R	I&H't'H(t(H)t)H*t*H+t+H,t,H-t- ^ R
I.H/t/ ^ RI0t0^ RI0H1t1H2t2H3t3 ^ RI4H5u H6u H7t8 ^ RI9H:u H;t; ^ RI<H:u H=t> ^ RI?t@^ RIAt@^ RIBH=u HCtD ^ RIEHFtF ^ RIGHHtH ^ RIIHJtJ ^ RIKHLtL ^ RIMHNtN ^ RIOHPtP ^ RIQHRtRHStS ^ RITHUtUHVtV ^ RIWHXtX ^ RIYHZtZH[t[H\t\H]t]H^t^H_t_ ^ RI`HataHbtbHctcHdtdHeteHftfHgtgHhthHitiHjtjHktk ^ RIlHmtm ^ RInHoto ^ RIpHqtq ^ RIrHstsHtttHutuHvtvHwtwHxtx ^ RIyHztz ^RI{H|t|H}t} ^RI~HtH€t€H�t�H‚t‚Hƒtƒ ^RI}H„t„H…t…H†t†H‡t‡HˆtˆH‰t‰ ^RIŠH‹t‹ ^R IŒH�t�HŽtŽH�t�H�t� ^R!I‘H’t’ ^R"I“H”t”H•t• ^R#I=H–t–H—t—H˜t˜H™t™HštšH›t›HœtœH�t�HžtžHŸtŸH t H¡t¡H¢t¢H£t£H¤t¤H¥t¥H¦t¦H§t§H¨t¨H©t©HªtªH«t«H¬t¬ ^R$I­H®t®H¯t¯H°t° ]"'       d2   ^ R%I`H±t± ^ R&IlH²t² ^ R'I³H´t´ ^R(IµH¶t¶ ^R)I·H¸t¸ ^R*I¹Hºtº ^R+I»H¼t¼ ^R,I=H½t½ M]¾t¶R-]¿R.&    ^ RIÀtÀ]ÀEP‚                  tÂR/tÃ]*! R14      tÅ]$! R24      tÆ]$! R34      tÇ]$! R44      tÈ]É]1,          tÊR-]¿R5&   ]É]Ë,          ]1,          tÌR-]¿R6&   ]@EPš                  EPœ                  ]@EPš                  EPž                  ,          tÐR-]¿R7&    ! R8 R9],R0R:7      tÑ]EP¤                  ! ]Ó4      tÔ]P,                  ! ]
EPª                  R;R<7      tÕ]@EP\                  EP¬                  tÖ ]%]ÉR=]×]ØR=3,          R>R?]]%]É]×]ØR=3,          R=R>R?3,          R,          ,          3,          tÙR-]¿R@&   RA RB ltÚ]EP¶                  ! R/RC7       ! RD RE4      4       tÜRF RG ltÝRH RI ltÞRJ RK ltßRL RM ltàRN RO ltá. ER…Otâ. ER†OtãER‡RP RQ lltäRR RS ltåER‡RT RU lltæ]ERˆRV RW ll4       tç]ERˆRX RY ll4       tçERˆRZ R[ lltçR\ R] ltèR^ R_ ltéR` Ra ltêRb Rc ltëRd Re ltìRf Rg ltíRh Ri ltîRj Rk ltïRl Rm ltðRn tñ ! Ro R?4      tò]£! R0RC7       ! Rp Rq4      4       tó]£ ! Rr Rs]ò4      4       tôRt Ru ltõ]£ ! Rv Rw]ô4      4       tö]£ ! Rx Ry]ö4      4       t÷Rz]Þ! R{4      R|]Þ! R}4      R~]Þ! R4      R€]Þ! R�4      R‚]Þ! Rƒ4      R„]Þ! R…4      R†]Þ! R…4      R‡]Þ! Rˆ4      /tøR‰]¿RŠ&   ER‰R‹ RŒ lltù]£ ! R� RŽ]ô4      4       túR]2! ^ 4      3R� R� lltû]]]1,          ]]1,          .]¯3,          tüR-]¿R‘&    ! R’ R“]ú4      tý ! R” R•]ý4      tþ ! R– R—]ý4      tÿ ! R˜ R™]ý4      Et ]£ ! Rš R›]ô4      4       Et]£ ! Rœ R�E]4      4       Et]£ ! Rž RŸ]ô4      4       EtR  R¡ lEtR¢ R£ lEtR¤ R¥ lEtERŠR¦ R§ llEtR¨ R© lEtRª R« lEt	]£ ! R¬ R­]ò4      4       Et
]£ ! R® R¯E]
4      4       Et]£ ! R° R±E]
4      4       Et]£ ! R² R³E]
4      4       Et]£ ! R´ RµE]
4      4       Et]£ ! R¶ R·E]4      4       Et]£ ! R¸ R¹E]
4      4       Et]£ ! Rº R»E]
4      4       Et ! R¼ R½E]4      Et]£ ! R¾ R¿]ò4      4       Et]£ ! RÀ RÁE]4      4       Et]£ ! RÂ RÃE]4      4       EtRÄ RÅ lEtRÆ RÇ lEt ! RÈ RÉ4      Et]£ ! RÊ RËE]4      4       Et ! RÌ RÍE]4      Et ! RÎ RÏE]4      Et ! RÐ RÑE]4      Et ! RÒ RÓ]4      Et ! RÔ RÕE]4      Et]£ ! RÖ R×E]4      4       Et ! RØ RÙE]4      Et ]£! R0RC7       ! RÚ RÛ]ò]€4      4       Et!]£! R0RC7       ! RÜ RÝE]!]ó4      4       Et" ! RÞ RßE]!4      Et# ! Rà RáE]#4      Et$ ! Râ RãE]#4      Et%]£ ! Rä Rå]ò4      4       Et&]£ ! Ræ Rç]ò4      4       Et']EP¶                  ! R/RC7       ! Rè Ré4      4       Et(]£! R0RC7       ! Rê RëE]"4      4       Et)]EP¶                  ! R/RC7       ! Rì Rí4      4       Et* ! Rî Rï]4      Et+ ! Rð RñE]"4      Et, ! Rò RóE],4      Et-]É]Ë,          E].,          ]Ø,          E]/]É]Ø,          ]Ë,          E].,          ,          ,          Et0 ! Rô Rõ4      Et1 ! Rö R÷E]14      Et2REs3Rø]¿Rù&   Rú Rû lEt4 ! Rü RýE]-4      Et5 ! Rþ RÿE],4      Et6 ! ER  ERE],4      Et7 ! ER ERE],4      Et8 ! ER ERE],4      Et9ER ER lEt:]£! R0RC7       ! ER ER	E]"4      4       Et; ! ER
 ERE];4      Et< ! ER ERE]<4      Et=]EP|                  ER ER l4       Et?ER ER lEt@]EP¶                  ! R/RC7       ! ER ER4      4       EtA]£! R0RC7       ! ER ERE];4      4       EtB]£! R0RC7       ! ER ERE]B4      4       EtC ! ER ERE]C4      EtD ! ER ERE]B4      EtE ! ER ERE]!4      EtF ! ER ERE]<4      EtG ! ER  ER!E]B4      EtH ! ER" ER#E]H4      EtI ! ER$ ER%E]H4      EtJ ! ER& ER'E]B4      EtK ! ER( ER)E]B4      EtL ! ER* ER+E]B4      EtM ! ER, ER-E]B4      EtN ! ER. ER/E]B4      EtO ! ER0 ER1E]O4      EtP ! ER2 ER3E]E4      EtQ ! ER4 ER5E]E4      EtR ! ER6 ER7E]B4      EtS ! ER8 ER9E]B4      EtT ! ER: ER;E]C4      EtU ! ER< ER=E]B4      EtV ! ER> ER?E]B4      EtW ! ER@ ERAE]B4      EtX ! ERB ERCE]B4      EtY]£! R0RC7       ! ERD ERE4      4       EtZ ! ERF ERGE]E4      Et[]£! R0RC7       ! ERH ERIE][4      4       Et\ ! ERJ ERKE][4      Et]]£ ! ERL ERME]4      4       Et^ ! ERN EROE]B4      Et_ ! ERP ERQE]_4      Et` ! ERR ERSE]_4      EtaERT ERU lEtb ! ERV ERWE][4      Etc]EP¶                   ! ERX ERY]ò4      4       Etd ! ERZ R=E]d4      Ete ! ER[ ER\E]d4      Etf]£! R0RC7       ! ER] ER^]ò4      4       EtgER_ ER` lEth]£! R0RC7       ! ERa ERbE]B4      4       EtiERc ERd lEtj]£! R0RC7       ! ERe ERfE]B4      4       EtkERg ERh lEtl]£! R0RC7       ! ERi ERjE]B4      4       Etm ! ERk ERlE][4      Etn ! ERm ERn]ò4      Eto]£ ! ERo ERpE]o4      4       Etp]£ ! ERq ERrE]o4      4       Etq]£ ! ERs ERtE]o4      4       Etr]£ ! ERu ERvE]o4      4       Ets ! ERw ERxE][4      Ett ! ERy ERzE]t4      Etu ! ER{ ER|E]t4      Etv ! ER} ER~E]t4      EtwER ER€ lEtxER� ER‚ lEtyERƒ ER„ lEtzR#   ]Ä d	    RtÂR0tÃ E
Lœi ; i(‹  é    )ÚannotationsN)ÚCallableÚ	GeneratorÚIterableÚIteratorÚSequence)ÚAbstractContextManagerÚnullcontext)ÚEnum)Úpartial)ÚNumber)ÚAnyÚcastÚClassVarÚLiteralÚoverloadÚProtocolÚSupportsFloatÚSupportsIntÚTYPE_CHECKINGÚ	TypeAliasÚTypeVarÚUnion)Úassert_neverÚNeverÚoverrideÚ	ParamSpecÚSelfÚ	TypedDictÚTypeIs)Úpatch)ÚExprÚIntegerÚSymbol)Úenable_python_dispatcher)Úidentity)ÚGraphModuleSerializer)Úcan_auto_functionalize)Úmetrics©Úget_free_symbols)ÚFakeScriptObjectÚmaybe_to_fake_obj)Úget_opaque_obj_reprÚis_custom_class_obj)Úinner_tree_plan)Úcompute_required_storage_lengthÚis_boolean_dtypeÚ(is_contiguous_for_memory_format_or_falseÚis_float_dtypeÚmake_channels_last_strides_forÚ
StrideType)Ú&_remove_effect_token_unbacked_bindingsÚcompute_unbacked_bindingsÚfree_symbolsÚfree_unbacked_symbolsÚGuardOnDataDependentSymNodeÚhas_free_unbacked_symbolsÚIterateExprsÚrebind_unbackedÚresolve_unbacked_bindingsÚShapeEnvÚSymTypes)ÚNode©Ú
OrderedSet)Ú_disable_current_modes)ÚCleanDivÚFloorDivÚMaxÚMinÚModÚModularIndexing)ÚSymT)ÚconfigÚdependencies)ÚBackendFeatureÚCodegenSymbolÚget_scheduling_for_deviceÚindex_prevent_reorderingÚKernel)ÚDepÚextract_free_symbolsÚ#extract_input_node_reduction_rangesÚextract_read_writesÚSymbolUsageCollectorOpsHandlerÚvar_builder)ÚLoopBody)ÚOpCounterCSEÚOpCountResultÚReductionTypeÚ	StoreMode)Úbenchmarker)ÚDevicePropertiesÚReductionHint)ÚargsortÚargsort_symÚcache_on_selfÚcache_on_self_and_argsÚceildivÚconvert_shape_to_inductorÚconvert_shape_to_symintÚdeveloper_warningÚdo_bench_using_profilingÚdtype_from_sizeÚget_dtype_sizeÚget_kernel_metadataÚGPU_ALIGN_BYTESÚir_dataclassÚ
is_dynamicÚis_gpuÚ	sympy_dotÚsympy_index_symbolÚsympy_index_symbol_with_prefixÚsympy_productÚ
sympy_subsÚtensor_is_alignedÚ	VarRanges)ÚopsÚOpsValueÚV)ÚSympyBoolean)ÚArgument)ÚIntLikeType)ÚCUTLASSTemplate)ÚPythonWrapperCodegen)ÚGraphLowering)ÚGemmReductionPlan)ÚIndentedBufferr   r   TFÚ_PÚ_TÚ_UÚ_VÚ_IntLikeÚ_NumLikeÚ_OpOverloadsc                  ó6   € ] tR t^²t$ R]R&   R]R&   R]R&   RtR# )	ÚArgPropertyÚstrÚnameútorch.JitTypeÚtypeÚobjectÚdefault_value© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r“   ó    ÚS/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_inductor/ir.pyrŒ   rŒ   ²   s   ‡ Ø
ƒIØ
ÓØ×r›   rŒ   )Útotalz  ©ÚprefixÚ	TensorBoxr$   ÚIRNodeÚ_NodeOrNodesc               ó    € V ^8„  d   QhRRRR/# )é   Úxr‘   ÚreturnzTypeIs[int | Integer]r“   )Úformats   "rœ   Ú__annotate__r¨   ò   s   € ÷ )ñ )�&ð )Ð2ñ )r›   c                ó.   € \        V \        \        34      # ©N)Ú
isinstanceÚintr#   ©r¥   s   &rœ   Ú
_is_staticr®   ò   s   € Ü�aœ#œw˜Ó(Ð(r›   )Úfrozenc                  óT   € ] tR t^öt$ R]R&   R]R&   R]R&   R]R&   R	]R
&   R]R&   RtR# )ÚGraphPartitionSignatureúOrderedSet[sympy.Symbol]Úsymbol_inputsz*dict[str, IRNode | Expr | TorchBindObject]Úinput_nodesúlist[IRNode]Úoutput_nodeszdict[str, bool]Úinput_deallocationÚboolÚskip_cudagraphú	list[str]Úconstant_namesr“   Nr”   r“   r›   rœ   r±   r±   ö   s.   ‡ ð ,Ó+ð <Ó;ØÓð (Ó'ØÓð ×r›   r±   c               ó    € V ^8„  d   QhRRRR/# )r¤   Únode_or_nodesú_NodeOrNodes | Noner¦   ÚNoner“   )r§   s   "rœ   r¨   r¨   	  s   € ÷ !$ñ !$Ð2ð !$°tñ !$r›   c                ó*   a€ R  V3R lloS! V 4       R# )c               ó    € V ^8„  d   QhRRRR/# )r¤   Únodesr¾   r¦   r¿   r“   )r§   s   "rœ   r¨   Ú!validate_ir.<locals>.__annotate__
  s   € ÷ ñ Ð 3ð ¸ñ r›   c                óÔ  <€ V f   R # \        V \        \        34      '       d   V  F  pS! V4       K  	  R # \        V \        4      '       d"   V P	                  4        F  pS! V4       K  	  R # \        V \
        \        \        \        \        P                  P                  P                  \        \        \        \         \"        3
4      '       g   \%        R\'        V 4       R24      hR # )NzFound zE, which is not a supported top level IR node. See [Note: Inductor IR])r«   ÚlistÚtupleÚdictÚvaluesÚ
ExpandViewÚDynamicScalarÚAssertScalarr    ÚsympyÚlogicÚboolalgÚBooleanr"   r¬   ÚEffectfulKernelÚShapeAsConstantBufferÚOpaqueMultiOutputÚAssertionErrorr�   )rÂ   ÚnodeÚ_check_tensorboxs   & €rœ   rÕ   Ú%validate_ir.<locals>._check_tensorbox
  s¿   ø€ ð Š=ÙÜ˜¤¤e˜}×-Ò-Û�Ù  Ö&ó ä˜œt×$Ò$ØŸ™ž�Ù  Ö&ó 'ô ØäÜ!Ü ÜÜ—K‘K×'Ñ'×/Ñ/ÜÜÜ#Ü)Ü%ð÷ò ô %ØœT %›[˜MÐ)nÐoóð ñr›   Nr“   )r½   rÕ   s   &@rœ   Úvalidate_irr×   	  s   ø€ ÷ð ñ@ �]Ö#r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   rŽ   r�   r¦   úCallable[..., OpsValue]r“   )r§   s   "rœ   r¨   r¨   -  s   € ÷ ñ �cð Ð5ñ r›   c                ón   a € \        S \        4      '       g   \        \        S 4      4      hR  V 3R llpV# )c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   Úargsr‘   Úkwargsr¦   rz   r“   )r§   s   "rœ   r¨   Ú!ops_wrapper.<locals>.__annotate__1  s!   € ÷ 3ñ 3�&ð 3 Fð 3¨xñ 3r›   c                 ó0   <€ \        \        S4      ! V / VB # rª   )Úgetattrry   )rÜ   rÝ   rŽ   s   *,€rœ   ÚfnÚops_wrapper.<locals>.fn1  s   ø€ Ü”s˜DÔ! 4Ð2¨6Ñ2Ð2r›   )r«   r�   rÓ   r�   )rŽ   rá   s   f rœ   Úops_wrapperrã   -  s0   ø€ Ü�dœC× Ò ÜœT $›ZÓ(Ð(÷3ð 3ð €Ir›   c               ó    € V ^8„  d   QhRRRR/# ©r¤   ÚorderúSequence[int]r¦   z&Callable[[Sequence[_T]], Sequence[_T]]r“   )r§   s   "rœ   r¨   r¨   7  s   € ÷ ñ ˜=ð Ð-Sñ r›   c           
     óh   a€ \        \        V \        \        V 4      4      4      4      oR  V3R llpV# )c               ó    € V ^8„  d   QhRRRR/# ©r¤   ÚindexúSequence[_T]r¦   r“   )r§   s   "rœ   r¨   Ú%inverse_reorder.<locals>.__annotate__:  s   € ÷ @ñ @�|ð @¨ñ @r›   c                ó¸   <€ \        V 4      \        S4      8w  d   \        R 4      h\        \        V 4      4       Uu. uF  qSV,          ,          NK  	  up# u upi )z%Expected len(index) == len(inv_order)©ÚlenrÓ   Úrange)rë   ÚiÚ	inv_orders   & €rœ   ÚreindexÚ inverse_reorder.<locals>.reindex:  sL   ø€ Üˆu‹:œ˜Y›Ô'Ü Ð!HÓIÐIÜ-2´3°u³:Ô->Ó?Ñ->¨�i •l×#Ð#Ñ->Ñ?Ð?ùÒ?ó   ¼A)rÇ   Úziprñ   rð   )ræ   rô   ró   s   & @rœ   Úinverse_reorderrø   7  s0   ø€ Ü”S˜¤¤c¨%£jÓ 1Ó2Ó3€I÷@ð @ð
 €Nr›   c               ó    € V ^8„  d   QhRRRR/# rå   r“   )r§   s   "rœ   r¨   r¨   B  s   € ÷ ñ ˜ð Ð*Pñ r›   c                ó   a € R  V 3R llpV# )c               ó    € V ^8„  d   QhRRRR/# rê   r“   )r§   s   "rœ   r¨   Ú"same_reorder.<locals>.__annotate__C  s   € ÷ <ñ <�|ð <¨ñ <r›   c                ó¸   <€ \        V 4      \        S4      8w  d   \        R 4      h\        \        V 4      4       Uu. uF  qSV,          ,          NK  	  up# u upi )z!Expected len(index) == len(order)rï   )rë   rò   ræ   s   & €rœ   rô   Úsame_reorder.<locals>.reindexC  sJ   ø€ Üˆu‹:œ˜U›Ô#Ü Ð!DÓEÐEÜ).¬s°5«zÔ):Ó;Ñ): A�e˜A•h—�Ñ):Ñ;Ð;ùÒ;rö   r“   )ræ   rô   s   f rœ   Úsame_reorderrÿ   B  s   ø€ ÷<ð <ð
 €Nr›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   Úreindex1z&Callable[[Sequence[_U]], Sequence[_V]]Úreindex2z&Callable[[Sequence[_T]], Sequence[_U]]r¦   ú&Callable[[Sequence[_T]], Sequence[_V]]r“   )r§   s   "rœ   r¨   r¨   K  s&   € ÷ ñ Ø4ðà4ðð ,ñr›   c                ó   a a€ R  V V3R llpV# )c               ó    € V ^8„  d   QhRRRR/# )r¤   rë   rì   r¦   zSequence[_V]r“   )r§   s   "rœ   r¨   Ú%fuse_reindexing.<locals>.__annotate__O  s   € ÷ )ñ )�|ð )¨ñ )r›   c                ó    <€ S! S! V 4      4      # rª   r“   )rë   r  r  s   &€€rœ   rô   Ú fuse_reindexing.<locals>.reindexO  s   ø€ Ù™ ›Ó(Ð(r›   r“   )r  r  rô   s   ff rœ   Úfuse_reindexingr	  K  s   ù€ ÷)ñ )ð €Nr›   c               ó$   € V ^8„  d   QhRRRRRR/# ©r¤   Úseqz#Sequence[int | torch.SymInt | Expr]Ú	shape_envúShapeEnv | Noner¦   rç   r“   )r§   s   "rœ   r¨   r¨   Y  s$   € ÷ ñ Ø	,ðØ9Hðàñr›   c                ó²   € Ve;   \         ;QJ d    R V  4       F  '       d   K   RM	  RM! R V  4       4      '       d   \        V 4      pV# \        W4      pV# )z)
Convert strides to fill order (argsort)
c              3  ób   "  € T F%  p\        V\        \        P                  34      x € K'  	  R # 5irª   ©r«   r¬   rÌ   r#   ©Ú.0Úss   & rœ   Ú	<genexpr>Ú!get_fill_order.<locals>.<genexpr>_  s#   é € ÐQÉSÈ¤
¨1¬s´E·M±MÐ.B× CÐ CËSùó   ‚-/FT)Úallrb   rc   )r  r  Ú
sorted_idxs   && rœ   Úget_fill_orderr  Y  sM   € ð ÒŸC›CÑQÉSÓQŸCŸCšCÑQÉSÓQ×QÒQÜ$+¨C£Lˆ
ð Ðô ! Ó0ˆ
ØÐr›   c               ó    € V ^8„  d   QhRRRR/# )r¤   ræ   úSequence[int | Integer]r¦   rç   r“   )r§   s   "rœ   r¨   r¨   g  s   € ÷ 	ñ 	Ð#:ð 	¸}ñ 	r›   c                óª   € \        V 4       UUu/ uF  w  rW!bK	  	  ppp\        \        V 4      4       Uu. uF  qCV,          NK  	  ppV# u uppi u upi )zx
Convert stride order to fill order
For channel last format,

stride order = [3, 0, 2, 1] and fill order = [1, 3, 2, 0]
)Ú	enumeraterñ   rð   )ræ   ÚidxÚposÚlookuprò   Ú
fill_orders   &     rœ   Ústride_order2fill_orderr#  g  sT   € ô (1°Ô'7Ô8Ñ'7™8˜3ˆcŠhÑ'7€FÑ8Ü%*¬3¨u«:Ô%6Ó7Ñ%6 ˜—)�)Ñ%6€JÐ7ØÐùó 9ùÚ7s
   �A
µAc               ó$   € V ^8„  d   QhRRRRRR/# r  r“   )r§   s   "rœ   r¨   r¨   s  s$   € ÷ 
ñ 
Ø	,ð
Ø9Hð
àñ
r›   c                óœ   € \        W4      p\        \        V 4      4       Uu. uF  p^ NK  	  pp\        V4       F	  w  rVWTV&   K  	  V# u upi )z!
Convert strides to stride order
)r  rñ   rð   r  )r  r  r  Ú_Úoutrò   Úelems   &&     rœ   Úget_stride_orderr)  s  sL   € ô !/¨sÓ >€JÜœC ›H”oÓ
&‘o�‹1‘o€CÐ
&Ü˜ZÖ(‰ˆØˆD‹	ñ )à€Jùò 's   ¢A	c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r¥   r¿   Úreplace_symbols_with_hintsr¸   r¦   r“   )r§   s   "rœ   r¨   r¨   �  s   € × UÑ U˜Ð U¸4Ð UÈDÑ Ur›   c                ó   € R # rª   r“   ©r¥   r+  s   &&rœ   Úir_node_to_tensorr.  €  s   € ÙRUr›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r¥   r¡   r+  r¸   r¦   útorch.Tensorr“   )r§   s   "rœ   r¨   r¨   …  s$   € ÷ ñ ØðØ+/ðàñr›   c                ó   € R # rª   r“   r-  s   &&rœ   r.  r.  „  s   € ñ r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r¥   úIRNode | Noner+  r¸   r¦   ztorch.Tensor | Noner“   )r§   s   "rœ   r¨   r¨   Š  s$   € ÷ ñ ØðØ26ðàñr›   c           	     óä  € V f   R # V'       d&   \         P                  P                  P                  pM\        pV P                  4        Uu. uF
  q2! V4      NK  	  pp\        V 4      '       d0   V P                  4       P                   Uu. uF
  q2! V4      NK  	  ppM\        P                  V4      pV P                  4       pV P                  4       p\        V4      p\        V4      p\         P                  P                  P                  P                  4       ;_uu_ 4        \         P"                  ! WEWgR7      P%                  4       pR R R 4       V# u upi u upi   + '       g   i     X# ; i)N)ÚsizeÚstrideÚdtypeÚdevice)r{   ÚgraphÚsizevarsÚoptimization_hintr&   Úget_sizeÚis_storage_and_layoutÚ
get_layoutr6  ÚFlexibleLayoutÚcontiguous_stridesÚ	get_dtypeÚ
get_devicerh   r  Úsuppress_guardsÚtorchÚempty_stridedÚzero_)	r¥   r+  Úshape_fnr  r5  r6  r7  r8  Úts	   &&       rœ   r.  r.  Š  s  € ð 	‚yÙ÷ "Ü—7‘7×#Ñ#×5Ñ5‰äˆØ!"§¡¤Ó.¡˜AˆH�QŽK¡€DÐ.ä˜Q×ÒØ'(§|¡|£~×'<Ò'<Ó=Ñ'< !�(˜1–+Ñ'<ˆÐ=ˆä×2Ñ2°4Ó8ˆØ�K‰K‹M€EØ�\‰\‹^€FÜ" 4Ó(€Dä$ VÓ,€FÜ	
�‰×	Ñ	×	#Ñ	#×	3Ñ	3×	5Õ	5Ü×ÒØ¨Eô
ç
‰%‹'ð 	
÷ 
6ð €Hùò /ùò >÷ 
6Ö	5ð €Hús   ÁEÂEÄ#'EÅE/	c               ó    € V ^8„  d   QhRRRR/# )r¤   ÚvaluezSequence[_T] | Noner¦   zSequence[_T | None] | Noner“   )r§   s   "rœ   r¨   r¨   ¬  s   € ÷ ñ Øðàñr›   c                óH   € \        V \        4      '       d   V '       g   R .# V # rª   )r«   rÅ   ©rJ  s   &rœ   Úmay_convert_to_optionalrM  ¬  s!   € ô �%œ×Ò§uð ˆvˆØ€Lr›   c               ó    € V ^8„  d   QhRRRR/# )r¤   r¥   z/IRNode | OutputSpec | torch.device | None | strr¦   ú
str | Noner“   )r§   s   "rœ   r¨   r¨   ¶  s   € ÷ 
>ñ 
>Ø6ð
>àñ
>r›   c                óJ  € \        V \        4      '       g   V f   V # \        V \        P                  4      '       d   V P                  # \        V \
        \        34      '       d   \        V P                  4       4      # \        RV  R\	        V 4      P                   R24       R # )Nzget_device_type(ú: Ú))r«   r�   rD  r8  r�   r¡   Ú
OutputSpecÚget_device_typerB  r   r•   r­   s   &rœ   rT  rT  ¶  sz   € ô �!”S×Ò˜QšYØˆÜ	�A”u—|‘|×	$Ò	$Ø�v‰vˆÜ	�Aœ¤
Ð+×	,Ò	,Ü˜qŸ|™|›~Ó.Ð.äÐ# A 3 b¬¨a«×)9Ñ)9Ð(:¸!Ð<Ö=r›   c               ó    € V ^8„  d   QhRRRR/# ©r¤   r¥   z"IRNode | torch.device | None | strr¦   r¸   r“   )r§   s   "rœ   r¨   r¨   Ã  s   € ÷ ;ñ ;Ð3ð ;¸ñ ;r›   c                óþ   € \        V 4      pVR9   d   \        \        V R24      R8X  d   R# R# Ve   \        V4      ;pf   R# ^RIHp \        V\        4      '       g   \        \        V4      4      h\        W#4      # )ÚcpuÚ_backendÚtritonTF)ÚTritonScheduling)rX  ÚcudaÚxpu)
rT  rà   rM   rQ   Úcodegen.tritonr[  r«   r�   rÓ   Ú
issubclass)r¥   r8  Údevice_schedulingr[  s   &   rœ   Ú	is_tritonra  Ã  sz   € Ü˜QÓ€Fð Ð'Ô'Ü”6˜f˜X XÐ.Ó/°8Ô;ÙÙàŠÜ!:¸6Ó!BÐBÐÒKáÝ0äÐ'¬×.Ò.ÜœTÐ"3Ó4Ó5Ð5ÜÐ'Ó:Ð:r›   c               ó    € V ^8„  d   QhRRRR/# rV  r“   )r§   s   "rœ   r¨   r¨   Ø  s   € ÷ 'ñ 'Ð0ð '°Tñ 'r›   c                ó   € \        V 4      R 8H  # )rX  )rT  r­   s   &rœ   Úis_cpurd  Ø  s   € Ü˜1Ó Ñ&Ð&r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r¥   zBuffer | TensorBoxÚ	alignmentr¬   r¦   r¸   r“   )r§   s   "rœ   r¨   r¨   Ü  s"   € ÷ 7ñ 7Ð"4ð 7Àð 7Èñ 7r›   c                ó†  a€ \        V \        4      '       dQ   V P                  4       e?   \        V P	                  4       4      '       g    \        V P                  4       4      '       d   R# \        P                  ! V3R lV P	                  4       R R  4       !  p\        P                  ! \        P                  ! V P	                  4       R,          ^4      \        P                  ! V P                  4       R,          ^4      4      p\        P                  ! W#4      p\        P                  P                  P                  V4      # )NFc              3  óf   <"  € T F&  p\         P                  ! \        VS4      ^ 4      x € K(  	  R# 5i©r   N)rÌ   ÚEqrJ   )r  r  rf  s   & €rœ   r  Ú-is_aligned_realized_tensor.<locals>.<genexpr>æ  s(   øé € Ð	FÑ2E¨QŒ%�(Š(”3�q˜)Ó$ a×
(Ð
(Ó2Eùs   ƒ.1éÿÿÿÿ)r«   r¡   Úmaybe_get_strider:   Ú
get_strider<  rÌ   ÚAndÚOrrj  ÚLer{   r9  r:  Úguard_or_false)r¥   rf  Úaligned_stridesÚaligned_last_dimÚ
is_aligneds   &f   rœ   Úis_aligned_realized_tensorrv  Ü  sÖ   ø€ ä�qœ&×!Ò!Ø×ÑÓÒ'Ü  §¡£×0Ò0Ü  §¡£×.Ò.áä—i’iÜ	F°!·,±,³.ÀÀ"Ñ2EÓ	Fñ€Oô —x’xÜ�Š�—‘“ Õ# QÓ'¬¯ª°!·*±*³,¸rÕ2BÀAÓ)FóÐô —’˜?Ó=€Jô �7‰7×Ñ×*Ñ*¨:Ó6Ð6r›   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   Ústrides1úSequence[_IntLike]Ústrides2Úshaper¦   r¸   r“   )r§   s   "rœ   r¨   r¨   ñ  s0   € ÷ ñ Ø ðà ðð ðð 
ñ	r›   c                ó  € \        V4      \        V 4      8X  d   \        V 4      \        V4      8X  g   \        R4      h\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   R# \        W V4       F~  w  r4p\        P
                  P                  P                  V^4      '       d   K8  \        P
                  P                  P                  \        P                  ! WE4      4      '       d   K}   R# 	  R# )z¡
Returns true if the strides are equal, ignoring dimensions of size 0 or 1.
If any dimension is size 0, all strides are insignificant since the tensor
is empty.
zGExpected len(shape) == len(strides1) and len(strides1) == len(strides2)c              3  óv   "  € T F/  p\         P                  P                  P                  V^ 4      x € K1  	  R# 5iri  ©r{   r9  r:  Ústatically_known_equals)r  Údims   & rœ   r  Ú,significant_strides_equal.<locals>.<genexpr>ÿ  s*   é € Ð
MÁuÀŒ1�7‰7×Ñ×3Ñ3°C¸×;Ð;Ãuùó   ‚79TF)rð   rÓ   Úanyr÷   r{   r9  r:  Ústatically_known_leqrr  rÌ   rj  )rx  rz  r{  r€  Ús1Ús2s   &&&   rœ   Úsignificant_strides_equalr‡  ñ  sº   € ô �‹Jœ#˜h›-Ô'¬C°«M¼SÀ»]Ô,JÜØUó
ð 	
÷ ƒsÑ
MÁuÓ
M‡s‡s‚sÑ
MÁuÓ
M×MÒMÙÜ˜5¨HÖ5‰ˆ�Ü�7‰7×Ñ×0Ñ0°°a×8Ò8Ùä�w‰w×Ñ×.Ñ.¬u¯xªx¸Ó/?×@Ô@Úñ 6ñ r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   Útensorr¡   ÚstrideszSequence[int | torch.SymInt]r¦   r“   )r§   s   "rœ   r¨   r¨   
  s+   € ÷ %Gñ %GØð%Gà)ð%Gð ñ%Gr›   c                ó,  € \        V 4      '       g   V # \        ;QJ d3    R \        WP                  4       4       4       F  '       d   K   RM(	  RM$! R \        WP                  4       4       4       4      '       d   V # \	        WP                  4       V P                  4       4      '       g   V # \        V 4      w  r#. VP                  OpV P                  4       p\        V P                  4       4       FI  w  rgV'       g3   \        P                  P                  P                  V^4      '       g   K?  W,          WF&   KK  	  \        VP                  VP                   VP"                  VVP$                  VP&                  4      p\)        \+        W(R7      4      # )a  
Tries to match the strides of the tensor to those in the meta_strides. Strides of insignificant
dimensions - size 0 or 1 - will be updated.

If there are real stride differences (NHWC vs NCHW), or the tensor is not realized, then the input will be returned
c              3  óx   "  € T F0  w  r\         P                  P                  P                  W4      x € K2  	  R # 5irª   r~  ©r  r…  r†  s   &  rœ   r  Ú2try_match_insignificant_strides.<locals>.<genexpr>  s1   é € ð á7‰FˆBô 	
�‰×Ñ×0Ñ0°×8Ð8Û7ùó   ‚8:FT©ÚdataÚlayout)r=  r  r÷   rn  r‡  r<  Úas_storage_and_layoutr6  Úis_zero_elementsr  r{   r9  r:  r„  ÚFixedLayoutr8  r7  r5  ÚoffsetÚ	is_pinnedr    ÚReinterpretView)	r‰  rŠ  ÚstorageÚ
old_layoutÚ
new_strideÚis_emptyrò   r  Ú
new_layouts	   &&       rœ   Útry_match_insignificant_stridesrž  
  s?  € ô ! ×(Ò(Øˆç
ƒsñ ä˜'×#4Ñ#4Ó#6Ô7ó‡s‡s‚sñ ä˜'×#4Ñ#4Ó#6Ô7ó÷ ò ð ˆä$ W×.?Ñ.?Ó.AÀ6Ç?Á?ÓCT×UÒUØˆä/°Ó7Ñ€GØ%�:×$Ñ$Ð%€JØ×&Ñ&Ó(€HÜ˜&Ÿ/™/Ó+Ö,‰ˆß”q—w‘w×'Ñ'×<Ñ<¸QÀ×BÔBØ#�JˆJ‹Mñ -ô Ø×ÑØ×ÑØ�‰ØØ×ÑØ×Ñó€Jô ”_¨'ÔEÓFÐFr›   c               ó    € V ^8„  d   QhRRRR/# )r¤   Úgmútorch.fx.GraphModuler¦   r¿   r“   )r§   s   "rœ   r¨   r¨   2  s   € ÷ 'ñ 'Ð#7ð '¸Dñ 'r›   c                óà   € V P                   P                  R R7      ^ ,          p\        VP                  4       UUu. uF  w  r#VNK	  	  uppVP                  R&   ^ RIHp V! V 4       R# u uppi )Úoutput©ÚopÚuser_visible_output_idxs)Úrecord_original_output_stridesN)r9  Ú
find_nodesr  rÜ   ÚmetaÚtorch._inductor.compile_fxr§  )r   Úoutput_noder  r&  r§  s   &    rœ   Úgm_original_output_stridesr¬  2  sd   € Ø—(‘(×%Ñ%¨Ð%Ó2°1Õ5€Kä# K×$4Ñ$4Ô5ô4Ù5‘�‹Ñ5ò4€K×ÑÐ/Ñ0õ Já" 2Ö&ùó4s   ¼A*c               ó    € V ^8„  d   QhRRRR/# )r¤   ÚinputsúSequence[IRNode]r¦   ú
list[Expr]r“   )r§   s   "rœ   r¨   r¨   <  s   € ÷ ñ Ð 0ð °Zñ r›   c                óÆ   € \        4       pV  FG  pV\        VP                  4       R R7      ,          pV\        VP                  4       R R7      ,          pKI  	  \	        V4      # )F©Úunbacked_only)rD   r+   r<  rn  rÅ   )r®  Úsym_varsÚinps   &  rœ   Úget_symbolic_inputsr¶  <  sP   € Ü!+£€HÛˆØÔ$ S§\¡\£^À5ÔIÕIˆØÔ$ S§^¡^Ó%5ÀUÔKÕKŠñ ô �‹>Ðr›   c                ó&  € \        V \        4      '       d   V P                  p \        V \        4      '       d   V P	                  4       p \        V \
        4      '       d   V P                  p \        V \        4      '       d   V P                  4       # R # rª   )r«   r    r‘  ÚBaseViewÚunwrap_viewÚ
StorageBoxÚBufferÚget_namer­   s   &rœ   Útry_get_namer½  E  sc   € Ü�!”Y×ÒØ�F‰FˆÜ�!”X×ÒØ�M‰M‹OˆÜ�!”Z× Ò Ø�F‰FˆÜ% a¬×0Ò0ˆ1�:‰:‹<Ð:°dÐ:r›   c                  ó*  € ] tR tRt$ Rt]! 4       tR]R&   RtR]R&   Rt	R]R	&   ]
P                  ! R
R7      tR]R&   ]
P                  ! R
R7      tR]R&   ]
P                  ! R
R7      tR]R&   ]
P                  ! R
R7      tR]R&   ]
P                  ! R
R7      tR]R&   ]
P                  ! R
R7      tR]R&   ]]P(                  R R l4       4       t]]P(                  R R l4       4       t]]P(                  R R l4       4       t]R R l4       tR  R! ltR" R# ltR$ R% ltR& R' ltR( R) ltR* R+ ltR, R- ltR. R/ lt R0 R1 lt!R—R3 R4 llt"R˜R5 R6 llt#R7 R8 lt$R9 R: lt%R; R< lt&R= R> lt'R? R@ lt(RA RB lt)RC RD lt*RE RF lt+RG RH lt,]-RI RJ l4       t.RK RL lt/RM RN lt0RO RP lt1R™RQ RR llt2RS RT lt3RU RV lt4RW RX lt5RY RZ lt6R[ R\ lt7R] R^ lt8R_ R` lt9Ra Rb lt:Rc Rd lt;Re Rf lt<R™Rg Rh llt=RiR2/Rj Rk llt>Rl Rm lt?Rn Ro lt@Rp Rq ltARšRr Rs lltBRt Ru ltCRv Rw ltDRšRx Ry lltERz R{ ltFR| R} ltGR~ R ltHR€ R� ltIRšR‚ Rƒ lltJR„ R… ltKR† R‡ ltLRˆ R‰ ltMRŠ R‹ ltNRŒ R� ltORŽ R� ltPR� R‘ ltQR’ R“ ltR]S'       d   ]-R” R• l4       tTR–tUR# R–tUR# )›r¡   iO  zÑBase class for all intermediate representation (IR) nodes in TorchInductor.

Note:
    This is an abstract base class. Most methods raise NotImplementedError
    and must be overridden by concrete subclasses.
zClassVar[OrderedSet[Any]]Ú_current_originsNzClassVar[int | None]Ú_current_stream_idxz ClassVar[tuple[int, int] | None]Ú_current_mempoolF)ÚinitúOrderedSet[Any]Úoriginsúlist[str] | NoneÚ	tracebackútorch.fx.Node | NoneÚorigin_nodezdict[str, object]r   ú
int | NoneÚ
stream_idxútuple[int, int] | NoneÚmempoolc               ó    € V ^8„  d   QhRRRR/# )r¤   rÄ  zOrderedSet[Node]r¦   úGenerator[None, None, None]r“   )r§   s   "rœ   r¨   ÚIRNode.__annotate__i  s   € ÷ *ñ *Ð!1ð *Ð6Qñ *r›   c              #  	ó�   "  € \         P                  pW,          \         n         R x € V\         n        R #   T\         n        i ; i5irª   )r¡   r¿  )rÄ  Úolds   & rœ   Úcurrent_originsÚIRNode.current_originsg  s4   é € ô ×%Ñ%ˆØ"%¥-ŒÔð	*Ûà&)ŒFÖ#ø cŒFÕ#üs   ‚"A¥6 ©A¶AÁAc               ó    € V ^8„  d   QhRRRR/# )r¤   rÊ  rÉ  r¦   rÎ  r“   )r§   s   "rœ   r¨   rÏ  s  s   € ÷ -ñ -Øð-à	$ñ-r›   c              #  	ó„   "  € \         P                  pV \         n         R x € V\         n        R #   T\         n        i ; i5irª   )r¡   rÀ  )rÊ  rÑ  s   & rœ   Úcurrent_stream_idxÚIRNode.current_stream_idxq  s2   é € ô
 ×(Ñ(ˆØ%/ŒÔ"ð	-Ûà),ŒFÖ&ø¨ŒFÕ&üó   ‚A Ÿ0 £A °=½A c               ó    € V ^8„  d   QhRRRR/# )r¤   rÌ  rË  r¦   rÎ  r“   )r§   s   "rœ   r¨   rÏ    s   € ÷ *ñ *Ø'ð*à	$ñ*r›   c              #  	ó„   "  € \         P                  pV \         n         R x € V\         n        R #   T\         n        i ; i5irª   )r¡   rÁ  )rÌ  rÑ  s   & rœ   Úcurrent_mempoolÚIRNode.current_mempool}  s2   é € ô
 ×%Ñ%ˆØ")ŒÔð	*Ûà&)ŒFÖ#ø cŒFÕ#ürØ  c               ó    € V ^8„  d   QhRRRR/# ©r¤   rÔ   r¡   r¦   r¸   r“   )r§   s   "rœ   r¨   rÏ  Š  s   € ÷ 

ñ 

˜vð 

¨$ñ 

r›   c                	óL   € \        V \        \        \        \        \
        34      # rª   )r«   ÚComputedBufferÚInputsKernelÚInputBufferr˜  ÚTemplateBuffer)rÔ   s   &rœ   Úis_realized_nodeÚIRNode.is_realized_node‰  s&   € äØäÜÜÜÜðó	
ð 		
r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   r¡   r“   )r§   s   "rœ   r¨   rÏ  –  s   € ÷ &ñ & 6ñ &r›   c                	ó,   € \         P                  V 4      # rª   ©r    Úcreate©Úselfs   &rœ   Úwrap_for_loweringÚIRNode.wrap_for_lowering–  s   € Ü×Ñ Ó%Ð%r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   Úattrr�   rJ  r   r¦   r¿   r“   )r§   s   "rœ   r¨   rÏ  ™  s!   € ÷ .ñ . sð .°3ð .¸4ñ .r›   c                	ó2   € \         P                  WV4       R # rª   )r‘   Ú__setattr__)rì  rð  rJ  s   &&&rœ   Ú_post_init_setattrÚIRNode._post_init_setattr™  s   € ô 	×Ñ˜4 uÖ-r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   r¿   r“   )r§   s   "rœ   r¨   rÏ  Ÿ  s   € ÷ 
Bñ 
B˜tñ 
Br›   c                	ó†  € \        V P                  4      pV P                  R V4       T P                  R\        P                  '       d   \
        P                  ! 4       MR4       V P                  RR4       V P                  R/ 4       V P                  RV P                  4       V P                  RV P                  4       R# )rÄ  rÆ  NrÈ  r   rÊ  rÌ  )	rD   r¿  ró  rM   Údebug_ir_tracebackrÆ  Úformat_stackrÀ  rÁ  )rì  rÄ  s   & rœ   Ú__post_init__ÚIRNode.__post_init__Ÿ  sš   € Ü˜T×2Ñ2Ó3ˆØ×Ñ 	¨7Ô3Ø×ÑØ´V×5N×5NÐ5Nœ×/Ò/Ô1ÐTXô	
ð 	×Ñ ¨tÔ4à×Ñ ¨rÔ2Ø×Ñ ¨d×.FÑ.FÔGØ×Ñ 	¨4×+@Ñ+@ÖAr›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   úOrderedSet[str]r“   )r§   s   "rœ   r¨   rÏ  «  ó   € ÷ @ñ @ ñ @r›   c                	óB   € \        R  V P                  4        4       4      # )c              3  ó8   "  € T F  qP                   x € K  	  R # 5irª   ©rŽ   ©r  Údeps   & rœ   r  Ú(IRNode.get_read_names.<locals>.<genexpr>¬  ó   é € Ð?Ñ.> sŸ(ž(Ó.>ùó   ‚©rD   Ú	get_readsrë  s   &rœ   Úget_read_namesÚIRNode.get_read_names«  ó   € ÜÑ?¨d¯n©nÔ.>Ó?Ó?Ð?r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   rÅ  r“   )r§   s   "rœ   r¨   rÏ  ®  s   € ÷ ñ Ð/ñ r›   c                	ó   € V P                   # rª   )rÆ  rë  s   &rœ   Úget_tracebackÚIRNode.get_traceback®  s   € Ø�~‰~Ðr›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   rÇ  r“   )r§   s   "rœ   r¨   rÏ  ±  ó   € ÷  ñ  Ð!5ñ  r›   c                	ó   € V P                   # rª   ©rÈ  rë  s   &rœ   Úget_origin_nodeÚIRNode.get_origin_node±  ó   € Ø×ÑÐr›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   zOperation | Noner“   )r§   s   "rœ   r¨   rÏ  ´  ó   € ÷ ñ Ð!1ñ r›   c                	ó   € R # rª   r“   rë  s   &rœ   Úget_defining_opÚIRNode.get_defining_op´  ó   € Ùr›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   úlist[Subgraph]r“   )r§   s   "rœ   r¨   rÏ  ·  s   € ÷ ñ ˜~ñ r›   c                ó   € . # )z'Return subgraphs contained in this noder“   rë  s   &rœ   Úget_subgraphsÚIRNode.get_subgraphs·  ó   € àˆ	r›   c               ó   € V ^8„  d   QhRR/# rý  r“   )r§   s   "rœ   r¨   rÏ  »  s   € ÷ ñ  /ñ r›   c                	óÎ  € \        4       pV P                  p\        V \        4      '       d/   V P	                  4       pV P
                  '       d   \        V.4      pV EF  p\        VR 4      '       d0   VP                  '       d   VP                  VP                  4       KE  \        P                  P                  P                  P                  R/ 4      P                  VP                  . 4      p\        V\        4      '       g   K«  V FR  p\        P                  P                  P                   P                  VR4      pV'       g   KA  VP                  V4       KT  	  EK  	  V# )Ústack_traceÚ	postToPreN)rD   rÄ  r«   ÚExternKernelr  rÈ  Úhasattrr)  ÚaddrD  Ú	_inductorÚdebugÚ _inductor_post_to_pre_grad_nodesÚgetrŽ   rÅ   Ú#_inductor_pre_grad_node_stack_trace)rì  Ústack_tracesrÄ  rÈ  rÔ   Úpre_grad_nodesÚ	node_namer)  s   &       rœ   Úget_stack_tracesÚIRNode.get_stack_traces»  s  € ô )3«ˆØ—,‘,ˆÜ�dœL×)Ò)Ø×.Ñ.Ó0ˆKØ××ÐÜ$ k ]Ó3�ÜˆDÜ�t˜]×+Ò+°×0@×0@Ð0@à× Ñ  ×!1Ñ!1Ö2ô —O‘O×)Ñ)×JÑJ×NÑNØ#Øó÷ ‘c˜$Ÿ)™) RÓ(ð ô " .´$×7Ò7ÙÛ!/�IäŸ™×-Ñ-×QÑQ×UÑUØ% tóð  ÷
 #‘{Ø$×(Ñ(¨Ö5ô "0ñ ð, Ðr›   Tc               ó    € V ^8„  d   QhRRRR/# )r¤   Úshortenr¸   r¦   úSequence[str]r“   )r§   s   "rœ   r¨   rÏ  Ü  s   € ÷ +ñ + 4ð +°=ñ +r›   c                	óT  € R \        V RR4       2pV'       d   \        V4      ^@8”  d   VR,           R2pV P                  4       '       g   V.# . pV P                  4        F<  pVP                  R4       W4P	                  R4      ,          pVP                  R4       K>  	  V.V,           # )zorigins=rÄ  Ú :Né=   Nz...zstack_traces = {Ú
Ú})rà   rð   r6  ÚappendÚsplit)rì  r9  rÄ  Ústack_trace_strr)  s   &&   rœ   Úcommon_reprÚIRNode.common_reprÜ  s¤   € ØœW T¨9°bÓ9Ð:Ð;ˆß”s˜7“| bÔ(à  �˜ cÐ*ˆGØ×$Ñ$×&Ò&Ø�9ÐàˆØ×0Ñ0Ö2ˆKØ×"Ñ"Ð#5Ô6Ø×0Ñ0°Ó6Õ6ˆOØ×"Ñ" 3Ö'ñ 3ð ˆy˜?Õ*Ð*r›   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   ÚlineszSequence[object]r9  r¸   Ú	multiliner¦   r�   r“   )r§   s   "rœ   r¨   rÏ  ë  s,   € ÷ 
5ñ 
5Ø%ð
5Ø04ð
5ØHLð
5à	ñ
5r›   c                	ó8  € \        V4      \        V P                  V4      4      ,           p\        \        \        V4      4      pV'       d6   \	        R P                  V4      4      p\        V 4      P                   RV R2# \        V 4      P                   RV R2# )z,
z(
z
)Ú(rR  )rÅ   rC  Úmapr�   ÚindentÚjoinr�   r•   )rì  rF  r9  rG  Ú	new_liness   &&&& rœ   Ú
str_helperÚIRNode.str_helperë  s„   € ô �U“œd 4×#3Ñ#3°GÓ#<Ó=Õ=ˆÜ”Sœ˜e“_Ó%ˆßä˜uŸz™z¨%Ó0Ó1ˆIÜ˜4“j×)Ñ)Ð*¨#¨i¨[¸Ð<Ð<ä˜4“j×)Ñ)Ð*¨!¨E¨7°!Ð4Ð4r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   útorch.dtyper“   )r§   s   "rœ   r¨   rÏ  ÷  s   € ÷ ñ ˜;ñ r›   c                	ó   € V P                   # rª   ©r7  rë  s   &rœ   rA  ÚIRNode.get_dtype÷  ó   € Ø�z‰zÐr›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   ztorch.dtype | Noner“   )r§   s   "rœ   r¨   rÏ  ú  s   € ÷ ñ Ð!3ñ r›   c                	óH   €  V P                  4       #   \         d     R # i ; irª   )rA  ÚNotImplementedErrorrë  s   &rœ   Úmaybe_get_dtypeÚIRNode.maybe_get_dtypeú  s&   € ð	Ø—>‘>Ó#Ð#øÜ"ô 	Úð	úó   ‚ ’! !c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   ÚLayoutr“   )r§   s   "rœ   r¨   rÏ     s   € ÷ Wñ W˜Fñ Wr›   c                	ó2   € \        R \        V 4       R24      h)z#get_layout() is not implemented by Ú!©rY  r�   rë  s   &rœ   r>  ÚIRNode.get_layout   s   € Ü!Ð$GÌÈTË
À|ÐSTÐ"UÓVÐVr›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   zLayout | Noner“   )r§   s   "rœ   r¨   rÏ    s   € ÷ ñ  -ñ r›   c                	óH   €  V P                  4       #   \         d     R # i ; irª   )r>  rY  rë  s   &rœ   Úmaybe_get_layoutÚIRNode.maybe_get_layout  ó&   € ð	Ø—?‘?Ó$Ð$øÜ"ô 	Úð	úr\  c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   rS  r“   )r§   s   "rœ   r¨   rÏ  	  s   € ÷ !ñ ! ñ !r›   c                	ó"   € V P                  4       # rª   )r>  rë  s   &rœ   Úget_output_specÚIRNode.get_output_spec	  s   € Ø�‰Ó Ð r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   zOutputSpec | Noner“   )r§   s   "rœ   r¨   rÏ    s   € ÷ ñ Ð'8ñ r›   c                	óH   €  V P                  4       #   \         d     R # i ; irª   )rl  rY  rë  s   &rœ   Úmaybe_get_output_specÚIRNode.maybe_get_output_spec  s(   € ð	Ø×'Ñ'Ó)Ð)øÜ"ô 	Úð	úr\  c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   r¸   r“   )r§   s   "rœ   r¨   rÏ    s   € ÷ @ñ @ 4ñ @r›   c                ó>   € \        V P                  4       \        4      # )z4True for single tensor output (excludes MultiOutput))r«   rp  r_  rë  s   &rœ   Úhas_tensor_outputÚIRNode.has_tensor_output  s   € ä˜$×4Ñ4Ó6¼Ó?Ð?r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   ry  r“   )r§   s   "rœ   r¨   rÏ    s   € ÷ Uñ UÐ,ñ Ur›   c                	ó2   € \        R \        V 4       R24      h)z!get_size() is not implemented by ra  rb  rë  s   &rœ   r<  ÚIRNode.get_size  s   € Ü!Ð$EÄdÈ4ÃjÀ\ÐQRÐ"SÓTÐTr›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   úSequence[_IntLike] | Noner“   )r§   s   "rœ   r¨   rÏ    s   € ÷ ñ Ð 9ñ r›   c                	óH   €  V P                  4       #   \         d     R # i ; irª   )r<  rY  rë  s   &rœ   Úmaybe_get_sizeÚIRNode.maybe_get_size  ó%   € ð	Ø—=‘=“?Ð"øÜ"ô 	Úð	úr\  c               ó   € V ^8„  d   QhRR/# )r¤   r¦   z)_IntLike | sympy.Rel | Sequence[_IntLike]r“   )r§   s   "rœ   r¨   rÏ     s   € ÷ ñ Ð@ñ r›   c                	ó"   € V P                  4       # rª   ©r<  rë  s   &rœ   r{  ÚIRNode.shape  s   € à�}‰}‹Ðr›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   r"   r“   )r§   s   "rœ   r¨   rÏ  #  s   € ÷ .ñ .˜4ñ .r›   c                	ó4   € \        V P                  4       4      # rª   )ru   r<  rë  s   &rœ   Ú	get_numelÚIRNode.get_numel#  s   € Ü˜TŸ]™]›_Ó-Ð-r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rÏ  &  ó   € ÷ Uñ U $ñ Ur›   c                	óš   € \         P                  P                  P                  \        P
                  ! V P                  4       ^ 4      4      # ©r   ©r{   r9  r:  Ústatically_known_truerÌ   rj  r‰  rë  s   &rœ   r”  ÚIRNode.is_zero_elements&  ó0   € Ü�w‰w×Ñ×5Ñ5´e·h²h¸t¿~¹~Ó?OÐQRÓ6SÓTÐTr›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   rO  r“   )r§   s   "rœ   r¨   rÏ  )  s   € ÷ Bñ B˜ñ Br›   c                ó0   € \        R\        V 4       24      h)aÉ  
If the IRNode refers to data which has not been materialized (e.g.,
it is a Pointwise/Reduction that could potentially have more
compute fused into it), realize the IRNode into physical memory,
ending the possibility of fusing into it, but allowing, e.g., multiple
users to access the data without having to recompute.

Check StorageBox.realize for a particularly notable implementation.

TODO(ezyang): I think, in principle, every IRNode should have an
implementation of this, and most of the time no-op is OK, but you
really do have to audit each IRNode for this, so for now, raise
an error if it's not implemented.  Note that some code in graph.py
will catch this thrown error and suppress it with a warning.
zrealize NYI on rb  rë  s   &rœ   ÚrealizeÚIRNode.realize)  s   € ô  " O´D¸³J°<Ð"@ÓAÐAr›   c               ó    € V ^8„  d   QhRRRR/# ©r¤   ÚwriterzIndentedBuffer | Noner¦   r�   r“   )r§   s   "rœ   r¨   rÏ  ;  s   € ÷ Lñ LÐ(=ð LÈñ Lr›   c                	ó0   € \        R \        V 4       24      h)zcodegen_reference NYI on rb  ©rì  rš  s   &&rœ   Úcodegen_referenceÚIRNode.codegen_reference;  s   € Ü!Ð$=¼dÀ4»j¸\Ð"JÓKÐKr›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   útorch.device | Noner“   )r§   s   "rœ   r¨   rÏ  >  s   € ÷ ñ Ð/ñ r›   c                	ó   € R # rª   r“   rë  s   &rœ   rB  ÚIRNode.get_device>  r  r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   útorch.devicer“   )r§   s   "rœ   r¨   rÏ  A  s   € ÷ ñ  \ñ r›   c                	óD   € V P                  4       pVf   \        R4      hV# )NúExpected device is not None)rB  rÓ   ©rì  r8  s   & rœ   Úget_device_or_errorÚIRNode.get_device_or_errorA  s$   € Ø—‘Ó"ˆØŠ>Ü Ð!>Ó?Ð?Øˆr›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rÏ  G  s   € ÷ ñ ¨ñ r›   c                	ó   € R # ©Fr“   rë  s   &rœ   Úhas_exceeded_max_readsÚIRNode.has_exceeded_max_readsG  ó   € Ùr›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   ú$Callable[[Sequence[Expr]], OpsValue]r“   )r§   s   "rœ   r¨   rÏ  J  s   € ÷ 7ñ 7ÐAñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   ©rY  r�   r•   rë  s   &rœ   Úmake_loaderÚIRNode.make_loaderJ  ó   € Ü!¤$ t£*×"5Ñ"5Ó6Ð6r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   ú Callable[[Sequence[Expr]], Expr]r“   )r§   s   "rœ   r¨   rÏ  M  s   € ÷ 7ñ 7Ð>ñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  rë  s   &rœ   Úmake_indexerÚIRNode.make_indexerM  r¹  r›   c               ó   € V ^8„  d   QhRR/# rx  r“   )r§   s   "rœ   r¨   rÏ  P  s   € ÷ 7ñ 7Ð.ñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  rë  s   &rœ   rn  ÚIRNode.get_strideP  r¹  r›   c               ó   € V ^8„  d   QhRR/# r|  r“   )r§   s   "rœ   r¨   rÏ  S  s   € ÷ ñ Ð";ñ r›   c                	óH   €  V P                  4       #   \         d     R # i ; irª   )rn  rY  rë  s   &rœ   rm  ÚIRNode.maybe_get_strideS  rh  r\  c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   r�   r“   )r§   s   "rœ   r¨   rÏ  Y  s   € ÷ 7ñ 7˜#ñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  rë  s   &rœ   r¼  ÚIRNode.get_nameY  r¹  r›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   rÏ  \  s   € ÷ ñ  
ñ r›   c                	óH   €  V P                  4       #   \         d     R # i ; irª   )r¼  rY  rë  s   &rœ   Úmaybe_get_nameÚIRNode.maybe_get_name\  r�  r\  c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rÏ  b  s   € ÷ ñ  ñ r›   c                	ó~   €  V P                  4       \        P                  P                  9   #   \         d     R # i ; ir®  )r¼  r{   r9  Úgraph_inputsrY  rë  s   &rœ   Úis_input_bufferÚIRNode.is_input_bufferb  s4   € ð	Ø—=‘=“?¤a§g¡g×&:Ñ&:Ñ:Ð:øÜ"ô 	Úð	ús   ‚*- ­<»<c               ó    € V ^8„  d   QhRRRR/# ©r¤   Ú	thresholdrÉ  r¦   r¸   r“   )r§   s   "rœ   r¨   rÏ  h  s   € ÷ ñ ¨Jð À$ñ r›   c                	ó   € R # r®  r“   ©rì  rÕ  s   &&rœ   Úhas_large_inner_fnÚIRNode.has_large_inner_fnh  r±  r›   Úgraph_reusec               ó$   € V ^8„  d   QhRRRRRR/# ©r¤   Úusersr¬   rÚ  r¸   r¦   r¿   r“   )r§   s   "rœ   r¨   rÏ  k  s!   € ÷ ñ  ð °Tð ÀTñ r›   c               ó   € R# )a<  
Hint that this node's value will be reused.

`users` estimates the reuse count. When `graph_reuse` is true, this
represents graph fanout and can trigger fanout-based realization
heuristics. When false, the reuse comes from loop-level indexing, such
as a broadcast expand, and should not be treated as graph fanout.
Nr“   ©rì  rÝ  rÚ  s   &&$rœ   Ú
mark_reuseÚIRNode.mark_reusek  s   ‚ r›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   rÏ  u  s   € ÷ ñ ˜dñ r›   c                	ó   € R # rª   r“   rë  s   &rœ   Úrealize_hintÚIRNode.realize_hintu  ó   € Ùr›   c               ó   € V ^8„  d   QhRR/# rç  r“   )r§   s   "rœ   r¨   rÏ  x  s   € ÷ 7ñ 7˜Vñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  rë  s   &rœ   r¹  ÚIRNode.unwrap_viewx  r¹  r›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   rÏ  {  s   € ÷ 7ñ 7˜tñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  rë  s   &rœ   Úfreeze_layoutÚIRNode.freeze_layout{  r¹  r›   c               ó$   € V ^8„  d   QhRRRRRR/# ©r¤   ræ   rç   Úallow_paddingr¸   r¦   r¿   r“   )r§   s   "rœ   r¨   rÏ  ~  s$   € ÷ 7ñ 7Ø"ð7Ø37ð7à	ñ7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  ©rì  ræ   rð  s   &&&rœ   Úfreeze_layout_with_stride_orderÚ&IRNode.freeze_layout_with_stride_order~  ó   € ô "¤$ t£*×"5Ñ"5Ó6Ð6r›   c               ó    € V ^8„  d   QhRRRR/# ©r¤   ræ   rç   r¦   r¿   r“   )r§   s   "rœ   r¨   rÏ  ƒ  s   € ÷ 7ñ 7°=ð 7ÀTñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  ©rì  ræ   s   &&rœ   Úfreeze_layout_with_fill_orderÚ$IRNode.freeze_layout_with_fill_orderƒ  r¹  r›   c               ó    € V ^8„  d   QhRRRR/# ©r¤   r6  ry  r¦   r¿   r“   )r§   s   "rœ   r¨   rÏ  †  s   € ÷ 7ñ 7Ð4Fð 7È4ñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  ©rì  r6  s   &&rœ   Úfreeze_layout_with_same_orderÚ$IRNode.freeze_layout_with_same_order†  r¹  r›   c               ó$   € V ^8„  d   QhRRRRRR/# ©r¤   Úexact_stridesry  rð  r¸   r¦   r¿   r“   )r§   s   "rœ   r¨   rÏ  ‰  s$   € ÷ 7ñ 7Ø/ð7Ø@Dð7à	ñ7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  ©rì  r  rð  s   &&&rœ   Ú freeze_layout_with_exact_stridesÚ'IRNode.freeze_layout_with_exact_strides‰  rõ  r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   údependencies.ReadWritesr“   )r§   s   "rœ   r¨   rÏ  Ž  s   € ÷ 7ñ 7Ð!8ñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  rë  s   &rœ   Úget_read_writesÚIRNode.get_read_writesŽ  r¹  r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   zOrderedSet[Dep]r“   )r§   s   "rœ   r¨   rÏ  ‘  ó   € ÷ ,ñ ,˜?ñ ,r›   c                	ó6   € V P                  4       P                  # rª   ©r  Úreadsrë  s   &rœ   r	  ÚIRNode.get_reads‘  ó   € Ø×#Ñ#Ó%×+Ñ+Ð+r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   r¬   r“   )r§   s   "rœ   r¨   rÏ  ”  ó   € ÷ %ñ %˜3ñ %r›   c                	ó4   € \        V P                  4       4      # rª   )rð   r	  rë  s   &rœ   Ú	num_readsÚIRNode.num_reads”  s   € Ü�4—>‘>Ó#Ó$Ð$r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   rˆ   r“   )r§   s   "rœ   r¨   rÏ  —  s   € ÷ 7ñ 7 8ñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  rë  s   &rœ   Úget_storage_numelÚIRNode.get_storage_numel—  r¹  r›   c               ó    € V ^8„  d   QhRRRR/# ©r¤   r³  r¸   r¦   r²   r“   )r§   s   "rœ   r¨   rÏ  š  ó   € ÷ 7ñ 7Ø!ð7à	!ñ7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  ©rì  r³  s   &&rœ   Úget_free_symbol_usesÚIRNode.get_free_symbol_usesš  rõ  r›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   rÏ  Ÿ  s   € ÷ 7ñ 7 Jñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  rë  s   &rœ   Úget_reduction_typeÚIRNode.get_reduction_typeŸ  r¹  r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   úSequence[Expr]r“   )r§   s   "rœ   r¨   rÏ  ¢  s   € ÷ 7ñ 7 Nñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  rë  s   &rœ   Úget_reduction_sizeÚIRNode.get_reduction_size¢  r¹  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rÏ  ¥  ó   € ÷ ñ ˜4ñ r›   c                	ó   € R # r®  r“   rë  s   &rœ   Ú	is_externÚIRNode.is_extern¥  r±  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rÏ  ¨  ó   € ÷ ñ ˜$ñ r›   c                	ó   € R # r®  r“   rë  s   &rœ   Úis_no_opÚIRNode.is_no_op¨  r±  r›   c               ó    € V ^8„  d   QhRRRR/# ©r¤   r8  r¦  r¦   r¡   r“   )r§   s   "rœ   r¨   rÏ  «  s   € ÷ 7ñ 7¨ð 7¸&ñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  r©  s   &&rœ   Úconstant_to_deviceÚIRNode.constant_to_device«  r¹  r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   r:  r“   )r§   s   "rœ   r¨   rÏ  ®  s   € ÷ 7ñ 7 Mñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  rë  s   &rœ   Úget_mutation_namesÚIRNode.get_mutation_names®  r¹  r›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   rÏ  ±  s   € ÷ 7ñ 7 Cñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  rë  s   &rœ   Úget_operation_nameÚIRNode.get_operation_name±  r¹  r›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   rÏ  ´  s   € ÷ 7ñ 7¨mñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  rë  s   &rœ   Úget_inputs_that_alias_outputÚ#IRNode.get_inputs_that_alias_output´  r¹  r›   c               ó   € V ^8„  d   QhRR/# rQ  r“   )r§   s   "rœ   r¨   rÏ  º  s   € ×+Ñ+˜;Ñ+r›   c                	ó   € R # rª   r“   rë  s   &rœ   r7  ÚIRNode.dtype¹  s   € Ù(+r›   r“   ©T)TTrª   r®  )Vr•   r–   r—   r˜   Ú__doc__rD   r¿  r™   rÀ  rÁ  ÚdataclassesÚfieldrÄ  rÆ  rÈ  r   rÊ  rÌ  ÚstaticmethodÚ
contextlibÚcontextmanagerrÒ  rÖ  rÛ  rä  rí  ró  rú  r
  r  r  r  r$  r6  rC  rN  rA  rZ  r>  rf  rl  rp  ru  r<  r  Úpropertyr{  r‰  r”  r–  r�  rB  rª  r¯  r·  r¾  rn  rm  r¼  rÌ  rÑ  rØ  rà  rä  r¹  rì  ró  rú  r   r  r  r	  r  r   r'  r+  r1  r6  r;  r@  rE  rI  rM  r   r7  rš   r“   r›   rœ   r¡   r¡   O  s  ‡ ññ 3=³,ÐÐ/Ó>Ø04ÐÐ-Ó4Ø9=ÐÐ6Ó=ð  +×0Ò0°eÔ<€Gˆ_Ó<à"-×"3Ò"3¸Ô"?€IÐÓ?Ø(3×(9Ò(9¸uÔ(E€KÐ%ÓEà%0×%6Ò%6¸EÔ%B€KÐ"ÓBà(×.Ò.°EÔ:€J�
Ó:à&1×&7Ò&7¸UÔ&C€GÐ#ÓCàØ×Ñô*ó ó ð*ð Ø×Ñô-ó ó ð-ð Ø×Ñô*ó ó ð*ð ô

ó ð

õ&õ.õ
Bõ@õõ õõõ÷B+÷
5õõõWõõ!õõ@õUõð ôó ðõ.õUõB÷$Lõõõõ7õ7õ7õõ7õõ÷ð¸D÷ õõ7õ7÷7õ
7õ7÷7õ
7õ,õ%õ7÷7õ
7õ7õõõ7õ7õ7õ7÷ à	Ü+ó 
Ü+ó r›   c                  ó
  € ] tR tRtR R ltR R ltR R ltR R	 ltR
 R ltR R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR  R! ltR" R# ltR$ R% ltR,R& R' lltR( R) ltR*tR+# )-Ú	Operationi½  c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   ÚOperation.__annotate__¿  s   € ÷ 2ñ 2˜tñ 2r›   c                	ó"   € R V n         / V n        R # rª   )Úoperation_nameÚ_config_patchesrë  s   &rœ   rú  ÚOperation.__post_init__¿  s   € Ø*.ˆÔØ/1ˆÖr›   c               ó   € V ^8„  d   QhRR/# r   r“   )r§   s   "rœ   r¨   r]  Ã  ó   € ÷ "ñ "Ð/ñ "r›   c                	ó   € \         hrª   ©rY  rë  s   &rœ   rB  ÚOperation.get_deviceÃ  ó   € Ü!Ð!r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   r]  Æ  s   € ÷  ñ  Ð!5ñ  r›   c                	óT   € \        V R 4      '       g   \        R4      hV P                  # )rÈ  z%Expected hasattr(self, "origin_node"))r,  rÓ   rÈ  rë  s   &rœ   r  ÚOperation.get_origin_nodeÆ  s'   € Ü�t˜]×+Ò+Ü Ð!HÓIÐIØ×ÑÐr›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   rÃ  r“   )r§   s   "rœ   r¨   r]  Ë  s   € ÷ ñ ˜_ñ r›   c                	óT   € \        V R 4      '       g   \        R4      hV P                  # )rÄ  z!Expected hasattr(self, "origins"))r,  rÓ   rÄ  rë  s   &rœ   Úget_originsÚOperation.get_originsË  ó%   € Ü�t˜Y×'Ò'Ü Ð!DÓEÐEØ�|‰|Ðr›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   rÉ  r“   )r§   s   "rœ   r¨   r]  Ð  s   € ÷ ñ  
ñ r›   c                	óT   € \        V R 4      '       g   \        R4      hV P                  # )rÊ  z$Expected hasattr(self, "stream_idx"))r,  rÓ   rÊ  rë  s   &rœ   Úget_stream_idxÚOperation.get_stream_idxÐ  s%   € Ü�t˜\×*Ò*Ü Ð!GÓHÐHØ�‰Ðr›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   rË  r“   )r§   s   "rœ   r¨   r]  Õ  s   € ÷ ñ Ð3ñ r›   c                	óT   € \        V R 4      '       g   \        R4      hV P                  # )rÌ  z!Expected hasattr(self, "mempool"))r,  rÓ   rÌ  rë  s   &rœ   Úget_mempoolÚOperation.get_mempoolÕ  ro  r›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   r]  Ú  s   € ÷ #ñ # Cñ #r›   c                	óL   € V P                   f   \        R4      hV P                   # )Nz(Expected self.operation_name is not None)r_  rÓ   rë  s   &rœ   rI  ÚOperation.get_operation_nameÚ  s&   € Ø×ÑÒ&Ü Ð!KÓLÐLØ×"Ñ"Ð"r›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   r]  ß  s   € ÷ ñ  ñ r›   c                	ó   € R # rª   r“   rë  s   &rœ   Úget_buffer_nameÚOperation.get_buffer_nameß  r  r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   údict[str, Any]r“   )r§   s   "rœ   r¨   r]  â  s   € ÷ $ñ $ Nñ $r›   c                ó   € V P                   # )zHGet config patches for this operation (e.g., coordinate_descent_tuning).©r`  rë  s   &rœ   Úget_config_patchesÚOperation.get_config_patchesâ  s   € à×#Ñ#Ð#r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   Úpatchesr€  r¦   r¿   r“   )r§   s   "rœ   r¨   r]  æ  s   € ÷ 'ñ '¨.ð '¸Tñ 'r›   c                ó   € Wn         R# )z&Set config patches for this operation.Nr‚  )rì  r†  s   &&rœ   Úset_config_patchesÚOperation.set_config_patchesæ  s   € à&Ör›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r]  ê  r4  r›   c                	ó   € R # r®  r“   rë  s   &rœ   r6  ÚOperation.is_externê  r±  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r]  í  r9  r›   c                	ó   € R # r®  r“   rë  s   &rœ   r;  ÚOperation.is_no_opí  r±  r›   c               ó   € V ^8„  d   QhRR/# r
  r“   )r§   s   "rœ   r¨   r]  ð  s   € ÷ "ñ "Ð!8ñ "r›   c                	ó   € \         hrª   re  rë  s   &rœ   r  ÚOperation.get_read_writesð  rg  r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   rŽ   r�   r¦   r¸   r“   )r§   s   "rœ   r¨   r]  ó  s   € ÷ -ñ -˜sð - tñ -r›   c                	ó&   € WP                  4       9   # rª   )r
  ©rì  rŽ   s   &&rœ   Ú
is_user_ofÚOperation.is_user_ofó  s   € Ø×*Ñ*Ó,Ñ,Ð,r›   c               ó   € V ^8„  d   QhRR/# rý  r“   )r§   s   "rœ   r¨   r]  ö  rÿ  r›   c                	óB   € \        R  V P                  4        4       4      # )c              3  ó8   "  € T F  qP                   x € K  	  R # 5irª   r  r  s   & rœ   r  Ú+Operation.get_read_names.<locals>.<genexpr>÷  r  r  r  rë  s   &rœ   r
  ÚOperation.get_read_namesö  r  r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   r]  ù  r  r›   c                	ó6   € V P                  4       P                  # rª   r  rë  s   &rœ   r	  ÚOperation.get_readsù  r  r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   úlist[Buffer]r“   )r§   s   "rœ   r¨   r]  ü  s   € ÷ "ñ "˜\ñ "r›   c                	ó   € \         hrª   re  rë  s   &rœ   Úget_outputsÚOperation.get_outputsü  rg  r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   r²   r“   )r§   s   "rœ   r¨   r]  ÿ  ó   € ÷ ñ Ð*Bñ r›   c                	ó   € \        4       # rª   rC   rë  s   &rœ   Úget_unbacked_symbol_defsÚ"Operation.get_unbacked_symbol_defsÿ  ó
   € Ü‹|Ðr›   c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   r]    s   € ÷ ñ Ø!ðà	!ñr›   c                ó   € \        4       # )a  
When unbacked_only=True:
Returns the unbacked symbols which are required to be in scope in
order to successfully perform codegen for this buffer.  For example,
a buffer that corresponds to an extern kernel call that takes i0 as
an argument would return {i0} here.  This is used to generate necessary
dependencies that ensure we actually bind i0 in codegen before you
try to use it.

Note that this is NOT transitive; in particular, if this buffer takes
in as input another buffer with dynamic shape (e.g., (i0,)), we will
not report it here, because you will already have a dependency
on that buffer, which will eventually have a dependency on i0 if
necessary.

When unbacked_only=False:
Similar to `unbacked_only=True` but including all free symbols
instead of only free unbacked symbols.
rC   r&  s   &&rœ   r'  ÚOperation.get_free_symbol_uses  s   € ô, ‹|Ðr›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   r]    s   € ÷ ñ  Cñ r›   c                ó   € ^ # )z�
Gets extra global memory size needed by this buffer.
Some algorithms (e.g. group gemm) may require extra global memory in the generated code.
r“   rë  s   &rœ   Úget_workspace_sizeÚOperation.get_workspace_size  s   € ñ
 r›   )r`  r_  Nr®  )r•   r–   r—   r˜   rú  rB  r  rm  rr  rv  rI  r}  rƒ  rˆ  r6  r;  r  r–  r
  r	  r¤  rª  r'  r²  rš   r“   r›   rœ   r[  r[  ½  sl   † õ2õ"õ õ
õ
õ
õ
#õ
õ$õ'õõõ"õ-õ@õ,õ"õ÷÷0ñ r›   r[  c                  ó¸  € ] tR tRt$ RtR]R&   R]R&   R]R&   R	]R
&   ]! R 4      R9R R ll4       tR R ltR R lt	]	t
R R ltR R ltR R ltR R lt]R R l4       t]]P&                  3R R ll4       t]R R l4       tR R  lt]R! R" l4       tR:R$ R% lltR:R& R' lltR9R( R) lltR* R+ ltR, R- ltR. R/ ltR0 R1 ltR2 R3 lt R4 R5 lt!R6 R7 lt"R8t#R## );ÚLoopsi"  z:Base class for pointwise and reduction loop-body IR nodes.r¦  r8  rR  r7  úCallable[..., Any]Úinner_fnry  Úrangesc               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   ÚLoops.__annotate__,  s   € ÷ 
ñ 
Ø!ð
à	!ñ
r›   c                	ó„   a€ \        4       P                  ! . V3R  lV P                   4       OV P                  S4      N5!  # )c              3  ó<   <"  € T F  p\        VS4      x € K  	  R # 5irª   r*   ©r  Úer³  s   & €rœ   r  Ú-Loops.get_free_symbol_uses.<locals>.<genexpr>0  s   øé € ÐF¹+°QÔ˜q -×0Ð0»+ùó   ƒ)rD   Úunionr¸  Úinner_fn_free_symbolsr&  s   &frœ   r'  ÚLoops.get_free_symbol_uses+  s>   ø€ ô ‹|×!Ò!ð 
ÜF¸$¿+º+ÓFð
à×&Ñ& }Ó5ó
ð 	
r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   Únamesr:  r¦   r�   r“   )r§   s   "rœ   r¨   rº  4  s   € ÷ 	
ñ 	
˜]ð 	
¨sñ 	
r›   c                	ó  € T P                  R V P                  P                   R 2\        V P                  4      V P                  4       .V Uu. uF  q" R\        W4       2NK  	  up,           RV P                  : 2.,           4      # u upi )Ú'Ú=úorigin_node=)rN  r8  r�   r�   r7  Úinner_fn_strrà   rÈ  )rì  rÅ  rŽ   s   && rœ   Ú_to_strÚLoops._to_str4  s‘   € Ø�‰à�D—K‘K×$Ñ$Ð% QÐ'Ü�D—J‘J“Ø×!Ñ!Ó#ðñ
 <AÓA¹5°4��qœ Ó,Ð-Ó.¹5ÑAõBð ˜d×.Ñ.Ñ1Ð2Ð3õ4ó
ð 	
ùò Bs   ÁB
c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   rº  ?  ó   € ÷ )ñ )˜ñ )r›   c                	ó$   € V P                  R4      # ©r¸  ©r¸  ©rË  rë  s   &rœ   Ú__str__ÚLoops.__str__?  ó   € Ø�|‰|˜KÓ(Ð(r›   c               ó   € V ^8„  d   QhRR/# r   r“   )r§   s   "rœ   r¨   rº  D  ó   € ÷ ñ Ð/ñ r›   c                	ó   € V P                   # rª   ©r8  rë  s   &rœ   rB  ÚLoops.get_deviceD  ó   € Ø�{‰{Ðr›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   rº  G  r  r›   c                	ó   € V P                   # rª   r  rë  s   &rœ   r  ÚLoops.get_origin_nodeG  r  r›   c               ó   € V ^8„  d   QhRR/# rx  r“   )r§   s   "rœ   r¨   rº  J  s   € ÷ ñ Ð,ñ r›   c                	ó   € V P                   # rª   rÑ  rë  s   &rœ   r<  ÚLoops.get_sizeJ  rÛ  r›   c               ó   € V ^8„  d   QhRR/# rx  r“   )r§   s   "rœ   r¨   rº  M  ó   € ÷ ñ Ð$6ñ r›   c                	ó   € V P                   # rª   rÑ  rë  s   &rœ   Úget_pointwise_sizeÚLoops.get_pointwise_sizeM  rÛ  r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rÜ   r   rÝ   r¦   r    r“   )r§   s   "rœ   r¨   rº  Q  s!   € ÷ 	#ñ 	#˜3ð 	#¨#ð 	#°)ñ 	#r›   c                	óô   € VP                  R R4      pVP                  RR4      pV ! V/ VB pVP                  R V4       TP                  RT;'       g    VP                  4       \        P	                  V4      # )rÈ  NrÆ  )Úpopró  rÆ  r    rê  )ÚclsrÜ   rÝ   rÈ  ÚtbÚrs   &*,   rœ   rê  ÚLoops.createP  sp   € à—j‘j °Ó5ˆØ�Z‰Z˜ TÓ*ˆÙ�Ð ˜Ñ ˆð 	
×Ñ˜]¨KÔ8Ø	×Ñ˜[¨"×*;Ð*;°·±Ô<Ü×Ñ Ó"Ð"r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r¸  ry  rŸ   rL   r¦   r/  r“   )r§   s   "rœ   r¨   rº  ]  s"   € ÷ 
ñ 
Ð)ð 
°4ð 
Èñ 
r›   c                	ó    € \        V 4       UUu. uF1  w  r#V^8X  d   \        P                  P                  M
\	        W4      NK3  	  upp# u uppi ©é   )r  rÌ   ÚSÚZerort   )r¸  rŸ   Únr  s   &&  rœ   Ú_indexÚLoops._index\  sI   € ô " &Ô)ô
á)‘�ð  œFŒE�G‰G�LŠLÔ(FÀvÓ(QÒQÙ)ò
ð 	
ùó 
s   �7A
c               ó   € V ^8„  d   QhRR/# )r¤   r¦   r\   r“   )r§   s   "rœ   r¨   rº  d  s   € ÷ (ñ ( -ñ (r›   c           	     	ó®  € \        \        P                  ! 4       4      p\        P                  ! V4      ;_uu_ 4        \        P
                  ! \        R R4      ;_uu_ 4        V P                  ! V P                  4       !   VP                  4       uuRRR4       uuRRR4       #   + '       g   i     M; i RRR4       R#   + '       g   i     R# ; i©Úallow_indexingTN)
r[   r{   ÚMockHandlerÚset_ops_handlerr!   r‘   r?  r·  Úinner_fn_argsÚgetvalue)rì  Ú	opcounters   & rœ   Úinner_fn_opcountÚLoops.inner_fn_opcountc  s‚   € ä ¤§¢£Ó1ˆ	ä×Ò˜i×(Õ(Ü�LŠLœÐ)9¸4×@Õ@à�MŠM˜4×-Ñ-Ó/Ò0Ø×%Ñ%Ó'÷ AÑ@÷ )Ò(ß@×@úÐ@÷ )×(×(Ò(ús#   ½%CÁ".B%	Â
CÂ%B5Â0CÃC	c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   zSequence[Sequence[_IntLike]]r“   )r§   s   "rœ   r¨   rº  m  s   € ÷ +ñ +Ð;ñ +r›   c                	ó:   € V P                  V P                  4      3# rª   )rõ  r¸  rë  s   &rœ   rý  ÚLoops.inner_fn_argsm  s   € Ø—‘˜DŸK™KÓ(Ð*Ð*r›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   rº  q  s   € ÷ 
ñ 
˜cñ 
r›   c                	óv   € \         P                  P                  ! V P                  .V P	                  4       O5!  # rª   )r{   ÚKernelFormatterHandlerÚir_to_stringr·  rý  rë  s   &rœ   rÊ  ÚLoops.inner_fn_strp  s3   € ä×'Ñ'×4Ò4Ø�M‰Mð
Ø ×.Ñ.Ó0ó
ð 	
r›   Nc               ó    € V ^8„  d   QhRRRR/# )r¤   rÕ  rÉ  r¦   r¬   r“   )r§   s   "rœ   r¨   rº  v  s   € ÷ 9ñ 9°zð 9ÈSñ 9r›   c                	ó  € Vf   ^ p\         P                  pVf4   \        V 4      '       d   \         P                  pM>\         P                  pM-\        V\        4      '       g   \        R\        V4       24      h\        W4      # )Nz,expected int realize_opcount_threshold, got )
rM   Úrealize_opcount_thresholdrd  Úrealize_cpu_opcount_thresholdÚ"_realize_opcount_threshold_defaultr«   r¬   rÓ   r�   Úmax)rì  rÕ  r  s   && rœ   Úget_realize_opcount_thresholdÚ#Loops.get_realize_opcount_thresholdv  sy   € ØÒØˆIÜ$*×$DÑ$DÐ!Ø$Ò,Ü�d�|Š|Ü,2×,PÑ,PÑ)ä,2×,UÑ,UÑ)äÐ7¼×=Ò=Ü$ØBÄ4ÐHaÓCbÐBcÐdóð ô �9Ó8Ð8r›   c               ó    € V ^8„  d   QhRRRR/# rÔ  r“   )r§   s   "rœ   r¨   rº  †  s   € ÷ 
ñ 
¨Jð 
À$ñ 
r›   c                	óZ   € V P                  4       P                  V P                  V4      8„  # rª   )r   Únum_opsr  r×  s   &&rœ   rØ  ÚLoops.has_large_inner_fn†  s.   € Ø×$Ñ$Ó&×.Ñ.°×1SÑ1SØó2
ñ 
ð 	
r›   c               ó    € V ^8„  d   QhRRRR/# ©r¤   r³  r¸   r¦   úOrderedSet[Symbol]r“   )r§   s   "rœ   r¨   rº  ‹  s   € ÷ Wñ W°4ð WÐDVñ Wr›   c                	óf   € V P                  V P                  4      p\        V P                  W!R 7      # ©r²  )rõ  r¸  rU   r·  )rì  r³  rë   s   && rœ   rÂ  ÚLoops.inner_fn_free_symbols‹  s%   € Ø—‘˜DŸK™KÓ(ˆÜ# D§M¡M°5ÔVÐVr›   c               ó    € V ^8„  d   QhRRRR/# )r¤   Úsymbolr$   r¦   rþ  r“   )r§   s   "rœ   r¨   rº  �  s   € ÷ ñ °Fð ¸ñ r›   c                	ó  € V P                  V P                  4      p\        V4      p\        P                  ! V4      ;_uu_ 4        V P                  V4       R R R 4       VP                  #   + '       g   i     TP                  # ; irª   )rõ  r¸  rX   r{   rü  r·  Úusages)rì  r  rë   Úhandlers   &&  rœ   Úcollect_inner_fn_symbol_usageÚ#Loops.collect_inner_fn_symbol_usage�  sa   € Ø—‘˜DŸK™KÓ(ˆÜ0°Ó8ˆä×Ò˜g×&Õ&à�M‰M˜%Ô ÷ 'ð �~‰~Ð÷ 'Ö&ð �~‰~Ðús   ÁA+Á+B	c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   rº  ™  s   € ÷ ñ ˜?ñ r›   c                	ó®  € \         P                  ! \        R R4      ;_uu_ 4        V P                  4       '       dL   \	        V P                  4       V P                  4       V P                  4       4      P                  uuRRR4       # \	        V P                  4       V P                  4       4      P                  uuRRR4       #   + '       g   i     R# ; irù  )	r!   r‘   r?  r+  rW   r·  r<  r1  r  rë  s   &rœ   r	  ÚLoops.get_reads™  s”   € Ü�\Š\œ.Ð*:¸D×AÕAØ×&Ñ&×(Ò(Ü*Ø×$Ñ$Ó&Ø—M‘M“OØ×+Ñ+Ó-ó÷ ‘%÷ BÒAô +Ø×$Ñ$Ó&Ø—M‘M“Oó÷ ‘%÷ B×A×AÓAús   ¥ACÂ1CÃC	c               ó   € V ^8„  d   QhRR/# rý  r“   )r§   s   "rœ   r¨   rº  §  rÿ  r›   c                	óH   € \        V P                  4       P                  4      # rª   )rD   r   Úread_buffersrë  s   &rœ   r
  ÚLoops.get_read_names§  s   € Ü˜$×/Ñ/Ó1×>Ñ>Ó?Ð?r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   rº  ª  s   € ÷ 9ñ 9˜3ñ 9r›   c                	óH   € \        V P                  4       P                  4      # rª   )rð   r   r)  rë  s   &rœ   r  ÚLoops.num_readsª  s   € Ü�4×(Ñ(Ó*×7Ñ7Ó8Ð8r›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   rº  ­  s   € ÷ 
ñ 
 Nñ 
r›   c                	ó2   € \        R \        V 4       R24      h)z+get_reduction_size() is not implemented by ra  rb  rë  s   &rœ   r1  ÚLoops.get_reduction_size­  ó   € Ü!Ø9¼$¸t»*¸ÀQÐGó
ð 	
r›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   rº  ²  s   € ÷ 
ñ 
 Jñ 
r›   c                	ó2   € \        R \        V 4       R24      h)z+get_reduction_type() is not implemented by ra  rb  rë  s   &rœ   r+  ÚLoops.get_reduction_type²  r1  r›   c               ó    € V ^8„  d   QhRRRR/# r>  r“   )r§   s   "rœ   r¨   rº  ·  ó   € ÷ 
ñ 
¨ð 
¸&ñ 
r›   c                	ó2   € \        R \        V 4       R24      h)z+constant_to_device() is not implemented by ra  rb  r©  s   &&rœ   r@  ÚLoops.constant_to_device·  r1  r›   r“   r®  rª   )$r•   r–   r—   r˜   rS  r™   re   r'  rË  rÓ  Ú__repr__rB  r  r<  rå  Úclassmethodrê  rV  rL   ÚINDEXrõ  rd   r   rý  rÊ  r  rØ  rÂ  r"  r	  r
  r  r1  r+  r@  rš   r“   r›   rœ   rµ  rµ  "  sî   ‡ áDàÓØÓØ Ó ØÓá˜GÓ$ö
ó %ð
õ	
õ)ð €Hõõ õõð ô	#ó ð	#ð Ø:>¿*¹*ö 
ó ð
ð ô(ó ð(õ+ð ô
ó ð
÷
9÷ 
÷
Wõ
õõ@õ9õ
õ

÷

ñ 
r›   rµ  c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r  zExpr | Sequence[Expr]r7  rR  r¦   rz   r“   )r§   s   "rœ   r¨   r¨   ½  s"   € ÷ &ñ &Ð,ð &¸ð &Èñ &r›   c               ó”   € VP                   '       d!   \        P                  ! \        R 4      V4      # \        P                  ! ^ V4      # )Únan)Úis_floating_pointry   ÚconstantÚfloat)r  r7  s   &$rœ   Únop_loader_fnrB  ½  s4   € Ø××ÐÜ�|Š|œE %›L¨%Ó0Ð0ä�|Š|˜A˜uÓ%Ð%r›   c                  ób   € ] tR tRtR R ltR R lt]tR R ltR R	 ltR
 R lt	R R lt
RtR# )Ú	PointwiseiÄ  c               ó   € V ^8„  d   QhRR/# r³  r“   )r§   s   "rœ   r¨   ÚPointwise.__annotate__Æ  s   € ÷ ñ ÐAñ r›   c                	ó|   € V P                  4       '       d   \        \        V P                  R 7      # V P                  # )rT  )r”  r   rB  r7  r·  rë  s   &rœ   r·  ÚPointwise.make_loaderÆ  s,   € à× Ñ ×"Ò"Üœ=°·
±
Ô;Ð;à�}‰}Ðr›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   rF  Í  rÎ  r›   c                	ó$   € V P                  R4      # rÐ  rÒ  rë  s   &rœ   rÓ  ÚPointwise.__str__Í  rÕ  r›   c               ó   € V ^8„  d   QhRR/# rx  r“   )r§   s   "rœ   r¨   rF  Ò  s   € ÷ ñ Ð$6ñ r›   c                	ó   € . # rª   r“   rë  s   &rœ   r1  ÚPointwise.get_reduction_sizeÒ  ó   € Øˆ	r›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   rF  Õ  ó   € ÷ ñ  Jñ r›   c                	ó   € R # rª   r“   rë  s   &rœ   r+  ÚPointwise.get_reduction_typeÕ  r  r›   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r¤   Úoutput_namerO  Úindexerú!Callable[[Sequence[Expr]], Never]Úvarsr/  r¦   r¿   r“   )r§   s   "rœ   r¨   rF  Ø  s8   € ÷ Pñ PàðPð 3ðPð ð	Pð
 
ñPr›   c                	ó~   € V P                  4       p\        P                  ! T;'       g    R V! V4      V! V4      4      # ©Úunnamed)r·  ry   Ústore©rì  rU  rV  rX  Úloaders   &&&& rœ   Ústore_outputÚPointwise.store_outputØ  s5   € ð ×!Ñ!Ó#ˆÜ�yŠy˜×1Ð1¨	±7¸4³=Á&ÈÃ,ÓOÐOr›   c               ó    € V ^8„  d   QhRRRR/# r>  r“   )r§   s   "rœ   r¨   rF  á  ó   € ÷ 	
ñ 	
¨ð 	
¸&ñ 	
r›   c                ó¬   € V P                  4       p\        P                  ! \        RV4      ! V4      p\	        VV P
                  VV P                  R7      # ©úFMove this to a given device. Requires that all reads are to constants.Úoverride_device©r8  r7  r·  r¸  )r·  r!   r‘   ÚConstantBufferrD  r7  r¸  ©rì  r8  r^  s   && rœ   r@  ÚPointwise.constant_to_deviceá  sI   € à×!Ñ!Ó#ˆÜ—’œnÐ.?ÀÔHÈÓPˆÜØØ—*‘*ØØ—;‘;ô	
ð 	
r›   r“   N)r•   r–   r—   r˜   r·  rÓ  r9  r1  r+  r_  r@  rš   r“   r›   rœ   rD  rD  Ä  s-   † õõ)ð €HõõõP÷	
ñ 	
r›   rD  c                  óH   € ] tR tRt$ R]R&   RtR]R&   R R ltR	 R
 ltRtR# )ÚScatterií  r¼  Úoutput_indexerNr^   Úscatter_modec               ó    € V ^8„  d   QhRRRR/# r>  r“   )r§   s   "rœ   r¨   ÚScatter.__annotate__ò  s   € ÷ 
ñ 
¨ð 
¸&ñ 
r›   c           	     óØ   € V P                  4       p\        P                  ! \        RV4      ! V4      p\	        VV P
                  VV P                  V P                  V P                  R7      # )re  rf  )r8  r7  r·  r¸  rm  rn  )	r·  r!   r‘   rh  rl  r7  r¸  rm  rn  ri  s   && rœ   r@  ÚScatter.constant_to_deviceò  s[   € à×!Ñ!Ó#ˆÜ—’œnÐ.?ÀÔHÈÓPˆÜØØ—*‘*ØØ—;‘;Ø×.Ñ.Ø×*Ñ*ô
ð 	
r›   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r¤   rU  rO  rV  rW  rX  r/  r¦   r   r“   )r§   s   "rœ   r¨   rp  ÿ  s2   € ÷ 
ñ 
àð
ð 3ð
ð ð	
ð
 
ñ
r›   c                	ó¬   € V P                  4       pVf   Rp\        P                  ! VV! V P                  V4      4      V! V4      V P                  R7      # )Nr[  )Úmode)r·  ry   r\  rm  rn  r]  s   &&&& rœ   r_  ÚScatter.store_outputÿ  sT   € ð ×!Ñ!Ó#ˆØÒØ#ˆKÜ�yŠyØÙ�D×'Ñ'¨Ó-Ó.Ù�4‹LØ×"Ñ"ô	
ð 	
r›   r“   )	r•   r–   r—   r˜   r™   rn  r@  r_  rš   r“   r›   rœ   rl  rl  í  s!   ‡ à4Ó4Ø"€L�)Ó"õ
÷
ñ 
r›   rl  rƒ  Ú
logical_orr  ÚmaximumÚfmaxÚfmaximumÚminÚminimumÚprodÚmulÚsumr-  ÚdotÚxor_sumÚbitwise_xorz"dict[str, Callable[..., OpsValue]]ÚREDUCTION_COMBINE_FNc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r¤   Úreduction_typer�   r7  rR  Úarg_break_ties_leftr¸   r¦   úCallable[..., object]r“   )r§   s   "rœ   r¨   r¨     s8   € ÷ XNñ XNØðXNØ +ðXNØBFðXNàñXNr›   c                ó  a aaa€ S \         9   dI   \         S ,          o\        P                  '       d$   S R	9   d   \        S4      '       d   R V3R llpV# S# S R
9   d   R VVV 3R llpV# S R8X  d	   R R lpV# \	        RS  24      h)r  c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   Úar‘   Úbr¦   rz   r“   )r§   s   "rœ   r¨   Ú.get_reduction_combine_fn.<locals>.__annotate__(  s!   € ÷ 9ñ 9°ð 9¸Fð 9Àxñ 9r›   c                ój   <€ S! W4      p\         P                  ! \         P                  ! W4      W4      # rª   )ry   ÚwhereÚeq)rŠ  r‹  rJ  Ú
combine_fns   && €rœ   Ústrict_signed_zero_combine_fnÚ?get_reduction_combine_fn.<locals>.strict_signed_zero_combine_fn(  s&   ø€ Ù" 1Ó(�Ü—y’y¤§¢¨£¨qÓ8Ð8r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rŠ  ztuple[object, object]r‹  r¦   útuple[OpsValue, OpsValue]r“   )r§   s   "rœ   r¨   rŒ  9  s$   € ÷ 	ñ 	Ø$ð	Ø)>ð	à&ñ	r›   c                óè  <€ V w  r#Vw  rESR9   d   \         P                  ! W$4      pM\         P                  ! W$4      p\         P                  ! W$4      p\	        S4      '       dƒ   \         P
                  ! W"4      p\         P
                  ! WD4      p	\         P                  ! V\         P                  ! W‰4      4      p\         P                  ! V\         P                  ! W‰4      4      pS'       d   \         P                  ! W54      M\         P                  ! W54      p
\         P                  ! V\         P                  ! Wz4      4      p\         P                  ! WbV4      \         P                  ! WcV4      3# )Úargmin)r–  Úargmin_valueÚargmin_with_value)	ry   ÚltÚgtr�  r4   Únerw  Úlogical_andrŽ  )rŠ  r‹  Úa_valueÚa_indexÚb_valueÚb_indexÚmaskÚequalÚa_isnanÚb_isnanÚtier†  r7  r…  s   &&         €€€rœ   Úargmax_combine_fnÚ3get_reduction_combine_fn.<locals>.argmax_combine_fn9  s  ø€ ð  !ÑˆGØ ÑˆGàÐ!PÔPÜ—v’v˜gÓ/‘ä—v’v˜gÓ/�ä—F’F˜7Ó,ˆEÜ˜e×$Ò$ÜŸ&š& Ó2�ÜŸ&š& Ó2�Ü—~’~ d¬C¯FªF°7Ó,DÓE�ÜŸš u¬c¯oªo¸gÓ.OÓP�÷ 'ô —’�wÔ(ä—V’V˜GÓ-ð ô
 —>’> $¬¯ª¸Ó(CÓDˆDä—	’	˜$¨Ó1Ü—	’	˜$¨Ó1ðð r›   Úwelford_combinec               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rŠ  z#tuple[OpsValue, OpsValue, OpsValue]r‹  r¦   r“   )r§   s   "rœ   r¨   rŒ  Z  s&   € ÷ 	ñ 	Ø2ð	à2ð	ð 1ñ	r›   c           	     ó˜  € V w  r#pVw  rVp\         P                  ! \         P                  ! \         P                  ! V4      \         P                  ! W%4      4      \         P
                  ! R \        P                  4      WR,
          4      pWG,           p	Wy,          p
W(V
,          ,           W6,           Wˆ,          V,          V
,          ,           V	3# )g        )ry   rŽ  rœ  Úisinfr�  r@  rD  Úfloat32)rŠ  r‹  Úa_meanÚa_m2Úa_weightÚb_meanÚb_m2Úb_weightÚdeltaÚ
new_weightÚ	w2_over_ws   &&         rœ   Úwelford_combine_fnÚ4get_reduction_combine_fn.<locals>.welford_combine_fnZ  sŸ   € ð &'Ñ"ˆF˜(Ø%&Ñ"ˆF˜(ô
 —I’IÜ—’¤§	¢	¨&Ó 1´3·6²6¸&Ó3IÓJÜ—’˜S¤%§-¡-Ó0Ø•óˆEð
 "Õ,ˆJØ Õ-ˆIà Õ*Õ*Ø•˜e�m¨hÕ6¸ÕBÕBØðð r›   zunknown reduction_type=)r  r{  ©Úargmaxr–  Úargmax_valuer—  Úargmax_with_valuer˜  )rƒ  rM   Ústrict_signed_zeror4   rY  )r…  r7  r†  r‘  r¦  r¶  r�  s   fff   @rœ   Úget_reduction_combine_fnr½    sœ   û€ ð Ô-Ô-Ü)¨.Õ9ˆ
ô ×%×%Ð%Ø .Ô0Ü˜u×%Ò%÷9ð 9ð 1Ð0àÐà	ð ô 
÷	ò 	ð: !Ð à	Ð,Ô	,õ	ð. "Ð!ô "Ð$;¸NÐ;KÐ"LÓMÐMr›   c                  ó>  a € ] tR tRt$ RtR]R&   R]R&   R]R&   R	]R
&   RtR]R&   RtR]R&   R R lt]t	]
! R 4      R=R V 3R lll4       tR R ltR R ltR R ltR R ltR R ltR=R R  lltR! R" lt]R>R# R$ ll4       t]R% R& l4       t]]P0                  R3R'R/R( R) lll4       t]R* R+ l4       t]R, R- l4       t]R. R/ l4       t]R0 R1 l4       t]R>R2 R3 ll4       t]R4 R5 l4       t]R=R6 R7 ll4       t ]R>R'R/R8 R9 lll4       t!]R: R; l4       t"R<t#V ;t$# )?Ú	Reductioniw  zGIR node representing a reduction over one or more iteration dimensions.ry  Úreduction_rangesr]   r…  rR  Ú	src_dtypera   Úreduction_hintFr¸   Ústrict_sum_multirowNrÉ  Ústrict_sum_rblockc               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   ÚReduction.__annotate__„  s   € ÷ Nñ N˜ñ Nr›   c                	ó$   € V P                  R4      # )r¸  )r¸  rÀ  r…  rÒ  rë  s   &rœ   rÓ  ÚReduction.__str__„  s   € Ø�|‰|ÐLÓMÐMr›   c               ó    € V ^8„  d   QhRRRR/# r  r“   )r§   s   "rœ   r¨   rÆ  Š  s   € ÷ 
ñ 
°$ð 
ÐCUñ 
r›   c                	ó†   <a€ \         SV `  S4      \        4       P                  ! V3R  lV P                   4       !  ,          # )c              3  ó<   <"  € T F  p\        VS4      x € K  	  R # 5irª   r*   r½  s   & €rœ   r  Ú1Reduction.get_free_symbol_uses.<locals>.<genexpr>Œ  s   øé € ÐPÑ:O°QÔ˜q -×0Ð0Ó:OùrÀ  )Úsuperr'  rD   rÁ  rÀ  ©rì  r³  Ú	__class__s   &f€rœ   r'  ÚReduction.get_free_symbol_uses‰  s7   ù€ ä‰wÑ+¨MÓ:¼Z»\×=OÒ=OÜP¸$×:OÒ:OÓPñ>
õ 
ð 	
r›   c               ó   € V ^8„  d   QhRR/# rx  r“   )r§   s   "rœ   r¨   rÆ  �  s   € ÷ %ñ %Ð$6ñ %r›   c                	ó   € V P                   # rª   )rÀ  rë  s   &rœ   r1  ÚReduction.get_reduction_size�  s   € Ø×$Ñ$Ð$r›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   rÆ  ’  s   € ÷ #ñ # Jñ #r›   c                	ó   € V P                   # rª   )r…  rë  s   &rœ   r+  ÚReduction.get_reduction_type’  ó   € Ø×"Ñ"Ð"r›   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r¤   rU  rO  rV  rW  rX  r/  Úreduction_varsúSequence[Symbol]r¦   r¿   r“   )r§   s   "rœ   r¨   rÆ  •  sC   € ÷ Lñ LàðLð 3ðLð ð	Lð
 )ðLð 
ñLr›   c           	     	óâ   € \         P                  ! V P                  V P                  V P                  V P                  W44      4      p\         P                  ! T;'       g    R V! V4      V4       R# )r[  N)ry   Ú	reductionr7  rÁ  r…  r·  Ústore_reduction)rì  rU  rV  rX  rÙ  rJ  s   &&&&& rœ   rÝ  ÚReduction.store_reduction•  sU   € ô —’Ø�J‰JØ�N‰NØ×ÑØ�M‰M˜$Ó/ó	
ˆô 	×Ò˜K×4Ð4¨9±g¸d³mÀUÖKr›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   rÆ  ¤  s   € ÷ =ñ =˜cñ =r›   c                	ó`   € \        V P                  4      \        V P                  4      ,           # rª   )rð   r¸  rÀ  rë  s   &rœ   Úindex_lengthÚReduction.index_length¤  s!   € Ü�4—;‘;Ó¤# d×&;Ñ&;Ó"<Õ<Ð<r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   zSequence[Sequence[Expr]]r“   )r§   s   "rœ   r¨   rÆ  §  s   € ÷ ñ Ð7ñ r›   c                	ó’   € V P                  V P                  4      pV P                  V P                  \        P                  4      pW3# rª   )rõ  r¸  rÀ  rL   ÚR0_INDEX)rì  rë   Úrindexs   &  rœ   rý  ÚReduction.inner_fn_args§  s6   € Ø—‘˜DŸK™KÓ(ˆØ—‘˜T×2Ñ2´D·M±MÓBˆØˆÐr›   c               ó    € V ^8„  d   QhRRRR/# r  r“   )r§   s   "rœ   r¨   rÆ  ¬  s   € ÷ 
ñ 
°4ð 
ÐDVñ 
r›   c                	ó¼   € V P                  V P                  4      pV P                  V P                  \        P                  4      p\        V P                  W#VR 7      # r  )rõ  r¸  rÀ  rL   ræ  rU   r·  )rì  r³  rë   rç  s   &&  rœ   rÂ  ÚReduction.inner_fn_free_symbols¬  sF   € Ø—‘˜DŸK™KÓ(ˆØ—‘˜T×2Ñ2´D·M±MÓBˆÜ#Ø�M‰M˜5¸ô
ð 	
r›   c               ó    € V ^8„  d   QhRRRR/# r>  r“   )r§   s   "rœ   r¨   rÆ  ³  s   € ÷ 
ñ 
¨ð 
¸&ñ 
r›   c                ó8  € V P                  4       p\        P                  ! \        RV4      ! V4      p\	        VV P
                  VV P                  V P                  V P                  V P                  \        P                  V P                  V P                  R7
      # )re  rf  ©
r8  r7  r·  r¸  rÀ  r…  rÁ  rÂ  rÃ  rÄ  )r·  r!   r‘   rh  r¿  r7  r¸  rÀ  r…  rÁ  ra   ÚDEFAULTrÃ  rÄ  ri  s   && rœ   r@  ÚReduction.constant_to_device³  s}   € à×!Ñ!Ó#ˆÜ—’œnÐ.?ÀÔHÈÓPˆÜØØ—*‘*ØØ—;‘;Ø!×2Ñ2Ø×.Ñ.Ø—n‘nÜ(×0Ñ0Ø $× 8Ñ 8Ø"×4Ñ4ô
ð 	
r›   c               ó@   € V ^8„  d   QhRRRRRRRRRR	R
R	RRRRRRRR/
# )r¤   r8  r¦  Ú	dst_dtyperR  rÁ  r·  zCallable[_P, OpsValue]r¸  ry  rÀ  r…  zReductionType | Literal['scan']Úreduction_numelr"   Ú
input_noder3  r¦   útuple[ReductionHint, _IntLike]r“   )r§   s   "rœ   r¨   rÆ  Å  sx   € ÷ Tñ TØðTàðTð ðTð )ð	Tð
 #ðTð -ðTð 8ðTð ðTð "ðTð 
(ñTr›   c	                óä	  € V\        V4      .p	\        P                  P                  P	                  V	4      '       g   \
        P                  ^3# \        P                  P                  P                  V4      p
\        V4      p\        P                  P                  P                  V4      p\        P                  P                  V \        P                  4      ;'       d9    \        V 4      '       * ;'       g!    \        P                  P                  WV4      pRpVR8H  ;'       g,    V'       * ;'       d    Wn9  ;'       d    \        P                  pVR8X  d   \
        P                  ^3# \         P"                  ! V 4      pVP$                  p^ pV'       dd   \&        P(                  ! \        P                  P*                  V RR7      p\&        P(                  ! \        P                  P*                  V RR7      pMR R lpTpV^8X  dý   V! W¬4      pV^8X  d   \
        P,                  V3# VeÆ   \/        V\0        4      '       d°   \2        P4                  ! \6        R	R4      ;_uu_ 4        \9        V4      w  ppRRR4       Xeq   Xem   \        P                  P                  P;                  \        VV,           4      4      pV
V8X  d-   \<        P?                  R
VVVVV4       \
        P,                  R3# \
        P,                  V3# V
V8:  g   VV^,          ^ ,          8¼  d   \
        P                  ^3# \A        T TTTTVR8w  d   TMRV\
        P                  R7      pR R lpV! V4      w  ppV'       d   V! V4      w  pp\C        V4      ^ 8X  d   \
        P                  ^3# \D        PF                  ! VPI                  4       VPK                  4       4      w  w  ppp^ p ^ p!V F¿  p"\        P                  P                  PM                  V"V4      p#\        P                  P                  PO                  V#V\Q        VPS                  4       4      4      p$\T        ;QJ d    R V$ 4       F  '       d   K   RM	  RM! R V$ 4       4      p%V%'       d   V ^,          p K¶  V!^,          p!KÁ  	  V!V 8”  d   \
        P,                  V! W¬4      3# \
        PV                  V! W¬4      3#   + '       g   i     ELn; i)zT
Choose the reduction hint and split count from shape and input stride information.
Úscanr€  T)Úinner_reductionFc               ó$   € V ^8„  d   QhRRRRRR/# )r¤   Úreduction_numel_hintr¬   Ú
numel_hintr¦   r“   )r§   s   "rœ   r¨   Ú*Reduction.num_splits.<locals>.__annotate__  s&   € ÷ ñ Ø&)ðàðð ñr›   c                ó   € ^# rð  r“   )rú  rû  s   &&rœ   Úinner_reduction_splitsÚ4Reduction.num_splits.<locals>.inner_reduction_splits  s   € ñ r›   Nrú  z°Use previous IRNode's range and reduction_ranges instead of split. current ranges: %s, current reduction ranges: %s, current split: %d, new ranges: %s, new reduction ranges: %sr  ©r8  r7  r·  r¸  rÀ  r…  rÁ  rÂ  c               ó    € V ^8„  d   QhRRRR/# )r¤   rì  r¿  r¦   ztuple[Sequence[Expr], bool]r“   )r§   s   "rœ   r¨   rü  @  s   € ÷ 7	Eñ 7	E 	ð 7	EÐ.Iñ 7	Er›   c           	     óP  a€ V P                  4       pVf   \        R4      h\        R \        VV P	                  4       V P                  4       R7      V R7      pVP                  4       pVP                  f   \        R4      hVP                   Uu. uF?  p\        V\        4      '       g   K  \        V\        P                  4      '       d   K=  VNKA  	  pp\        P                  ! V P                  4       V P                  4       4      w  w  rgpV Uu. uF?  p\        V\        4      '       g   K  \        V\        P                  4      '       d   K=  VNKA  	  pp. p. p	Rp
\        VP                   R R7       EF•  pVP"                  P$                  o\&        ;QJ d    V3R lV 4       F  '       d   K   RM	  R	M! V3R lV 4       4      pV'       * ;'       d;    \(        ;QJ d    V3R
 lV 4       F  '       g   K   R	M	  RM! V3R
 lV 4       4      pV'       d   VP+                  VP"                  4       M#V'       d   V	P+                  VP"                  4       V'       g   V'       g   Kö  VP,                  \.        P0                  P2                  9   g   EK"  \.        P0                  P2                  VP,                  ,          p\5        VP6                  RR 4      pVP9                  4        \5        VP6                  RR 4      V8w  g   EK“  R	p
EK˜  	  T;'       g    T	V
3# u upi u upi )Nr¨  ©r8  r7  r5  ©rŽ   r’  r‘  z+Expected read_writes.range_vars is not NoneFc                ó   € V P                   # rª   r  r­   s   &rœ   Ú<lambda>Ú@Reduction.num_splits.<locals>.get_read_indices.<locals>.<lambda>c  s   € ¸a¿fºfr›   ©Úkeyc              3  ó,   <"  € T F	  qS9   x € K  	  R # 5irª   r“   ©r  Úvarr9   s   & €rœ   r  ÚAReduction.num_splits.<locals>.get_read_indices.<locals>.<genexpr>e  s   øé € Ð'RÁzÀ¨|Ö(;Ãzùó   ƒTc              3  ó,   <"  € T F	  qS9   x € K  	  R # 5irª   r“   r  s   & €rœ   r  r  i  s   øé € ð NÙ3A¨C˜<Ö'³>ùr  r6  )rB  rÓ   rà  r?  rA  r<  r  Ú
range_varsr«   r"   rÌ   r   rN   Úindex_vars_squeezer1  Úsortedr  rë   r9   r  rƒ  r@  rŽ   r{   r9  Úname_to_bufferrà   r’  Údecide_layout)rì  r8  ÚcbÚread_writesr  r  r&  rÙ  ÚindicesÚbroadcasted_reduction_indicesÚchangedÚmdÚis_full_size_readÚis_broadcasted_reduction_readÚbufÚoriginal_strider9   s   &               @rœ   Úget_read_indicesÚ.Reduction.num_splits.<locals>.get_read_indices@  sŠ  ø€ Ø—\‘\“^ˆFØŠ~Ü$Ð%BÓCÐCÜØÜ%Ø!ØŸ+™+›-ØŸ™›ôð
 ôˆBð ×,Ñ,Ó.ˆKð ×%Ñ%Ò-Ü$Ð%RÓSÐSð '×1Ò1óá1�CÜ˜c¤4×(ô ä1;¸CÄÇÁ×1N÷ �Ù1ð ð ô
 &2×%DÒ%DØ—
‘
“˜a×2Ñ2Ó4ó&Ñ"ÑˆQ ñ
 *óá)�CÜ˜c¤4×(ô ä1;¸CÄÇÁ×1N÷ �Ù)ð ð ð
 ˆGØ,.Ð)ØˆGÜ˜[×.Ñ.Ñ4D×EÐE�Ø!Ÿx™x×4Ñ4�ß$'£CÔ'RÁzÓ'R§C§C¢CÔ'RÁzÓ'RÓ$RÐ!ð 5FÔ0E÷ 1ð 1Ï#Ë#ô NÙ3AóNÏ#Ï#Ê#ô NÙ3AóNó KÐ-÷ %Ø—N‘N 2§8¡8Õ,ß2Ø1×8Ñ8¸¿¹ÔBß$×(EÑ(EØ—w‘w¤!§'¡'×"8Ñ"8×8ÜŸg™g×4Ñ4°R·W±WÕ=˜Ü*1°#·*±*¸hÈÓ*M˜Ø×)Ñ)Ô+Ü" 3§:¡:¨x¸Ó>À/×QØ&*›Gñ' Fð( ×;Ð;Ð;¸WÐDÐDùòIùòs$   ÂLÂ+LÃLÄL#Ä.L#ÅL#c              3  óD   "  € T F  q^ 8H  ;'       g    V^8„  x € K  	  R# 5iri  r“   r  s   & rœ   r  Ú'Reduction.num_splits.<locals>.<genexpr>�  s   é € Ð9±¨A˜Q™Ÿ˜ ! a¡%œ³ùs   ‚ ’ r¸  rl  ),ru   r{   r9  r:  Úall_unbacked_explicitly_hintedra   rï  r;  Úhas_featurerO   ÚREDUCE_TO_SINGLE_ELEMENTra  ÚchoicesÚ should_use_cooperative_reductionrM   Úsplit_reductionsr`   rê  Úmulti_processor_countÚ	functoolsr   Úreduction_split_factorÚINNERr«   r    r!   r‘   r?  rV   Ú!replace_backed_symbols_with_hintsÚlogr/  r¿  rð   rN   r  r<  r1  Úsimplify_with_rangesÚstride_hintsrÅ   Úkeysr  ÚOUTER)&r8  rò  rÁ  r·  r¸  rÀ  r…  ró  rô  Úexprsrú  Únumelrû  Úshould_reduce_to_single_elementÚarg_reduction_typesÚshould_splitÚpropsÚnum_smÚmin_elements_per_threadrþ  Úouter_reduction_splitsrA  Ú
new_rangesÚnew_reduction_rangesÚextracted_numel_hintrì  r  r  r  r&  rÙ  Úranges1Ú	num_outerÚ	num_innerrò   ÚjrŠ  Úouters&   &&&&&&&&&                             rœ   Ú
num_splitsÚReduction.num_splitsÄ  sl  € ð" !¤-°Ó"7Ð8ˆÜ�w‰w×Ñ×>Ñ>¸u×EÒEÜ ×(Ñ(¨!Ð+Ð+Ü Ÿw™w×/Ñ/×AÑAÀ/ÓRÐÜ˜fÓ%ˆÜ—W‘W×%Ñ%×7Ñ7¸Ó>ˆ
ô
 +,¯'©'×*=Ñ*=Ø”N×;Ñ;ó+
÷ +
ð +
ô ˜&Ó!Ô!÷ ð Ü�y‰y×9Ñ9Ø˜óð	 	(ð
Ðð &¨Ñ/÷ 
ð 
Ø/Ô/÷ (ð (ØÑ9÷(ð (ä×'Ñ'ð 	ð ˜UÔ"ä ×(Ñ(¨!Ð+Ð+ä ×'Ò'¨Ó/ˆØ×,Ñ,ˆØ"$ÐßÜ@I×@QÒ@QÜ—	‘	×0Ñ0°&È$ôAÐ"ô AJ×@QÒ@QÜ—	‘	×0Ñ0°&È%ôAÑ"õ
ð &<Ð"ð ˜Œ?Ù*Ð+?ÓLˆEØ˜Œzä$×*Ñ*¨EÐ1Ð1ØÒ%¬*°ZÄ×*KÒ*KÜ—\’\¤.Ð2BÀD×IÕIô <¸JÓGñØ"Ø,÷ Jð
 Ò)Ð.BÒ.NäŸ™×(Ñ(×JÑJÜ)¨*Ð7KÕ*KÓLóð )ð
 ,Ð/CÔCÜŸ	™	ðGð #Ø,Ø!Ø&Ø0ô	ô  -×2Ñ2°BÐ6Ð6Ü ×&Ñ&¨Ð-Ð-à Ð$;Ô;Ø˜V a�Z¨"�_Ô,ä ×(Ñ(¨!Ð+Ð+äØØØØØ-Ø-;¸vÔ-E™>È5ØÜ(×0Ñ0ô	
ˆõ7	Eñr ,¨AÓ.Ñˆ�ßÙ)¨!Ó,‰JˆG�Qäˆw‹<˜1Ôä ×(Ñ(¨!Ð+Ð+ä'3×'FÒ'FØ�J‰J‹L˜!×.Ñ.Ó0ó(
Ñ$ÑˆˆN˜Wð ˆ	Øˆ	ÛˆAÜ—‘× Ñ ×5Ñ5°a¸ÓAˆAÜ—g‘g×&Ñ&×3Ñ3Ø�>¤4¨¯©«Ó#7óˆG÷
 “CÑ9±Ó9—C—C’CÑ9±Ó9Ó9ˆEßØ˜Q•’	à˜Q•’	ñ ð �yÔ Ü ×&Ñ&Ñ(>Ø$ó)ð ð ô !×&Ñ&Ñ(>Ø$ó)ð ð ÷E J×IÐIús   É*SÓS/	c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r¤   r·  z<Callable[[Sequence[_IntLike], Sequence[_IntLike]], OpsValue]rÀ  ry  r…  r�   rÁ  rR  r¦   z(Callable[[Sequence[_IntLike]], OpsValue]r“   )r§   s   "rœ   r¨   rÆ  œ  s:   € ÷ 7ñ 7ØNð7à,ð7ð ð7ð ð	7ð
 
2ñ7r›   c                ó,  a aaaaa€ \         P                  P                  P                  S4      o\	        W#4      oR VVV3R lloVR9   dF   \        S\        P                  S4      4      oR VV 3R lloVR9   d   S# VR	9   d   V3R l# V3R l# S oS# )
z1Convert inner_fn from a reduction to an pointwisec               ó    € V ^8„  d   QhRRRR/# )r¤   rë   ry  r¦   r   r“   )r§   s   "rœ   r¨   Ú4Reduction._unroll_reduction_fn.<locals>.__annotate__§  s   € ÷ 		ñ 		Ð(ð 		¨Sñ 		r›   c                óª   <a € \         P                  ! SV V3R  l\        P                  ! S Uu. uF  p\	        V4      NK  	  up!   4       4      # u upi )c              3  ó6   <"  € T F  pS! SV4      x € K  	  R # 5irª   r“   )r  rç  rë   Úvalue_fns   & €€rœ   r  Ú=Reduction._unroll_reduction_fn.<locals>.fn.<locals>.<genexpr>ª  s&   øé € ð ñ#˜ñ ˜U F×+Ð+ó#ùó   ƒ)r*  ÚreduceÚ	itertoolsÚproductrñ   )rë   r¥   r�  rÀ  rL  s   f €€€rœ   rá   Ú*Reduction._unroll_reduction_fn.<locals>.fn§  sN   ù€ Ü×#Ò#Øõä"+×"3Ò"3Ù,<Ó=Ñ,< qœ% ž(Ñ,<Ñ=ò#óóð ùò
 >s   ®Ac               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rë   ry  rç  r¦   r”  r“   )r§   s   "rœ   r¨   rI  À  s$   € ÷ 
ñ 
Ø)ð
Ø3Eð
à*ñ
r›   c                óò   <€ V Uu. uF  p\         P                  ! V4      NK  	  ppS! W4      p\        V\        4      '       d   V# V\        P
                  ! S! V4      \        P                  4      3# u upi rª   )rÌ   Úexpandr«   rÆ   ry   Ú
index_exprrD  Úint64)rë   rç  rò   rJ  Úflatten_indexr·  s   &&  €€rœ   rL  Ú0Reduction._unroll_reduction_fn.<locals>.value_fnÀ  sf   ø€ ñ 4:Ó:±6¨aœ%Ÿ,š, qž/±6�Ð:Ù  Ó/�Ü˜e¤U×+Ò+Ø �LàÜ—N’N¡=°Ó#8¼%¿+¹+ÓFðð ùò	 ;s   †A4c                ó"   <€ S! V 4      ^ ,          # rŽ  r“   ©rë   rá   s   &€rœ   r  Ú0Reduction._unroll_reduction_fn.<locals>.<lambda>Ï  s   ø€ ¡R¨£Y¨q¦\r›   c                ó"   <€ S! V 4      ^,          # rð  r“   r[  s   &€rœ   r  r\  Ð  s   ø€ ¡ E£¨1¦r›   )r–  r¹  r—  rº  r˜  r»  )r˜  r»  )r—  rº  )r{   r9  r:  Úguard_int_seqr½  Ú_fixed_indexerr?  r@  )r·  rÀ  r…  rÁ  r�  rX  rá   rL  s   ff&&@@@@rœ   Ú_unroll_reduction_fnÚReduction._unroll_reduction_fn›  s›   ý€ ô Ÿ7™7×+Ñ+×9Ñ9Ð:JÓKÐä-¨nÓHˆ
÷		ò 		ð ð 
ô 
ô +Ø Ü×1Ñ1Ð2BÓCóˆM÷

ñ 
ð Ð!KÔKØ�	ØÐ!AÔAÜ1Ð1Ü-Ð-àˆHØˆIr›   Ú
strict_sumc               óD   € V ^8„  d   QhRRRRRRRRRR	R
R	RRRRRRRRRR/# )r¤   r8  r¦  rò  rR  rÁ  r·  r¶  r¸  ry  rÀ  r…  r]   rÂ  ra   rô  r3  rb  r¸   r¦   r    r“   )r§   s   "rœ   r¨   rÆ  ×  s…   € ÷ jñ jàðjð ðjð ð	jð
 %ðjð #ðjð -ðjð &ðjð &ðjð "ðjð ðjð 
ñjr›   c
               ó„  aaaaa"a#a$a%a&€ \         P                  P                  P                  \	        S4      4      o%S%^ 8X  dn   R V3R llpRV! ^ 4      RV! ^ 4      RV! ^4      RV! ^ 4      /o&SS&9  d   \        S R24      hR VVV&3R	 llp\        P                  VVV\        V4      R
7      # RpRpRpV
'       Ed   V\        P                  \        P                  39   Edí   \	        V4      p\         P                  P                  P                  S%V.4      '       Ed°   \         P                  P                  P                  S%4      p\        P                  ! VP                   4      p\#        V^ V,          4      pR"pVV8*  ;'       dˆ    \         P                  P                  P%                  \&        P(                  ! \&        P*                  ! V^ 4      \&        P,                  ! VV4      \&        P,                  ! VV,          V4      4      RR7      pV'       d¶   ^pVV\        P.                  ,          8*  pV'       d5   \#        VV4      p^V^,
          P1                  4       ,          pVV,          pM]\        P2                  ! V^V4      pVP4                  pVP6                  \        P8                  8”  d   VV,          ^ 8X  d   VP6                  pVRJp
V'       d{   Vf   \        R4      hS%o"So$V P;                  SS4      o#R V"V#V$3R llp\=        \>        R\@        3,          V4      o\&        PB                  ! V4      .o\&        PB                  ! V4      o%S%^8X  d=   V
'       g5   SR#9   d   R V3R llpM
R VV3R llp\        P                  VSVVR
7      # \E        S%\B        4      '       d„   \G        S%4      \H        PJ                  8  df   \	        V4      ^8w  g   \M        VPN                  4      '       d;   SR8w  d4   V
'       g,   \        P                  VSV PQ                  SSSV4      VR
7      # Vf   V PS                  VSVSVSSS%V	4	      w  ppM\        P                  TppR V%3R llpVf	   V! V4      pV\        P                  8X  d   TpVR$8X  dƒ   V	f   \        R4      h\T        PV                  ! \X        RR4      ;_uu_ 4        \[        V	4      w  ppRRR4       Xf   \        R4      hXf   \        R4      hV P]                  VSVSVSVVSV4
      # V^8”  dã   V P_                  VSVSVSSVVV	V
R7      pRp \H        P`                  Pb                  '       d%   \E        V\d        4      '       d   R R  lp!V!! V4      p V '       dw   \E        V Pf                  \h        4      '       g    \        \O        V Pf                  4       4      hV Pf                  Pj                  ^ ,          V n6        SV n7        VV n8        SV n9        V# \d        P                  \i        VSSVSSVVVVR!7
      4      pV#   + '       g   i     EL\; i)%za
Create a reduction node. May split the reduction to multiple layers to expose
more parallelism.
c               ó    € V ^8„  d   QhRRRR/# )r¤   Úvalr‘   r¦   zbool | float | intr“   )r§   s   "rœ   r¨   Ú&Reduction.create.<locals>.__annotate__ï  s   € ÷ 
$ñ 
$˜Vð 
$Ð(:ñ 
$r›   c                ó<  <€ S\         P                  8X  d   \        V 4      # SP                  '       d6   \        V \        4      '       g   \        \        V 4      4      h\        V 4      # \        V \        4      '       g   \        \        V 4      4      h\        V 4      # rª   )
rD  r¸   r?  r«   r   rÓ   r�   rA  r   r¬   )rf  rò  s   &€rœ   Úpy_cnstÚ!Reduction.create.<locals>.py_cnstï  sp   ø€ Ø¤§
¡
Ô*Ü ›9Ð$Ø×0×0Ð0Ü% c¬=×9Ò9Ü,¬T°#«YÓ7Ð7Ü  ›:Ð%ä% c¬;×7Ò7Ü,¬T°#«YÓ7Ð7Ü˜s›8�Or›   r  r�  r}  rƒ  ú* not supported for zero-dimension tensors!c               ó    € V ^8„  d   QhRRRR/# ©r¤   rë   r¬   r¦   rz   r“   )r§   s   "rœ   r¨   rg    s   € ÷ Pñ P ð P¨ñ Pr›   c                ó@   <€ \         P                  ! SS,          S4      # rª   ©ry   r@  )rë   rò  r…  Úrtypes_to_initss   &€€€rœ   Úconst_fnÚ"Reduction.create.<locals>.const_fn  s   ø€ Ü—|’| O°NÕ$CÀYÓOÐOr›   rg  NF)Úfallback_valuez.strict multirow sum requires a reduction blockc               ó$   € V ^8„  d   QhRRRRRR/# ©r¤   rë   rÚ  Úreduction_indexr¦   rz   r“   )r§   s   "rœ   r¨   rg  K  s$   € ÷ 7ñ 7Ø'ð7Ø:Jð7àñ7r›   c                óþ   <€ Vw  p\        S4      p\        P                  ! \        P                  ! W#4      \        P                  ! SV4      4      p\        P
                  ! SW4      p\        P                  ! WES4      # rª   )rk   ry   r™  rV  r*  r   Úmasked)	rë   rv  rç  Úindex_dtyper¡  ÚbodyÚactual_reduction_numelÚdefaultÚoriginal_inner_fns	   &&    €€€rœ   Úpadded_inner_fnÚ)Reduction.create.<locals>.padded_inner_fnK  sf   ø€ ð ,‘	�ä-Ð.DÓE�Ü—v’vÜ—N’N 6Ó7Ü—N’NÐ#9¸;ÓGó�ô !×(Ò(Ð):¸EÓS�Ü—z’z $¨gÓ6Ð6r›   .c               ó    € V ^8„  d   QhRRRR/# rm  r“   )r§   s   "rœ   r¨   rg  `  s   € ÷ 6ñ 6˜cð 6 hñ 6r›   c                ó2   <€ \         P                  ! ^ S4      # rŽ  ro  )rë   rò  s   &€rœ   rá   ÚReduction.create.<locals>.fn`  s   ø€ ÜŸ<š<¨¨9Ó5Ð5r›   c               ó    € V ^8„  d   QhRRRR/# rm  r“   )r§   s   "rœ   r¨   rg  e  s   € ÷ <ñ <˜cð < hñ <r›   c                óp   <€ S Uu. uF  p\         P                  P                  NK  	  ppS! W4      # u upi rª   ©rÌ   rò  ró  )rë   r&  rv  r·  rÀ  s   &  €€rœ   rá   r‚  e  s2   ø€ Ù=MÓ&NÑ=M¸¤u§w¡w§|¤|Ñ=M�OÐ&NÙ# EÓ;Ð;ùò 'Oó   †#3r€  c               ó    € V ^8„  d   QhRRRR/# )r¤   rA  r¬   r¦   r“   )r§   s   "rœ   r¨   rg  ‘  s   € ÷ 	ñ 	¨ð 	°ñ 	r›   c                óp   <€ \        S4      '       d   V # V ^8”  d   \        V \        P                  4      # V # rð  )r®   r  rM   Úmin_num_split)rA  ró  s   &€rœ   Ú_maybe_increase_splitÚ/Reduction.create.<locals>._maybe_increase_split‘  s2   ø€ ä˜/×*Ò*Ø�Ø�qŒyÜ˜5¤&×"6Ñ"6Ó7Ð7à�r›   zExpected input_node is not Nonerú  TzExpected new_ranges is not Nonez)Expected new_reduction_ranges is not None©rb  c               ó    € V ^8„  d   QhRRRR/# )r¤   Úcur_noder    r¦   zComputedBuffer | Noner“   )r§   s   "rœ   r¨   rg  Í  s   € ÷ ñ Ø'ðà*ñr›   c                ót  € V P                  4       p\        V4      ^8w  d   R# \        \        V4      4      pV\        P
                  P                  9  d   R# \        P
                  P                  V,          p\        V\        4      '       g   R# VP                  P                  4       f   \        R4      hV# )rñ  Nz2Expected buf.data.get_reduction_type() is not None)r
  rð   ÚnextÚiterr{   r9  r  r«   rà  r‘  r+  rÓ   )rŽ  Ú
read_namesÚbufnamer  s   &   rœ   Ú_find_split_reductionÚ/Reduction.create.<locals>._find_split_reductionÍ  s“   € ð "*×!8Ñ!8Ó!:�JÜ˜:“¨!Ô+Ù#ä"¤4¨
Ó#3Ó4�GØ¤a§g¡g×&<Ñ&<Ô<Ù#ÜŸ'™'×0Ñ0°Õ9�CÜ% c¬>×:Ò:Ù#à—x‘x×2Ñ2Ó4Ò<Ü,ØPóð ð �Jr›   rî  iÿÿÿ)r–  r¹  rl  ):r{   r9  r:  Úsimplifyru   rÓ   rD  rê  rÅ   ra   rï  r,  r#  Ú	guard_intr0   Úvec_sizeÚitemsizerf   Úevaluate_exprrÌ   ro  ÚGtrq  Ú_K_MULTIROW_MAX_LOADSÚ
bit_lengthÚcompute_inner_tree_paramsÚbatch_total_elementsÚnum_batchesÚ_K_TWO_KERNEL_THRESHOLDr’   r   r   r   r#   r«   r¬   rM   Úunroll_reductions_thresholdrq   r�   r`  rD  r!   r‘   r?  rV   Ú!create_multilayer_existing_rangesÚcreate_multilayerrZ  Úmix_order_reductionr    r‘  r¿  rÀ  Ú_split_sizeÚ_original_inner_fnÚ_original_rangesÚ_original_reduction_ranges)'rê  r8  rò  rÁ  r·  r¸  rÀ  r…  rÂ  rô  rb  ri  rq  Ústrict_splitrÃ  rÄ  Únum_outputsÚguarded_reduction_numelÚvector_sizeÚnum_batches_ubÚ	int32_maxÚindexing_safeÚ	num_loadsÚparamsr~  rá   ÚhintrA  rŠ  r<  r=  r'  Úsplit_reductionr”  r{  r|  r}  ró  rp  s'   &&f&f&ff&&$                       @@@@@rœ   rê  ÚReduction.createÕ  s  ÿø€ ô( Ÿ'™'×*Ñ*×3Ñ3´MÐBRÓ4SÓTˆà˜aÔ÷
$ð 
$ð ‘w˜q“zØ™7 1›:Ø™ ›
Ø‘w˜q“zð	ˆOð  _Ô4Ü$Ø%Ð&Ð&PÐQóð ÷Pò Pô ×#Ñ#ØØØ!Ü˜F“|ð	 $ó ð ð ˆØ#ÐØ Ðßˆ:˜.Ü×!Ñ!Ü×Ñð-
õ 
ô (¨Ó/ˆKÜ�w‰w×Ñ×>Ñ>Ø  +Ð.÷ó ô +,¯'©'×*:Ñ*:×*DÑ*DÀ_Ó*UÐ'Ü-×6Ò6°y×7IÑ7IÓJ�Ü!(Ð)@À"À{ÕBRÓ!S�Ø%�	à+¨yÑ8÷ ð ÜŸ™×(Ñ(×6Ñ6ÜŸ	š	Ü!ŸHšH [°!Ó4Ü!ŸHšH [°)Ó<Ü!ŸHšH [°>Õ%AÀ9ÓMóð
 (-ð 7ó ð ÷ !Ø#$�Là/Ø&¬×)NÑ)NÕNñOð (÷ +Ü$+Ð,CÀ[Ó$Q˜	Ø$%¨)°a­-×)CÑ)CÓ)EÕ$E˜	Ø,5¸Õ,CÑ)ä!0×!JÒ!JØ3ØØ'ó"˜ð
 -3×,GÑ,GÐ)à"×.Ñ.´×1XÑ1XÔXØ 7Ð:KÕ KÈqÔ Pà+1×+=Ñ+=˜LØ!¨Ð-ˆ
çØ Ò(Ü$Ð%UÓVÐVØ%4Ð"Ø (ÐØ×'Ñ'¨¸	ÓBˆG÷7ò 7ô œH S¬# XÕ.°Ó@ˆHÜ %§¢Ð.?Ó @ÐAÐÜ#ŸmšmÐ,=Ó>ˆOà˜aÔ¯
àÐ!5Ô5÷6ñ 6÷
<ñ <ô ×#Ñ#Ø Y¸ÀFð $ó ð ô
 �¬×0Ò0Ü�OÓ$¤v×'IÑ'IÔIÜ˜vÓ&¨!Ô+¬v°f·k±k×/BÒ/BØ %Ô'ßô ×#Ñ#ØØØ×1Ñ1ØÐ.°À	óð ð $ó ð ð ÒØŸ.™.ØØØØØØ ØØØó
‰KˆD‘%ô (×-Ñ-¨|�%ˆD÷	ð 	ð ÒÙ)¨%Ó0ˆEð
 œ]×2Ñ2Ô2Ø!ˆNØ�BŒ;ØÒ!Ü$Ð%FÓGÐGÜ—’œnÐ.>À×EÕEÜ3VØó4Ñ0�
Ð0÷ Fð Ò!Ü$Ð%FÓGÐGØ#Ò+Ü$Ð%PÓQÐQØ×8Ñ8ØØØØØØ ØØ$ØØóð ð �QŒYà×'Ñ'ØØØØØØ ØØØØØ%ð (ó ˆCð #ˆOÜ�}‰}×0×0Ð0´ZÀÄY×5OÒ5Oõñ* #8¸Ó"<�çô " /×"6Ñ"6¼	×BÒBÜ(¬D°×1EÑ1EÓ,FÐ+GÓIÐIØ.=×.BÑ.B×.SÑ.SÐTUÕ.V�Ô+Ø5=�Ô2Ø39�Ô0Ø=M�Ô:ØˆJä×ÑÜØØØ!ØØ!1Ø-Ø#Ø-Ø$7Ø"3ôó
ˆð ˆ
÷y F×EÐEús   ÓX.Ø.X?	c               ó$   € V ^8„  d   QhRRRRRR/# ©r¤   r…  r�   r7  rR  r¦   ú_NumLike | Sequence[_NumLike]r“   )r§   s   "rœ   r¨   rÆ    s$   € ÷ #ñ #Øð#Ø$/ð#à	&ñ#r›   c                	óþ  € V R9   dP   \        V4      '       d   \        R4      # \        V4      '       d   R# \        P                  ! V4      P
                  # V R9   dP   \        V4      '       d   \        R4      # \        V4      '       d   R# \        P                  ! V4      P                  # \        V4      '       d   RM^ p\        V4      '       d   RM^pRVRVRVRVR	VR
W"V3RW"V3R\        R4      V3/V ,          # )r  ú-infFÚinfTr  r}  r€  r�  rƒ  Úwelford_reducer¨  Úonline_softmax_reduce)r  ry  r¹  rº  r»  )r{  r–  r—  r˜  )r4   rA  r2   rD  Úiinfor{  r  )r…  r7  ÚzeroÚones   &&  rœ   Údefault_accumulatorÚReduction.default_accumulator  sý   € ð ð 
ô 
ô ˜e×$Ò$Ü˜V“}Ð$Ü! %×(Ò(Ùä—{’{ 5Ó)×-Ñ-Ð-ØÐSÔSÜ˜e×$Ò$Ü˜U“|Ð#Ü! %×(Ò(Ùä—{’{ 5Ó)×-Ñ-Ð-ä(¨×/Ò/‰u°QˆÜ& u×-Ò-‰d°1ˆà�4Ø�CØ�4Ø�tØ�4Ø˜t¨4Ð0Ø ¨DÐ1Ø#¤e¨F£m°TÐ%:ð	
ð õ	ð 		r›   c               ó$   € V ^8„  d   QhRRRRRR/# r·  r“   )r§   s   "rœ   r¨   rÆ  *  s)   € ÷ Dñ DØðDØ$/ðDà	&ñDr›   c                	ó>   € V R 8X  d   ^ # \         P                  W4      # )r¼  )r¿  rÁ  ©r…  r7  s   &&rœ   r’   ÚReduction.default_value)  s!   € ð Ð-Ô-ÙÜ×,Ñ,¨^ÓCÐCr›   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   rA  rˆ   rû  r¬   rÂ  ra   r¦   r“   )r§   s   "rœ   r¨   rÆ  2  s,   € ÷ ñ ØðØ%(ðØ:Gðà	ñr›   c                	óä   € V R8X  d   V# V R8:  d-   VR8:  d&   V\         P                  8X  d   \         P                  # V R8:  d-   VR8:  d&   V\         P                  8X  d   \         P                  # V# )rñ  é   i   é   rl  )ra   r2  Ú
OUTER_TINY)rA  rû  rÂ  s   &&&rœ   Ú_multilayer_second_step_hintÚ&Reduction._multilayer_second_step_hint1  sg   € ð �BŒ;Ø!Ð!Ø�CŒ<˜J¨#Ô-°.ÄM×DWÑDWÔ2WÜ ×+Ñ+Ð+à�TŒMØ˜cÔ!Ø¤-×"5Ñ"5Ô5ä ×+Ñ+Ð+àÐr›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   ró  rˆ   rô  r3  r¦   rÉ  r“   )r§   s   "rœ   r¨   rÆ  C  s$   € ÷ ñ Ø&ðØ4Aðà	ñr›   c                ó¤  € Vf   R# \         P                  P                  P                  VP	                  4       V4      '       g   R# VP                  4         \        V4       TP                  4       p\        TRR 4       F9  w  rE\         P                  P                  P                  T^4      '       g   K7  Tu # 	  R#   \         d     R# i ; i)z²
If we are reducing over the full tensor, and it is non-dense in the last dimension,
reindex so we reduce over the dense dimension. initially just handle complete
reduction case
Nrl  )
r{   r9  r:  r  r‰  r–  r“  rY  rn  r  )rê  ró  rô  rŠ  rò   r  s   &&&   rœ   Ú$check_for_split_dense_dim_reindexingÚ.Reduction.check_for_split_dense_dim_reindexingB  s¸   € ð ÒÙä�w‰w×Ñ×7Ñ7Ø× Ñ Ó" O÷
ò 
ñ à×ÑÔð	ä! *Ô-ð ×'Ñ'Ó)ˆä˜g c r˜lÖ+‰DˆAÜ�w‰w×Ñ×7Ñ7¸¸1×=Ô=Ø’ñ ,ñ øô #ô 	Úð	ús   ÁC  Ã CÃCc               ó8   € V ^8„  d   QhRRRRRRRRRRR	R
RRRR/# )r¤   r^  rÙ   rÀ  ry  ró  rˆ   rA  Ú
block_sizer|  r¸  rô  r3  r¦   r‡  r“   )r§   s   "rœ   r¨   rÆ  c  sZ   € ÷ (ñ (à'ð(ð -ð(ð "ð	(ð
 ð(ð ð(ð /ð(ð "ð(ð 
ñ(r›   c                	ó  aaaaa
a€ V P                  SV4      p\        P                  VS.V4      o\        P                  P
                  P                  \        P                  ! \        SV4      ^ 4      4      '       * o
R VVVV
VV3R llp	V	# )r   c               ó$   € V ^8„  d   QhRRRRRR/# ru  r“   )r§   s   "rœ   r¨   Ú7Reduction._multilayer_wrap_loader.<locals>.__annotate__w  s$   € ÷ 	ñ 	Ø#ð	Ø6Fð	àñ	r›   c                ó6  <aa€ Vw  pV Ev opSV,          V,           oR  VV
VV3R llpS'       dd   \        S4      p\        P                  ! \        P                  ! SV4      \        P                  ! SV4      4      p\        P                  ! WSS	4      # V! 4       # )c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   rz   r“   )r§   s   "rœ   r¨   ÚKReduction._multilayer_wrap_loader.<locals>.wrapper_fn.<locals>.__annotate__~  s   € ÷ =ñ =˜(ñ =r›   c                 ó$   <€ S! SS! S .4      4      # rª   r“   )r  r^  Ú	new_indexrô   s   €€€€rœ   rz  ÚCReduction._multilayer_wrap_loader.<locals>.wrapper_fn.<locals>.body~  s   ø€ Ù˜i©°'°Ó);Ó<Ð<r›   )rk   ry   r™  rV  rx  )rë   rv  Úreduction_blockrz  ry  r¡  r  rÜ  rÓ  r|  r^  Ú	need_maskró  rô   s   &&    @@€€€€€€rœ   Ú
wrapper_fnÚ5Reduction._multilayer_wrap_loader.<locals>.wrapper_fnw  sƒ   ú€ ð "1Ñˆ_Ø*/Ñ'ˆY˜Ø  ?Õ2°_ÕDˆG÷=ó =÷ Ü-¨oÓ>�Ü—v’vÜ—N’N 7¨KÓ8Ü—N’N ?°KÓ@ó�ô —z’z $¨gÓ6Ð6á“v�r›   )
rÐ  ÚViewÚdynamic_reshape_indexerr{   r9  r:  r�  rÌ   rj  rJ   )rê  r^  rÀ  ró  rA  rÓ  r|  rô  Údense_indexrà  rß  rô   s   &f&f&ff&  @@rœ   Ú_multilayer_wrap_loaderÚ!Reduction._multilayer_wrap_loaderb  s~   ý€ ð ×>Ñ>Ø˜Zó
ˆô ×.Ñ.Ø˜Ð/°ó
ˆô Ÿ™×(Ñ(×>Ñ>Ü�HŠH”S˜¨%Ó0°!Ó4ó
ô 
ˆ	÷	õ 	ð( Ðr›   c               ó0   € V ^8„  d   QhRRRRRRRRRRR	R/# )
r¤   r^  ú4Callable[[Sequence[Expr], Sequence[Expr]], OpsValue]Úoriginal_rangesr/  Úoriginal_reduction_rangesr<  úSequence[Integer]r=  r¦   r“   )r§   s   "rœ   r¨   rÆ  Ž  sF   € ÷ ñ àDðð (ðð $2ð	ð
 &ðð 0ðð 
>ñr›   c                	ó  aaa€ \         ;QJ d    R  S 4       F  '       d   K   RM	  RM! R  S 4       4      '       g   \        RS: 24      h\        P                  V\	        V4      \	        V4      ,           4      oR VVV3R llpV# )c              3  ó*   "  € T F	  q^8H  x € K  	  R# 5i)rñ  Nr“   ©r  rì  s   & rœ   r  ÚDReduction._multilayer_wrap_loader_existing_ranges.<locals>.<genexpr>–  s   é € Ð3¡?˜a˜–6£?ùó   ‚FTz8Only enabled for numel_hint == 1, found original_ranges=c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   Úmerged_indexr/  Únew_reduction_indexr¦   rz   r“   )r§   s   "rœ   r¨   ÚGReduction._multilayer_wrap_loader_existing_ranges.<locals>.__annotate__ž  s&   € ÷ 		ñ 		Ø(ð		à!/ð		ð ñ		r›   c           	     óŒ   <€ V R \        S4       pV \        S4      R  pS! VS! \        V4      \        V4      ,           4      4      # rª   )rð   rÆ   )rò  ró  Úoriginal_idxrÜ  r^  ré  rô   s   &&  €€€rœ   rà  ÚEReduction._multilayer_wrap_loader_existing_ranges.<locals>.wrapper_fnž  sQ   ø€ ð (Ð(>¬#¨oÓ*>Ð?ˆLØ$¤S¨Ó%9Ð%;Ð<ˆIÙØÙœ˜iÓ(¬5Ð1DÓ+EÕEÓFóð r›   )r  rÓ   râ  rã  rÆ   )rê  r^  ré  rê  r<  r=  rà  rô   s   &ff&&& @rœ   Ú'_multilayer_wrap_loader_existing_rangesÚ1Reduction._multilayer_wrap_loader_existing_ranges�  sw   ú€ ÷ ‹sÑ3¡?Ó3�s�sŠsÑ3¡?Ó3×3Ò3Ü ØK¸?Ñ:LÐMóð ô ×.Ñ.Ø%¤u¨ZÓ'8¼5ÐAUÓ;VÕ'Vó
ˆ÷		ò 		ð Ðr›   c               óL   € V ^8„  d   QhRRRRRRRRRR	R
R	RRRRRRRRRRRRRR/# )r¤   r8  r¦  rò  rR  rÁ  rà  r¶  ré  r/  rê  r<  r°  r=  úlist[Integer]r…  r]   rA  rˆ   rÂ  ra   rb  r¸   r¦   r    r“   )r§   s   "rœ   r¨   rÆ  ¬  s›   € ÷ C
ñ C
àðC
ð ðC
ð ð	C
ð
 'ðC
ð (ðC
ð $2ðC
ð ðC
ð ,ðC
ð &ðC
ð ðC
ð &ðC
ð ðC
ð 
ñC
r›   c                óP  a€ V\         P                  \         P                  39  d   TM\         P                  p\        P                  VVVVVVV	VVR7	      pVP                  4        VP                  4       oR V3R llp\        P                  P                  P                  \        V4      4      pV P                  V
VV4      pWWR\        V4       8w  d   \        R4      h\         P                  \	        TTTTV\        V4      R T	TTV'       d   ^R7	      4      # RR7	      4      # )úI
Break a large reduction up into multiple smaller reductions
recursively
rŒ  c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rë   ry  rv  r¦   rz   r“   )r§   s   "rœ   r¨   Ú8Reduction.create_multilayer_helper.<locals>.__annotate__Õ  s)   € ÷ 	Cñ 	CØ%ð	CØ8Jð	Càñ	Cr›   c                ó   <€ S! . V OVO4      # rª   r“   )rë   rv  Úintermediate_loaders   &&€rœ   Úintermediate_fnÚ;Reduction.create_multilayer_helper.<locals>.intermediate_fnÕ  s   ø€ ñ 'Ð'A¨Ð'A°Ð'AÓBÐBr›   Nz>Expected original_ranges == new_ranges[: len(original_ranges)])	r8  r7  r·  r¸  rÀ  r…  rÁ  rÂ  rÄ  )rD  Úfloat16Úbfloat16rA  r¿  rê  r–  r·  r{   r9  r:  r;  ru   rÌ  rð   rÓ   r    )rê  r8  rò  rÁ  rà  ré  rê  r<  r=  r…  rA  rÂ  rb  Úintermediate_dtypeÚintermediater  rû  r  s   &&&&&&&&&&&&&    @rœ   Úcreate_multilayer_helperÚ"Reduction.create_multilayer_helper«  s>  ø€ ð2 ¤§¡´·±Ð ?Ô?ñ ä—‘ð 	ô
 !×'Ñ'ØØØØØØ ØØØ!ð (ó 

ˆð 	×ÑÔØ*×6Ñ6Ó8Ð÷	Cð 	Cô
 —W‘W×%Ñ%×7Ñ7¼ÀoÓ8VÓWˆ
Ø×9Ñ9Ø�:˜~ó
ˆð Ð)?¬3¨Ó+?Ð@Ô@Ü ØPóð ô ×ÑÜØØØ(Ø&Ø!+¬C°Ó,@Ð,BÐ!CØ-Ø#Ø-ß'1 !ô
ó
ð 	
ð 8<ô
ó
ð 	
r›   c               óH   € V ^8„  d   QhRRRRRRRRRR	R
R	RRRRRRRRRRRR/# )r¤   r8  r¦  rò  rR  rÁ  r·  r¶  r¸  ry  rÀ  r…  r]   rA  rˆ   rÂ  ra   rô  r3  rb  r¸   r¦   r    r“   )r§   s   "rœ   r¨   rÆ  ò  s‚   € ÷ .
ñ .
àð.
ð ð.
ð ð	.
ð
 %ð.
ð #ð.
ð -ð.
ð &ð.
ð ð.
ð &ð.
ð "ð.
ð ð.
ð 
ñ.
r›   c               óÜ   € \        V4      p\        WÈ^,
          ,           V4      pV P                  Wr4      pV P                  VVVVVVV
4      pV P	                  VVVVVV. VOVNV.VVV	V4      # )rý  )ru   rG   r’   rå  r  )rê  r8  rò  rÁ  r·  r¸  rÀ  r…  rA  rÂ  rô  rb  ró  rÓ  r|  rà  s   &&&&&&&&&&&$    rœ   r¤  ÚReduction.create_multilayerñ  sœ   € ô* (Ð(8Ó9ˆÜ˜o¸µÕ;¸UÓCˆ
Ø×#Ñ# NÓ>ˆØ×0Ñ0ØØØØØØØó
ˆ
ð ×+Ñ+ØØØØØØØˆfÐ�eÐØˆLØØØØó
ð 	
r›   c               óD   € V ^8„  d   QhRRRRRRRRRR	R
R	RRRRRRRRRR/# )r¤   r8  r¦  rò  rR  rÁ  r·  r¶  ré  ry  rê  r<  rû  r=  r…  r]   rÂ  ra   r¦   r    r“   )r§   s   "rœ   r¨   rÆ  #	  sx   € ÷ $
ñ $
àð$
ð ð$
ð ð	$
ð
 %ð$
ð ,ð$
ð $6ð$
ð "ð$
ð ,ð$
ð &ð$
ð &ð$
ð 
ñ$
r›   c                ój   € V P                  VVVVV4      pV P                  VVVVVV. VOVOVV	RV
4      # )rý  rl  )rø  r  )rê  r8  rò  rÁ  r·  ré  rê  r<  r=  r…  rÂ  rà  s   &&&&&&&&&&& rœ   r£  Ú+Reduction.create_multilayer_existing_ranges"	  sc   € ð$ ×@Ñ@ØØØ%ØØ ó
ˆ
ð ×+Ñ+ØØØØØØ%Ø+ˆoÐ+ 
Ð+Ø ØØØó
ð 	
r›   r“   r®  rª   )%r•   r–   r—   r˜   rS  r™   rÃ  rÄ  rÓ  r9  re   r'  r1  r+  rÝ  rá  rý  rÂ  r@  rV  rD  r`  r:  ra   rï  rê  rÁ  r’   rÌ  rÐ  rå  rø  r  r¤  r£  rš   Ú__classcell__©rÏ  s   @rœ   r¿  r¿  w  s£  ø‡ áRà(Ó(Ø!Ó!àÓØ!Ó!à %Ð˜Ó%Ø$(Ð�zÓ(õNð €Há˜KÓ(÷
ñ 
ó )ð
õ
%õ#õLõ=õ÷

õ
ð" öTó ðTðl ô7ó ð7ðr ð )6×(=Ñ(=Ø$(ñjð !÷jó ðjðX	 ô#ó ð#ðJ ôDó ðDð ôó ðð  ôó ðð> ö(ó ð(ðT ôó ðð: öC
ó ðC
ðJ ñ.
ð !÷.
ó ð.
ð` ô$
ó ö$
r›   r¿  c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r¤   r5  ry  r6  r}  r–  r"   r¦   z$Callable[[Sequence[_IntLike]], Expr]r“   )r§   s   "rœ   r¨   r¨   J	  s0   € ÷ ñ Ø
ðà%ðð ðð *ñ	r›   c                ó"   a aa€ R VV V3R llpV# )ú1A closure containing math to read a given elementc               ó    € V ^8„  d   QhRRRR/# )r¤   rë   ry  r¦   r"   r“   )r§   s   "rœ   r¨   Ú$_fixed_indexer.<locals>.__annotate__Q	  s   € ÷ ñ Ð)ð ¨dñ r›   c                ó  <€ Se   \        V 4      \        S4      8X  g   \        R4      h\        V 4      \        S4      8w  d   \        R4      hSp\        V SS4       F  w  r#pV^8w  g   K  WV,          ,           pK   	  V# )Nz9Expected stride is not None and len(index) == len(stride)z Expected len(index) == len(size))rð   rÓ   r÷   )rë   Úresultr  ÚstÚszr–  r5  r6  s   &    €€€rœ   rV  Ú_fixed_indexer.<locals>.indexerQ	  s|   ø€ ØÒ"¤s¨5£z´S¸³[Ô'@Ü ØKóð ô ˆu‹:œ˜T›Ô"Ü Ð!CÓDÐDØˆÜ˜u f¨dÖ3‰KˆC�RØ�QŽwØ¨¥(Õ*’ñ 4ð ˆr›   r“   )r5  r6  r–  rV  s   fff rœ   r_  r_  J	  s   ú€ ÷ò ð €Nr›   ÚINNER_FN_TYc                  óF   a € ] tR tRt$ R]R&   R V 3R lltR R ltRtV ;t# )	ÚMultiOutputReductionid	  r¬   Úoutput_indexc               ó<   € V ^8„  d   QhRRRRRRRRR	RR
RRRRRRR/	# )r¤   r8  r¦  rò  rR  Ú	inner_fnsz#INNER_FN_TY | Sequence[INNER_FN_TY]r¸  rë  rÀ  r…  r]   rÁ  rÂ  ra   r  r¬   r“   )r§   s   "rœ   r¨   Ú!MultiOutputReduction.__annotate__g	  sd   € ÷ #)ñ #)àð#)ð ð#)ð 7ð	#)ð
 "ð#)ð ,ð#)ð &ð#)ð ð#)ð &ð#)ð ñ#)r›   c
                	ó²   <a€ \        S4      '       d   S3o\        S4      ^8X  d   S^ ,          p
M	R V3R llp
\        SV `  VVV
VVVVVR7       W�n        R# )rñ  c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r  r/  Úreduction_idxr¦   útuple[OpsValue, ...]r“   )r§   s   "rœ   r¨   Ú3MultiOutputReduction.__init__.<locals>.__annotate__{	  s)   € ÷ Iñ IØ#ðIØ4BðIà%ñIr›   c                óp   <a a€ \         ;QJ d    . V V3R  lS 4       F  NK  	  5# ! V V3R  lS 4       4      # )c              3  ó4   <"  € T F  q! SS4      x € K  	  R # 5irª   r“   )r  rá   r  r%  s   & €€rœ   r  Ú@MultiOutputReduction.__init__.<locals>.loader.<locals>.<genexpr>~	  s   øé € ÐH¹i¸˜R  ]×3Ð3»iùó   ƒ©rÆ   )r  r%  r!  s   ff€rœ   r^  Ú-MultiOutputReduction.__init__.<locals>.loader{	  s'   ú€ ÷ ”uÕH¹iÓH—uÐH�uÕH¹iÓHÓHÐHr›   r   N)Úcallablerð   rÍ  Ú__init__r  )rì  r8  rò  r!  r¸  rÀ  r…  rÁ  rÂ  r  r^  rÏ  s   &&&f&&&&&& €rœ   r/  ÚMultiOutputReduction.__init__g	  sn   ù€ ô �I×ÒØ"˜ˆIô ˆy‹>˜QÔØ˜q•\‰F÷Ið Iô
 	‰ÑØØØØØ-Ø)ØØ)ð 	ô 		
ð )Ör›   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r¤   rU  rO  rV  rW  rX  r/  rÙ  rÚ  r¦   r   r“   )r§   s   "rœ   r¨   r"  Œ	  sC   € ÷ Sñ SàðSð 3ðSð ð	Sð
 )ðSð 
ñSr›   c           	     	ób  € \         P                  ! V P                  V P                  V P                  V P                  W44      4      p\        V\        \        34      '       g   \        \        V4      4      hWPP                  ,          p\         P                  ! T;'       g    R V! V4      V4      # rZ  )ry   rÜ  r7  rÁ  r…  r·  r«   rÆ   rÅ   rÓ   r�   r  rÝ  )rì  rU  rV  rX  rÙ  rÈ   rJ  s   &&&&&  rœ   rÝ  Ú$MultiOutputReduction.store_reductionŒ	  s†   € ô —’Ø�J‰JØ�N‰NØ×ÑØ�M‰M˜$Ó/ó	
ˆô ˜&¤5¬$ -×0Ò0Ü ¤ f£Ó.Ð.Ø×(Ñ(Õ)ˆÜ×"Ò" ;×#;Ð#;°)¹WÀT»]ÈEÓRÐRr›   ©r  )	r•   r–   r—   r˜   r™   r/  rÝ  rš   r  r  s   @rœ   r  r  d	  s    ø‡ ØÓ÷#)ð #)÷JSó Sr›   r  c                  óL   € ] tR tRtRt]]P                  R3R R ll4       tRt	R# )ÚArgReductioniŸ	  zJMulti-output arg reduction that returns both the selected value and index.Nc               ó@   € V ^8„  d   QhRRRRRRRRRR	R
R	RRRRRRRR/
# )r¤   r8  r¦  rò  rR  rÁ  r·  r¶  r¸  r/  rÀ  r…  r]   rÂ  ra   rô  r3  r¦   úSequence[TensorBox]r“   )r§   s   "rœ   r¨   ÚArgReduction.__annotate__£	  sz   € ÷ jñ jàðjð ðjð ð	jð
 %ðjð ðjð )ðjð &ðjð &ðjð "ðjð 
ñjr›   c
                	ó  a aaaaaaaaa€ SR9  d   \        RS: 24      h\        P                  P                  P	                  \        S4      4      p
V
^ 8X  d   \        S R24      hV
^8X  dc   R VV3R llpR R lp\        P                  SVV\        S4      R7      \        P                  S\        P                  V\        S4      R7      3# \        V
\        4      '       dÓ   \        V
4      \        P                  8  dµ   \        S4      ^8w  g   \!        SP"                  4      '       dŠ   \$        P'                  SSSS4      oR V3R	 llo\(        ;QJ d2    . VVV3R
 l\+        V\        P                  34       4       F  NK  	  5# ! VVV3R
 l\+        V\        P                  34       4       4      # \$        P-                  SVSSSSSV
V	4	      w  rÞV^8w  d   \        R4      hS\.        P0                  8X  d   Vo\(        ;QJ d7    . V VVVVVVV3R l\+        V\        P                  34       4       F  NK  	  5M0! V VVVVVVV3R l\+        V\        P                  34       4       4      pV F  pVP3                  4        K  	  V# )r»  zunexpected reduction_type rk  c               ó    € V ^8„  d   QhRRRR/# ©r¤   rë   r/  r¦   rz   r“   )r§   s   "rœ   r¨   Ú)ArgReduction.create.<locals>.__annotate__¹	  s   € ÷ ñ  ð °8ñ r›   c                ó²   <€ S Uu. uF  p\         P                  P                  NK  	  ppS! W4      p\        V\        4      '       d
   V^ ,          # V# u upi rŽ  )rÌ   rò  ró  r«   rÆ   )rë   r&  rv  rJ  r·  rÀ  s   &   €€rœ   rL  Ú%ArgReduction.create.<locals>.value_fn¹	  sL   ø€ Ù9IÓ"JÑ9I°A¤5§7¡7§<¤<Ñ9I�Ð"JÙ  Ó8�Ü˜e¤U×+Ò+Ø  �8�OØ�ùò	 #Ks   †#Ac               ó    € V ^8„  d   QhRRRR/# r<  r“   )r§   s   "rœ   r¨   r=  À	  s   € ÷ 4ñ 4 ð 4°8ñ 4r›   c                óL   € \         P                  ! ^ \        P                  4      # rŽ  )ry   r@  rD  rW  ©rë   s   &rœ   Úindex_fnÚ%ArgReduction.create.<locals>.index_fnÀ	  s   € Ü—|’| A¤u§{¡{Ó3Ð3r›   rg  c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rë   r/  r  r¬   r¦   rz   r“   )r§   s   "rœ   r¨   r=  Û	  s!   € ÷ ,ñ ,˜~ð ,¸Sð ,ÀXñ ,r›   c                ó~   <€ S! V 4      p\        V\        4      '       g   \        R \        V4       24      hW!,          # )zexpected tuple result, got )r«   rÆ   rÓ   r�   )rë   r  r  Úunrolled_fns   && €rœ   ÚprojectÚ$ArgReduction.create.<locals>.projectÛ	  s:   ø€ Ù$ UÓ+�Ü! &¬%×0Ò0Ü(Ð+FÄtÈFÃ|ÀnÐ)UÓVÐVØÕ+Ð+r›   c           
   3  ó‚   <"  € T F4  w  r\         P                  SV\        SVR 7      \        S4      R7      x € K6  	  R# 5i)r4  rg  N)rD  rê  r   rÅ   )r  r  r7  r8  rH  r¸  s   &  €€€rœ   r  Ú&ArgReduction.create.<locals>.<genexpr>á	  sM   øé € ð ñ ,OÑ'�Lô × Ñ Ø!ØÜ$ W¸<ÔHÜ ›<ð	 !÷ ð ó ,Oùs   ƒ<?z.arg reductions do not support split reductionsc              3  ón   <"  € T F*  w  r\         P                  S! SVSSSS	S
SV4	      4      x € K,  	  R # 5irª   ré  )r  r  r7  rê  r8  r·  r¸  rÂ  rÀ  r…  rÁ  s   &  €€€€€€€€rœ   r  rK  û	  sT   øé € ð 
ñ (KÑ#�ô ×ÑÙØØØØØ$Ø"ØØ"Ø ó
÷ð ó (Kùs   ƒ25)r»  r˜  )rÓ   r{   r9  r:  r–  ru   rD  rê  rÅ   rD  rW  r«   r#   r¬   rM   r¢  rq   r�   r¿  r`  rÆ   r  rD  ra   rï  r–  )rê  r8  rò  rÁ  r·  r¸  rÀ  r…  rÂ  rô  ró  rL  rC  r³  rA  Úresultsr  rH  rG  s   ff&ffffff&       @@rœ   rê  ÚArgReduction.create¢	  sP  ÿù€ ð Ð!KÔKÜ Ð#=¸nÑ=OÐ!PÓQÐQÜŸ'™'×*Ñ*×3Ñ3´MÐBRÓ4SÓTˆØ˜aÔÜ Ø!Ð"Ð"LÐMóð ð ˜aÔ÷ñ õ4ô × Ñ Ø!Ø#Ø%Ü ›<ð	 !ó ô × Ñ Ø!ÜŸ+™+Ø%Ü ›<ð	 !ó ðð ô  �¬×0Ò0Ü�OÓ$¤v×'IÑ'IÔIÜ˜vÓ&¨!Ô+¬v°f·k±k×/BÒ/Bä#×8Ñ8ØÐ*¨N¸IóˆK÷,ð ,÷ ”5ö ô ,5°iÄÇÁÐ5MÔ+Nó—5ð �5ö ô ,5°iÄÇÁÐ5MÔ+Nóó ð ô  ×*Ñ*ØØØØØØØØØó

‰ˆð �AŒ:Ü Ð!QÓRÐRØœ]×2Ñ2Ô2Ø!ˆNç”%÷ 
ó 
ô (1°)¼U¿[¹[Ð1IÔ'Jó
—%‘%÷ 
ó 
ô (1°)¼U¿[¹[Ð1IÔ'Jó
ó 
ˆó  ˆFØ�N‰NÖñ àˆr›   r“   )
r•   r–   r—   r˜   rS  r:  ra   rï  rê  rš   r“   r›   rœ   r6  r6  Ÿ	  s'   † ÙTàð )6×(=Ñ(=Ø$(öjó ôjr›   r6  c                  ó˜   € ] tR tRtRt]]P                  R3R R ll4       t]]P                  R3R R ll4       t	]RR R	 ll4       t
R
tR# )ÚOnlineSoftmaxReductioni
  zAMulti-output reduction that computes softmax max/sum in one pass.Nc               ó@   € V ^8„  d   QhRRRRRRRRRR	R
R	RRRRRRRR/
# ©r¤   r8  r¦  rò  rR  rÁ  r·  r¶  r¸  r/  rÀ  Ú
num_outputr¬   rÂ  ra   rô  r3  r¦   r8  r“   )r§   s   "rœ   r¨   Ú#OnlineSoftmaxReduction.__annotate__
  sn   € ÷ ñ àðð ðð ð	ð
 %ðð ðð )ðð ðð &ðð "ðð 
ñr›   c
           	     	óæ   aaaaaaa€ \         ;QJ d&    . VVVVVVV3R  l\        V4       4       F  NK  	  5M! VVVVVVV3R  l\        V4       4       4      p
V
 F  pVP                  4        K  	  V
# )c              3  óp   <"  € T F+  p\         P                  \        SSSSSR SSV4	      4      x € K-  	  R# 5i)r½  N)r    rê  r  )	r  Ú
output_idxr8  rò  r·  r¸  rÂ  rÀ  rÁ  s	   & €€€€€€€rœ   r  Ú:OnlineSoftmaxReduction._create_no_split.<locals>.<genexpr> 
  sO   øé € ð 
ñ 0�
ô ×ÑÜ$ØØØØØ$Ø+ØØ"Øó
÷ð ó 0ùs   ƒ36)rÆ   rñ   r–  )rê  r8  rò  rÁ  r·  r¸  rÀ  rS  rÂ  rô  rM  rH  s   &ffffff&f&  rœ   Ú_create_no_splitÚ'OnlineSoftmaxReduction._create_no_split
  sa   þ€ ÷ ”%÷ 
ò 
ô $ JÔ/ó
—%‘%÷ 
ò 
ô $ JÔ/ó
ó 
ˆó  ˆAØ�I‰IŽKñ àˆr›   c               ó@   € V ^8„  d   QhRRRRRRRRRR	R
R	RRRRRRRR/
# rR  r“   )r§   s   "rœ   r¨   rT  5
  sn   € ÷ 1
ñ 1
àð1
ð ð1
ð ð	1
ð
 %ð1
ð ð1
ð )ð1
ð ð1
ð &ð1
ð "ð1
ð 
ñ1
r›   c
                	óH  € \         P                  P                  P                  \	        V4      4      p
\
        P                  VVVVVVR V
V	R7	      w  r¼V\        P                  8X  d   TpV^8”  d   V P                  VVVVVVVVVV	4
      # V P                  VVVVVVVVV	4	      # )r½  )r…  ró  rô  )r{   r9  r:  r–  ru   r¿  rD  ra   rï  r¤  rY  )rê  r8  rò  rÁ  r·  r¸  rÀ  rS  rÂ  rô  ró  r³  rA  s   &&&&&&&&&&   rœ   rê  ÚOnlineSoftmaxReduction.create4
  sÓ   € ô Ÿ'™'×*Ñ*×3Ñ3´MÐBRÓ4SÓTˆÜ×*Ñ*ØØØØØØØ2Ø+Ø!ð +ó 

‰ˆð œ]×2Ñ2Ô2Ø!ˆNØ�1Œ9Ø×(Ñ(ØØØØØØ ØØØØóð ð ×#Ñ#ØØØØØØØØØó

ð 
	
r›   c               óD   € V ^8„  d   QhRRRRRRRRRR	R
R	RRRRRRRRRR/# )r¤   r8  r¦  rò  rR  rÁ  r·  r¶  r¸  r/  rÀ  rS  r¬   rA  rˆ   rÂ  ra   rô  r3  r¦   r8  r“   )r§   s   "rœ   r¨   rT  i
  s…   € ÷ Z
ñ Z
àðZ
ð ðZ
ð ð	Z
ð
 %ðZ
ð ðZ
ð )ðZ
ð ðZ
ð ðZ
ð &ðZ
ð "ðZ
ð 
ñZ
r›   c           
     	ód  aaaaaaa€ \        V4      o\        SV^,
          ,           V4      oV P                  SV
4      p\        P	                  VS.V4      o\
        P                  P                  P                  \        P                  ! \        SV4      ^ 4      4      '       * oR VVVVVV3R llpV\        P                  \        P                  39  d   TM\        P                  pV P!                  VVSV. VOVNS.VV	4      pV F  pVP#                  4        K  	  \$        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      oR V3R llp\
        P                  P                  P'                  \        V4      4      pV P)                  VVV	4      p	V P!                  VVVVVV.VV	4      # )rñ  c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rë   rÚ  rv  r¦   r”  r“   )r§   s   "rœ   r¨   Ú>OnlineSoftmaxReduction.create_multilayer.<locals>.__annotate__‚
  s$   € ÷ 	#ñ 	#Ø#ð	#Ø6Fð	#à&ñ	#r›   c           	     óÒ  <aa€ Vw  pV Ev opS	V,          V,           oR  VV
VV3R llp\         P                  ! ^S4      pS'       d™   \        S4      p\         P                  ! \         P                  ! SV4      \         P                  ! SV4      4      p\         P
                  ! Wc\        R4      4      \         P                  ! Wd\         P                  ! ^ S4      4      3# V! 4       V3# )c               ó   € V ^8„  d   QhRR/# rÙ  r“   )r§   s   "rœ   r¨   ÚROnlineSoftmaxReduction.create_multilayer.<locals>.wrapper_fn.<locals>.__annotate__‰
  s   € ÷ ?ñ ?˜(ñ ?r›   c                 ó$   <€ S! SS! S .4      4      # rª   r“   )r  r·  rÜ  rô   s   €€€€rœ   rz  ÚJOnlineSoftmaxReduction.create_multilayer.<locals>.wrapper_fn.<locals>.body‰
  s   ø€ Ù 	©7°G°9Ó+=Ó>Ð>r›   rº  )ry   r@  rk   r™  rV  rx  rA  rŽ  )rë   rv  rÞ  rz  rÀ  ry  r¡  r  rÜ  rÓ  r·  rß  ró  rô   rÁ  s   &&     @@€€€€€€rœ   rà  Ú<OnlineSoftmaxReduction.create_multilayer.<locals>.wrapper_fn‚
  s¾   ú€ ð "1Ñˆ_Ø*/Ñ'ˆY˜Ø  ?Õ2°_ÕDˆG÷?ó ?ô —,’,˜q )Ó,ˆCßÜ-¨oÓ>�Ü—v’vÜ—N’N 7¨KÓ8Ü—N’N ?°KÓ@ó�ô
 —J’J˜t¬5°«=Ó9Ü—I’I˜d¬¯ª°a¸Ó)CÓDðð ñ
 “v˜s�{Ð"r›   c              3  ó@   "  € T F  qP                  4       x € K  	  R # 5irª   )r·  ©r  rò   s   & rœ   r  Ú;OnlineSoftmaxReduction.create_multilayer.<locals>.<genexpr>¬
  s   é € Ð$L¹m¸§]¡]§_ _»mùó   ‚c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rë   ry  rv  r¦   r&  r“   )r§   s   "rœ   r¨   ra  ®
  s$   € ÷ 	ñ 	Ø%ð	Ø8Jð	à!ñ	r›   c                óp   <a a€ \         ;QJ d    . V V3R  lS 4       F  NK  	  5# ! V V3R  lS 4       4      # )c              3  ó:   <"  € T F  q! . SOSO4      x € K  	  R # 5irª   r“   )r  r^  rë   rv  s   & €€rœ   r  ÚTOnlineSoftmaxReduction.create_multilayer.<locals>.intermediate_fn.<locals>.<genexpr>±
  s(   øé € ð ÙAU°v�Ð1˜Ð1 Ð1×2Ð2ÓAUùs   ƒr,  )rë   rv  Úintermediate_loaderss   ff€rœ   r  ÚAOnlineSoftmaxReduction.create_multilayer.<locals>.intermediate_fn®
  s7   ú€ ÷ ”5õ ÙAUó—5ð �5õ ÙAUóó ð r›   )ru   rG   rÐ  râ  rã  r{   r9  r:  r�  rÌ   rj  rJ   rD  r  r  rA  rY  r–  rÆ   r;  rÌ  )rê  r8  rò  rÁ  r·  r¸  rÀ  rS  rA  rÂ  rô  rä  rà  r  Úintermediatesrò   r  rû  rÓ  rp  rß  ró  rô   s   &&&ff&&&&&&       @@@@@rœ   r¤  Ú(OnlineSoftmaxReduction.create_multilayerh
  s›  þ€ ô (Ð(8Ó9ˆÜ˜o°¸µÕ;¸UÓCˆ
Ø×>Ñ>Ø˜Zó
ˆô ×.Ñ.Ø˜Ð/°ó
ˆô Ÿ™×(Ñ(×>Ñ>Ü�HŠH”S˜¨%Ó0°!Ó4ó
ô 
ˆ	÷	#õ 	#ð4 ¤§¡´·±Ð ?Ô?ñ ä—‘ð 	ð
 ×,Ñ,ØØØØØˆfÐ�eÐØˆLØØó	
ˆó ˆAØ�I‰IŽKñ ÷  %œuÑ$L¹mÓ$LŸu™uÑ$L¹mÓ$LÓLÐ÷	ð 	ô —W‘W×%Ñ%×7Ñ7¼ÀfÓ8MÓNˆ
Ø×9Ñ9Ø�:˜~ó
ˆð ×#Ñ#ØØØØØØˆGØØó	
ð 		
r›   r“   rª   )r•   r–   r—   r˜   rS  r:  ra   rï  rY  rê  r¤  rš   r“   r›   rœ   rP  rP  
  s_   † ÙKàð )6×(=Ñ(=Ø$(öó ðð@ ð )6×(=Ñ(=Ø$(ö1
ó ð1
ðf öZ
ó ôZ
r›   rP  c                  ór   € ] tR tRt]]P                  3R R ll4       t]R R l4       t	]R R l4       t
RtR	# )
ÚWelfordReductioniÆ
  c               ó8   € V ^8„  d   QhRRRRRRRRR	RR
RRRRR/# )r¤   r8  r¦  r7  rR  r!  úSequence[Callable[..., Any]]r¸  rû  rÀ  r…  r]   rÂ  ra   r¦   r8  r“   )r§   s   "rœ   r¨   ÚWelfordReduction.__annotate__È
  sd   € ÷ }ñ }àð}ð ð}ð 0ð	}ð
 ð}ð (ð}ð &ð}ð &ð}ð 
ñ}r›   c                	óŽ  aaaaa€ VR	9  d   \        R4      h\        P                  P                  '       d   \        R4      h\        P
                  P                  P                  \        S4      4      pR VVV3R llp	V^ 8X  d   V	! ^ 4      p
V	! ^ 4      pV	! ^ 4      pW«V3# V^8X  dd   R VVVV3R lloVR 8X  d   S! V^ ,          4      V	! ^ 4      V	! ^4      3# \        ;QJ d    . V3R lV 4       F  NK  	  5# ! V3R lV 4       4      # \        P                  SSSV^ ,          SSVVR7      w  rÞV\        P                  8X  d   TpV^8”  d   V P                  SSVSSVVV4      # \        ^4       Uu. uF)  p\         P#                  \%        SSVSSVSVV4	      4      NK+  	  ppV F  pVP'                  4        K  	  V# u upi )
r¼  z@Expected reduction_type in ("welford_reduce", "welford_combine")zGwelford reduction usage is explicitly disabled, please check you configc               ó    € V ^8„  d   QhRRRR/# )r¤   rf  r¬   r¦   r    r“   )r§   s   "rœ   r¨   Ú-WelfordReduction.create.<locals>.__annotate__Ý
  s   € ÷ 	ñ 	�sð 	˜yñ 	r›   c                ó^   <a € R  VV 3R llp\         P                  SSV\        S4      R7      # )c               ó    € V ^8„  d   QhRRRR/# ©r¤   r  r/  r¦   rz   r“   )r§   s   "rœ   r¨   Ú<WelfordReduction.create.<locals>.const.<locals>.__annotate__Þ
  s   € ÷ ñ ˜nð °ñ r›   c                ó2   <€ \         P                  ! SS4      # rª   ro  )r  r7  rf  s   &€€rœ   r·  Ú8WelfordReduction.create.<locals>.const.<locals>.inner_fnÞ
  s   ø€ Ü—|’|ØØóð r›   rg  ©rD  rê  rÅ   )rf  r·  r8  r7  r¸  s   f €€€rœ   ÚconstÚ&WelfordReduction.create.<locals>.constÝ
  s7   ù€ ÷ñ ô ×#Ñ#ØØØ!Ü˜F“|ð	 $ó ð r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   r^  rè  r¦   r    r“   )r§   s   "rœ   r¨   r{  ó
  s   € ÷ ñ ØLðàñr›   c                ó^   <a € R  V V3R llp\         P                  SSV\        S4      R7      # )c               ó    € V ^8„  d   QhRRRR/# r~  r“   )r§   s   "rœ   r¨   Ú;WelfordReduction.create.<locals>.copy.<locals>.__annotate__ö
  s   € ÷ 8ñ 8 .ð 8°Xñ 8r›   c                óp   <€ S Uu. uF  p\         P                  P                  NK  	  ppS! W4      # u upi rª   r…  )r  r&  rv  r^  rÀ  s   &  €€rœ   r·  Ú7WelfordReduction.create.<locals>.copy.<locals>.inner_fnö
  s2   ø€ Ù=MÓ&NÑ=M¸¤u§w¡w§|¤|Ñ=M�OÐ&NÙ! #Ó7Ð7ùò 'Or†  rg  r‚  )r^  r·  r8  r7  r¸  rÀ  s   f €€€€rœ   ÚcopyÚ%WelfordReduction.create.<locals>.copyó
  s7   ù€ ÷8ñ 8ô !×'Ñ'Ø!ØØ%Ü ›<ð	 (ó ð r›   c              3  ó4   <"  € T F  pS! V4      x € K  	  R # 5irª   r“   )r  rá   r‹  s   & €rœ   r  Ú*WelfordReduction.create.<locals>.<genexpr>  s   øé € Ð:±	¨"™T "ŸX˜X³	ùr+  )r…  ró  )r¼  r¨  )rÓ   rM   ÚmtiaÚdisable_welford_reductionr{   r9  r:  r–  ru   rÆ   r¿  rD  ra   rï  r¤  rñ   r    rê  ru  r–  )rê  r8  r7  r!  r¸  rÀ  r…  rÂ  ró  rƒ  ÚmeanÚm2Úweightr³  rA  rW  rM  rH  r‹  s   &ff&ff&&          @rœ   rê  ÚWelfordReduction.createÇ
  sì  ü€ ð Ð!FÔFÜ ØRóð ô �;‰;×0×0Ð0Ü ØYóð ô Ÿ'™'×*Ñ*×3Ñ3´MÐBRÓ4SÓTˆ÷	ò 	ð ˜aÔÙ˜“8ˆDÙ�q“ˆBÙ˜1“XˆFØ˜VÐ#Ð#à˜aÔ÷ó ð Ð!1Ô1Ù˜I a�LÓ)©5°«8±U¸1³XÐ=Ð=ç”uÔ:±	Ó:—uÐ:�uÔ:±	Ó:Ó:Ð:ô&  ×*Ñ*ØØØØ�a�LØØØ)Ø+ð +ó 	
‰ˆð œ]×2Ñ2Ô2Ø!ˆNØ�1Œ9à×(Ñ(ØØØØØ ØØØó	ð 	ô2 $ Aœhó
ñ '�
ô ×ÑÜ ØØØØØ$Ø"ØØ"Øó
öñ 'ð 	ð 
ó  ˆAØ�I‰IŽKñ àˆùò%
s   Å6/Gc               ó$   € V ^8„  d   QhRRRRRR/# r·  r“   )r§   s   "rœ   r¨   rx  H  s$   € ÷ ñ ØðØ$/ðà	&ñr›   c                	ó   € R# )r   )r   r   r   r“   rÅ  s   &&rœ   r’   ÚWelfordReduction.default_valueG  s
   € ð Ðr›   c               ó<   € V ^8„  d   QhRRRRRRRRR	RR
RRRRRRR/	# )r¤   r8  r¦  r7  rR  r!  rw  r¸  rû  rÀ  r…  r]   rA  rˆ   rÂ  ra   r¦   r8  r“   )r§   s   "rœ   r¨   rx  N  so   € ÷ \
ñ \
àð\
ð ð\
ð 0ð	\
ð
 ð\
ð (ð\
ð &ð\
ð ð\
ð &ð\
ð 
ñ\
r›   c	                ó¤  a aaaaaa€ \        S4      o\        P                  P                  P	                  \
        P                  ! \        SS4      ^ 4      4      '       * p	V	'       dJ   VR8w  dC   R V3R llp
S P                  VSV^ ,          \        V
^ R7      \        V
^R7      3VSRSVR7      # \        SS^,
          ,           S4      o\        P                  TS\        ;QJ d    . VV VVV3R lV 4       F  NK  	  5M! VV VVV3R lV 4       4      . VOSNS.VV4      pV F  pVP                  4        K  	  R R lo\        P                  P                  P                  \        V4      4      pS P!                  SWØ4      p\        P                  TS\        ;QJ d    . V3R	 lV 4       F  NK  	  5M! V3R	 lV 4       4      VS.RV4      # )
rý  r¨  c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   r  r/  r%  rJ  r¬   r¦   rz   r“   )r§   s   "rœ   r¨   Ú8WelfordReduction.create_multilayer.<locals>.__annotate__f  s,   € ÷ 2ñ 2Ø#ð2Ø4Bð2ØKNð2àñ2r›   c                ó2   <€ \         P                  ! VS4      # rª   ro  )r  r%  rJ  r7  s   &&&€rœ   r@  Ú4WelfordReduction.create_multilayer.<locals>.constantf  s   ø€ ô —|’| E¨5Ó1Ð1r›   rL  )r8  r7  r!  r¸  rÀ  r…  rA  rÂ  c           
   3  óR   <"  € T F  pSP                  VSSSS^ R7      x € K  	  R# 5i)r   ©r|  N)rå  )r  r^  rÓ  rê  ró  rÀ  rA  s   & €€€€€rœ   r  Ú5WelfordReduction.create_multilayer.<locals>.<genexpr>~  sC   øé € ð 
ñ (�Fð ×+Ñ+ØØ$Ø#ØØØð ,÷ ð ó (ùs   ƒ$'c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   rë   r/  rv  r^  r´  r¦   rz   r“   )r§   s   "rœ   r¨   r›  ‘  s0   € ÷ 	6ñ 	6Ø!ð	6à+ð	6ð 9ð	6ð ñ		6r›   c                ó   € V! . V OVO4      # rª   r“   )rë   rv  r^  s   &&&rœ   Úintermediate_loader_fnÚBWelfordReduction.create_multilayer.<locals>.intermediate_loader_fn‘  s   € ñ
 Ð4˜EÐ4 OÐ4Ó5Ð5r›   c              3  óZ   <"  € T F   p\        SVP                  4       R 7      x € K"  	  R# 5i))r^  N)r   r·  )r  rò   r£  s   & €rœ   r  r   ¡  s)   øé € ð á&�Aô Ð.°q·}±}³×GÑGÛ&ùs   ƒ(+)ru   r{   r9  r:  r�  rÌ   rj  rJ   r¤  r   rG   ru  rê  rÆ   r–  r;  rÌ  )rê  r8  r7  r!  r¸  rÀ  r…  rA  rÂ  rß  r@  rr  rò   rû  rÓ  r£  ró  s   f&f&&f&f&     @@@rœ   r¤  Ú"WelfordReduction.create_multilayerM  sÌ  þ€ ô  (Ð(8Ó9ˆÜŸ™×(Ñ(×>Ñ>Ü�HŠH”S˜¨%Ó0°!Ó4ó
ô 
ˆ	÷ ˜Ð+<Ô<÷2ð 2ð
 ×(Ñ(ØØà˜a•LÜ˜H¨AÔ.Ü˜H¨AÔ.ðð
 Ø!1Ø0ØØ-ð )ó ð ô ˜o°¸µÕ;¸UÓCˆ
Ü(×/Ñ/ØØßŒE÷ 
ð 
ñ (ó
�E‰E÷ 
ð 
ñ (ó
ó 
ð ˆfÐ�eÐØˆLØØó#
ˆó& ˆAØ�I‰IŽKñ õ	6ô —W‘W×%Ñ%×7Ñ7¼ÀfÓ8MÓNˆ
Ø×9Ñ9Ø�:ó
ˆô  ×&Ñ&ØØßŒEô á&ó�E‰Eô á&óó ð ØˆGàØó
ð 	
r›   r“   N)r•   r–   r—   r˜   r:  ra   rï  rê  rV  r’   r¤  rš   r“   r›   rœ   ru  ru  Æ
  sL   † Øð )6×(=Ñ(=ö}ó ð}ð~ ôó ðð
 ô\
ó ô\
r›   ru  c                  ó^  a € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R	]R
&   R]R&   R]R&   R]R&   ]! R 4      R,R V 3R lll4       tR V 3R lltR R ltR R lt	R R lt
R R ltR R ltR R  ltR! R" ltR,R# R$ llt]]P$                  3R%R&/R' R( lll4       t]R) R* l4       tR+tV ;t# )-ÚScani­  rû  Úscan_rangesr5  ú=Callable[[tuple[Any, ...], tuple[Any, ...]], tuple[Any, ...]]r�  zFCallable[[Sequence[_IntLike], Sequence[_IntLike]], Sequence[_IntLike]]rô   ra   rÂ  r¬   r  útuple[torch.dtype, ...]Údtypesútuple[Callable[..., Any], ...]r!  c               ó    € V ^8„  d   QhRRRR/# r  r“   )r§   s   "rœ   r¨   ÚScan.__annotate__¼  s   € ÷ 
ñ 
°$ð 
ÐCUñ 
r›   c                	óè   <a€ \         SV `  S4      \        4       P                  ! V3R  lV P                   4       !  ,          \        4       P                  ! V3R lV P
                   4       !  ,          # )c              3  ó<   <"  € T F  p\        VS4      x € K  	  R # 5irª   r*   r½  s   & €rœ   r  Ú,Scan.get_free_symbol_uses.<locals>.<genexpr>Ã  ó   øé € ÐOÑ>N¸Ô" 1 m×4Ð4Ó>NùrÀ  c              3  ó<   <"  € T F  p\        VS4      x € K  	  R # 5irª   r*   r½  s   & €rœ   r  r²  Æ  ó   øé € ÐH¹i¸Ô" 1 m×4Ð4»iùrÀ  )rÍ  r'  rD   rÁ  r©  r5  rÎ  s   &f€rœ   r'  ÚScan.get_free_symbol_uses»  s]   ù€ ô ‰GÑ(¨Ó7Ü‹l× Ò ÜO¸d×>NÒ>NÓOñõô ‹l× Ò ÜH¸d¿iºiÓHñõ	ð	
r›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   r¯  Ê  ó   € ÷  ñ  ˜tñ  r›   c                	óÈ   <€ \        V P                  4      \        V P                  4      ,           \        V P                  4      8w  d   \	        R 4      h\
        SV `  4        R# )zCExpected len(self.ranges) + len(self.scan_ranges) == len(self.size)N)rð   r¸  r©  r5  rÓ   rÍ  rú  ©rì  rÏ  s   &€rœ   rú  ÚScan.__post_init__Ê  óI   ø€ Üˆt�{‰{Óœc $×"2Ñ"2Ó3Õ3´s¸4¿9¹9³~ÔEÜ ØUóð ô 	‰ÑÖr›   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r¤   rU  rO  rV  z%Callable[[Sequence[_IntLike]], Never]rX  r/  Ú	scan_varsrÚ  r¦   r   r“   )r§   s   "rœ   r¨   r¯  Ñ  s<   € ÷ 
ñ 
àð
ð 7ð
ð ð	
ð
 $ð
ð 
ñ
r›   c                	óz  a€ V P                  W44      o\        ;QJ d!    . V3R  lV P                   4       F  NK  	  5M! V3R  lV P                   4       4      p\        P                  ! V P
                  V P                  V4      p\        P                  ! T;'       g    RV! S4      W`P                  ,          4      # )c              3  ó2   <"  € T F  q! S4      x € K  	  R # 5irª   r“   ©r  r·  r  s   & €rœ   r  Ú'Scan.store_reduction.<locals>.<genexpr>Ù  ó   øé € ÐD±^¨�x —}�}³^ùó   ƒr[  )	rô   rÆ   r!  ry   r÷  r¬  r�  r\  r  )rì  rU  rV  rX  r¾  rÈ   r  r  s   &&&&&  @rœ   rÝ  ÚScan.store_reductionÑ  s€   ø€ ð �l‰l˜4Ó+ˆß”ÔD°T·^²^ÓD—‘ÔD°T·^²^ÓDÓDˆÜ—’˜$Ÿ+™+ t§¡¸Ó?ˆÜ�yŠyØ×$Ð$˜9¡g¨c£l°F×;LÑ;LÕ4Mó
ð 	
r›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   r¯  ß  s   € ÷ ñ  Jñ r›   c                	ó   € R # )Úcustomr“   rë  s   &rœ   r+  ÚScan.get_reduction_typeß  s   € ár›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   r¯  ã  s   € ÷  ñ   Nñ  r›   c                	ó   € V P                   # rª   )r©  rë  s   &rœ   r1  ÚScan.get_reduction_sizeã  r  r›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   r¯  æ  ó   € ÷ ñ ˜.ñ r›   c                	ó   € V P                   # rª   ©r5  rë  s   &rœ   r<  ÚScan.get_sizeæ  ó   € Ø�y‰yÐr›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   r¯  é  ó   € ÷ ñ  Nñ r›   c                	ó   € V P                   # rª   rÑ  rë  s   &rœ   rå  ÚScan.get_pointwise_sizeé  rÛ  r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   r¯  ì  ó   € ÷ 8ñ 8˜cñ 8r›   c                	ó`   € \        V P                  4      \        V P                  4      ,           # rª   )rð   r¸  r©  rë  s   &rœ   rá  ÚScan.index_lengthì  ó!   € Ü�4—;‘;Ó¤# d×&6Ñ&6Ó"7Õ7Ð7r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   r¯  ï  s   € ÷ ñ Ð;ñ r›   c                	ó´   € V P                  V P                  4      pV P                  V P                  \        P                  4      pV P                  W4      pV3# rª   )rõ  r¸  r©  rL   ræ  rô   ©rì  rë   rç  r  s   &   rœ   rý  ÚScan.inner_fn_argsï  óC   € Ø—‘˜DŸK™KÓ(ˆØ—‘˜T×-Ñ-¬t¯}©}Ó=ˆØ�l‰l˜5Ó)ˆØˆvˆr›   c               ó    € V ^8„  d   QhRRRR/# r  r“   )r§   s   "rœ   r¨   r¯  õ  ó   € ÷ Uñ U°4ð UÐDVñ Ur›   c                	óÜ   € V P                  V P                  4      pV P                  V P                  \        P                  4      pV P                  W#4      p\        V P                  WAR 7      # r  )rõ  r¸  r©  rL   ræ  rô   rU   r·  ©rì  r³  rë   rç  r  s   &&   rœ   rÂ  ÚScan.inner_fn_free_symbolsõ  óM   € Ø—‘˜DŸK™KÓ(ˆØ—‘˜T×-Ñ-¬t¯}©}Ó=ˆØ�l‰l˜5Ó)ˆÜ# D§M¡M°3ÔTÐTr›   Úcan_fallback_to_atenTc               ó@   € V ^8„  d   QhRRRRRRRRR	R
RRRRRRRRRR/
# )r¤   r8  r¦  r¬  r«  r!  z+tuple[Callable[[Sequence[Expr]], Any], ...]r5  rû  Úaxisr¬   r�  rª  rÂ  ra   rç  r¸   rÝ   r   r¦   úSequence[TensorBox | None]r“   )r§   s   "rœ   r¨   r¯  ü  s{   € ÷ hñ hàðhð (ðhð ?ð	hð
 ðhð ðhð Rðhð &ðhð #ðhð ðhð 
$ñhr›   c                	óâ  aaa€ . VR S OVS^,           R  OoVS,          .o\         P                  P                  V\        P                  4      '       g   R .\        V4      ,          # \        V4      ^8”  dH   \         P                  P                  V\        P                  4      '       g   R .\        V4      ,          # \         P                  P                  p
V
P                  \        S4      4      p\        V4      \        V4      8w  d   \        R4      hV
P                  \        P                  ! V^4      4      '       dH   \        \        V4      4       Uu. uF(  p\        P!                  VW,,          W<,          VR7      NK*  	  up# V P#                  VV^ ,          V^ ,          SSSVVR7      w  r}\$        pV^8”  d¢   \&        P(                  P*                  R J ;'       g    \,        ;'       d
    \.        R8¬  pT;'       d1    \        V4      ^8H  ;'       d    \&        P0                  ! 4       '       * pV'       g   V'       d   R .\        V4      ,          # ^pM\2        pR VVV3R llp\        \        V4      4       Uu. uFB  p\4        P!                  V! RRVRW,,          R	VR
W<,          RVRVRSRSRVRVRVRV/V	B 4      NKD  	  ppV F  pVP7                  4        K  	  V# u upi u upi )Nú&Expected len(dtypes) == len(inner_fns)rg  )r8  r7  r·  ré  Úpointwise_rangesr©  r�  Ú
scan_numelz3.3.0c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rë   r/  Ú
scan_indexr¦   r°  r“   )r§   s   "rœ   r¨   Ú!Scan.create.<locals>.__annotate__E  ó!   € ÷ 	?ñ 	?˜>ð 	?°~ð 	?È*ñ 	?r›   c                ó°   <€ \        V4      \        S4      8w  d   \        R 4      h\        V 4      \        S4      8w  d   \        R4      h. V RS OVOV SR O# )z,Expected len(scan_index) == len(scan_ranges)ú,Expected len(index) == len(pointwise_ranges)N©rð   rÓ   )rë   rð  ré  rí  r©  s   &&€€€rœ   rô   ÚScan.create.<locals>.reindexE  ó_   ø€ Ü�:‹¤# kÓ"2Ô2Ü$Ð%SÓTÐTÜ�5‹zœSÐ!1Ó2Ô2Ü$Ð%SÓTÐTØ>�U˜5˜D�\Ð> JÐ>°°t°u°Ð>Ð>r›   r8  r7  r¬  r·  r!  r5  r¸  r©  r�  rô   rÂ  r  r“   )r{   r9  r$  rO   ÚSCANrð   ÚTUPLE_REDUCTIONr:  r–  ru   rÓ   r�  rÌ   rq  rñ   rD  rê  rD  r¨  rD  ÚversionÚhipÚ
has_tritonÚtriton_versionÚ$are_deterministic_algorithms_enabledÚ	SplitScanr    r–  )rê  r8  r¬  r!  r5  ré  r�  rÂ  rç  rÝ   r:  rî  r  rD  Ú	scan_typeÚtriton_supports_splitÚsupports_splitrô   rM  r  rí  r©  s   &&&&&f&&$,          @@rœ   rê  ÚScan.createû  s  ú€ ð =˜T % 4˜[Ð<¨4°°qµ°
Ð+;Ð<ÐØ˜D•z�lˆä�w‰w×"Ñ" 6¬>×+>Ñ+>×?Ò?Ø�6œC ›KÕ'Ð'äˆv‹;˜Œ?¤1§7¡7×#6Ñ#6Ø”N×2Ñ2÷$
ò $
ð �6œC ›KÕ'Ð'ä—7‘7×#Ñ#ˆØ×&Ñ&¤}°[Ó'AÓBˆ
äˆv‹;œ#˜i›.Ô(Ü Ð!IÓJÐJð ×)Ñ)¬%¯(ª(°:¸qÓ*A×BÒBô %*¬#¨f«+Ô$6óñ %7�Lô × Ñ Ø!Ø Õ.Ø&Õ4Øð	 !ö ñ %7ñð ð &)§^¡^ØØ˜•)Ø˜q•\ØØ-Ø#Ø!Ø!ð &4ó 	&
Ñ"ˆô ˆ	Ø˜Œ>ô —‘×!Ñ! TÐ)×WÐW¬j×.VÐ.V¼^ÈwÑ=Vð "ð
 &÷ Eð EÜ˜“K 1Ñ$÷Eð Eä×BÒBÓDÔDð ÷
 "ß'à ˜6¤C¨£KÕ/Ð/à!"‘Jä%�	÷	?ò 	?ô2 !&¤c¨&£kÔ 2ó%
ñ$ !3�ô# ×ÑÙñ Ø!ðà Õ.ðð "ðð 'Õ4ð	ð
 (ðð ðð ,ðð !,ðð  *ðð $ðð $2ðð ".ðð ñöñ" !3ð% 	ð 
ó* ˆFØ�N‰NÖñ ð ˆùòOùò^
s   Å.K'ÊAK,c               ó<   € V ^8„  d   QhRRRRRRRRR	R
RR
RRRRRR/	# )r¤   r8  r¦  r7  rR  r·  r´  ré  r¬   rí  rû  r©  r�  rª  rî  r"   r¦   rõ  r“   )r§   s   "rœ   r¨   r¯  g  se   € ÷ 
ñ 
àð
ð ð
ð 7ð	
ð
 ð
ð (ð
ð #ð
ð Rð
ð ð
ð 
(ñ
r›   c	                	óT   aa€ R  VV3R llp	\         P                  VVVV	VVRVR7      # )c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r  r/  r%  r¦   rz   r“   )r§   s   "rœ   r¨   Ú%Scan.num_splits.<locals>.__annotate__s  s&   € ÷ 	Hñ 	H˜Nð 	H¸>ð 	HÈhñ 	Hr›   c                ó,   <€ S! . V R S OVOV SR  O4      # rª   r“   )r  r%  ré  r·  s   &&€€rœ   rà  Ú#Scan.num_splits.<locals>.wrapper_fns  s*   ø€ ÙÐF˜c % 4˜jÐF¨=ÐF¸3¸t¸u¸:ÐFÓGÐGr›   r÷  )r8  rò  rÁ  r·  r¸  rÀ  r…  ró  )r¿  rD  )
rê  r8  r7  r·  ré  rí  r©  r�  rî  rà  s
   &&&ff&&&& rœ   rD  ÚScan.num_splitsf  sA   ù€ ÷	Hñ 	Hô ×#Ñ#ØØØØØ#Ø(Ø!Ø&ð $ó 	
ð 		
r›   r“   r®  )r•   r–   r—   r˜   r™   re   r'  rú  rÝ  r+  r1  r<  rå  rá  rý  rÂ  r:  ra   rï  rê  rD  rš   r  r  s   @rœ   r¨  r¨  ­  sÅ   ø‡ àÓØ
ÓØMÓMØSÓSØ!Ó!ØÓà#Ó#Ø-Ó-ñ ˜FÓ#÷
ñ 
ó $ð
÷ ð  õ
õõ õõõ8õ÷Uð ð )6×(=Ñ(=ñhð &*÷hó ðhðT ô
ó ö
r›   r¨  c                  ó   € ] tR tRtRtR# )rÿ  iƒ  r“   N)r•   r–   r—   r˜   rš   r“   r›   rœ   rÿ  rÿ  ƒ  s   † ãr›   rÿ  c                  óJ  a € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R	]R
&   R]R&   R]R&   R]R&   R]R&   ]! R 4      R)R V 3R lll4       tR V 3R lltR R ltR R lt	R R lt
R R ltR R ltR  R! ltR" R# ltR)R$ R% llt]]P$                  3R& R' ll4       tR(tV ;t# )*ÚSortiˆ  rû  Úsort_rangesr5  z:Callable[[Sequence[Expr], Sequence[Expr]], Sequence[Expr]]rô   ra   rÂ  r¬   r  r«  r¬  r­  r!  r¸   ÚstableÚ
descendingc               ó    € V ^8„  d   QhRRRR/# r  r“   )r§   s   "rœ   r¨   ÚSort.__annotate__š  s   € ÷ 	
ñ 	
°$ð 	
ÐCUñ 	
r›   c                	óè   <a€ \         SV `  S4      \        4       P                  ! V3R  lV P                   4       !  ,          \        4       P                  ! V3R lV P
                   4       !  ,          # )c              3  ó<   <"  € T F  p\        VS4      x € K  	  R # 5irª   r*   r½  s   & €rœ   r  Ú,Sort.get_free_symbol_uses.<locals>.<genexpr>ž  r³  rÀ  c              3  ó<   <"  € T F  p\        VS4      x € K  	  R # 5irª   r*   r½  s   & €rœ   r  r  ¡  rµ  rÀ  )rÍ  r'  rD   rÁ  r  r5  rÎ  s   &f€rœ   r'  ÚSort.get_free_symbol_uses™  s]   ù€ ô ‰GÑ(¨Ó7Ü‹l× Ò ÜO¸d×>NÒ>NÓOñõô ‹l× Ò ÜH¸d¿iºiÓHñõ	ð	
r›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   r  ¥  r¸  r›   c                	óÈ   <€ \        V P                  4      \        V P                  4      ,           \        V P                  4      8w  d   \	        R 4      h\
        SV `  4        R# )zCExpected len(self.ranges) + len(self.sort_ranges) == len(self.size)N)rð   r¸  r  r5  rÓ   rÍ  rú  rº  s   &€rœ   rú  ÚSort.__post_init__¥  r¼  r›   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r¤   rU  rO  rV  r¼  rX  r/  rÙ  r¦   r   r“   )r§   s   "rœ   r¨   r  ¬  s<   € ÷ 
ñ 
àð
ð 2ð
ð ð	
ð
 'ð
ð 
ñ
r›   c                	óŽ  a€ V P                  W44      o\        ;QJ d!    . V3R  lV P                   4       F  NK  	  5M! V3R  lV P                   4       4      p\        P                  ! V P
                  WPP                  V P                  4      p\        P                  ! T;'       g    RV! S4      W`P                  ,          4      # )c              3  ó2   <"  € T F  q! S4      x € K  	  R # 5irª   r“   rÁ  s   & €rœ   r  Ú'Sort.store_reduction.<locals>.<genexpr>´  rÃ  rÄ  r[  )
rô   rÆ   r!  ry   Úsortr¬  r  r  r\  r  )rì  rU  rV  rX  rÙ  rÈ   r  r  s   &&&&&  @rœ   rÝ  ÚSort.store_reduction¬  s„   ø€ ð �l‰l˜4Ó0ˆß”ÔD°T·^²^ÓD—‘ÔD°T·^²^ÓDÓDˆÜ—’˜$Ÿ+™+ v¯{©{¸D¿O¹OÓLˆÜ�yŠyØ×$Ð$˜9¡g¨c£l°F×;LÑ;LÕ4Mó
ð 	
r›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   r  º  s   € ÷ ñ  Jñ r›   c                	ó   € R # )r  r“   rë  s   &rœ   r+  ÚSort.get_reduction_typeº  s   € Ùr›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   rë  r“   )r§   s   "rœ   r¨   r  ½  s   € ÷  ñ  Ð$5ñ  r›   c                	ó   € V P                   # rª   )r  rë  s   &rœ   r1  ÚSort.get_reduction_size½  r  r›   c               ó   € V ^8„  d   QhRR/# r%  r“   )r§   s   "rœ   r¨   r  À  s   € ÷ ñ Ð+ñ r›   c                	ó   € V P                   # rª   rÐ  rë  s   &rœ   r<  ÚSort.get_sizeÀ  rÒ  r›   c               ó   € V ^8„  d   QhRR/# rx  r“   )r§   s   "rœ   r¨   r  Ã  rã  r›   c                	ó   € V P                   # rª   rÑ  rë  s   &rœ   rå  ÚSort.get_pointwise_sizeÃ  rÛ  r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   r  Æ  rØ  r›   c                	ó`   € \        V P                  4      \        V P                  4      ,           # rª   )rð   r¸  r  rë  s   &rœ   rá  ÚSort.index_lengthÆ  rÛ  r›   c               ó   € V ^8„  d   QhRR/# rä  r“   )r§   s   "rœ   r¨   r  É  s   € ÷ ñ Ð7ñ r›   c                	ó´   € V P                  V P                  4      pV P                  V P                  \        P                  4      pV P                  W4      pV3# rª   )rõ  r¸  r  rL   ræ  rô   rÞ  s   &   rœ   rý  ÚSort.inner_fn_argsÉ  rà  r›   c               ó    € V ^8„  d   QhRRRR/# r  r“   )r§   s   "rœ   r¨   r  Ï  râ  r›   c                	óÜ   € V P                  V P                  4      pV P                  V P                  \        P                  4      pV P                  W#4      p\        V P                  WAR 7      # r  )rõ  r¸  r  rL   ræ  rô   rU   r·  rä  s   &&   rœ   rÂ  ÚSort.inner_fn_free_symbolsÏ  ræ  r›   c               ó@   € V ^8„  d   QhRRRRRRRRR	R
RRRRRRRRRR/
# )r¤   r8  r¦  r¬  r«  r!  z'tuple[Callable[[list[Expr]], Any], ...]r5  rû  ré  r¬   r  r¸   r  rÂ  ra   rÝ   r   r¦   rê  r“   )r§   s   "rœ   r¨   r  Ö  sz   € ÷ Tñ TàðTð (ðTð ;ð	Tð
 ðTð ðTð ðTð ðTð &ðTð ðTð 
$ñTr›   c	           "     	óÎ  aaa€ . VR S OVS^,           R  OoVS,          .o\         P                  P                  V\        P                  4      '       g   R .\        V4      ,          # \         P                  P                  p
V
P                  \        S4      4      p\        P                  P                  '       d   \        P                  P                  pMIRp\        P                  P                  ;'       d&    V
P                  \        P                  ! W½4      4      pV'       g   R .\        V4      ,          # \        V4      \        V4      8w  d   \!        R4      hV
P                  \        P                  ! V^4      4      '       dH   \#        \        V4      4       Uu. uF(  p\$        P'                  VW.,          W>,          VR7      NK*  	  up# R VVV3R llp\#        \        V4      4       Uu. uFG  p\(        P'                  \+        RRVRW.,          RVR	W>,          R
VRVRSRSRVRVRVRVRV/V	B 4      NKI  	  ppV F  pVP-                  4        K  	  V# u upi u upi )NrÉ  rì  rg  c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rë   r/  Ú
sort_indexr¦   r°  r“   )r§   s   "rœ   r¨   Ú!Sort.create.<locals>.__annotate__
  rò  r›   c                ó°   <€ \        V4      \        S4      8w  d   \        R 4      h\        V 4      \        S4      8w  d   \        R4      h. V RS OVOV SR O# )z,Expected len(sort_index) == len(sort_ranges)rô  Nrõ  )rë   r:  ré  rí  r  s   &&€€€rœ   rô   ÚSort.create.<locals>.reindex
  r÷  r›   r8  r7  r¬  r·  r!  r5  r¸  r  rô   rÂ  r  r  r  r“   )r{   r9  r$  rO   ÚSORTrð   r:  r–  ru   rM   rZ  Údecompose_sort_opsÚpersistent_reductionsr�  rÌ   rq  rÓ   rñ   rD  rê  r    r  r–  )rê  r8  r¬  r!  r5  ré  r  r  rÂ  rÝ   r:  Ú
sort_numelÚis_persistent_kernelÚ
max_rblockr  rô   rM  r  rí  r  s   &&&&&f&&&,        @@rœ   rê  ÚSort.createÕ  s‚  ú€ ð =˜T % 4˜[Ð<¨4°°qµ°
Ð+;Ð<ÐØ˜D•z�lˆä�w‰w×"Ñ" 6¬>×+>Ñ+>×?Ò?Ø�6œC ›KÕ'Ð'ä—7‘7×#Ñ#ˆØ×&Ñ&¤}°[Ó'AÓBˆ
ô �=‰=×+×+Ð+Ü#)§=¡=×#FÑ#FÑ àˆJä—‘×3Ñ3÷ Uð UØ×2Ñ2´5·8²8¸JÓ3SÓTð !÷ $à�6œC ›KÕ'Ð'äˆv‹;œ#˜i›.Ô(Ü Ð!IÓJÐJð ×)Ñ)¬%¯(ª(°:¸qÓ*A×BÒBô %*¬#¨f«+Ô$6óñ %7�Lô × Ñ Ø!Ø Õ.Ø&Õ4Øð	 !ö ñ %7ñð ÷	?ò 	?ô4 !&¤c¨&£kÔ 2ó'
ñ& !3�ô% ×ÑÜñ Ø!ðà Õ.ðð "ðð 'Õ4ð	ð
 (ðð ðð ,ðð !,ðð $ðð $2ðð ".ðð "ðð  *ðð ñöñ$ !3ð' 	ð 
ó, ˆFØ�N‰NÖñ ð ˆùòUùò"
s   Æ!.IÇ3AI"r“   r®  )r•   r–   r—   r˜   r™   re   r'  rú  rÝ  r+  r1  r<  rå  rá  rý  rÂ  r:  ra   rï  rê  rš   r  r  s   @rœ   r  r  ˆ  s¬   ø‡ ð ÓØ
ÓØGÓGØ!Ó!ØÓà#Ó#Ø-Ó-àƒLØÓñ ˜FÓ#÷	
ñ 	
ó $ð	
÷ ð  õ
õõ õõõ8õ÷Uð ð )6×(=Ñ(=öTó öTr›   r  c               ó    € V ^8„  d   QhRRRR/# ©r¤   r¥   r¡   r¦   r¸   r“   )r§   s   "rœ   r¨   r¨   -  s   € ÷ ñ ˜Vð ¨ñ r›   c                óF   €  \        V R R7       R#   \         d     R # i ; i)F©ÚfreezeT)r“  rY  r­   s   &rœ   r=  r=  -  s&   € ðÜ˜a¨Õ.ÙøÜô Úðús   ‚ ‘ Ÿ c               ó    € V ^8„  d   QhRRRR/# rF  r“   )r§   s   "rœ   r¨   r¨   5  s   € ÷ ñ ¨ð °4ñ r›   c           
     óÈ  €  \        V R R7      w  rVP                  4       '       dœ   \        V\        4      '       g   \	        \        V4      4      h\        VP                  VP                  VP                  VP                  VP                  VP                  VP                  4      VP                  VP                  4      pVP                  4       #   \         d     R # i ; i©FrH  )r“  Úshould_pad_stridesr«   r?  rÓ   r�   r•  r8  r7  r5  Ú_pad_stridesr6  r–  r—  Úis_contiguousrY  ©r¥   Ú_bufferr’  s   &  rœ   Ú is_contiguous_storage_and_layoutrR  5  s²   € ðÜ/°¸%Ô@‰ˆð ×$Ñ$×&Ò&Ü˜f¤n×5Ò5Ü$¤T¨&£\Ó2Ð2Ü Ø—‘Ø—‘Ø—‘Ø×#Ñ# F§M¡M°6·;±;ÀÇÁÓMØ—‘Ø× Ñ óˆFð ×#Ñ#Ó%Ð%øÜô Úðús   ‚CC ÃC!Ã C!c               ó    € V ^8„  d   QhRRRR/# rF  r“   )r§   s   "rœ   r¨   r¨   J  s   € ÷ 	ñ 	¨fð 	¸ñ 	r›   c                ó.  €  \        V R R7      w  rVP                  4       '       g   R # \        P                  P                  P                  VP                  4       VP                  \        VP                  4      ,           4      #   \         d     R # i ; irL  )r“  rO  r{   r9  r:  r  Ústorage_sizer–  ru   r5  rY  rP  s   &  rœ   Ú&is_dense_contiguous_storage_and_layoutrV  J  sx   € ðÜ/°¸%Ô@‰ˆØ×#Ñ#×%Ò%ÙÜ�w‰w×Ñ×7Ñ7Ø×ÑÓ! 6§=¡=´=ÀÇÁÓ3MÕ#Mó
ð 	
øô ô Úðús   ‚%B ©AB ÂBÂBc               ó4   € V ^8„  d   QhRRRRRRRRRRR	RR
R/# )r¤   r¥   r¡   rI  r¸   Úwant_contiguousÚstride_orderúSequence[int | Integer] | Nonerð  r  r¦   ztuple[StorageBox, Layout]r“   )r§   s   "rœ   r¨   r¨   V  sN   € ÷ :ñ :Øð:àð:ð ð:ð 1ð	:ð
 ð:ð 2ð:ð ñ:r›   c           	     ó  € \        V \        4      '       d   \        V P                  VVVVVR7      # \        V \        4      '       d9   \        V P                  VVVVVR7      w  rgW P                  P                  4       3# \        V \        4      '       dª   V'       d‡   V'       dA   V P                  4        V P                  4       P                  4       '       g   \        R4      hM>Ve   V P                  W4R7       M'Ve   V P                  WTR7       MV P                  4        \	        V 4      V P                  4       3# \        V \        4      '       d'   \        V P                  VR7      w  r†W€P                  3# \        h)zÈ
Try to simplify x into a StorageBox and a Layout.

allow_padding only affect how we apply stride_order. When allow_padding
is True, we have the freedom to add padding when applying the stride_order.
©rI  rX  rY  rð  r  z'Expected x.get_layout().is_contiguous()©rð  rH  )r«   r    r“  r‘  rº  r>  r»  rì  rO  rÓ   ró  r  r  r˜  r’  rY  )	r¥   rI  rX  rY  rð  r  r&  r’  Úbuffers	   &&&&&&   rœ   r“  r“  V  sU  € ô �!”Y×ÒÜ$Ø�F‰FØØ+Ø%Ø'Ø'ô
ð 	
ô �!”Z× Ò Ü)Ø�F‰FØØ+Ø%Ø'Ø'ô
‰	ˆð —&‘&×#Ñ#Ó%Ð%Ð%Ü�!”V×ÒßßØ—‘Ô!Ø—|‘|“~×3Ñ3×5Ò5Ü(Ð)RÓSÐSð 6àÒ)Ø×1Ñ1Ø ð 2õ ð Ò*Ø×2Ñ2Ø!ð 3õ ð —‘Ô!Ü˜!‹}˜aŸl™l›nÐ,Ð,Ü�!”_×%Ò%ô *Ø�F‰FØô
‰	ˆð —x‘xÐÐÜ
Ðr›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r¥   r¡   rY  r  r¦   r¸   r“   )r§   s   "rœ   r¨   r¨   “  s$   € ÷ ñ ØðØ4ðà	ñr›   c                óh   €  \        V R R7      w  r#VP                  V4      #   \         d     R # i ; irL  )r“  Úis_stride_orderedrY  )r¥   rY  rQ  r’  s   &&  rœ   Ú"is_stride_order_storage_and_layoutrb  “  s8   € ðÜ/°¸%Ô@‰ˆØ×'Ñ'¨Ó5Ð5øÜô Úðús   ‚" ¢1°1c               ó    € V ^8„  d   QhRRRR/# rÞ  r“   )r§   s   "rœ   r¨   r¨   �  s   € ÷ ñ �vð  $ñ r›   c                ó  € \        V \        \        34      '       d   \        V P                  4      # \        V \
        4      '       dƒ   V P                  p\        P                  P                  P                  VP                  \        VP                  4      ,          \        4      '       * p\        V P                  4      ;'       g    T# \        V \        4      '       d,   V P!                  4       \        P                  P"                  9   # R # r®  )r«   r    rº  Úis_unalignedr‘  r˜  r’  r{   r9  r:  Ústatically_known_multiple_ofr–  rl   r7  rn   r»  r¼  Úunaligned_buffers)rÔ   r’  Úhas_unaligned_layouts   &  rœ   re  re  �  s·   € Ü�$œ¤JÐ/×0Ò0Ü˜DŸI™IÓ&Ð&ä�$œ×(Ò(Ø—‘ˆÜ#$§7¡7×#3Ñ#3×#PÑ#PØ�M‰MœN¨6¯<©<Ó8Õ8¼/ó$
ô  
Ðô ˜DŸI™IÓ&×>Ð>Ð*>Ð>ä�$œ×ÒØ�}‰}‹¤!§'¡'×";Ñ";Ñ;Ð;ñ r›   c                  óJ  € ] tR tRt$ R]R&   ]! R 4      R2R R ll4       tR R ltR R	 ltR
 R lt	]
R R l4       tR R ltR R ltR R ltR R ltR R ltRR/R R lltR R ltR R ltR  R! ltR" R# ltR$ R% ltR& R' ltR( R) ltR* R+ ltR, R- ltR. R/ ltR0tR1# )3r¸  i¯  r¡   r‘  c               ó    € V ^8„  d   QhRRRR/# r  r“   )r§   s   "rœ   r¨   ÚBaseView.__annotate__´  s   € ÷ =ñ =°$ð =ÐCUñ =r›   c                	ó8   € V P                   P                  V4      # rª   ©r‘  r'  r&  s   &&rœ   r'  ÚBaseView.get_free_symbol_uses³  s   € à�y‰y×-Ñ-¨mÓ<Ð<r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   ú*Callable[[Sequence[Expr]], Sequence[Expr]]r“   )r§   s   "rœ   r¨   rk  ·  s   € ÷ Cñ CÐ Jñ Cr›   c                	ó   € \        R V  24      h)zmake_reindexer NYI on re  rë  s   &rœ   Úmake_reindexerÚBaseView.make_reindexer·  s   € Ü!Ð$:¸4¸&Ð"AÓBÐBr›   c               ó   € V ^8„  d   QhRR/# r»  r“   )r§   s   "rœ   r¨   rk  º  s   € ÷ ñ Ð>ñ r›   c                	ór   aa€ V P                   P                  4       oV P                  4       oR  VV3R llpV# )c               ó    € V ^8„  d   QhRRRR/# )r¤   r  r/  r¦   r"   r“   )r§   s   "rœ   r¨   Ú+BaseView.make_indexer.<locals>.__annotate__¾  s   € ÷ 	'ñ 	'˜ð 	'¨Dñ 	'r›   c                ó    <€ S! S! V 4      4      # rª   r“   ©r  Úinnerrô   s   &€€rœ   rV  Ú&BaseView.make_indexer.<locals>.indexer¾  ó   ø€ Ù™ ›Ó&Ð&r›   )r‘  r¾  rs  )rì  rV  r{  rô   s   & @@rœ   r¾  ÚBaseView.make_indexerº  s4   ù€ Ø—	‘	×&Ñ&Ó(ˆØ×%Ñ%Ó'ˆ÷	'ñ 	'ð ˆr›   c               ó   € V ^8„  d   QhRR/# r³  r“   )r§   s   "rœ   r¨   rk  Ã  s   € ÷ ñ ÐAñ r›   c                	ór   aa€ V P                   P                  4       oV P                  4       oR  VV3R llpV# )c               ó    € V ^8„  d   QhRRRR/# r~  r“   )r§   s   "rœ   r¨   Ú*BaseView.make_loader.<locals>.__annotate__Ç  s   € ÷ 	'ñ 	'˜ð 	'¨8ñ 	'r›   c                ó    <€ S! S! V 4      4      # rª   r“   rz  s   &€€rœ   r^  Ú$BaseView.make_loader.<locals>.loaderÇ  r}  r›   )r‘  r·  rs  )rì  r^  r{  rô   s   & @@rœ   r·  ÚBaseView.make_loaderÃ  s4   ù€ Ø—	‘	×%Ñ%Ó'ˆØ×%Ñ%Ó'ˆ÷	'ñ 	'ð ˆr›   c               ó   € V ^8„  d   QhRR/# rQ  r“   )r§   s   "rœ   r¨   rk  Í  s   € ÷ %ñ %�{ñ %r›   c                	ó6   € V P                   P                  4       # rª   )r‘  rA  rë  s   &rœ   r7  ÚBaseView.dtypeÌ  s   € à�y‰y×"Ñ"Ó$Ð$r›   c               ó   € V ^8„  d   QhRR/# r^  r“   )r§   s   "rœ   r¨   rk  Ð  ó   € ÷ &ñ &˜Fñ &r›   c                	ó6   € V P                   P                  4       # rª   ©r‘  r>  rë  s   &rœ   r>  ÚBaseView.get_layoutÐ  ó   € Ø�y‰y×#Ñ#Ó%Ð%r›   c               ó   € V ^8„  d   QhRR/# r   r“   )r§   s   "rœ   r¨   rk  Ó  ó   € ÷ &ñ &Ð/ñ &r›   c                	ó6   € V P                   P                  4       # rª   ©r‘  rB  rë  s   &rœ   rB  ÚBaseView.get_deviceÓ  rŽ  r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   rk  Ö  ó   € ÷ ñ Ð!5ñ r›   c                	ó   € R # rª   r“   rë  s   &rœ   r  ÚBaseView.get_origin_nodeÖ  r  r›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   rk  Ù  ó   € ÷ $ñ $˜#ñ $r›   c                	ó6   € V P                   P                  4       # rª   ©r‘  r¼  rë  s   &rœ   r¼  ÚBaseView.get_nameÙ  ó   € Ø�y‰y×!Ñ!Ó#Ð#r›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   rk  Ü  s   € ÷ ñ  Nñ r›   c                	ó"   € V P                  4       # rª   r„  rë  s   &rœ   rå  ÚBaseView.get_pointwise_sizeÜ  ó   € Ø�}‰}‹Ðr›   rÚ  Tc               ó$   € V ^8„  d   QhRRRRRR/# rÜ  r“   )r§   s   "rœ   r¨   rk  ß  ó&   € ÷ Dñ D ð D°Tð DÀTñ Dr›   c               	ó:   € V P                   P                  WR 7      # ©©rÚ  ©r‘  rà  rß  s   &&$rœ   rà  ÚBaseView.mark_reuseß  ó   € Ø�y‰y×#Ñ# EÐ#ÓCÐCr›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rk  â  ó   € ÷ 2ñ 2¨ñ 2r›   c                	ó6   € V P                   P                  4       # rª   ©r‘  r¯  rë  s   &rœ   r¯  ÚBaseView.has_exceeded_max_readsâ  ó   € Ø�y‰y×/Ñ/Ó1Ð1r›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   rk  å  ó   € ÷ #ñ #˜ñ #r›   c                	ó6   € V P                   P                  4       # rª   ©r‘  r–  rë  s   &rœ   r–  ÚBaseView.realizeå  ó   € Ø�y‰y× Ñ Ó"Ð"r›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   rk  è  s   € ÷ !ñ !˜dñ !r›   c                	ó:   € V P                   P                  4        R # rª   ©r‘  rä  rë  s   &rœ   rä  ÚBaseView.realize_hintè  s   € Ø�	‰	×ÑÖ r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   rk  ë  ó   € ÷ -ñ - 8ñ -r›   c                	ó6   € V P                   P                  4       # rª   ©r‘  r   rë  s   &rœ   r   ÚBaseView.get_storage_numelë  ó   € Ø�y‰y×*Ñ*Ó,Ð,r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rk  î  ó   € ÷ %ñ %˜4ñ %r›   c                	ó6   € V P                   P                  4       # rª   ©r‘  r6  rë  s   &rœ   r6  ÚBaseView.is_externî  ó   € Ø�y‰y×"Ñ"Ó$Ð$r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rk  ñ  s   € ÷ ,ñ , $ñ ,r›   c                	ó²   € \        V P                  \        4      '       g   \        \	        V P                  4      4      hV P                  P                  4       # rª   )r«   r‘  r¸  rÓ   r�   Úis_module_bufferrë  s   &rœ   rÈ  ÚBaseView.is_module_bufferñ  s9   € Ü˜$Ÿ)™)¤X×.Ò.Ü ¤ d§i¡i£Ó1Ð1Ø�y‰y×)Ñ)Ó+Ð+r›   c               ó   € V ^8„  d   QhRR/# rý  r“   )r§   s   "rœ   r¨   rk  ö  ó   € ÷ *ñ * ñ *r›   c                	ó6   € V P                   P                  4       # rª   ©r‘  r
  rë  s   &rœ   r
  ÚBaseView.get_read_namesö  ó   € Ø�y‰y×'Ñ'Ó)Ð)r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   rk  ù  s   € ÷ ñ ˜?ñ r›   c                	óì   € \         P                  ! \        R R4      ;_uu_ 4        \        V P	                  4       V P                  4       4      P                  uuRRR4       #   + '       g   i     R# ; irù  )r!   r‘   r?  rW   r·  r<  r  rë  s   &rœ   r	  ÚBaseView.get_readsù  sJ   € Ü�\Š\œ.Ð*:¸D×AÕAÜ&Ø× Ñ Ó"Ø—‘“ó÷ ‰e÷	 B×A×AÓAús   ¥2A"Á"A3	c               ó   € V ^8„  d   QhRR/# rç  r“   )r§   s   "rœ   r¨   rk     s   € ÷ ñ ˜Vñ r›   c                	óR   € T p\        V\        4      '       d   VP                  pK$  V# rª   )r«   r¸  r‘  )rì  r¥   s   & rœ   r¹  ÚBaseView.unwrap_view   s"   € ØˆÜ˜œH×%Ò%Ø—‘ŠAØˆr›   c               ó    € V ^8„  d   QhRRRR/# r>  r“   )r§   s   "rœ   r¨   rk    rb  r›   c                ó¼   € V P                  4       p\        P                  ! \        RV4      ! V4      p\	        VV P                  4       VV P                  4       R7      # rd  )r·  r!   r‘   rh  rD  rA  r<  ri  s   && rœ   r@  ÚBaseView.constant_to_device  sN   € à×!Ñ!Ó#ˆÜ—’œnÐ.?ÀÔHÈÓPˆÜØØ—.‘.Ó"ØØ—=‘=“?ô	
ð 	
r›   r“   Nr®  )r•   r–   r—   r˜   r™   re   r'  rs  r¾  r·  rY  r7  r>  rB  r  r¼  rå  rà  r¯  r–  rä  r   r6  rÈ  r
  r	  r¹  r@  rš   r“   r›   rœ   r¸  r¸  ¯  s    ‡ à
ƒLá˜JÓ'ö=ó (ð=õCõõð ô%ó ð%õ&õ&õõ$õðD¸D÷ Dõ2õ#õ!õ-õ%õ,õ
*õõ÷	
ñ 	
r›   r¸  c                  óf   € ] tR tRt$ R]R&   ]R R l4       t]R R l4       tR R	 lt	R
 R lt
RtR# )rÉ   i  r/  r5  c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r¥   r¡   Únew_sizery  r¦   r“   )r§   s   "rœ   r¨   ÚExpandView.__annotate__  s#   € ÷ *ñ *˜6ð *Ð-?ð *ÐDVñ *r›   c           	     óž  € \         P                  P                  pV Uu. uF  p\        P                  ! V4      NK  	  ppV P                  4       pR.\        V4      \        V4      ,
          ,          \        V4      ,           p\        V4      \        V4      8w  d   \        R4      h\        \        V4      4       EF  pW,          R
8X  d"   WE,          f   \        R4      hWE,          W&   K2  WE,          e6   \         P                  P                  P                  WE,          4      '       d   Ks  \        V4      '       d   K†  \        V4      '       d   K™  W,          pWE,          pVf   \        R4      hVf   \        R4      hWg,
          pVP                  V^ R7      ^ 8w  g   Ké  \        RV P                  4        RV R	V 24      h	  V# u upi )zReplace `-1` with correct sizesNz'Expected len(new_size) == len(old_size)z Expected old_size[i] is not NonezExpected v1 is not NonezExpected v2 is not None)ÚfallbackzBroadcast failed in ExpandView(ú, z) on dimension rl  )r{   r9  r:  rÌ   rU  r<  rð   rÅ   rÓ   rñ   Úis_size_one_or_falser<   r;  )	r¥   rÛ  r:  r  Úold_sizerò   Úv1Úv2Údiffs	   &&       rœ   Ú_normalize_sizeÚExpandView._normalize_size  s“  € ô —7‘7×#Ñ#ˆÙ-5Ó6©X¨”E—L’L –O©XˆÐ6Ø—:‘:“<ˆØ�6œS ›]¬S°«]Õ:Õ;¼dÀ8»nÕLˆÜˆx‹=œC ›MÔ)Ü Ð!JÓKÐKÜ”s˜8“}×%ˆAØ�{˜bÔ Ø•;Ò&Ü(Ð)KÓLÐLØ&�k�“Ø•Ò$¬¯©×(8Ñ(8×(MÑ(MØ•÷)ò )ñ Ü.Ø÷ô ä/°×9Ô9ð •[�Ø•[�Ø’:Ü(Ð)BÓCÐCØ’:Ü(Ð)BÓCÐCØ•w�à×.Ñ.ØØ!"ð /ó ð ö	ô )Ø9¸!¿*¹*»,¸ÀrÈ(ÈÐSbÐcdÐbeÐfóð ñ? &ðD ˆùòO 7s   ŸG
c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r¥   r¡   rÛ  ry  r¦   r¸  r“   )r§   s   "rœ   r¨   rÜ  D  s"   € ÷ 1ñ 1�vð 1Ð);ð 1Àñ 1r›   c                	óÌ  € V P                  W4      p\        V4      '       Ed7   \        V4      w  r4\        V4      \        VP                  4      ,
          pV^ 8  d   \        R4      h\        P                  P                  .V,          p\        VP                  VP                  4       F_  w  rxTP                  \        P                  P                  P                  V4      '       g   TM\        P                  P                  4       Ka  	  \!        VP"                  VP$                  \'        V4      VVP(                  VP*                  4      p	\-        W9R7      # \/        WR7      # )r   zExpected skip >= 0r�  )r‘  r5  )rå  r=  r“  rð   r5  rÓ   rÌ   rò  ró  r÷   r6  r@  r{   r9  r:  rà  r•  r8  r7  rÅ   r–  r—  r˜  rÉ   )
rê  r¥   rÛ  r™  rš  Úskipr›  r6  r5  r�  s
   &&&       rœ   rê  ÚExpandView.createC  s  € à×&Ñ& qÓ3ˆä  ×#Ó#Ü"7¸Ó":ÑˆGÜ�x“=¤3 z§¡Ó#7Õ7ˆDØ�aŒxÜ$Ð%9Ó:Ð:ÜŸ'™'Ÿ,™,˜¨$Õ.ˆJÜ # J×$5Ñ$5°z·±Ö G‘�Ø×!Ñ!äŸ7™7×+Ñ+×@Ñ@À×FÒFñ äŸ™Ÿ™öñ !Hô %Ø×!Ñ!Ø× Ñ Ü�X“ØØ×!Ñ!Ø×$Ñ$óˆJô #¨ÔCÐCä˜qÔ0Ð0r›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   rÜ  _  rÎ  r›   c                	ó   € V P                   # rª   rÐ  rë  s   &rœ   r<  ÚExpandView.get_size_  rÒ  r›   c               ó   € V ^8„  d   QhRR/# rp  r“   )r§   s   "rœ   r¨   rÜ  b  s   € ÷ ñ à	3ñr›   c                	ó¨   aa€ V P                  4       pV P                  P                  4       o\        V4      \        S4      ,
          oR  VV3R llpV# )c               ó    € V ^8„  d   QhRRRR/# ©r¤   rë   r/  r¦   r“   )r§   s   "rœ   r¨   Ú/ExpandView.make_reindexer.<locals>.__annotate__i  s   € ÷ 
	ñ 
	Ø!ð
	àñ
	r›   c                óú   <€ \        V SR  4      p \        V 4      \        S4      8w  d   \        R4      h\        \        S4      4       F/  pSV,          ^8X  g   K  \        P
                  P                  W&   K1  	  V # )Nz"Expected len(index) == len(actual))rÅ   rð   rÓ   rñ   rÌ   rò  ró  )rë   rò   Úactualré  s   & €€rœ   rô   Ú*ExpandView.make_reindexer.<locals>.reindexi  se   ø€ ô ˜˜t˜u˜Ó&ˆEÜ�5‹zœS ›[Ô(Ü$Ð%IÓJÐJÜœ3˜v›;Ö'�Ø˜!•9 –>ä$Ÿw™wŸ|™|�E“Hñ (ð ˆLr›   )r<  r‘  rð   )rì  Útargetrô   rô  ré  s   &  @@rœ   rs  ÚExpandView.make_reindexerb  sE   ù€ ð —‘“ˆØ—‘×#Ñ#Ó%ˆÜ�6‹{œS ›[Õ(ˆ÷
	ñ 
	ð ˆr›   r“   N)r•   r–   r—   r˜   r™   rV  rå  r:  rê  r<  rs  rš   r“   r›   rœ   rÉ   rÉ     s>   ‡ à
Óàô*ó ð*ðX ô1ó ð1õ6÷ñ r›   rÉ   c                  ór   € ] tR tRt$ R]R&   ]R R l4       t]R R l4       tR R	 ltR
 R lt	R R lt
RtR# )ÚPermuteViewix  r°  Údimsc               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r¥   r¡   rú  rç   r¦   r¸  r“   )r§   s   "rœ   r¨   ÚPermuteView.__annotate__}  s!   € ÷ .ñ .�vð . ]ð .°xñ .r›   c           
     	ó   € V P                  V4      p\        V4      \        \        \        V4      4      4      8w  d   \	        R 4      h\        V4      '       d’   \        V4      w  r4\        VP                  VP                  V Uu. uF  qTP                  V,          NK  	  upV Uu. uF  qTP                  V,          NK  	  upVP                  VP                  4      p\        W6R7      # \        WR7      # u upi u upi )z9Expected OrderedSet(dims) == OrderedSet(range(len(dims)))r�  )r‘  rú  )Ú_map_neg_dimsrD   rñ   rð   rÓ   r=  r“  r•  r8  r7  r5  r6  r–  r—  r˜  rù  )rê  r¥   rú  r™  rš  rò   r�  s   &&&    rœ   rê  ÚPermuteView.create|  sß   € à× Ñ  Ó&ˆÜ�dÓœz¬%´°D³	Ó*:Ó;Ô;Ü ØKóð ô ! ×#Ò#Ü"7¸Ó":ÑˆGÜ$Ø×!Ñ!Ø× Ñ Ù-1Ó2©T¨—‘ ×#Ð#©TÑ2Ù/3Ó4©t¨!×"Ñ" 1×%Ð%©tÑ4Ø×!Ñ!Ø×$Ñ$óˆJô #¨ÔCÐCä Ô-Ð-ùò 3ùÚ4s   ÂC6Â&C;c               ó    € V ^8„  d   QhRRRR/# )r¤   rú  rç   r¦   ú	list[int]r“   )r§   s   "rœ   r¨   rü  “  s   € ÷ Fñ F ð F°9ñ Fr›   c                	ó`   € V Uu. uF  q"^ 8¼  d   TM\        V4      V,           NK  	  up# u upi rŽ  )rð   )rê  rú  r€  s   && rœ   rþ  ÚPermuteView._map_neg_dims’  s+   € á@DÓEÁ¸˜a”x‘¤S¨£Y°¥_Ò4ÁÑEÐEùÒEs   …#+c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   rü  –  s   € ÷ ,ñ ,˜.ñ ,r›   c                	ó6  € \        V P                  V P                  4      4      \        \        \	        V P                  4      4      4      8w  d   \        R 4      hV P                  P                  4       pV P                   Uu. uF  q!V,          NK  	  up# u upi )zYExpected OrderedSet(self._map_neg_dims(self.dims)) == OrderedSet( range(len(self.dims)) ))rD   rþ  rú  rñ   rð   rÓ   r‘  r<  )rì  r5  rò   s   &  rœ   r<  ÚPermuteView.get_size–  s{   € Ü�d×(Ñ(¨¯©Ó3Ó4¼
Ü”#�d—i‘i“.Ó!ó9
ô 
ô !Økóð ð �y‰y×!Ñ!Ó#ˆØ!%§¢Ó+¡˜A�Q—�¡Ñ+Ð+ùÒ+ó   ÂBc               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   rü     s   € ÷ .ñ .˜Nñ .r›   c                	ó6  € \        V P                  V P                  4      4      \        \        \	        V P                  4      4      4      8X  g   \        R 4      hV P                  P                  4       pV P                   Uu. uF  q!V,          NK  	  up# u upi )z.dims must be a permutation of range(len(dims)))rD   rþ  rú  rñ   rð   rÓ   r‘  rn  )rì  r6  rò   s   &  rœ   rn  ÚPermuteView.get_stride   ss   € ä�t×)Ñ)¨$¯)©)Ó4Ó5Üœ%¤ D§I¡I£Ó/Ó0ô1ô !Ð!QÓRÐRØ—‘×%Ñ%Ó'ˆØ#'§9¢9Ó-¡9˜a�q—	�	¡9Ñ-Ð-ùÒ-r  c               ó   € V ^8„  d   QhRR/# rp  r“   )r§   s   "rœ   r¨   rü  ©  s   € ÷ ñ à	3ñr›   c                	ól  a€ \        V P                  4       UUu/ uF  w  rW!bK	  	  uppo\        \        V P                  4      4       Uu. uF  pSV,          NK  	  upo\	        S4      \	        \        \        V P                  4      4      4      8w  d   \        R 4      hR V3R llpV# u uppi u upi )z=Expected OrderedSet(inv) == OrderedSet(range(len(self.dims)))c               ó    € V ^8„  d   QhRRRR/# rñ  r“   )r§   s   "rœ   r¨   Ú0PermuteView.make_reindexer.<locals>.__annotate__³  s   € ÷ 	+ñ 	+Ø!ð	+àñ	+r›   c                ó>   <€ S Uu. uF  qV,          NK  	  up# u upi rª   r“   )rë   rò   Úinvs   & €rœ   rô   Ú+PermuteView.make_reindexer.<locals>.reindex³  s!   ø€ ñ '*Ó*¡c ˜!—H�H¡cÑ*Ð*ùÒ*s   †)r  rú  rñ   rð   rD   rÓ   )rì  rò   rB  rô   r  s   &   @rœ   rs  ÚPermuteView.make_reindexer©  s˜   ø€ ô !*¨$¯)©)Ô 4Ô5Ñ 4™˜ˆqŠtÑ 4Ò5ˆÜ$¤S¨¯©£^Ô4Ó5Ñ4˜!ˆs�1�vˆvÑ4Ñ5ˆÜ�c‹?œj¬¬s°4·9±9«~Ó)>Ó?Ô?Ü ØOóð ÷	+ð 	+ð
 ˆùó 6ùÚ5s   šB+ÁB1r“   N)r•   r–   r—   r˜   r™   r:  rê  rþ  r<  rn  rs  rš   r“   r›   rœ   rù  rù  x  sD   ‡ à
Óàô.ó ð.ð* ôFó ðFõ,õ.÷ñ r›   rù  c                  óV   € ] tR tRt]RR/R R ll4       t]R R l4       tR R	 ltR
t	R# )ÚSqueezeViewi»  r€  Nc               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r¥   r¡   r€  rÉ  r¦   r“   )r§   s   "rœ   r¨   ÚSqueezeView.__annotate__¾  s&   € ÷ 1Wñ 1W�vð 1W zð 1W¸Vñ 1Wr›   c          	     	óà  € \        V4      '       Edz   \        V4      w  r4. p. pVeW   \        V\        4      '       g   \	        \        V4      4      h^ V8:  d   V\        VP                  4      8  g   \	        R4      h\        \        VP                  VP                  4      4       F�  w  pw  r‰VfV   \        P                  P                  P                  V4      '       g%   VP                  V4       VP                  V	4       K_  Ka  Wr8w  d%   VP                  V4       VP                  V	4       K‹  V^8w  g   K”  \	        R4      h	  \!        VP"                  VP$                  VVVP&                  VP(                  4      p
\+        W:R7      # Vff   \,        P/                  TVP1                  4        Uu. uF6  p\        P                  P                  P                  V4      '       d   K4  VNK8  	  up4      # VP1                  4       V,          ^8w  d   \	        R4      h\,        P/                  T\        VP1                  4       4       UUu. uF  w  r{Wr8w  g   K  VNK  	  upp4      # u upi u uppi )Nz0Expected 0 <= dim and dim < len(old_layout.size)zexpected squeezed size to be 1r�  zExpected x.get_size()[dim] == 1)r=  r“  r«   r¬   rÓ   r�   rð   r5  r  r÷   r6  r{   r9  r:  rà  r@  r•  r8  r7  r–  r—  r˜  râ  rê  r<  )rê  r¥   r€  r™  rš  rÛ  r›  rò   r5  r6  r�  r  s   &&$         rœ   rê  ÚSqueezeView.create½  s  € ä  ×#Ó#Ü"7¸Ó":ÑˆGØˆHØˆJØŠÜ! #¤s×+Ò+Ü(¬¨c«Ó3Ð3Ø˜Sœ S¬3¨z¯©Ó+?Ô%?Ü(ØJóð ô &/¬s°:·?±?ÀJ×DUÑDUÓ/VÖ%WÑ!�‘>�DØ’;äŸ7™7×+Ñ+×@Ñ@À×FÒFØ Ÿ™¨Ô-Ø"×)Ñ)¨&Ö1ñ Gð ”xØ Ÿ™¨Ô-Ø"×)Ñ)¨&Ö1à 1ž9Ü"0Ð1QÓ"RÐRñ &Xô %Ø×!Ñ!Ø× Ñ ØØØ×!Ñ!Ø×$Ñ$óˆJô #¨ÔCÐCàŠ;Ü—;‘;Øð ŸZ™Zœ\óá)˜ÜŸ7™7×+Ñ+×@Ñ@À×C÷ �AÙ)ñóð ð �z‰z‹|˜CÕ  AÔ%Ü$Ð%FÓGÐGÜ—;‘;˜q´¸1¿:¹:»<Ô1HÔ"UÑ1H©¨ÈAÉH§1 1Ñ1HÒ"UÓVÐVùòùó #Vs   Æ21I%
Ç(I%
É
I*ÉI*c               ó    € V ^8„  d   QhRRRR/# )r¤   r5  r/  r¦   z>tuple[list[int], Callable[[Sequence[Expr]], tuple[Expr, ...]]]r“   )r§   s   "rœ   r¨   r  ò  s   € ÷ !ñ !Øð!à	Gñ!r›   c                	óÎ   aa€ V  Uu. uF  q^8w  g   K  VNK  	  pp\        V 4       UUu. uF  w  r1V^8w  g   K  VNK  	  uppo\        V 4      oR VV3R llpW$3# u upi u uppi )rñ  c               ó    € V ^8„  d   QhRRRR/# )r¤   rë   r/  r¦   ztuple[Expr, ...]r“   )r§   s   "rœ   r¨   Ú*SqueezeView.squeezer.<locals>.__annotate__ù  s   € ÷ 	$ñ 	$˜>ð 	$Ð.>ñ 	$r›   c                óâ   <€ \        V 4      \        S4      8w  d   \        V  R S 24      h\        P                  P                  .S,          p\        SV 4       F	  w  r#W1V&   K  	  \        V4      # )Ú )rð   rÓ   rÌ   rò  ró  r÷   rÆ   )rë   rÜ  r  r  ÚlengthÚnot_ones   &   €€rœ   rô   Ú%SqueezeView.squeezer.<locals>.reindexù  sb   ø€ Ü�5‹zœS ›\Ô)Ü$¨ w¨a°¨yÐ%9Ó:Ð:Ü%*§W¡W§\¡\ N°VÕ$;ˆIÜ˜g uÖ-‘�Ø!"˜#“ñ .ä˜Ó#Ð#r›   )r  rð   )r5  r  rÛ  rò   rô   r  r   s   &    @@rœ   ÚsqueezerÚSqueezeView.squeezerñ  sg   ù€ ñ  $Ó.™t˜!¨A¡v—A�A™tˆÐ.Ü!*¨4¤Ô;¡™˜°A¸±F—1�1¡Ò;ˆÜ�T“ˆ÷	$ñ 	$ð Ð Ð ùò /ùÛ;s   ‡A”AªA!ºA!c               ó    € V ^8„  d   QhRRRR/# )r¤   r‘  r   r¦   r¿   r“   )r§   s   "rœ   r¨   r    s   € ÷ 9ñ 9˜Sð 9 Tñ 9r›   c                	ó   € \        R 4      h)zuse SqueezeView.create())rÓ   )rì  r‘  s   &&rœ   r/  ÚSqueezeView.__init__  s   € ÜÐ7Ó8Ð8r›   r“   )
r•   r–   r—   r˜   r:  rê  rV  r"  r/  rš   r“   r›   rœ   r  r  »  s=   † àð1W°Dö 1Wó ð1Wðf ô!ó ð!÷"9ñ 9r›   r  c                  óv   € ] tR tRt$ R]R&   R]R&   R R ltR R	 ltR
 R lt]t]	R R l4       t
R R ltRtR# )ÚGenericViewi  r/  r5  rq  rô   c               ó   € V ^8„  d   QhRR/# rp  r“   )r§   s   "rœ   r¨   ÚGenericView.__annotate__  s   € ÷ ñ à	3ñr›   c                	ó   € V P                   # rª   )rô   rë  s   &rœ   rs  ÚGenericView.make_reindexer  s   € ð �|‰|Ðr›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   r*    s   € ÷ Gñ G˜Sñ Gr›   c                	ó  € \        \        V P                  4      4       Uu. uF  p\        \        P
                  V4      NK  	  pp\        V P                  V4      4      pR RP                  \        \        V4      4       RV 2# u upi )zlambda rß  rQ  )rñ   rð   r5  rt   rL   r;  rÅ   rô   rL  rJ  r�   )rì  rô  Ú	index_oldÚ	index_news   &   rœ   Úreindex_strÚGenericView.reindex_str  sv   € äCHÌÈTÏYÉYËÔCXó
ÙCX¸aÔ*¬4¯:©:°qÖ9ÑCXð 	ð 
ô ˜Ÿ™ iÓ0Ó1ˆ	Ø˜Ÿ™¤3¤s¨IÓ#6Ó7Ð8¸¸9¸+ÐFÐFùò	
s   ¡#Bc               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   r*    s   € ÷ 
ñ 
˜ñ 
r›   c                	óz   € V P                  V P                  R V P                   2RV P                  4        2.4      # )úsize=zreindex=)rN  r‘  r5  r1  rë  s   &rœ   rÓ  ÚGenericView.__str__  s=   € Ø�‰Ø�Y‰Y˜% §	¡	˜{Ð+¨x¸×8HÑ8HÓ8JÐ7KÐ-LÐMó
ð 	
r›   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r¤   r¥   r¡   rÛ  r/  rô   rq  r¦   r¸  r“   )r§   s   "rœ   r¨   r*     s8   € ÷ Añ AàðAð !ðAð <ð	Að
 
ñAr›   c                	ó*   € V ! V\        V4      VR 7      # )©r‘  r5  rô   )rÅ   )rê  r¥   rÛ  rô   s   &&&&rœ   rê  ÚGenericView.create  s   € ñ ˜¤ X£¸Ô@Ð@r›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   r*  (  rÎ  r›   c                	ó   € V P                   # rª   rÐ  rë  s   &rœ   r<  ÚGenericView.get_size(  rÒ  r›   r“   N)r•   r–   r—   r˜   r™   rs  r1  rÓ  r9  r:  rê  r<  rš   r“   r›   rœ   r(  r(    sC   ‡ à
ÓØ7Ó7õõ
Gõ
ð
 €HàôAó ðA÷ñ r›   r(  c                  óš   € ] tR tRtRt]R R l4       t]]R R l4       4       t	]R R l4       t
]RR
 R ll4       t]RR R ll4       tRtR	# )râ  i,  zŽ
This class handles tensor reshaping by computing appropriate index transformations
to map the new shape back to the original storage layout.
c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r  r"   r5  r¦   r“   )r§   s   "rœ   r¨   ÚView.__annotate__4  s!   € ÷ ñ  4ð ¨tð ¸ñ r›   c                	ó  € \         P                  ! V 4      p \         P                  ! V4      p\        P                  P                  P
                  P                  pV! \         P                  ! V ^ 4      4      '       d	   W,           p V # rŽ  )rÌ   rU  r{   r9  r:  r  rš  ÚLt)r  r5  rš  s   && rœ   Úhandle_negative_indexÚView.handle_negative_index3  s[   € ä�lŠl˜3ÓˆÜ�|Š|˜DÓ!ˆÜŸ™×(Ñ(×2Ñ2×@Ñ@ˆÙœŸš # qÓ)×*Ò*Ø•*ˆCØˆ
r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r¥   r¡   rÛ  r/  r¦   r“   )r§   s   "rœ   r¨   r@  >  s&   € ÷ o5ñ o5�vð o5¨ð o5¸Fñ o5r›   c                	ó  a aaa€ \        S\        4      '       g   \        \        S4      4      hS P	                  VP                  4       S4      w  oo\        P                  P                  P                  SS4      '       d   V# \        \        S4      4      ^ 8„  ;'       g    \        \        S4      4      ^ 8„  p\        V4      pR R loR V VVV3R llp^ S9   d   R V3R llpS ! V\        S4      VR7      # V'       d   S! VS\        P                  S4      4      # \!        V4      '       g	   V! V4      # \#        VRR	7      w  rxVP$                  p	\        P                  P                  P'                  S4      p
\        P                  P                  P'                  V	4      p\        P                  P                  P'                  S4      p^ R
IHp V! V
VVVR7      pVe“   V Uu. uFA  p\-        VR4      '       d   VP.                  P0                  M\2        P4                  ! V4      NKC  	  pp\7        VP8                  VP:                  SVVP<                  VP>                  4      p\A        VVR7      # V! V4      # u upi )r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   rµ  r¡   rÛ  r/  r›  r¦   r˜  r“   )r§   s   "rœ   r¨   Ú!View.create.<locals>.__annotate__M  s2   € ÷ 	Dñ 	DØð	DØ#1ð	DØ?Mð	Dàñ	Dr›   c                ó  € \         P                  V \        P                  V P	                  4       4      4      p \        V 4      w  r4\        VP                  VP                  VVVP                  VP                  4      p\        W5R 7      # )r�  )r+  Úrequire_exact_stridesr?  r@  r<  r“  r•  r8  r7  r–  r—  r˜  )rµ  rÛ  r›  r™  rš  r�  s   &&&   rœ   Úcreate_reinterpret_viewÚ,View.create.<locals>.create_reinterpret_viewM  sz   € ô ×4Ñ4Ø”^×6Ñ6°s·|±|³~ÓFóˆCô #8¸Ó"<ÑˆGÜ$Ø×!Ñ!Ø× Ñ ØØØ×!Ñ!Ø×$Ñ$óˆJô #¨ÔCÐCr›   c               ó    € V ^8„  d   QhRRRR/# ©r¤   r¥   r¡   r¦   r“   )r§   s   "rœ   r¨   rH  ^  s   € ÷ 	ñ 	Øð	àñ	r›   c                óØ   <€  SP                  SS4      pS! V \        S4      VR7      #   \         d6    \        P	                  T 4      p S! T S\
        P                  S4      4      u # i ; i)zÞ
Handle the case where view is not possible with current strides.
Try dynamic_reshape_indexer first; if it fails with unbacked
symbols (guard_or_false can't resolve comparisons), fall back
to making the tensor contiguous.
r9  )rã  rÅ   r;   r+  Úrequire_contiguousr?  r@  )r¥   rô   rê  rK  rÛ  rá  s   & €€€€rœ   Ú"handle_unbacked_or_dynamic_reshapeÚ7View.create.<locals>.handle_unbacked_or_dynamic_reshape^  sm   ø€ ð
Ø×5Ñ5°hÀÓI�Ù ¬¨X«ÀÔHÐHøÜ.ô ô !×3Ñ3°AÓ6�Ù.Ø�x¤×!BÑ!BÀ8Ó!Lóò ðús   ƒ%) ©=A)Á(A)c               ó    € V ^8„  d   QhRRRR/# )r¤   rë   r   r¦   ztuple[int, ...]r“   )r§   s   "rœ   r¨   rH  v  s   € ÷ 2ñ 2 Cð 2¨Oñ 2r›   c                ó<   <€ \        ^ .\        S4      ,          4      # rŽ  )rÆ   rð   )rë   rá  s   &€rœ   Úfake_reindexÚ!View.create.<locals>.fake_reindexv  s   ø€ Ü˜a˜S¤3 x£=Õ0Ó1Ð1r›   r9  FrH  )Ú_compute_stride)Úsize_obliviousrÔ   r�  )!r«   r   rÓ   r�   Úresolve_negative_sizer<  r{   r9  r:  Ústatically_known_list_equalsrð   r:   rV  rÅ   r?  r@  r=  r“  r6  Úto_symints_or_intsÚtorch._subclasses.fake_implsrW  r,  rÔ   ÚexprrÌ   r#   r•  r8  r7  r–  r—  r˜  )rê  r¥   rÛ  Úunbacked_symbols_in_sizesrO  rQ  rU  r™  rš  Ú
old_strideÚold_size_symintÚold_stride_symintÚnew_size_symintrW  Únew_stride_symintr  r›  r�  rK  rá  s   f&f               @@rœ   rê  ÚView.create<  sE  û€ ô ˜(¤H×-Ò-Ü ¤ h£Ó0Ð0Ø ×6Ñ6°q·z±z³|ÀXÓNÑˆ�(ô �7‰7×Ñ×8Ñ8¸À8×LÒLØˆHô Ô% hÓ/Ó0°1Ñ4÷ 8ð 8ÜÔ(¨Ó2Ó3°aÑ7ð 	"ô ?¸qÓAˆõ	D÷"	ó 	ð, �Œ=÷2ð 2ñ ˜A¤D¨£N¸LÔIÐI÷ á*Ø�8œ^×>Ñ>¸xÓHóð ô
 % Q×'Ò'á5°aÓ8Ð8ô 4°A¸eÔDÑˆà×&Ñ&ˆ
ô Ÿ'™'×*Ñ*×=Ñ=¸hÓGˆÜŸG™G×,Ñ,×?Ñ?À
ÓKÐÜŸ'™'×*Ñ*×=Ñ=¸hÓGˆå@ñ ,ØØØØ4ô	
Ðð Ò(ñ +óá*�Aô  ' q¨&×1Ò1�—‘—’´u·}²}ÀQÓ7GÒGÙ*ð ð ô
 %Ø×!Ñ!Ø× Ñ ØØØ×!Ñ!Ø×$Ñ$óˆJô #¨¸
ÔCÐCñ 2°!Ó4Ð4ùò!s   Ç)AI?c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rá  r/  rÛ  r¦   ztuple[list[Expr], list[Expr]]r“   )r§   s   "rœ   r¨   r@  °  s$   € ÷ "ñ "Ø ð"Ø,:ð"à	&ñ"r›   c                	óV  € V Uu. uF,  p\         P                  P                  P                  V4      NK.  	  ppV  Uu. uF,  p\         P                  P                  P                  V4      NK.  	  p p\	        V4      p\        \        V4      4       FN  pW,          R8X  g   K  \        P                  P                  W&   \        \        V 4      \        V4      4      W&    M	  \         P                  P                  P                  \        V 4      \        V4      4       W3# u upi u upi )rñ  rl  )r{   r9  r:  r–  rÅ   rñ   rð   rÌ   rò  ÚOnerF   ru   Úcheck_equals)rá  rÛ  r¥   rò   s   &&  rœ   rY  ÚView.resolve_negative_size¯  sß   € ñ ;CÓC¹(°Q”A—G‘G×$Ñ$×-Ñ-¨aÖ0¹(ˆÐCÙ:BÓC¹(°Q”A—G‘G×$Ñ$×-Ñ-¨aÖ0¹(ˆÐCä˜“>ˆÜ”s˜8“}Ö%ˆAØ�{˜bÖ Ü#Ÿg™gŸk™k�‘Ü&¤}°XÓ'>ÄÈhÓ@WÓX�‘Ùñ	 &ô 	
�‰×Ñ×%Ñ%¤m°HÓ&=¼}ÈXÓ?VÔWØÐ!Ð!ùò DùÚCs
   …2D!½2D&Nc               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   rá  ry  rÛ  Ú	dense_dimrÉ  r¦   r  r“   )r§   s   "rœ   r¨   r@  Á  s2   € ÷ ñ à$ðð %ðð ð	ð
 
0ñr›   c                	óØ   €  V P                  WV4      pV#   \        \        \        3 d>    \	        T4      .pT P                  Y4      pT P                  YR4      p\        Yg4      p T# i ; irª   )Ú_dynamic_reshape_indexerrÓ   r;   Ú
IndexErrorru   r	  )rê  rá  rÛ  rk  rô   Úflatr  r  s   &&&&    rœ   rã  ÚView.dynamic_reshape_indexerÀ  su   € ð	:Ø×2Ñ2°8ÀyÓQˆGð ˆøô Ô ;¼ZÐHô 	:ä! (Ó+Ð,ˆDØ×3Ñ3°HÓCˆHØ×3Ñ3°DÓCˆHÜ% hÓ9‰GØˆð	:ús   ‚ –AA)Á(A)c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   rá  r/  rÛ  rk  rÉ  r¦   rq  r“   )r§   s   "rœ   r¨   r@  Ò  s6   € ÷ }ñ }Ø ð}à ð}ð ð}ð 
4ñ	}r›   c                ót  aaa€ \         P                  P                  P                  oR V3R llp\	        \        V4      4       Uu. uF  p\        \        P                  V4      NK  	  upo\        \        SV4      4      p\        V 4      pVRJ;'       d,    V\        V4      ^,
          8g  ;'       d    \        V4      ^8H  pV'       d2   Vf   \        R4      hVP                  V4      pVP                  V4       . oV'       Edô   V'       Edë   VP                  4       p	VP                  4       w  r«V	^8X  d>   SP                  \        P                  P                   4       VP                  W«34       Kx  V^8X  d   VP                  V	4       K’  V! W¹4      ^ 8X  d   SP                  V
4       K²  V! W¹4      ^ 8  dv   V! W¹4      ^ 8  d,   VP                  4       w  rÍWË,          V
,           p
W½,          pK8  SP                  V
4       \         P                  P                  P#                  W¹4       EK4  V! W¹4      ^ 8”  d¶   \        P                  P$                  pT	pSP                  \'        W®V4      4       Wï,          pV! W¹4      ^ 8”  d>   VP                  4       pSP                  \'        W®V4      4       Wï,          pWŸ,          p	KJ  \         P                  P                  P#                  W¹4       EKö  \        hV'       df   VP                  4       p	\         P                  P                  P#                  V	^4       SP                  \        P                  P                   4       Km  V'       d?   VP                  4       w  r«\         P                  P                  P#                  V^4       KF  VeD   \        V4      ^8X  d4   SP)                  4        SP                  4       pSP+                  VV4       MSP)                  4        \        S4      \        V 4      8w  d   \        R4      hR VV3R llpV# u upi )z7
Perform a reshape entirely by modifying indexing math
c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rŠ  r"   r‹  r¦   r¬   r“   )r§   s   "rœ   r¨   Ú3View._dynamic_reshape_indexer.<locals>.__annotate__Ü  s!   € ÷  	>ñ  	>˜Tð  	> dð  	>¨sñ  	>r›   c                óÞ  <€ S! \         P                  ! W4      4      '       d   ^ # S! \         P                  ! W4      4      '       d   R# S! \         P                  ! W4      4      '       d   ^# \        P
                  P                  P                  W4      '       d   R# \        P
                  P                  P                  W4      '       d   ^# \        \         P                  ! W4      4      h)zª
Compare two symbolic sizes, returning -1 if a < b, 0 if a == b, 1 if a > b.

For unbacked symbols, guard_or_false returns False, so we fall back
to divisibility checks.
rl  )	rÌ   rj  rB  r›  r{   r9  r:  rf  r;   )rŠ  r‹  rr  s   &&€rœ   Úcompare_sizesÚ4View._dynamic_reshape_indexer.<locals>.compare_sizesÜ  sœ   ø€ ñ œeŸhšh q›n×-Ò-ÙÙœeŸhšh q›n×-Ò-Ø�	ÙœeŸhšh q›n×-Ò-Ùô �w‰w×Ñ×<Ñ<¸Q×BÒBØ�	Ü�w‰w×Ñ×<Ñ<¸Q×BÒBÙä-¬e¯hªh°q«nÓ=Ð=r›   NzExpected dense_dim is not Nonez(Expected len(view_expr) == len(old_size)c               ó    € V ^8„  d   QhRRRR/# rñ  r“   )r§   s   "rœ   r¨   rt  G  s    € ÷ 	Iñ 	IØ!ð	Iàñ	Ir›   c                ó  <a€ \        V 4      \        S4      8w  d    \        \        V 4      \        S4      34      h\        \        SV 4      4      o\        ;QJ d    . V3R  lS 4       F  NK  	  5# ! V3R  lS 4       4      # )c              3  ó<   <"  € T F  p\        VS4      x € K  	  R # 5irª   )rv   )r  r¥   Úreplacementss   & €rœ   r  ÚAView._dynamic_reshape_indexer.<locals>.reindex.<locals>.<genexpr>M  s   øé € ÐH¹i¸œ A |×4Ð4»iùrÀ  )rð   rÓ   rÇ   r÷   rÆ   )rë   r{  rX  Ú	view_exprs   &@€€rœ   rô   Ú.View._dynamic_reshape_indexer.<locals>.reindexG  s`   ù€ ô �5‹zœS ›YÔ&Ü$¤c¨%£j´#°d³)Ð%<Ó=Ð=Ü¤ D¨%Ó 0Ó1ˆLß”5ÔH¹iÓH—5ÐH�5ÔH¹iÓHÓHÐHr›   )r{   r9  r:  rr  rñ   rð   rt   rL   ÚVIEWrÅ   r÷   rÓ   ré  r@  rÌ   rò  ró  rh  rg  rK   ÚreverseÚinsert)rá  rÛ  rk  rv  rò   Ú	stack_newÚ	stack_oldÚreordering_dense_dimÚold_dimÚsize_oldr  Úsize_newÚvar2Ú	size_new2ÚdivisorÚmodulusÚ
dense_exprrô   rr  rX  r}  s   &&&               @@@rœ   rm  ÚView._dynamic_reshape_indexerÑ  sC  ú€ ô Ÿ™×)Ñ)×8Ñ8ˆ÷ 	>ð  	>ôJ CHÌÈHËÔBVó
ÙBV¸QÔ*¬4¯9©9°aÖ8ÑBVñ
ˆô œ˜T 8Ó,Ó-ˆ	Ü˜“Nˆ	ð ˜TÐ!÷ #ð #ØœS ›^¨aÕ/Ñ/÷#ð #ä�H“ Ñ"ð 	÷
  ØÒ Ü$Ð%EÓFÐFØ—m‘m IÓ.ˆGØ×Ñ˜WÔ%àˆ	ßˆiŸI˜IØ —}‘}“ˆHØ%ŸM™M›O‰MˆCØ˜1Œ}Ø× Ñ ¤§¡§¡Ô.Ø× Ñ  # Ö1Ø˜Q”Ø× Ñ  Ö*Ù˜xÓ2°aÔ7Ø× Ñ  Ö%Ù˜xÓ2°QÔ6Ù# HÓ7¸!Ô;Ø&/§m¡m£o‘O�DØ�/¨CÕ/�CØ'Õ3’HØ× Ñ  Ô%Ü—‘× Ñ ×-Ñ-¨h×AÙ˜xÓ2°QÔ6ÜŸ'™'Ÿ+™+�Ø"�Ø× Ñ ¤°¸wÓ!GÔHØ!Õ+�Ù# HÓ7¸!Ô;Ø'Ÿm™m›o�GØ×$Ñ$¤_°SÀ7Ó%KÔLØ%Õ/�GØ'Õ1’HÜ—‘× Ñ ×-Ñ-¨h×Aä$Ð$çØ —}‘}“ˆHÜ�G‰G×Ñ×)Ñ)¨(°AÔ6Ø×ÑœUŸW™WŸ\™\Ö*çØ%ŸM™M›O‰MˆCÜ�G‰G×Ñ×)Ñ)¨(°AÖ6àÒ ¤S¨£]°aÔ%7Ø×ÑÔà"Ÿ™›ˆJØ×Ñ˜Y¨
Õ3à×ÑÔäˆy‹>œS ›]Ô*Ü Ð!KÓLÐL÷	Iñ 	Ið ˆùò_
s   Á#P5r“   rª   )r•   r–   r—   r˜   rS  rV  rC  r:  r   rê  rY  rã  rm  rš   r“   r›   rœ   râ  râ  ,  sx   † ñð
 ôó ðð Øôo5ó ó ðo5ðb ô"ó ð"ð  öó ðð  ö}ó ô}r›   râ  c                  ó  a € ] tR tRt$ RtR]R&   R V 3R lltR R lt]tR	 R
 lt	R R lt
R R lt]R R l4       tR R ltR R ltR R ltR R ltR R ltR R lt]! R 4      R$R R ll4       tR%R R  lltR! R" ltR#tV ;t# )&r˜  iR  z*Pretend our storage has a different layoutr_  r’  c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   ÚReinterpretView.__annotate__X  s   € ÷ Fñ F˜tñ Fr›   c                	óÆ   <€ \         SV `  4        \        V P                  \        4      '       d2   \
        P                  V R V P                  P                  4       4       R# R# )r‘  N)rÍ  rú  r«   r‘  r¸  r‘   rò  r¹  rº  s   &€rœ   rú  ÚReinterpretView.__post_init__X  sC   ø€ Ü‰ÑÔÜ�d—i‘i¤×*Ò*Ü×Ñ˜t V¨T¯Y©Y×-BÑ-BÓ-DÖEñ +r›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   r�  ]  s   € ÷ 
ñ 
˜ñ 
r›   c                	óP   € V P                  V P                  V P                  .4      # rª   )rN  r‘  r’  rë  s   &rœ   rÓ  ÚReinterpretView.__str__]  s&   € Ø�‰à—	‘	Ø—‘ðó
ð 	
r›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   r�  g  r™  r›   c                	ó6   € V P                   P                  4       # rª   r›  rë  s   &rœ   r¼  ÚReinterpretView.get_nameg  r�  r›   c               ó   € V ^8„  d   QhRR/# r   r“   )r§   s   "rœ   r¨   r�  j  rc  r›   c                	ó.   € V P                   P                  # rª   )r’  r8  rë  s   &rœ   rB  ÚReinterpretView.get_devicej  s   € Ø�{‰{×!Ñ!Ð!r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   r�  m  r•  r›   c                	ó   € R # rª   r“   rë  s   &rœ   r  ÚReinterpretView.get_origin_nodem  r  r›   c               ó   € V ^8„  d   QhRR/# rQ  r“   )r§   s   "rœ   r¨   r�  q  ó   € ÷ !ñ !�{ñ !r›   c                	ó.   € V P                   P                  # rª   )r’  r7  rë  s   &rœ   r7  ÚReinterpretView.dtypep  s   € à�{‰{× Ñ Ð r›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   r�  t  s   € ÷ &ñ &˜.ñ &r›   c                	ó@   € \        V P                  P                  4      # rª   )rÅ   r’  r5  rë  s   &rœ   r<  ÚReinterpretView.get_sizet  s   € Ü�D—K‘K×$Ñ$Ó%Ð%r›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   r�  w  s   € ÷ (ñ (˜Nñ (r›   c                	ó@   € \        V P                  P                  4      # rª   )rÅ   r’  r6  rë  s   &rœ   rn  ÚReinterpretView.get_stridew  s   € Ü�D—K‘K×&Ñ&Ó'Ð'r›   c               ó   € V ^8„  d   QhRR/# r³  r“   )r§   s   "rœ   r¨   r�  z  ó   € ÷ 	ñ 	ÐAñ 	r›   c                	ó   a € R  V 3R llpV# )c               ó    € V ^8„  d   QhRRRR/# r<  r“   )r§   s   "rœ   r¨   Ú1ReinterpretView.make_loader.<locals>.__annotate__{  s   € ÷ 	"ñ 	"˜.ð 	"¨Xñ 	"r›   c                ó\  <€ SP                   P                  4       p\        P                  ! SP	                  4       V! V 4      4      pSP                   P
                  SP                  P
                  8w  d7   \        P                  ! VSP
                  SP                  P
                  4      # V# rª   )r’  r¾  ry   Úloadr¼  r7  r‘  Úto_dtype_bitcast)rë   rV  Ú
tmp_loaderrì  s   &  €rœ   r^  Ú+ReinterpretView.make_loader.<locals>.loader{  sp   ø€ Ø—k‘k×.Ñ.Ó0ˆGÜŸš $§-¡-£/±7¸5³>ÓBˆJØ�{‰{× Ñ  D§I¡I§O¡OÔ3Ü×+Ò+¨J¸¿
¹
ÀDÇIÁIÇOÁOÓTÐTà!Ð!r›   r“   ©rì  r^  s   f rœ   r·  ÚReinterpretView.make_loaderz  s   ø€ ÷	"ð 	"ð ˆr›   c               ó   € V ^8„  d   QhRR/# r»  r“   )r§   s   "rœ   r¨   r�  …  ó   € ÷ *ñ *Ð>ñ *r›   c                	ó6   € V P                   P                  4       # rª   )r’  r¾  rë  s   &rœ   r¾  ÚReinterpretView.make_indexer…  ó   € Ø�{‰{×'Ñ'Ó)Ð)r›   c               ó   € V ^8„  d   QhRR/# r^  r“   )r§   s   "rœ   r¨   r�  ˆ  ó   € ÷ ñ ˜Fñ r›   c                	ó   € V P                   # rª   ©r’  rë  s   &rœ   r>  ÚReinterpretView.get_layoutˆ  rÛ  r›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   r�  ‹  ó   € ÷ ñ ˜tñ r›   c                	ó   € R # rª   r“   rë  s   &rœ   rì  ÚReinterpretView.freeze_layout‹  ræ  r›   c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   r�  �  ó   € ÷ 
ñ 
Ø!ð
à	!ñ
r›   c                	óÖ   € \        V P                  P                  V4      \        V P                  P                  V4      ,          \        V P                  P                  V4      ,          # rª   )r+   r’  r5  r6  r–  r&  s   &&rœ   r'  Ú$ReinterpretView.get_free_symbol_usesŽ  sQ   € ô
 ˜TŸ[™[×-Ñ-¨}Ó=Ü˜tŸ{™{×1Ñ1°=ÓAõBä˜tŸ{™{×1Ñ1°=ÓAõBð	
r›   c               ó    € V ^8„  d   QhRRRR/# r™  r“   )r§   s   "rœ   r¨   r�  ˜  s   € ÷ 
ñ 
Ð(=ð 
Èñ 
r›   c           	     	óx  € \         P                  P                  P                  V P                  V P
                  P                  V P
                  P                  V P
                  P                  Ve   VP                  M#\         P                  P                  P                  V P
                  P                  R7      # )NrT  )r{   r9  Úwrapper_codeÚcodegen_reinterpret_viewr‘  r’  r5  r6  r–  Ú	writeliner7  rœ  s   &&rœ   r�  Ú!ReinterpretView.codegen_reference˜  s�   € ô �w‰w×#Ñ#×<Ñ<Ø�I‰IØ�K‰K×ÑØ�K‰K×ÑØ�K‰K×ÑØ &Ò 2ˆF×Ò¼¿¹×8LÑ8L×8VÑ8VØ—+‘+×#Ñ#ð =ó 
ð 	
r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   r�  ¥  ó   € ÷ ñ ˜3ñ r›   c                	ó   € ^# rð  r“   rë  s   &rœ   r  ÚReinterpretView.num_reads¥  ó   € Ùr›   r“   r®  rª   )r•   r–   r—   r˜   rS  r™   rú  rÓ  r9  r¼  rB  r  rY  r7  r<  rn  r·  r¾  r>  rì  re   r'  r�  r  rš   r  r  s   @rœ   r˜  r˜  R  s�   ø‡ á4àƒN÷Fð Fõ

ð €Hõ$õ"õð ô!ó ð!õ&õ(õ	õ*õõñ Ð-Ó.ö
ó /ð
÷
÷ó r›   r˜  c                  ó†   € ] tR tRt$ RtR]R&   ]R R l4       tR R lt]t	]
R	 R
 l4       tR R ltR R ltR R ltRtR# )Ú	DtypeViewi©  z(Pretend our storage has a different typerR  Útarget_dtypec               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r¥   r¡   Ú	new_dtyperR  r¦   r¸  r“   )r§   s   "rœ   r¨   ÚDtypeView.__annotate__°  s!   € ÷ 9ñ 9�vð 9¨+ð 9¸(ñ 9r›   c                	óò   € \        V4      '       d\   \        V4      w  r4\        VP                  VVP                  VP
                  VP                  VP                  4      p\        W5R 7      # \        WR7      # )r�  )r‘  rÔ  )
r=  r“  r•  r8  r5  r6  r–  r—  r˜  rÓ  )rê  r¥   rÖ  r™  rš  r�  s   &&&   rœ   rê  ÚDtypeView.create¯  sj   € ä  ×#Ò#Ü"7¸Ó":ÑˆGÜ$Ø×!Ñ!ØØ—‘Ø×!Ñ!Ø×!Ñ!Ø×$Ñ$óˆJô #¨ÔCÐCÜ˜aÔ8Ð8r›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   r×  ¾  s   € ÷ ?ñ ?˜ñ ?r›   c                	óP   € V P                  V P                  V P                  .4      # rª   )rN  r‘  rÔ  rë  s   &rœ   rÓ  ÚDtypeView.__str__¾  s    € Ø�‰ §	¡	¨4×+<Ñ+<Ð=Ó>Ð>r›   c               ó   € V ^8„  d   QhRR/# rQ  r“   )r§   s   "rœ   r¨   r×  Ä  r   r›   c                	ó   € V P                   # rª   )rÔ  rë  s   &rœ   r7  ÚDtypeView.dtypeÃ  s   € à× Ñ Ð r›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   r×  Ç  ó   € ÷ $ñ $˜.ñ $r›   c                	ó6   € V P                   P                  4       # rª   ©r‘  r<  rë  s   &rœ   r<  ÚDtypeView.get_sizeÇ  r�  r›   c               ó   € V ^8„  d   QhRR/# rp  r“   )r§   s   "rœ   r¨   r×  Ê  s   € ÷ ñ Ð Jñ r›   c                	ó   € R  R lpV# )c               ó    € V ^8„  d   QhRRRR/# rñ  r“   )r§   s   "rœ   r¨   Ú.DtypeView.make_reindexer.<locals>.__annotate__Ë  s   € ÷ 	ñ 	˜>ð 	¨nñ 	r›   c                ó   € V # rª   r“   rB  s   &rœ   rô   Ú)DtypeView.make_reindexer.<locals>.reindexË  s   € ØˆLr›   r“   )rì  rô   s   & rœ   rs  ÚDtypeView.make_reindexerÊ  s   € õ	ð ˆr›   c               ó   € V ^8„  d   QhRR/# r³  r“   )r§   s   "rœ   r¨   r×  Ð  s   € ÷ ñ ÐAñ r›   c                	óR   a a€ S P                   P                  4       oR  VV 3R llpV# )c               ó    € V ^8„  d   QhRRRR/# r~  r“   )r§   s   "rœ   r¨   Ú+DtypeView.make_loader.<locals>.__annotate__Ó  s   € ÷ 	Xñ 	X˜ð 	X¨8ñ 	Xr›   c                ó|   <€ \         P                  ! S! V 4      SP                  SP                  P                  4      # rª   )ry   r°  rÔ  r‘  r7  )r  r{  rì  s   &€€rœ   r^  Ú%DtypeView.make_loader.<locals>.loaderÓ  s*   ø€ Ü×'Ò'©¨c«
°D×4EÑ4EÀtÇyÁyÇÁÓWÐWr›   ©r‘  r·  )rì  r^  r{  s   f @rœ   r·  ÚDtypeView.make_loaderÐ  s(   ù€ Ø—	‘	×%Ñ%Ó'ˆ÷	Xñ 	Xð ˆr›   r“   N)r•   r–   r—   r˜   rS  r™   r:  rê  rÓ  r9  rY  r7  r<  rs  r·  rš   r“   r›   rœ   rÓ  rÓ  ©  sO   ‡ á2àÓàô9ó ð9õ?ð €Hàô!ó ð!õ$õ÷ñ r›   rÓ  c                  ó`   € ] tR tRtRt]R R l4       t]R R l4       t]RR R ll4       tR	t	R
# )Ú	SliceViewiÙ  ziView that represents a slice along a single dimension.

Corresponds to tensor[..., start:end:step, ...].
c               ó0   € V ^8„  d   QhRRRRRRRRRRR	R/# )
r¤   r¥   r¡   r€  r¬   Ústartr"   r5  Ústepr¦   r“   )r§   s   "rœ   r¨   ÚSliceView.__annotate__à  sF   € ÷ ;ñ ;àð;ð ð;ð ð	;ð
 ð;ð ð;ð 
ñ;r›   c                	ót   aaaa€ \        VP                  4       4      oVSS&   R  VVVV3R llpV ! VSVR7      # )c               ó    € V ^8„  d   QhRRRR/# rñ  r“   )r§   s   "rœ   r¨   Ú0SliceView.create_with_size.<locals>.__annotate__ë  s   € ÷ 	ñ 	Ø!ð	àñ	r›   c                ó¦   <€ \        V 4      \        S4      8w  d   \        R V  RS 24      h\        V 4      p V S,          S,          S,           V S&   V # )zwrong ndim r  )rð   rÓ   rÅ   )rë   r€  rÛ  r÷  rø  s   &€€€€rœ   rô   Ú+SliceView.create_with_size.<locals>.reindexë  sR   ø€ ô �5‹zœS ›]Ô*Ü$ {°5°'¸¸8¸*Ð%EÓFÐFÜ˜“KˆEØ˜s� dÕ*¨UÕ2ˆE�#‰JØˆLr›   r9  )rÅ   r<  )rê  r¥   r€  r÷  r5  rø  rô   rÛ  s   &&ff&f @rœ   Úcreate_with_sizeÚSliceView.create_with_sizeß  s9   û€ ô ˜Ÿ
™
›Ó%ˆØˆ�‰÷	ó 	ñ ˜ °'Ô:Ð:r›   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r¤   r¥   r¡   r€  r¬   r÷  Úendr¦   ztuple[int, int]r“   )r§   s   "rœ   r¨   rù  ÷  s4   € ÷ /ñ /Øð/Ø ð/Ø),ð/Ø36ð/à	ñ/r›   c                ó(  a aaaa	a
€ \         P                  P                  o
VP                  4       V,          o\        ;QJ d    R W4S3 4       F  '       g   K   RM	  RM! R W4S3 4       4      '       d   \
        o	\        oMc\        ;QJ d    R W4S3 4       F  '       g   K   RM	  RM! R W4S3 4       4      '       d   \
        o	\        oMS
P                  o	S
P                  oR VV	V
3R lloR VV V3R llpV! V^ S^ 4      pV! WCSS4      pW43# )	zb
Normalize start and end such that both are in the range
[0, x.get_size()[dim]] and start <= end.
c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5irª   )r:   ©r  r¥   s   & rœ   r  Ú0SliceView.normalize_start_end.<locals>.<genexpr>  s   é € ÐHÑ1G¨AÔ$ Q×'Ð'Ó1Gùr  TFc              3  óÂ   "  € T FU  p\        V\        4      '       g   K  VP                  \        P                  \        P
                  \        \
        4      x € KW  	  R # 5irª   )r«   r"   ÚhasrÌ   rI   rH   r	  s   & rœ   r  r	    s?   é € ð 
ñ ,�Ü˜!œT×"ô 2ˆA�E‰E”%—)‘)œUŸY™Y¬¬S×1Ð1Û+ùs   ‚AŸA Ac               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   r¥   r"   Úlowerr¬   Úupperr¦   r“   )r§   s   "rœ   r¨   Ú3SliceView.normalize_start_end.<locals>.__annotate__  s(   € ÷ 		 ñ 		 �Tð 		  #ð 		 ¨cð 		 °dñ 		 r›   c                ó�   <€ SP                  W4      '       d   T MS! W4      pSP                  W24      '       d   TpV# S! W24      pV# rª   )Ústatically_known_geqr„  )r¥   r
	  r	  Úclamped_lowerÚclamped_fullÚmax_funcÚmin_funcr:  s   &&&  €€€rœ   ÚclampÚ,SliceView.normalize_start_end.<locals>.clamp  s^   ø€ à×2Ñ2°1×<Ò<‘Á(È1ÓBTð ð
 ×0Ñ0°×FÒFð ð ð
  Ðñ ˜mÓ3ð ð
  Ðr›   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r¤   rf  rÉ  r
	  r¬   r	  r|  ú
Expr | intr¦   r“   )r§   s   "rœ   r¨   r	    s4   € ÷ 	,ñ 	,Øð	,Ø$'ð	,Ø03ð	,Ø>Hð	,àñ	,r›   c                óF   <€ V f   V# SP                  V S4      p S! WV4      # rª   )rC  )rf  r
	  r	  r|  r	  rê  Údim_sizes   &&&&€€€rœ   Ú
clamp_wrapÚ1SliceView.normalize_start_end.<locals>.clamp_wrap  s.   ø€ ð Š{à�Ø×+Ñ+¨C°Ó:ˆCÙ˜ UÓ+Ð+r›   )	r{   r9  r:  r<  rƒ  rI   rH   Úevaluate_minÚevaluate_max)rê  r¥   r€  r÷  r	  r	  r	  r	  r	  r	  r:  s   f&&&& @@@@@rœ   Únormalize_start_endÚSliceView.normalize_start_endö  sô   ý€ ô —7‘7×#Ñ#ˆØ—:‘:“< Õ$ˆç‹3ÑH°%¸hÑ1GÓH�3�3Š3ÑH°%¸hÑ1GÓH×HÒHÜˆHÜ‰Hß‹Sñ 
ð  (Ñ+ó
�S�SŠSñ 
ð  (Ñ+ó
÷ 
ò 
ô ˆHÜ‰Hà×,Ñ,ˆHØ×,Ñ,ˆH÷		 ò 		 ÷	,ò 	,ñ ˜5 ! X¨qÓ1ˆÙ˜ X¨xÓ8ˆØˆzÐr›   c               ó4   € V ^8„  d   QhRRRRRRRRRRRR	R
R/# )r¤   r¥   r¡   r€  r¬   r÷  r	  rø  r	  r¸   r¦   r“   )r§   s   "rœ   r¨   rù  )  sY   € ÷ ,Hñ ,Hàð,Hð ð,Hð ð	,Hð
 ð,Hð ð,Hð ð,Hð 
ñ,Hr›   c           	     	ó  € \         P                  ! V4      p\        V\        4      '       g   V^ 8”  g   \	        V4      h V^ 8X  d   VR8¼  d
   V^8X  d   V# \        TP                  4       4      pT'       d   T P                  YY44      w  r4\        YC,
          T^,
          ,           T4      Yr&   \        T4      '       d—   \        T4      w  r‰\        T	P                  4      p
Y¢,          T,          Y¢&   \        T	P                  T	P                  TT
T	P                   T	P                  T,          T,          ,           T	P"                  4      p\%        Y‹R7      # T P'                  YY7T,          T4      #   \
         d     EL&i ; i)r   r�  l   ÿÿÿÿ )rÌ   rU  r«   r"   rÓ   Ú	TypeErrorrÅ   r<  r	  rG   r=  r“  r6  r•  r8  r7  r–  r—  r˜  rÿ  )rê  r¥   r€  r÷  r	  rø  r	  rÛ  r™  rš  r›  r�  s   &&&&&&&     rœ   rê  ÚSliceView.create(  sM  € ô �|Š|˜DÓ!ˆÜ˜4¤×&Ò&¨$°¬(Ü  Ó&Ð&ð	Ø˜Œz˜c YÔ.°4¸1´9Ø�ô ˜Ÿ
™
›Ó%ˆ÷
 Ø×0Ñ0°¸ÓD‰JˆEä  ¥°°qµÕ!9¸4Ó@ˆ‰ä  ×#Ò#ä"7¸Ó":ÑˆGÜ˜j×/Ñ/Ó0ˆJØ(�o°Õ4ˆJ‰OÜ$Ø×!Ñ!Ø× Ñ ØØØ×!Ñ! J×$5Ñ$5°cÕ$:¸UÕ$BÕBØ×$Ñ$óˆJô #¨ÔCÐCð ×#Ñ# A¨E¸Cµ=À$ÓGÐGøô; ô 	Úð	ús   Á E/ Å/E>Å=E>r“   N)rñ  T)
r•   r–   r—   r˜   rS  r:  rÿ  r	  rê  rš   r“   r›   rœ   rõ  rõ  Ù  sF   † ñð
 ô;ó ð;ð, ô/ó ð/ðb ö,Hó ô,Hr›   rõ  c                  ó\   € ] tR tRt$ R]R&   R]R&   R R ltR R	 ltR
 R ltR R ltRt	R# )ÚBaseConstantiX  rR  r7  r¦  r8  c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   ÚBaseConstant.__annotate__]  s   € ÷ ñ ˜.ñ r›   c                	ó   € R# ©Nr“   r“   rë  s   &rœ   r<  ÚBaseConstant.get_size]  rO  r›   c               ó   € V ^8„  d   QhRR/# r   r“   )r§   s   "rœ   r¨   r&	  `  r×  r›   c                	ó   € V P                   # rª   rÙ  rë  s   &rœ   rB  ÚBaseConstant.get_device`  rÛ  r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   r&	  c  r•  r›   c                	ó   € R # rª   r“   rë  s   &rœ   r  ÚBaseConstant.get_origin_nodec  r  r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   r&	  f  ó   € ÷ ñ ˜?ñ r›   c                	ó   € \        4       # rª   rC   rë  s   &rœ   r	  ÚBaseConstant.get_readsf  r¬  r›   r“   N)
r•   r–   r—   r˜   r™   r<  rB  r  r	  rš   r“   r›   rœ   r$	  r$	  X  s'   ‡ àÓØÓõõõ÷ñ r›   r$	  c                  óZ   € ] tR tRt$ R]R&   R]R&   R]R&   R R	 ltR
 R ltR R ltRtR# )ÚConstantij  r   rJ  rR  r7  r¦  r8  c               ó   € V ^8„  d   QhRR/# r³  r“   )r§   s   "rœ   r¨   ÚConstant.__annotate__p  ó   € ÷ ñ ÐAñ r›   c                	ó   a € R  V 3R llpV# )c               ó    € V ^8„  d   QhRRRR/# r<  r“   )r§   s   "rœ   r¨   Ú*Constant.make_loader.<locals>.__annotate__q  s   € ÷ 	8ñ 	8˜.ð 	8¨Xñ 	8r›   c                óZ   <€ \         P                  ! SP                  SP                  4      # rª   )ry   r@  rJ  r7  ©rë   rì  s   &€rœ   r^  Ú$Constant.make_loader.<locals>.loaderq  s   ø€ Ü—<’< §
¡
¨D¯J©JÓ7Ð7r›   r“   r³  s   f rœ   r·  ÚConstant.make_loaderp  s   ø€ ÷	8ð 	8ð ˆr›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   r7	  v  ó   € ÷ ñ ˜ñ r›   c                	ó   € R # rª   r“   rë  s   &rœ   r–  ÚConstant.realizev  ræ  r›   c               ó    € V ^8„  d   QhRRRR/# r>  r“   )r§   s   "rœ   r¨   r7	  y  s   € ÷ Kñ K¨ð K¸&ñ Kr›   c                	óF   € \        V P                  V P                  VR 7      # ))rJ  r7  r8  )r5	  rJ  r7  r©  s   &&rœ   r@  ÚConstant.constant_to_devicey  s   € Ü˜dŸj™j°·
±
À6ÔJÐJr›   r“   N)	r•   r–   r—   r˜   r™   r·  r–  r@  rš   r“   r›   rœ   r5	  r5	  j  s)   ‡ àƒJØÓØÓõõ÷Kñ Kr›   r5	  c                  óN   € ] tR tRt$ R]R&   R]R&   R]R&   R R	 ltR
 R ltRtR# )ÚIndexingConstanti}  r   rë   rR  r7  r¦  r8  c               ó   € V ^8„  d   QhRR/# r³  r“   )r§   s   "rœ   r¨   ÚIndexingConstant.__annotate__ƒ  r8	  r›   c                	ó   a € R  V 3R llpV# )c               ó    € V ^8„  d   QhRRRR/# r<  r“   )r§   s   "rœ   r¨   Ú2IndexingConstant.make_loader.<locals>.__annotate__„  s   € ÷ 	:ñ 	:˜.ð 	:¨Xñ 	:r›   c                óZ   <€ \         P                  ! SP                  SP                  4      # rª   )ry   rV  rë   r7  r=	  s   &€rœ   r^  Ú,IndexingConstant.make_loader.<locals>.loader„  s   ø€ Ü—>’> $§*¡*¨d¯j©jÓ9Ð9r›   r“   r³  s   f rœ   r·  ÚIndexingConstant.make_loaderƒ  s   ø€ ÷	:ð 	:ð ˆr›   c               ó    € V ^8„  d   QhRRRR/# r>  r“   )r§   s   "rœ   r¨   rJ	  ‰  s   € ÷ Sñ S¨ð S¸&ñ Sr›   c                	óF   € \        V P                  V P                  VR 7      # ))rë   r7  r8  )rH	  rë   r7  r©  s   &&rœ   r@  Ú#IndexingConstant.constant_to_device‰  s   € Ü d§j¡j¸¿
¹
È6ÔRÐRr›   r“   N)r•   r–   r—   r˜   r™   r·  r@  rš   r“   r›   rœ   rH	  rH	  }  s$   ‡ àƒJØÓØÓõ÷Sñ Sr›   rH	  c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r6  ry  r{  r¦   r¸   r“   )r§   s   "rœ   r¨   r¨   �  s$   € ÷ ñ ØðØ'9ðà	ñr›   c                ód  € ^p^p\        \        \        W4      4      4       FŠ  w  rEV^8X  d   K  \        P                  P
                  P                  WR4      '       g3   \        P                  P
                  P                  WS4      '       g    R# V\        ^V4      ,          pW$,          pKŒ  	  R# ©rñ  FT)ÚreversedrÆ   r÷   r{   r9  r:  r  rH   )r6  r{  Úexpected_strideÚexpected_stride_maxr¥   Úys   &&    rœ   Úis_contiguous_strides_for_shaper[	  �  s�   € ð €OØÐÜœœs 5Ó1Ó2Ö3‰ˆØ�Œ6Ùä�w‰w×Ñ×7Ñ7Ø÷
ò 
ä—'‘'×"Ñ"×:Ñ:¸1×RÒRÚàœs 1 a›yÕ(ÐØÕŠñ 4ñ r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   r7  rR  r¦   r¬   r“   )r§   s   "rœ   r¨   r¨   ¡  s   € ÷ <ñ <˜{ð <¨sñ <r›   c                óD   € \         P                  V P                  ,          # rª   )rM   Úpadding_alignment_bytesr™  rT  s   &rœ   Úget_align_for_dtyper_	  ¡  s   € Ü×)Ñ)¨U¯^©^Õ;Ð;r›   c                  óB   € ] tR tRtRtR R ltR R ltRR R lltR	tR
# )rS  i¥  ztAbstract base for Layout, MultiOutputLayout, NoneLayout.
Represents the memory layout of the output of an Operation.c               ó   € V ^8„  d   QhRR/# r   r“   )r§   s   "rœ   r¨   ÚOutputSpec.__annotate__©  s   € ÷ 7ñ 7Ð/ñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  rë  s   &rœ   rB  ÚOutputSpec.get_device©  r¹  r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   rb	  ¬  s   € ÷ 7ñ 7˜cñ 7r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  rë  s   &rœ   rU  ÚOutputSpec.storage_size¬  r¹  r›   c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   rb	  ¯  r$  r›   c                	ó>   € \        \        V 4      P                  4      hrª   r¶  r&  s   &&rœ   r'  ÚOutputSpec.get_free_symbol_uses¯  rõ  r›   r“   Nr®  )	r•   r–   r—   r˜   rS  rB  rU  r'  rš   r“   r›   rœ   rS  rS  ¥  s   † ñCõ7õ7÷7ó 7r›   rS  c                  ó  € ] tR tRtRtR]! ^ 4      R3R R llt]R R l4       t]P                  R	 R
 l4       t]R R l4       t
]
P                  R R l4       t
]R R l4       t]P                  R R l4       tR R lt]tR R ltR R ltR R lt]R R l4       tR R lt]R R  l4       tR! R" ltR# R$ lt]R% R& l4       tR' R( ltR) R* ltR+ R, ltR- R. ltR/ R0 ltR1 R2 lt]! R 4      R6R3 R4 ll4       tR5t R# )7r_  iµ  z_
Layout base class

Carries tensor meta-information including offset and
whether it is pinned.
NFc               ó4   € V ^8„  d   QhRRRRRRRRR	R
RRRR/# )r¤   r8  r¦  r7  rR  r5  ry  r6  zSequence[Expr] | Noner–  r"   r—  r¸   r¦   r¿   r“   )r§   s   "rœ   r¨   ÚLayout.__annotate__¾  sY   € ÷ Cñ CàðCð ðCð !ð	Cð
 &ðCð ðCð ðCð 
ñCr›   c                	óÒ  € Vf   \         P                  V4      pWn        W n        \	        V4      \	        V4      8w  d   \        RV RV 24      h\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   \        R4      hW0n        W@n        WPn	        W`n
        V P                  '       d)   V P                  P                  R8X  g   \        R4      hR # R # )	Nr5  ú	, stride=c              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5irª   )r«   rˆ   r  s   & rœ   r  Ú"Layout.__init__.<locals>.<genexpr>Î  s   é € Ð9±D¨q”:˜a¤×*Ð*³Dùó   ‚FTz3Expected all(isinstance(s, _IntLike) for s in size)rX  zOnly CPU tensors can be pinned)r?  r@  r8  r7  rð   rÓ   r  Ú_sizeÚ_strideÚ_offsetr—  r�   )rì  r8  r7  r5  r6  r–  r—  s   &&&&&&&rœ   r/  ÚLayout.__init__¾  sº   € ð Š>Ü#×6Ñ6°tÓ<ˆFàŒØŒ
Üˆt‹9œ˜F›Ô#Ü  5¨¨¨i¸°xÐ!@ÓAÐAß‹sÑ9±DÓ9�s�sŠsÑ9±DÓ9×9Ò9Ü Ð!VÓWÐWØŒ
ØŒØŒØ"Œà—^—^�^¨¯©×)9Ñ)9¸UÔ)BÜ Ð!AÓBÐBñ *C‘^r›   c               ó   € V ^8„  d   QhRR/# rx  r“   )r§   s   "rœ   r¨   rm	  Ù  s   € ÷ ñ Ð(ñ r›   c                	ó   € V P                   # rª   ©rs	  rë  s   &rœ   r5  ÚLayout.sizeØ  ó   € à�z‰zÐr›   c               ó    € V ^8„  d   QhRRRR/# )r¤   rJ  ry  r¦   r¿   r“   )r§   s   "rœ   r¨   rm	  Ý  s   € ÷ ñ Ð,ð °ñ r›   c                	ó   € Wn         R # rª   ry	  ©rì  rJ  s   &&rœ   r5  rz	  Ü  s   € àŽ
r›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   rm	  á  ó   € ÷ ñ ˜ñ r›   c                	ó   € V P                   # rª   ©rt	  rë  s   &rœ   r6  ÚLayout.strideà  ó   € à�|‰|Ðr›   c               ó    € V ^8„  d   QhRRRR/# ©r¤   rJ  r/  r¦   r¿   r“   )r§   s   "rœ   r¨   rm	  å  s   € ÷ ñ ˜Nð ¨tñ r›   c                	ó   € Wn         R # rª   r‚	  r~	  s   &&rœ   r6  rƒ	  ä  ó   € àŽr›   c               ó   € V ^8„  d   QhRR/# r‡  r“   )r§   s   "rœ   r¨   rm	  é  ó   € ÷ ñ ˜ñ r›   c                	ó   € V P                   # rª   ©ru	  rë  s   &rœ   r–  ÚLayout.offsetè  r„	  r›   c               ó    € V ^8„  d   QhRRRR/# ©r¤   rJ  r"   r¦   r¿   r“   )r§   s   "rœ   r¨   rm	  í  s   € ÷ ñ ˜Dð  Tñ r›   c                	ó   € Wn         R # rª   rŒ	  r~	  s   &&rœ   r–  r�	  ì  rˆ	  r›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   rm	  ð  s   € ÷ 
ñ 
˜ñ 
r›   c                	óª  € R pV P                   ^ 8w  d   RV P                    2pV P                  P                  f   R MRV P                  P                   2pR pV P                  '       d   RV P                   2p\	        V 4      P
                   RV P                  P                   V RV P                   RV P                   RV P                   V V R2# )	r<  z	, offset=Ú:z, is_pinned=z('z', z, size=ro	  rR  )	r–  r8  rë   r—  r�   r•   r7  r5  r6  )rì  r–  Údevice_index_strÚis_pinned_strs   &   rœ   rÓ  ÚLayout.__str__ð  sÊ   € ØˆØ�;‰;˜!ÔØ  §¡ Ð.ˆFà!%§¡×!2Ñ!2Ò!:™2À!ÀDÇKÁK×DUÑDUÐCVÐ@WÐØˆØ�>�>ˆ>Ø*¨4¯>©>Ð*:Ð;ˆMä�D‹z×"Ñ"Ð# 2 d§k¡k×&6Ñ&6Ð%7Ð8HÐ7IÈÈTÏZÉZÈLð YØ—I‘I�;˜i¨¯© }°V°H¸]¸OÈ1ðNð	
r›   c               ó   € V ^8„  d   QhRR/# r¥  r“   )r§   s   "rœ   r¨   rm	     s   € ÷ ñ ˜Lñ r›   c                	ó   € V P                   # rª   rÙ  rë  s   &rœ   rB  ÚLayout.get_device   rÛ  r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   r0  r“   )r§   s   "rœ   r¨   rm	    s   € ÷ ñ ˜\ñ r›   c           
     	ó.  € \         P                  ;_uu_ 4        \        P                  ! \	        V P
                  4      \	        V P                  4      V P                  V P                  V P                  R 7      uuRRR4       #   + '       g   i     R# ; i))r7  r8  Ú
pin_memoryN)
r{   Ú	fake_moderD  rE  rh   r5  r6  r7  r8  r—  rë  s   &rœ   Úget_exampleÚLayout.get_example  sR   € Ü�[�[‹[Ü×&Ò&Ü'¨¯	©	Ó2Ü'¨¯©Ó4Ø—j‘jØ—{‘{ØŸ>™>ô÷ �[�[‹[ús   ™ABÂB	c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rm	    s   € ÷ Gñ G˜tñ Gr›   c                	óB   € \        V P                  V P                  4      # rª   )r[	  r6  r5  rë  s   &rœ   rO  ÚLayout.is_contiguous  s   € Ü.¨t¯{©{¸D¿I¹IÓFÐFr›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r{  ry  rŠ  r¦   r¸   r“   )r§   s   "rœ   r¨   rm	    s$   € ÷ ñ Ø!ðØ,>ðà	ñr›   c                	ó®   € \        V 4      pVR9  g   V ^,          ^8X  d   R# \        V\        V 4      V 4       F  w  r4pV^8w  g   K  W48w  g   K   R# 	  R# )é   FT)r¥	  é   )rð   r÷   r5   )r{  rŠ  ÚndimÚleftÚrightr5  s   &&    rœ   Úis_channels_last_contiguousÚ"Layout.is_channels_last_contiguous  sY   € ô �5‹zˆØ�vÔ  q¥¨Q¤ÙÜ!$àä*¨5Ó1Øö"
ÑˆD˜ð �qŽy˜Tž]Úñ"
ñ r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rm	  "  s   € ÷ ñ ˜tñ r›   c                	óð   € \        V P                  \        \        P	                  \        \        V P                  4      4      4      4      V P                  4       F  w  rpV^8w  g   K  W8w  g   K   R# 	  R# rV	  )r÷   r6  rW	  r?  r@  rÅ   r5  )rì  r¨	  r©	  r5  s   &   rœ   Úis_transposedÚLayout.is_transposed"  sZ   € Ü!$Ø�K‰KÜ”^×6Ñ6´t¼HÀTÇYÁYÓ<OÓ7PÓQÓRØ�I‰Iö"
ÑˆD˜ð
 �qŽy˜Tž]Úñ"
ñ r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r¨	  rˆ   r©	  r¦   r¸   r“   )r§   s   "rœ   r¨   rm	  -  s!   € ÷ 
ñ 
 xð 
¸ð 
ÀTñ 
r›   c                óØ  € \         P                  P                  pVP                  \        P
                  ! V^ 4      4      '       d   R# VP                  \        P
                  ! V ^ 4      4      '       d   R# VP                  \        P                  ! W4      4      ;'       gI    VP                  W4      ;'       g0    VP                  \        P
                  ! \        W4      ^ 4      4      # )zt
Returns true if left is symbolically greater than or equal to right,
assuming both expressions are tensor strides.
TF)	r{   r9  r:  rr  rÌ   rj  ÚGerf  rJ   )r¨	  r©	  r:  s   && rœ   Ú_stride_expr_ge_or_falseÚLayout._stride_expr_ge_or_false,  s³   € ô —7‘7×#Ñ#ˆØ×"Ñ"¤5§8¢8¨E°1Ó#5×6Ò6ÙØ×"Ñ"¤5§8¢8¨D°!Ó#4×5Ò5Ùð ×#Ñ#¤E§H¢H¨TÓ$9Ó:÷ Fð FØ×4Ñ4°TÓA÷Fð Fà×&Ñ&¤u§x¢x´°DÓ0@À!Ó'DÓEð	
r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   ræ   rç   r¦   r¸   r“   )r§   s   "rœ   r¨   rm	  ?  s   € ÷ #ñ # }ð #¸ñ #r›   c                	ó¤  € \        V P                  4      \        V4      8w  d   \        R 4      h\        V P                  4       UUu. uF9  w  r#\
        P                  P                  P                  V^4      '       d   K7  VNK;  	  pppV Uu. uF  q P                  V,          NK  	  ppV Uu. uF  q!V,          NK  	  ppR R lpV! V4      pR.\        V4      ,          p\        \        V4      4       F  pWR,          WqV,          &   K  	  \        \        V4      ^,
          4       F“  pWr,          pWr^,           ,          p	\
        P                  P                  P                  \        P                  ! W‰4      4      '       d   K_  V P                  W‰4      '       d    R# V P                  W˜4      '       d   K’   R# 	  R# u uppi u upi u upi )z'Expected len(self.stride) == len(order)c               ó    € V ^8„  d   QhRRRR/# )r¤   Úarrrç   r¦   r“   )r§   s   "rœ   r¨   Ú.Layout.is_stride_ordered.<locals>.__annotate__M  s   € ÷ 	Bñ 	B ð 	B°-ñ 	Br›   c                ób   € \        V 4      pV  Uu. uF  q!P                  V4      NK  	  up# u upi rª   )r  rë   )r¸	  Ú
sorted_arrÚelements   &  rœ   Úsorted_indicesÚ0Layout.is_stride_ordered.<locals>.sorted_indicesM  s,   € Ü ›ˆJÙ=@ÓA¹S°'×$Ñ$ WÖ-¹SÑAÐAùÒAs   �,FTrl  )rð   r6  rÓ   r  r5  r{   r9  r:  r  rñ   rr  rÌ   rj  r³	  )
rì  ræ   rò   r€  Únon_1_indicesr6  r½	  Ústride_orderedr¨	  r©	  s
   &&        rœ   ra  ÚLayout.is_stride_ordered?  su  € Üˆt�{‰{Óœs 5›zÔ)Ü Ð!JÓKÐKô
 $ D§I¡IÔ.ô
á.‘�Ü—7‘7×#Ñ#×;Ñ;¸CÀ×C÷ ˆAÙ.ð 	ñ 
ñ +8Ó8©- Q—+‘+˜a—.�.©-ˆÐ8Ù2?Ó@±-¨Q a§ ±-ˆÐ@õ	Bñ
 ˜uÓ%ˆð ˜¤ E£
Õ*ˆÜ”s˜5“zÖ"ˆAØ'-¥yˆN �8Ó$ñ #ô ”s˜5“z A•~Ö&ˆAØ!Õ$ˆDØ" q¥5Õ)ˆEÜ�w‰w×Ñ×.Ñ.¬u¯xªx¸Ó/D×EÒEÙØ×,Ñ,¨T×9Ò9ÚØ×0Ñ0°×=Ô=Úñ 'ñ ùó=
ùò 9ùÚ@s   Á4GÂ GÂGÂ.Gc               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rm	  d  s   € ÷ -ñ -°ñ -r›   c                	óÊ   € ^ .\        \        \        ^\        V P                  4      ^,
          4      4      4      ,           p\        V4      .V,           pV P                  V4      # rŽ  )rÅ   rW	  rñ   rð   r6  ra  rù  s   & rœ   Úis_channels_last_stride_orderedÚ&Layout.is_channels_last_stride_orderedd  sN   € à�”dœ8¤E¨!¬S°·±Ó-=ÀÕ-AÓ$BÓCÓDÕDˆÜ�U“�˜uÕ$ˆØ×%Ñ% eÓ,Ð,r›   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   Ú
in_stridesrç   r5  r/  r7  rR  r¦   r“   )r§   s   "rœ   r¨   rm	  k  s2   € ÷ Lñ LØ!ðLØ)7ðLØ@KðLà	ñLr›   c                ó  aa€ \        V4      p\        V 4      ^ 8X  d   V # \        P                  '       g   \        P                  W4      '       d   V # \        P                  ! 4       p\        VR4      '       d%   VP                  P                  RR4      '       d   V # \        ;QJ d0    R \        P                  ! W4       4       F  '       d   K   RM%	  RM!! R \        P                  ! W4       4       4      '       * p\        P                  '       g   V'       d   V # \        \        P                  R4      '       d   \        P                  P                   MRoR V3R	 lloS'       dC   \"        ;QJ d    V3R
 lV  4       F  '       g   K   RM	  RM! V3R
 lV  4       4      '       d   V # \%        V S4      p\'        V4      p\)        \        V 4      4       Uu. uF  p^ NK  	  p	p^W—^ ,          &   Rp
\+        VR,          ^R7       FË  w  r¼W{^,
          ,          pW�,          W,          ,          p\-        V\.        \0        P2                  34      ;'       d/    V\        P4                  8„  ;'       d    Wã,          ^ 8g  ;'       g)    \-        V\6        4      ;'       d    \        P                  pWéV&   V'       g   Kµ  \9        Wã4      V,          Wœ&   Rp
KÍ  	  V
'       g   V # \:        ;P<                  ^,          un        V	# u upi )zv
The padding does not change stride order but makes sure all strides larger
than the threshold are multiple of align.
r©  Údislike_paddingFc              3  ób   "  € T F%  p\        V\        \        P                  34      x € K'  	  R # 5irª   r  r  s   & rœ   r  Ú&Layout._pad_strides.<locals>.<genexpr>ƒ  s*   é € ð 
á6�ô �qœ3¤§¡Ð.×/Ð/Û6ùr  TÚ
_shape_envNc               ó    € V ^8„  d   QhRRRR/# )r¤   r]  r	  r¦   r¸   r“   )r§   s   "rœ   r¨   Ú)Layout._pad_strides.<locals>.__annotate__Œ  s   € ÷ 	Sñ 	S¨Jð 	S¸4ñ 	Sr›   c                óÜ   <€ Sf   R# \        V \        4      '       g   R# \        ;QJ d)    V3R lV P                   4       F  '       g   K   R# 	  R# ! V3R lV P                   4       4      # )NFc              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5irª   )Úis_unbacked_symint)r  r  r  s   & €rœ   r  ÚILayout._pad_strides.<locals>.contains_unbacked_symints.<locals>.<genexpr>‘  s!   øé € ÐRÑ@Q¸1�y×3Ñ3°A×6Ð6Ó@Qùs   ƒ!T)r«   r"   rƒ  r9   )r]  r  s   &€rœ   Úcontains_unbacked_symintsÚ6Layout._pad_strides.<locals>.contains_unbacked_symintsŒ  sQ   ø€ ØÒ ÙÜ˜d¤D×)Ò)Ùß“3ÔRÀ×@QÒ@QÓR—3”3ÐR’3ÐR�3ÔRÀ×@QÒ@QÓRÓRÐRr›   c              3  ó4   <"  € T F  pS! V4      x € K  	  R # 5irª   r“   )r  r  rÓ	  s   & €rœ   r  rË	  ”  s   øé € ÐNÁ:¸aÑ6°q×9Ð9Ã:ùr+  ºrñ  NN)r÷  )r_	  rð   rM   Úpad_channels_lastr_  rª	  r{   Úget_current_noder,  r©  r1  r  rP  ÚchainÚpad_dynamic_shapesr9  rÌ	  rƒ  r)  r#  rñ   r  r«   r¬   rÌ   r#   Úpadding_stride_thresholdr"   rf   r)   Únum_comprehensive_padding)rÇ	  r5  r7  ÚalignÚcurrent_fx_noderp   rY  r"  r&  Únew_stridesÚpaddedÚrankr  Úprev_idxr6  Úrequire_paddingrÓ	  r  s   &&&             @@rœ   rN  ÚLayout._pad_stridesj  st  ù€ ô $ EÓ*ˆÜˆz‹?˜aÔØÐä×'×'Ð'¬F×,NÑ,NØ÷-
ò -
ð Ðä×,Ò,Ó.ˆÜ�? F×+Ò+°×0DÑ0D×0HÑ0HØ˜u÷1
ò 1
ð Ð÷ ›ñ 
ä—_’_ ZÔ6ó
ŸŸšñ 
ä—_’_ ZÔ6ó
ó 
ô 
ˆ
ô ×(×(Ð(¯ZØÐä*1´!·'±'¸<×*HÒ*H”A—G‘G×&Ò&Èdˆ	÷	Sð 	S÷ Ÿ›ÔNÁ:ÓNŸŸšÔNÁ:ÓN×NÒNØÐä'¨
°IÓ>ˆÜ,¨\Ó:ˆ
ä"'¬¨J«Ô"8Ó9Ñ"8˜Q“qÑ"8ˆÐ9ð &'ˆ˜q•MÑ"àˆÜ" :¨b¥>¸×;‰IˆDØ!¨¥(Õ+ˆHØ Õ*¨T­^Õ;ˆFô ˜6¤C¬¯©Ð#7Ó8÷ (ð (ØœV×<Ñ<Ñ<÷(ð (à•N aÑ'÷Jð Jô ˜V¤TÓ*×HÐH¬v×/HÑ/Hð	 ð
  &˜Ñß‰Ü#*¨6Ó#9¸EÕ#A�Ñ Ø’ñ <÷ ð Ðô 	×)Ò)¨QÕ.Õ)ØÐùò; :s   ÇLc               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   rm	  ¹  s   € ÷ Lñ L˜Tñ Lr›   c                	óø   € \        V \        4      '       g   \        \        V 4      4      hV P                  f   \        R4      hV P                  V P                  V P                  V P                  4      V n        R # )Nz Expected self.stride is not None)r«   r?  rÓ   r�   r6  rN  r5  r7  rë  s   &rœ   Úpad_stridesÚLayout.pad_strides¹  sV   € Ü˜$¤×/Ò/Ü ¤ d£Ó,Ð,Ø�;‰;ÒÜ Ð!CÓDÐDØ×'Ñ'¨¯©°T·Y±YÀÇ
Á
ÓKˆŽr›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rm	  À  s   € ÷ Qñ Q Dñ Qr›   c                	óR   € \         P                  ;'       d    \        V \        4      # rª   )rM   Úcomprehensive_paddingr«   r?  rë  s   &rœ   rM  ÚLayout.should_pad_stridesÀ  s   € Ü×+Ñ+×PÐP´
¸4ÄÓ0PÐPr›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   r•  r“   )r§   s   "rœ   r¨   rm	  Ã  s   € ÷ 
ñ 
˜+ñ 
r›   c                	ó  € \        V \        4      '       d   V # V P                  4       '       d   V P                  4        \        V P                  V P
                  V P                  V P                  V P                  V P                  4      # rª   )
r«   r•  rM  rç	  r8  r7  r5  r6  r–  r—  rë  s   &rœ   Úas_fixedÚLayout.as_fixedÃ  sf   € Ü�dœK×(Ò(ØˆKà×"Ñ"×$Ò$Ø×ÑÔÜØ�K‰KØ�J‰JØ�I‰IØ�K‰KØ�K‰KØ�N‰Nó
ð 	
r›   c               ó   € V ^8„  d   QhRR/# r»  r“   )r§   s   "rœ   r¨   rm	  Ò  s   € ÷ .ñ .Ð>ñ .r›   c                	ó®   € \         P                  '       g#   \        R \        V 4      P                   R24      hV P                  4       P                  4       # )zconvert z to FixedLayout first)r?  rú  rÓ   r�   r•   rð	  r¾  rë  s   &rœ   r¾  ÚLayout.make_indexerÒ  sC   € Ü×,×,Ð,Ü  8¬D°«J×,?Ñ,?Ð+@Ð@UÐ!VÓWÐWØ�}‰}‹×+Ñ+Ó-Ð-r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   Úotherr‘   r¦   r¸   r“   )r§   s   "rœ   r¨   rm	  ×  s   € ÷ 	
ñ 	
˜Fð 	
 tñ 	
r›   c                	ó®  € \        V\        4      ;'       d¿    V P                  VP                  8H  ;'       dž    V P                  VP                  8H  ;'       d}    V P                  VP                  8H  ;'       d\    V P
                  VP
                  8H  ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # rª   )r«   r_  r8  r7  r5  r6  r–  r—  )rì  rö	  s   &&rœ   Ú__eq__ÚLayout.__eq__×  sµ   € ä�uœfÓ%÷ 2ð 2Ø—‘˜uŸ|™|Ñ+÷2ð 2à—
‘
˜eŸk™kÑ)÷2ð 2ð —	‘	˜UŸZ™ZÑ'÷2ð 2ð —‘˜uŸ|™|Ñ+÷	2ð 2ð
 —‘˜uŸ|™|Ñ+÷2ð 2ð —‘ %§/¡/Ñ1ð	
r›   c               ó   € V ^8„  d   QhRR/# r‡  r“   )r§   s   "rœ   r¨   rm	  â  s   € ÷ Tñ T˜dñ Tr›   c                	óX   € \        V P                  V P                  V P                  4      # rª   )r1   r5  r6  r–  rë  s   &rœ   rU  ÚLayout.storage_sizeâ  s   € Ü.¨t¯y©y¸$¿+¹+ÀtÇ{Á{ÓSÐSr›   c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   rm	  æ  rÄ  r›   c                	óš   € \        V P                  V4      \        V P                  V4      ,          \        V P                  V4      ,          # rª   )r+   r5  r6  r–  r&  s   &&rœ   r'  ÚLayout.get_free_symbol_useså  s=   € ô
 ˜TŸY™Y¨Ó6Ü˜tŸ{™{¨MÓ:õ;ä˜tŸ{™{¨MÓ:õ;ð	
r›   )ru	  rs	  rt	  r8  r7  r—  r6  r®  )!r•   r–   r—   r˜   rS  r#   r/  rY  r5  Úsetterr6  r–  rÓ  r9  rB  rž	  rO  rV  rª	  r®	  r³	  ra  rÄ	  rN  rç	  rM  rð	  r¾  rø	  rU  re   r'  rš   r“   r›   rœ   r_  r_  µ  sE  † ñð )-Ù˜q“zØ÷Cð4 ôó ðð 
‡[�[ôó ðð ôó ðð ‡]�]ôó ðð ôó ðð ‡]�]ôó ðõ
ð €HõõõGð ôó ðõ"ð ô
ó ð
õ$#õJ-ð ôLó ðLõ\LõQõ
õ.õ
	
õTñ ˜HÓ%ö
ó &ô
r›   r_  c                  ó&   € ] tR tRtRtR R ltRtR# )r•  ið  z A Tensor layout we cannot changec               ó   € V ^8„  d   QhRR/# r»  r“   )r§   s   "rœ   r¨   ÚFixedLayout.__annotate__ó  s   € ÷ Cñ CÐ>ñ Cr›   c                óX   € \        V P                  V P                  V P                  4      # )r  )r_  r5  r6  r–  rë  s   &rœ   r¾  ÚFixedLayout.make_indexeró  s   € ä˜dŸi™i¨¯©°d·k±kÓBÐBr›   r“   N)r•   r–   r—   r˜   rS  r¾  rš   r“   r›   rœ   r•  r•  ð  s   † Ù*÷Cñ Cr›   r•  c                  óÄ  a € ] tR tRtRtRtR R lt]R R l4       t]R R	 l4       t	]R
 R l4       t
]R R l4       t]R R l4       t]R R l4       t]P                  R R l4       t]R R l4       t]P                  R R l4       t]R R l4       t]P                  R R l4       tR+R R lltR+R R lltR  R! ltR" R# ltR$ R% ltR& R' ltR,R( V 3R) llltR*tV ;t# )-r?  iø  zp
A Tensor layout that we are allowed to change

Assumption: layout change should NOT add or remove free symbols
Fc               ó   € V ^8„  d   QhRR/# rî	  r“   )r§   s   "rœ   r¨   ÚFlexibleLayout.__annotate__  s   € ÷ .ñ .°;ñ .r›   c                óJ   € \         P                  ! V 4      P                  4       # )z¾
Compute what the strides would be if this layout were frozen,
without actually modifying the layout. This is used for speculative
stride computation during Triton template code generation.
)r‹  Údeepcopyrð	  rë  s   &rœ   Ú!get_fixed_layout_without_freezingÚ0FlexibleLayout.get_fixed_layout_without_freezing  s   € ô �}Š}˜TÓ"×+Ñ+Ó-Ð-r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   Úsizesrç   r¦   r°  r“   )r§   s   "rœ   r¨   r
    s   € ÷ 0ñ 0 -ð 0°Jñ 0r›   c                	óò   € \        V 4      ^ 8X  d   . # \        P                  P                  .p\	        V R,          4       F!  pVP                  W!R,          ,          4       K#  	  \        \	        V4      4      # )r   rÖ	  rl  )rð   rÌ   rò  rg  rW	  r@  rÅ   )r
  Úreversed_stridesr5  s   &  rœ   r@  Ú!FlexibleLayout.contiguous_strides  s\   € äˆu‹:˜Œ?ØˆIÜ!ŸG™GŸK™K˜=ÐÜ˜U 2�YÖ'ˆDØ×#Ñ# D¸BÕ+?Õ$?Ö@ñ (ä”HÐ-Ó.Ó/Ð/r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r
  rç   ræ   r¦   r°  r“   )r§   s   "rœ   r¨   r
    s!   € ÷ ñ ˜Mð °-ð ÀJñ r›   c                ó  € \        \        \        V 4      4      4      \        V4      8w  d   \        W34      h\        P
                  P                  pR.\        V4      ,          pV F  pW#V&   W V,          ,          pK  	  V# )z‚
Create a stride based on the order the dimensions should be filled in.

In this format, channels last would be:
    [1, 3, 2, 0]
N)rD   rñ   rð   rÓ   rÌ   rò  rg  )r
  ræ   Únext_striderŠ  rò   s   &&   rœ   Úfill_orderedÚFlexibleLayout.fill_ordered  sm   € ô ”eœC ›JÓ'Ó(¬J°uÓ,=Ô=Ü  % Ó0Ð0Ü—g‘g—k‘kˆØ�&œ3˜u›:Õ%ˆãˆAØ$�A‰JØ%¨a­Õ0ŠKñ ð ˆr›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r
  rç   ræ   r¦   r/  r“   )r§   s   "rœ   r¨   r
  '  s!   € ÷ >ñ >˜mð >°Mð >Ànñ >r›   c                ó®   € \        \        \        V 4      4      4      \        V4      8w  d   \        R4      h\	        V4      p\
        P                  W4      # )zz
Create a stride based on the sorted order of a permuted range.

In this format, channels last would be:
    [3, 0, 2, 1]
z;Expected OrderedSet(range(len(sizes))) == OrderedSet(order))rD   rñ   rð   rÓ   r#  r?  r
  )r
  ræ   r"  s   && rœ   rÀ	  ÚFlexibleLayout.stride_ordered&  sL   € ô ”eœC ›JÓ'Ó(¬J°uÓ,=Ô=Ü ØMóð ô -¨UÓ3ˆ
Ü×*Ñ*¨5Ó=Ð=r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r
  rç   Úmemory_formatztorch.memory_formatr¦   r/  r“   )r§   s   "rœ   r¨   r
  6  s$   € ÷ &ñ &Øð&Ø-@ð&à	ñ&r›   c                óJ  € V\         P                  8X  d   \        P                  V \        4      # V\         P
                  8X  d   \        P                  V \        4      # V\         P                  8X  d   \        P                  V 4      # \        P                  RV4       \        h)a9  
Create a stride based on a memory format.

Memory format is translasted into a stride order,
so channels_last is the same as:
    FlexibleLayout.stride_ordered(sizes, [3, 0, 2, 1])

This interface does not support memory_format `torch.preserve_format`
which should be used to deduce a format from another source
z>stride_ordered_for_memory_format, unsuppored memory_format: %s)rD  Úchannels_lastr?  rÀ	  ÚNHWC_STRIDE_ORDERÚchannels_last_3dÚNHWDC_STRIDE_ORDERÚcontiguous_formatr@  r.  r/  rY  )r
  r
  s   &&rœ   Ú stride_ordered_for_memory_formatÚ/FlexibleLayout.stride_ordered_for_memory_format5  s�   € ð œE×/Ñ/Ô/Ü!×0Ñ0°Ô8IÓJÐJØœe×4Ñ4Ô4Ü!×0Ñ0°Ô8JÓKÐKØœe×5Ñ5Ô5Ü!×4Ñ4°UÓ;Ð;ä�I‰IØPØôô &Ð%r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r
  rç   r6  ry  r¦   r/  r“   )r§   s   "rœ   r¨   r
  Q  s$   € ÷ >ñ >Øð>Ø&8ð>à	ñ>r›   c                ó  € \        V 4      \        V4      8w  d   \        R4      h\        P                  P                  P                  V4      p\        \        \        V4      4      VP                  R7      p\        P                  W4      # )z›
Create a stride that has the same stride order as given stride

For example, if given stride is [1000, 1, 100, 10],
the fill order should be [1, 3, 2, 0]
z"Expected len(sizes) == len(stride)r  )rð   rÓ   r{   r9  r:  Úguarding_hints_or_throwr  rñ   Ú__getitem__r?  r
  )r
  r6  r"  s   && rœ   Úsame_orderedÚFlexibleLayout.same_orderedP  sf   € ô ˆu‹:œ˜V›Ô$Ü Ð!EÓFÐFÜ—‘×!Ñ!×9Ñ9¸&ÓAˆÜœE¤# f£+Ó.°F×4FÑ4FÔGˆ
Ü×*Ñ*¨5Ó=Ð=r›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   r
  a  s   € ÷ ñ �nñ r›   c                	ó   € V P                   # rª   ry	  rë  s   &rœ   r5  ÚFlexibleLayout.size`  r{	  r›   c               ó    € V ^8„  d   QhRRRR/# r†	  r“   )r§   s   "rœ   r¨   r
  e  s   € ÷ ñ ˜.ð ¨Tñ r›   c                	ó6   € V P                  R V4       Wn        R# )r5  N)Ú!assert_free_symbol_uses_unchangedrs	  r~	  s   &&rœ   r5  r,
  d  s   € à×.Ñ.¨v°uÔ=ØŽ
r›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   r
  j  r€	  r›   c                	ó   € V P                   # rª   r‚	  rë  s   &rœ   r6  ÚFlexibleLayout.stridei  r„	  r›   c               ó    € V ^8„  d   QhRRRR/# r†	  r“   )r§   s   "rœ   r¨   r
  n  s   € ÷ ñ ˜Nð ¨tñ r›   c                	ó6   € V P                  R V4       Wn        R# )r6  N)r/
  rt	  r~	  s   &&rœ   r6  r2
  m  ó   € à×.Ñ.¨x¸Ô?ØŽr›   c               ó   € V ^8„  d   QhRR/# r‡  r“   )r§   s   "rœ   r¨   r
  s  rŠ	  r›   c                	ó   € V P                   # rª   rŒ	  rë  s   &rœ   r–  ÚFlexibleLayout.offsetr  r„	  r›   c               ó    € V ^8„  d   QhRRRR/# r�	  r“   )r§   s   "rœ   r¨   r
  w  s   € ÷ ñ ˜Dð  Tñ r›   c                	ó6   € V P                  R V4       Wn        R# )r–  N)r/
  ru	  r~	  s   &&rœ   r–  r8
  v  r5
  r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   ræ   rç   rð  r¸   r¦   r•  r“   )r§   s   "rœ   r¨   r
  {  s$   € ÷ 
ñ 
Ø"ð
Ø37ð
à	ñ
r›   c                	óF  € V P                  V P                  V4      pV P                  4       '       d/   V'       d'   V P                  W0P                  V P                  4      p\        V P                  V P                  V P                  VV P                  V P                  4      # rª   )	rÀ	  r5  rM  rN  r7  r•  r8  r–  r—  )rì  ræ   rð  r›  s   &&& rœ   Úas_stride_orderÚFlexibleLayout.as_stride_order{  sx   € ð ×(Ñ(¨¯©°EÓ:ˆ
Ø×"Ñ"×$Ò$¯Ø×*Ñ*¨:·y±yÀ$Ç*Á*ÓMˆJäØ�K‰KØ�J‰JØ�I‰IØØ�K‰KØ�N‰Nó
ð 	
r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r  ry  rð  r¸   r¦   r•  r“   )r§   s   "rœ   r¨   r
  ‹  s$   € ÷ 
ñ 
Ø/ð
Ø@Dð
à	ñ
r›   c                	ó  € TpV P                  4       '       d/   V'       d'   V P                  W0P                  V P                  4      p\	        V P
                  V P                  V P                  VV P                  V P                  4      # rª   )rM  rN  r5  r7  r•  r8  r–  r—  )rì  r  rð  r›  s   &&& rœ   Úas_exact_stridesÚFlexibleLayout.as_exact_strides‹  sg   € ð #ˆ
Ø×"Ñ"×$Ò$¯Ø×*Ñ*¨:·y±yÀ$Ç*Á*ÓMˆJäØ�K‰KØ�J‰JØ�I‰IØØ�K‰KØ�N‰Nó
ð 	
r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   ræ   rç   r¦   r•  r“   )r§   s   "rœ   r¨   r
  ›  s   € ÷ 
ñ 
 =ð 
°[ñ 
r›   c                	ó6  € V P                  V P                  V4      pV P                  4       '       d'   V P                  W P                  V P                  4      p\        V P                  V P                  V P                  VV P                  V P                  4      # rª   )	r
  r5  rM  rN  r7  r•  r8  r–  r—  )rì  ræ   r›  s   && rœ   Úas_fill_orderÚFlexibleLayout.as_fill_order›  st   € Ø$(×$5Ñ$5°d·i±iÀÓ$Gˆ
Ø×"Ñ"×$Ò$Ø×*Ñ*¨:·y±yÀ$Ç*Á*ÓMˆJÜØ�K‰KØ�J‰JØ�I‰IØØ�K‰KØ�N‰Nó
ð 	
r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   r6  ry  r¦   r•  r“   )r§   s   "rœ   r¨   r
  ¨  s   € ÷ 
ñ 
Ð$6ð 
¸;ñ 
r›   c                	ó6  € V P                  V P                  V4      pV P                  4       '       d'   V P                  W P                  V P                  4      p\        V P                  V P                  V P                  VV P                  V P                  4      # rª   )	r(
  r5  rM  rN  r7  r•  r8  r–  r—  )rì  r6  r›  s   && rœ   Úas_same_orderÚFlexibleLayout.as_same_order¨  st   € Ø×&Ñ& t§y¡y°&Ó9ˆ
Ø×"Ñ"×$Ò$Ø×*Ñ*¨:·y±yÀ$Ç*Á*ÓMˆJÜØ�K‰KØ�J‰JØ�I‰IØØ�K‰KØ�N‰Nó
ð 	
r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   z$dict[tuple[str, bool], sympy.Symbol]r“   )r§   s   "rœ   r¨   r
  µ  s   € ÷ 	$ñ 	$Ð.Rñ 	$r›   c           
     	ót   € / pR F/  pR F&  pW#3p\        \        \        W4      V4      4      W&   K(  	  K1  	  V# )r5  )r5  r6  r–  ©TF)rD   r+   rà   )rì  Úinitial_free_symbolsrŽ   r³  r	  s   &    rœ   Úget_initial_free_symbol_usesÚ+FlexibleLayout.get_initial_free_symbol_usesµ  sI   € Ø!ÐÛ0ˆDÛ!.�ØÐ+�Ü,6Ü$¤W¨TÓ%8¸-ÓHó-Ð$Ó)ó "/ñ 1ð $Ð#r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rŽ   r�   rJ  r=   r¦   r¿   r“   )r§   s   "rœ   r¨   r
  À  s"   € ÷ ñ °cð À,ð ÐSWñ r›   c                	ó–   € R FB  pV P                   W3,          p\        \        W#4      4      pWT8w  g   K3  \        RV RV 24      h	  R# )Tz)Expected free symbols unchanged, but got z vs NrM
  )rN
  rD   r+   rÓ   )rì  rŽ   rJ  r³  Úold_free_symbolsÚnew_free_symbolss   &&&   rœ   r/
  Ú0FlexibleLayout.assert_free_symbol_uses_unchangedÀ  sY   € Û*ˆMØ#×8Ñ8¸$Ð9NÕOÐÜ)Ô*:¸5Ó*PÓQÐØÖ3Ü$Ø?Ð@PÐ?QÐQUÐVfÐUgÐhóð ó	 +r›   c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r¤   r8  r¦  r7  rR  r5  r/  rY  rZ  r—  r¸   r¦   r¿   r“   )r§   s   "rœ   r¨   r
  É  sN   € ÷ Hñ HàðHð ðHð ð	Hð
 5ðHð ðHð 
ñHr›   c                	ó¼   <€ V'       d   \         P                  W44      pM\         P                  V4      p\        SV `  WW6VR 7       V P                  4       V n        R# )©r—  N)r?  r
  r@  rÍ  r/  rO
  rN
  )rì  r8  r7  r5  rY  r—  rŠ  rÏ  s   &&&&&& €rœ   r/  ÚFlexibleLayout.__init__É  sO   ø€ ÷ Ü$×1Ñ1°$ÓE‰Gä$×7Ñ7¸Ó=ˆGÜ‰Ñ˜¨ÀÐÔKð %)×$EÑ$EÓ$GˆÖ!r›   )ru	  rs	  rt	  rN
  r®  )NF)r•   r–   r—   r˜   rS  rú  r
  rV  r@  r
  rÀ	  r"
  r(
  rY  r5  r 
  r6  r–  r=
  rA
  rE
  rI
  rO
  r/
  r/  rš   r  r  s   @rœ   r?  r?  ø  s,  ø† ñð €Nõ.ð ô0ó ð0ð ôó ðð" ô>ó ð>ð ô&ó ð&ð4 ô>ó ð>ð ôó ðð 
‡[�[ôó ðð ôó ðð ‡]�]ôó ðð ôó ðð ‡]�]ôó ð÷
÷ 
õ 
õ
õ	$õ÷H÷ Hð Hr›   r?  c                  óp   a € ] tR tRtRtR V 3R lltR R ltR R lt]! R 4      RR	 R
 ll4       t	Rt
V ;t# )ÚNonOwningLayoutiÜ  z,Is a view into the storage of another tensorc               ó    € V ^8„  d   QhRRRR/# )r¤   ÚviewzBaseView | TensorBoxr¦   r¿   r“   )r§   s   "rœ   r¨   ÚNonOwningLayout.__annotate__ß  s   € ÷ ñ Ð1ð °dñ r›   c                	ó¨   <€ VP                  4       p\        SV `	  VP                  VP                  VP
                  VP                  4       Wn        R # rª   )r>  rÍ  r/  r8  r7  r5  r6  r]
  )rì  r]
  r’  rÏ  s   && €rœ   r/  ÚNonOwningLayout.__init__ß  s?   ø€ Ø—‘Ó"ˆÜ‰ÑØ�M‰MØ�L‰LØ�K‰KØ�M‰Mô		
ð Ž	r›   c               ó   € V ^8„  d   QhRR/# r»  r“   )r§   s   "rœ   r¨   r^
  é  s   € ÷ .ñ .Ð>ñ .r›   c                	ó>   € V P                  4       P                  4       # rª   )rð	  r¾  rë  s   &rœ   r¾  ÚNonOwningLayout.make_indexeré  s   € Ø�}‰}‹×+Ñ+Ó-Ð-r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r^
  ì  s   € ÷ Pñ P Tñ Pr›   c                	óº   € V P                   P                  4       P                  pV^ 8X  d   R# ^RIHp \
        P                  P                  P                  W4      # )r   T)Ú	ALIGNMENT)	r]
  r>  r–  Úutilsrf
  r{   r9  r:  rf  )rì  r–  rf
  s   &  rœ   Úmaybe_guard_alignedÚ#NonOwningLayout.maybe_guard_alignedì  sB   € Ø—‘×%Ñ%Ó'×.Ñ.ˆØ�QŒ;ÙÝ$ä�w‰w×Ñ×<Ñ<¸VÓOÐOr›   c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   r^
  õ  s    € ÷ Gñ GØ!ðGà	!ñGr›   c                	óz  € \        V P                  \        4      '       g   \        R 4      hV P                  P                  p\        V\
        4      '       g   \        \        V4      4      hVP                  p\        V\        4      '       g   \        \        V4      4      hVP                  P                  V4      # )z/Expected isinstance(self.view, ReinterpretView))
r«   r]
  r˜  rÓ   r‘  rº  r�   r»  r’  r'  )rì  r³  ÚboxÚinput_buffers   &&  rœ   r'  Ú$NonOwningLayout.get_free_symbol_usesô  s†   € ô ˜$Ÿ)™)¤_×5Ò5Ü Ð!RÓSÐSØ�i‰i�n‰nˆÜ˜#œz×*Ò*Ü ¤ c£Ó+Ð+Ø—x‘xˆÜ˜,¬×/Ò/Ü ¤ c£Ó+Ð+Ø×"Ñ"×7Ñ7¸ÓFÐFr›   )r]
  r®  )r•   r–   r—   r˜   rS  r/  r¾  rh
  re   r'  rš   r  r  s   @rœ   r[
  r[
  Ü  s7   ø† Ù6÷ð õ.õPñ Ð-Ó.öGó /öGr›   r[
  c                  ó   € ] tR tRtRtRtR# )ÚCommBufferTypei  Úsymm_memr“   N)r•   r–   r—   r˜   ÚSYMM_MEMrš   r“   r›   rœ   rp
  rp
    s   † Ø„Hr›   rp
  c                  óH   a € ] tR tRt$ RtR]R&   R]R&   R V 3R lltR	tV ;t# )
ÚCommBufferLayouti  a\  
A layout that signifies the buffer is a comm buffer.
In terms of striding, the layout is identical to `FixedLayout`.

Buffers with this layout do not participate in in-place reuse - it can be
neither the source nor the target for in-place reuse.

For detailed motivation and usage of this layout, see
NOTE [lowering-time collective optimization].
rp
  Úcomm_buffer_typer�   Ú
group_namec               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r’  zFlexibleLayout | FixedLayoutru
  rp
  rv
  r�   r“   )r§   s   "rœ   r¨   ÚCommBufferLayout.__annotate__  s(   € ÷ %ñ %à,ð%ð )ð%ð ñ	%r›   c           	     	ó  <€ \        V\        4      '       d   VP                  4       MTp\        SV `  VP
                  VP                  VP                  VP                  VP                  VP                  R 7       W n        W0n        R# )©r8  r7  r5  r6  r–  r—  N)r«   r?  rð	  rÍ  r/  r8  r7  r5  r6  r–  r—  ru
  rv
  )rì  r’  ru
  rv
  ÚfixedrÏ  s   &&&& €rœ   r/  ÚCommBufferLayout.__init__  sh   ø€ ô &0°¼×%GÒ%G�—‘Ô!ÈVˆÜ‰ÑØ—<‘<Ø—+‘+Ø—‘Ø—<‘<Ø—<‘<Ø—o‘oð 	ô 	
ð !1ÔØ$Žr›   )ru
  rv
  )	r•   r–   r—   r˜   rS  r™   r/  rš   r  r  s   @rœ   rt
  rt
    s   ø‡ ñ	ð %Ó$ØƒO÷%ö %r›   rt
  c                  óª   € ] tR tRt$ R]R&   ]P                  ! R R7      tR]R&   ]P                  ! R R7      tR]R	&   R
 R lt	R R lt
R R ltRtR# )Ú
NoneLayouti)  r¡  r8  c                 	ó   € ^ .# rŽ  r“   r“   r›   rœ   r  ÚNoneLayout.<lambda>4  s   € ÀÁr›   ©Údefault_factoryr  r5  c                 	ó   € ^ .# rŽ  r“   r“   r›   rœ   r  r€
  5  s   € À1Á#r›   r6  c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   ÚNoneLayout.__annotate__7  s   € ÷ ñ ˜cñ r›   c                	ó   € ^ # rŽ  r“   rë  s   &rœ   rU  ÚNoneLayout.storage_size7  rÑ  r›   c               ó   € V ^8„  d   QhRR/# rj  r“   )r§   s   "rœ   r¨   r…
  :  s   € ÷ ñ ˜*ñ r›   c                	ó   € V # rª   r“   rë  s   &rœ   rð	  ÚNoneLayout.as_fixed:  ó   € Øˆr›   c               ó   € V ^8„  d   QhRR/# r   r“   )r§   s   "rœ   r¨   r…
  =  r×  r›   c                	ó   € V P                   # rª   rÙ  rë  s   &rœ   rB  ÚNoneLayout.get_device=  rÛ  r›   r“   N)r•   r–   r—   r˜   r™   rT  rU  r5  r6  rU  rð	  rB  rš   r“   r›   rœ   r~
  r~
  )  sH   ‡ ð  ÓØ!×'Ò'¹ÔD€Dˆ)ÓDØ#×)Ò)¹+ÔF€FˆIÓFõõ÷ñ r›   r~
  c                  óÄ   a € ] tR tRtR V 3R llt]R R l4       t]P                  R R l4       tR R	 ltR
 R lt	R R lt
]RR R ll4       tR R ltR R ltRtV ;t# )ÚMutationLayoutSHOULDREMOVEiA  c               ó    € V ^8„  d   QhRRRR/# )r¤   rö  r¡   r¦   r¿   r“   )r§   s   "rœ   r¨   Ú'MutationLayoutSHOULDREMOVE.__annotate__B  s   € ÷ 	*ñ 	*˜vð 	*¨$ñ 	*r›   c                	ó  <€ \         SV `  VP                  4       VP                  4       VP	                  4       R 4       Wn        V P                  4       P                  4       p\        P                  P                  V4       R # rª   )rÍ  r/  rª  rA  r<  rö  Ú
get_bufferr¼  r{   r9  Úmark_buffer_mutated)rì  rö  rŽ   rÏ  s   && €rœ   r/  Ú#MutationLayoutSHOULDREMOVE.__init__B  sc   ø€ Ü‰ÑØ×&Ñ&Ó(Ø×ÑÓØ�O‰OÓØô		
ð ŒØ�‰Ó ×)Ñ)Ó+ˆÜ	�‰×#Ñ# DÖ)r›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   r’
  N  s   € ÷ )ñ )˜ñ )r›   c                	ó6   € V P                  4       P                  # rª   )Úreal_layoutr6  rë  s   &rœ   r6  Ú!MutationLayoutSHOULDREMOVE.strideM  s   € à×ÑÓ!×(Ñ(Ð(r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   rJ  r   r¦   r¿   r“   )r§   s   "rœ   r¨   r’
  R  s   € ÷ ñ ˜Eð  dñ r›   c                	ó   € R # rª   r“   r~	  s   &&rœ   r6  rš
  Q  s   € ár›   c               ó   € V ^8„  d   QhRR/# r‡  r“   )r§   s   "rœ   r¨   r’
  U  s   € ÷ 1ñ 1˜dñ 1r›   c                	ó>   € V P                  4       P                  4       # rª   )r™
  rU  rë  s   &rœ   rU  Ú'MutationLayoutSHOULDREMOVE.storage_sizeU  s   € Ø×ÑÓ!×.Ñ.Ó0Ð0r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   r»  r“   )r§   s   "rœ   r¨   r’
  X  s   € ÷ ñ ˜Fñ r›   c                	ó’   a€ R  V3R lloS! V P                   4      p\        V\        4      '       g   \        \	        V4      4      hV# )c               ó    € V ^8„  d   QhRRRR/# )r¤   rö  r   r¦   r“   )r§   s   "rœ   r¨   Ú;MutationLayoutSHOULDREMOVE.get_buffer.<locals>.__annotate__Y  s   € ÷ 	ñ 	 ð 	¨ñ 	r›   c                ó   <€ \        V \        4      '       d   S! V P                  4      # \        V \        4      '       d   S! V P	                  4       4      # \        V \
        4      '       d   S! V P                  4      # V # rª   )r«   r�
  rö  r¸  r¹  Ú
MutableBoxr‘  )rö  Úunwrap_viewss   &€rœ   r¦
  Ú;MutationLayoutSHOULDREMOVE.get_buffer.<locals>.unwrap_viewsY  sb   ø€ Ü˜&Ô"<×=Ò=Ù# F§M¡MÓ2Ð2Ü˜&¤(×+Ò+Ù# F×$6Ñ$6Ó$8Ó9Ð9Ü˜&¤*×-Ò-Ù# F§K¡KÓ0Ð0ØˆMr›   )rö  r«   r»  rÓ   r�   )rì  r  r¦
  s   & @rœ   r”
  Ú%MutationLayoutSHOULDREMOVE.get_bufferX  s>   ø€ ÷	ð 	ñ ˜dŸk™kÓ*ˆÜ˜&¤&×)Ò)Ü ¤ f£Ó.Ð.Øˆr›   c               ó   € V ^8„  d   QhRR/# r^  r“   )r§   s   "rœ   r¨   r’
  g  s   € ÷ ñ ˜Vñ r›   c                	ó|   € V P                  4       P                  p\        V\        4      '       g   \	        R 4      hV# )z#Expected isinstance(layout, Layout))r”
  r’  r«   r_  rÓ   )rì  r’  s   & rœ   r™
  Ú&MutationLayoutSHOULDREMOVE.real_layoutg  s2   € Ø—‘Ó"×)Ñ)ˆÜ˜&¤&×)Ò)Ü Ð!FÓGÐGØˆr›   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   Úsrcr¡   ÚdstÚunsafe_aliasr¸   r¦   r“   )r§   s   "rœ   r¨   r’
  n  s,   € ÷ *ñ *Øð*Ø%ð*Ø59ð*à	ñ*r›   c                	óô  € VP                  4        \        P                  P                  VP	                  4       4       \        V\        4      '       d   VP                  pVP                  4        V'       gØ   \        P                  VP                  4       VP                  4       VP                  4       \        VP                  4       VP                  4       4       UUu. uF.  w  rE\        P                  P                   P#                  WE4      NK0  	  uppR 7      p\        V\$        \&        34      '       g   \)        R4      hVP                  pVP                  4        \+        VR4      '       g   \)        V4      h\        VP                  P,                  \.        4      '       g)   \)        \1        VP                  P,                  4      4      h\3        V4      VP                  n        VP                  # u uppi )rg  z1Expected isinstance(node, (BaseView, MutableBox))r‘  )r–  r{   r9  r•
  r¼  r«   r    r‘  rä  rD  rê  rB  rA  r·  r÷   r<  r:  Úcheck_equals_and_simplifyr¸  r¥
  rÓ   r,  r’  r?  r�   r�
  )rê  r­
  r®
  r¯
  rŠ  r‹  rÔ   s   &&&&   rœ   Úrealize_intoÚ'MutationLayoutSHOULDREMOVE.realize_intom  sb  € ð 	�‰Œô 	
�‰×#Ñ# C§L¡L£NÔ3ä�cœ9×%Ò%Ø—(‘(ˆCð 	×ÑÔçÜ×#Ñ#Ø—~‘~Ó'Ø—m‘m“oØŸ™Ó*ô !$ C§L¡L£N°C·L±L³NÔ Côá C™˜ô —G‘G×$Ñ$×>Ñ>¸qÖDÙ Còð	 $ó ˆDô ˜d¤X¬zÐ$:×;Ò;Ü$ØGóð ð —)‘)ˆCà�‰ŒÜ�s˜F×#Ò#Ü  Ó%Ð%Ü˜#Ÿ(™(Ÿ/™/¬>×:Ò:Ü ¤ c§h¡h§o¡oÓ!6Ó7Ð7Ü4°SÓ9ˆ�‰ŒØ�x‰xˆùó#s   Ã4G4c               ó   € V ^8„  d   QhRR/# )r¤   r¦   r   r“   )r§   s   "rœ   r¨   r’
  š  ó   € ÷ ñ ˜$ñ r›   c                	ó   € V # rª   r“   rë  s   &rœ   rð	  Ú#MutationLayoutSHOULDREMOVE.as_fixedš  r‹
  r›   c               ó   € V ^8„  d   QhRR/# r»  r“   )r§   s   "rœ   r¨   r’
  �  r¶  r›   c                	ó6   € V P                   P                  4       # rª   )rö  r¾  rë  s   &rœ   r¾  Ú'MutationLayoutSHOULDREMOVE.make_indexer�  r¹  r›   )rö  r®  )r•   r–   r—   r˜   r/  rY  r6  r 
  rU  r”
  r™
  r:  r²
  rð	  r¾  rš   r  r  s   @rœ   r�
  r�
  A  sl   ø† ÷	*ð 	*ð ô)ó ð)ð ‡]�]ôó ðõ1õõð ö*ó ð*õX÷*ó *r›   r�
  c                  óê  a € ] tR tRt$ R]R&   R]R&   RtR]R&   R	 V 3R
 lltR R ltR R ltR R lt	R R lt
R R ltR R lt]R R l4       tR R ltR R ltR R ltR R  ltR! R" ltR# R$ ltR% R& ltR' R( ltRHR) R* lltR+ R, ltR- R. ltRHR/ R0 lltR1 R2 ltR3 R4 ltRIR5 R6 lltR7 R8 ltR9 R: ltR; R< lt R= R> lt!]"! R 4      RHR? R@ ll4       t#RA RB lt$RC RD lt%RE RF lt&RGt'V ;t(# )Jr»  i¡  rO  rŽ   rS  r’  FúClassVar[bool]Úordering_onlyc               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   ÚBuffer.__annotate__¬  s   € ÷ 5ñ 5˜tñ 5r›   c                	óH   <€ \         SV `  4        V P                  R R4       R# ©rÈ  N)rÍ  rú  ró  rº  s   &€rœ   rú  ÚBuffer.__post_init__¬  s   ø€ Ü‰ÑÔØ×Ñ ¨tÖ4r›   c               ó   € V ^8„  d   QhRR/# r»  r“   )r§   s   "rœ   r¨   r¿
  °  s   € ÷ 0ñ 0Ð>ñ 0r›   c                	ó>   € V P                  4       P                  4       # rª   )r>  r¾  rë  s   &rœ   r¾  ÚBuffer.make_indexer°  s   € Ø�‰Ó ×-Ñ-Ó/Ð/r›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   r¿
  ³  s   € ÷ ñ ˜#ñ r›   c                	óT   € V P                   '       g   \        V 4      hV P                   # rª   )rŽ   rÓ   rë  s   &rœ   r¼  ÚBuffer.get_name³  s    € Ø�y�yˆyÜ  Ó&Ð&Ø�y‰yÐr›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   r¿
  ¸  s   € ÷ ñ  ñ r›   c                	ó   € V P                   # rª   r  rë  s   &rœ   r}  ÚBuffer.get_buffer_name¸  rÒ  r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   ztorch.Tensor | torch.SymIntr“   )r§   s   "rœ   r¨   r¿
  »  s   € ÷ >ñ >Ð8ñ >r›   c                	óÆ   € \        V P                  \        4      '       d   V P                  P                  4       # \	        \        V P                  4      P                  4      hrª   )r«   r’  r_  rž	  rY  r�   r•   rë  s   &rœ   rž	  ÚBuffer.get_example»  s@   € Ü�d—k‘k¤6×*Ò*Ø—;‘;×*Ñ*Ó,Ð,Ü!¤$ t§{¡{Ó"3×"<Ñ"<Ó=Ð=r›   c               ó   € V ^8„  d   QhRR/# r   r“   )r§   s   "rœ   r¨   r¿
  À  s   € ÷ 3ñ 3Ð/ñ 3r›   c                	ó>   € V P                  4       P                  4       # rª   )rl  rB  rë  s   &rœ   rB  ÚBuffer.get_deviceÀ  s   € Ø×#Ñ#Ó%×0Ñ0Ó2Ð2r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   r¿
  Ã  r  r›   c                	ó   € R # rª   r“   rë  s   &rœ   r  ÚBuffer.get_defining_opÃ  r  r›   c               ó   € V ^8„  d   QhRR/# rQ  r“   )r§   s   "rœ   r¨   r¿
  Ç  s   € ÷ 'ñ '�{ñ 'r›   c                	ó6   € V P                  4       P                  # rª   )r>  r7  rë  s   &rœ   r7  ÚBuffer.dtypeÆ  s   € à�‰Ó ×&Ñ&Ð&r›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   r¿
  Ê  s   € ÷ )ñ )˜.ñ )r›   c                	ó:   € . V P                  4       P                  O# rª   )r>  r5  rë  s   &rœ   r<  ÚBuffer.get_sizeÊ  s   € Ø(�—‘Ó"×'Ñ'Ð(Ð(r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   r°  r“   )r§   s   "rœ   r¨   r¿
  Í  s   € ÷ +ñ +˜Jñ +r›   c                	ó:   € . V P                  4       P                  O# rª   )r>  r6  rë  s   &rœ   rn  ÚBuffer.get_strideÍ  s   € Ø*�—‘Ó"×)Ñ)Ð*Ð*r›   c               ó   € V ^8„  d   QhRR/# r‡  r“   )r§   s   "rœ   r¨   r¿
  Ð  s   € ÷ (ñ (˜Dñ (r›   c                	ó6   € V P                  4       P                  # rª   )r>  r–  rë  s   &rœ   Ú
get_offsetÚBuffer.get_offsetÐ  s   € Ø�‰Ó ×'Ñ'Ð'r›   c               ó   € V ^8„  d   QhRR/# r^  r“   )r§   s   "rœ   r¨   r¿
  Ó  s   € ÷ >ñ >˜Fñ >r›   c                	óª   € \        V P                  \        4      '       d   V P                  # \        \	        V P                  4      P
                  4      hrª   )r«   r’  r_  rY  r�   r•   rë  s   &rœ   r>  ÚBuffer.get_layoutÓ  s7   € Ü�d—k‘k¤6×*Ò*Ø—;‘;ÐÜ!¤$ t§{¡{Ó"3×"<Ñ"<Ó=Ð=r›   c               ó   € V ^8„  d   QhRR/# rj  r“   )r§   s   "rœ   r¨   r¿
  Ø  s   € ÷ ñ  ñ r›   c                	ó   € V P                   # rª   r½  rë  s   &rœ   rl  ÚBuffer.get_output_specØ  rÛ  r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   r¿
  Û  s   € ÷  ñ   3ñ  r›   c                	ó"   € V P                  4       # rª   )r‰  rë  s   &rœ   r   ÚBuffer.get_storage_numelÛ  s   € Ø�~‰~ÓÐr›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r¿
  Þ  s   € ÷ +ñ +˜tñ +r›   c                	ó6   € V P                  4       P                  # rª   )r>  r—  rë  s   &rœ   Úget_is_pinnedÚBuffer.get_is_pinnedÞ  s   € Ø�‰Ó ×*Ñ*Ð*r›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   r¿
  á  s   € ÷ 1ñ 1˜tñ 1r›   c                	óÌ   € \        V P                  \        4      '       dD   \        V P                  \        4      '       g"   V P                  P	                  4       V n        R # R # R # rª   )r«   r’  r_  r[
  rð	  rë  s   &rœ   rì  ÚBuffer.freeze_layoutá  sF   € Ü�d—k‘k¤6×*Ò*´:Ø�K‰Kœ÷4
ò 4
ð Ÿ+™+×.Ñ.Ó0ˆDŽKñ4
Ñ*r›   c               ó$   € V ^8„  d   QhRRRRRR/# rï  r“   )r§   s   "rœ   r¨   r¿
  ç  s)   € ÷ Vñ VØ"ðVØ37ðVà	ñVr›   c                	óÄ   € \        V P                  \        4      '       g   \        \	        V P                  4      4      hV P                  P                  WR 7      V n        R# ©r]  N)r«   r’  r?  rÓ   r�   r=
  rò  s   &&&rœ   ró  Ú&Buffer.freeze_layout_with_stride_orderç  sB   € ô ˜$Ÿ+™+¤~×6Ò6Ü ¤ d§k¡kÓ!2Ó3Ð3Ø—k‘k×1Ñ1°%Ð1ÓUˆŽr›   c               ó    € V ^8„  d   QhRRRR/# r÷  r“   )r§   s   "rœ   r¨   r¿
  î  s   € ÷ 7ñ 7°=ð 7ÀTñ 7r›   c                	óÂ   € \        V P                  \        4      '       g   \        \	        V P                  4      4      hV P                  P                  V4      V n        R # rª   )r«   r’  r?  rÓ   r�   rE
  rù  s   &&rœ   rú  Ú$Buffer.freeze_layout_with_fill_orderî  s=   € Ü˜$Ÿ+™+¤~×6Ò6Ü ¤ d§k¡kÓ!2Ó3Ð3Ø—k‘k×/Ñ/°Ó6ˆŽr›   c               ó    € V ^8„  d   QhRRRR/# )r¤   r6  rç   r¦   r¿   r“   )r§   s   "rœ   r¨   r¿
  ó  s   € ÷ 8ñ 8°Mð 8Àdñ 8r›   c                	óÂ   € \        V P                  \        4      '       g   \        \	        V P                  4      4      hV P                  P                  V4      V n        R # rª   )r«   r’  r?  rÓ   r�   rI
  rÿ  s   &&rœ   r   Ú$Buffer.freeze_layout_with_same_orderó  s=   € Ü˜$Ÿ+™+¤~×6Ò6Ü ¤ d§k¡kÓ!2Ó3Ð3Ø—k‘k×/Ñ/°Ó7ˆŽr›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r  rç   rð  r¸   r¦   r¿   r“   )r§   s   "rœ   r¨   r¿
  ø  s$   € ÷ 
ñ 
Ø*ð
Ø;?ð
à	ñ
r›   c                	óÄ   € \        V P                  \        4      '       g   \        \	        V P                  4      4      hV P                  P                  WR 7      V n        R# rô
  )r«   r’  r?  rÓ   r�   rA
  r  s   &&&rœ   r  Ú'Buffer.freeze_layout_with_exact_stridesø  sG   € ô ˜$Ÿ+™+¤~×6Ò6Ü ¤ d§k¡kÓ!2Ó3Ð3Ø—k‘k×2Ñ2Øð 3ó 
ˆŽr›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r¿
    rŒ  r›   c                	óš   € \         P                  P                  P                  \        P
                  ! V P                  4       ^ 4      4      # rŽ  r�  rë  s   &rœ   r”  ÚBuffer.is_zero_elements  r’  r›   c               ó   € V ^8„  d   QhRR/# r³  r“   )r§   s   "rœ   r¨   r¿
    rª  r›   c                	ó„   a € S P                  4       '       d    \        \        S P                  4       R 7      # R V 3R llpV# )rT  c               ó    € V ^8„  d   QhRRRR/# r<  r“   )r§   s   "rœ   r¨   Ú(Buffer.make_loader.<locals>.__annotate__	  s   € ÷ 	Dñ 	D˜.ð 	D¨Xñ 	Dr›   c                ó†   <€ SP                  4       p\        P                  ! SP                  ;'       g    R V! V 4      4      # rZ  )r¾  ry   r¯  rŽ   ©rë   rV  rì  s   & €rœ   r^  Ú"Buffer.make_loader.<locals>.loader	  s2   ø€ Ø×'Ñ'Ó)ˆGÜ—8’8˜DŸI™I×2Ð2¨±G¸E³NÓCÐCr›   )r”  r   rB  rA  r³  s   f rœ   r·  ÚBuffer.make_loader  s9   ø€ à× Ñ ×"Ò"Üœ=°·±Ó0@ÔAÐA÷	Dð 	Dð ˆr›   c               ó    € V ^8„  d   QhRRRR/# r™  r“   )r§   s   "rœ   r¨   r¿
    s   € ÷ ñ Ð(=ð Èñ r›   c                	ó"   € V P                  4       # rª   ©r¼  rœ  s   &&rœ   r�  ÚBuffer.codegen_reference  r¡  r›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   r¿
    rÀ  r›   c                	ó   € R # rª   r“   rë  s   &rœ   r  ÚBuffer.decide_layout  ræ  r›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   r¿
    s   € ÷ ñ ¨mñ r›   c                	ó�   € \        V P                  \        4      '       d&   V P                  P                  P	                  4       .# R# r(	  )r«   r’  r[
  r]
  r¼  rë  s   &rœ   rM  Ú#Buffer.get_inputs_that_alias_output  s4   € Ü�d—k‘k¤?×3Ò3Ø—K‘K×$Ñ$×-Ñ-Ó/Ð0Ð0Øˆ	r›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   r¿
    s   € ÷ ñ  Mñ r›   c                	ó�   € \        V P                  \        4      '       d&   V P                  P                  P	                  4       .# R# r(	  )r«   r’  r�
  rö  r¼  rë  s   &rœ   rE  ÚBuffer.get_mutation_names  s5   € Ü�d—k‘kÔ#=×>Ò>Ø—K‘K×&Ñ&×/Ñ/Ó1Ð2Ð2Øˆ	r›   c               ó   € V ^8„  d   QhRR/# rý  r“   )r§   s   "rœ   r¨   r¿
    s   € ÷ -ñ - ñ -r›   c                	ó6   € \        V P                  4       .4      # rª   )rD   r¼  rë  s   &rœ   r
  ÚBuffer.get_read_names  s   € Ü˜4Ÿ=™=›?Ð+Ó,Ð,r›   c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   r¿
  #  ó   € ÷ ñ Ø!ðà	!ñr›   c                	ó   € \        4       # rª   rC   r&  s   &&rœ   r'  ÚBuffer.get_free_symbol_uses"  ó   € ô ‹|Ðr›   c               ó   € V ^8„  d   QhRR/# r§  r“   )r§   s   "rœ   r¨   r¿
  (  r¨  r›   c                	ó   € \        4       # rª   rC   rë  s   &rœ   rª  ÚBuffer.get_unbacked_symbol_defs(  r¬  r›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   r¿
  +  rA	  r›   c                	ó   € R # rª   r“   rë  s   &rœ   r–  ÚBuffer.realize+  ræ  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r¿
  .  s   € ÷ ñ  ñ r›   c                	ó   € R # r®  r“   rë  s   &rœ   Úshould_allocateÚBuffer.should_allocate.  s   € ár›   r½  r®  rª   ))r•   r–   r—   r˜   r™   r½
  rú  r¾  r¼  r}  rž	  rB  r  rY  r7  r<  rn  rà
  r>  rl  r   rí
  rì  ró  rú  r   r  r”  r·  r�  r  rM  rE  r
  re   r'  rª  r–  r'  rš   r  r  s   @rœ   r»  r»  ¡  så   ø‡ ð ÓØÓØ$)€M�>Ó)÷
5ð 5õ0õõ
õ>õ
3õð ô'ó ð'õ)õ+õ(õ>õ
õ õ+õ1÷Võ7õ
8÷

õUõ	÷õõõ
õ
-ñ ˜HÓ%öó &ðõ
õ÷ó r›   r»  c                  óR   € ] tR tRtR R ltR R lt]P                  tR R ltRt	R	# )
ÚOperationBufferi3  c               ó   € V ^8„  d   QhRR/# r¡  r“   )r§   s   "rœ   r¨   ÚOperationBuffer.__annotate__6  s   € ÷ ñ ˜\ñ r›   c                	ó   € V .# rª   r“   rë  s   &rœ   r¤  ÚOperationBuffer.get_outputs6  s	   € Øˆvˆr›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   r[  r“   )r§   s   "rœ   r¨   r,  9  s   € ÷ ñ  ñ r›   c                	ó   € V # rª   r“   rë  s   &rœ   r  ÚOperationBuffer.get_defining_op9  r‹
  r›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   r,  ?  s   € ÷ &ñ &˜tñ &r›   c                	óZ   € \         P                  V 4       \        P                  V 4       R # rª   )r»  rú  r[  rë  s   &rœ   rú  ÚOperationBuffer.__post_init__?  s   € Ü×Ñ˜TÔ"Ü×Ñ Ö%r›   r“   N)
r•   r–   r—   r˜   r¤  r  r[  rI  rú  rš   r“   r›   rœ   r*  r*  3  s$   † õõð #×5Ñ5Ð÷&ñ &r›   r*  c                  ó"   € ] tR tRtR R ltRtR# )râ  iD  c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   ÚInputBuffer.__annotate__E  rÎ  r›   c                	ó   € ^# rð  r“   rë  s   &rœ   r  ÚInputBuffer.num_readsE  rÑ  r›   r“   N)r•   r–   r—   r˜   r  rš   r“   r›   rœ   râ  râ  D  s   † ÷ñ r›   râ  c                  ó   € ] tR tRtRtRtR# )ÚDonatedBufferiI  aA  
Represents a donated buffer which is a saved tensor that is not alias to any
fwd inputs, fwd user outputs, and bwd outputs. We generally cannot inplace
reuse the input tensor memory during backward since it might be used in another
function. However, donated buffer can be inplace reused during backward
to save memory.
r“   N)r•   r–   r—   r˜   rS  rš   r“   r›   rœ   r<  r<  I  s   † õr›   r<  c                  ó>   € ] tR tRt$ RtR]R&   R R ltR R ltR	tR# )
rh  iS  Nr¡  rf  c               ó   € V ^8„  d   QhRR/# r³  r“   )r§   s   "rœ   r¨   ÚConstantBuffer.__annotate__V  s   € ÷ ñ ÐAñ r›   c                	ó   a € R  V 3R llpV# )c               ó    € V ^8„  d   QhRRRR/# r<  r“   )r§   s   "rœ   r¨   Ú0ConstantBuffer.make_loader.<locals>.__annotate__W  s   € ÷ 	ñ 	˜.ð 	¨Xñ 	r›   c                óæ   <€ SP                  4       P                  4       p\        P                  ! \        P
                  P                  SP                  4       SP                  4      V! V 4      4      # rª   )	r>  r¾  ry   r¯  r{   r9  Úconstant_namer¼  rf  r  s   & €rœ   r^  Ú*ConstantBuffer.make_loader.<locals>.loaderW  sP   ø€ Ø—o‘oÓ'×4Ñ4Ó6ˆGÜ—8’8Ü—‘×%Ñ% d§m¡m£o°t×7KÑ7KÓLÙ˜“óð r›   r“   r³  s   f rœ   r·  ÚConstantBuffer.make_loaderV  s   ø€ ÷	ð 	ð ˆr›   c               ó    € V ^8„  d   QhRRRR/# r>  r“   )r§   s   "rœ   r¨   r?  `  r6  r›   c                	óˆ   € \        \        P                  P                  V P	                  4       V4      V P
                  R 7      # )©rŽ   r’  )rh  r{   r9  rD  r¼  r’  r©  s   &&rœ   r@  Ú!ConstantBuffer.constant_to_device`  s/   € ÜÜ—‘×&Ñ& t§}¡}£¸Ó?ÈÏÉô
ð 	
r›   r“   )	r•   r–   r—   r˜   rf  r™   r·  r@  rš   r“   r›   rœ   rh  rh  S  s   ‡ Ø+/€OÐ(Ó/õ÷
ñ 
r›   rh  c                  óp   € ] tR tRtR R lt]! R 4      RR R ll4       tRR R lltR	 R
 ltR R lt	Rt
R# )ÚNoneAsConstantBufferif  c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   Ú!NoneAsConstantBuffer.__annotate__h  r1	  r›   c                	ó   € \        4       # rª   rC   rë  s   &rœ   r	  ÚNoneAsConstantBuffer.get_readsh  r¬  r›   c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   rN  l  r  r›   c                	ó   € \        4       # rª   rC   r&  s   &&rœ   r'  Ú)NoneAsConstantBuffer.get_free_symbol_usesk  r  r›   Nc               ó    € V ^8„  d   QhRRRR/# r™  r“   )r§   s   "rœ   r¨   rN  q  s   € ÷ -ñ -Ð(=ð -Èñ -r›   c                	óJ   € \         P                  P                  P                  # rª   )r{   r9  rÉ  Únone_strrœ  s   &&rœ   r�  Ú&NoneAsConstantBuffer.codegen_referenceq  s   € Ü�w‰w×#Ñ#×,Ñ,Ð,r›   c               ó   € V ^8„  d   QhRR/# rj  r“   )r§   s   "rœ   r¨   rN  t  s   € ÷ 'ñ ' ñ 'r›   c                	ó   € \        R R7      # ©NrÙ  )r~
  rë  s   &rœ   rl  Ú$NoneAsConstantBuffer.get_output_spect  s   € Ü Ô&Ð&r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rN  w  ó   € ÷ ñ  4ñ r›   c                	ó   € R # r®  r“   rë  s   &rœ   ru  Ú&NoneAsConstantBuffer.has_tensor_outputw  r±  r›   r“   r®  rª   )r•   r–   r—   r˜   r	  re   r'  r�  rl  ru  rš   r“   r›   rœ   rL  rL  f  s5   † õñ Ð2Ó3öó 4ð÷
-õ'÷ñ r›   rL  c                  ód   € ] tR tRt$ R]R&   ]! R 4      RR R ll4       tRR R lltR	 R
 ltRt	R# )rÑ   i{  r"   r]  c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   Ú"ShapeAsConstantBuffer.__annotate__€  s   € ÷ :ñ :Ø!ð:à	!ñ:r›   c                	ó.   € \        V P                  V4      # rª   )r+   r]  r&  s   &&rœ   r'  Ú*ShapeAsConstantBuffer.get_free_symbol_uses  s   € ô   §	¡	¨=Ó9Ð9r›   Nc               ó    € V ^8„  d   QhRRRR/# r™  r“   )r§   s   "rœ   r¨   rb  …  s   € ÷ ?ñ ?Ð(=ð ?Èñ ?r›   c                	óh   € \         P                  P                  P                  V P                  4      # rª   )r{   r9  rÉ  Úcodegen_sizevarr]  rœ  s   &&rœ   r�  Ú'ShapeAsConstantBuffer.codegen_reference…  s!   € Ü�w‰w×#Ñ#×3Ñ3°D·I±IÓ>Ð>r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rb  ˆ  r]  r›   c                	ó   € R # r®  r“   rë  s   &rœ   ru  Ú'ShapeAsConstantBuffer.has_tensor_outputˆ  r±  r›   r“   r®  rª   )
r•   r–   r—   r˜   r™   re   r'  r�  ru  rš   r“   r›   rœ   rÑ   rÑ   {  s.   ‡ à
ƒJáÐ3Ó4ö:ó 5ð:÷
?÷ñ r›   rÑ   c                  ó0   € ] tR tRt$ RtR]R&   R]R&   RtR# )	ÚExtraIndexingConstraintsiŒ  a  Extra indexing constraints appended during simplify_and_reorder.

Produced by the cpp fusion path to force compatible index/reduce ranges
across scheduler nodes, then threaded through simplify_and_reorder and
recompute_size_and_body. Replaces a bare tuple[VarRanges, list[Expr]].
rx   r¸  zlist[sympy.Expr]r3  r“   N©r•   r–   r—   r˜   rS  r™   rš   r“   r›   rœ   rm  rm  Œ  s   ‡ ñð ÓØ×r›   rm  c                  óü  a € ] tR tRt$ RtR]R&   RtR]R&   RtR	]R
&   RtR]R&   Rt	R]R&   Rt
R]R&   ]P                  R R l4       t]]P                  R R l4       4       tR R ltR R ltR R ltR R ltR R lt]! R 4      R=R R ll4       tR  V 3R! lltR" R# ltR$ R% ltR& R' ltR( R) lt]R* R+ l4       tR>R, R- llt]R?R. R/ ll4       tR0 R1 lt R2 R3 lt!R4 R5 lt"R6 R7 lt#R8 R9 lt$R: R; lt%R<t&V ;t'# )@rà  i™  zZ
Represents a buffer that is computed during kernel execution rather than being an input.
rµ  r‘  Fr¼
  Ú_force_realizeNrÉ  r¦  úCallable[..., Any] | Noner§  r}  r¨  r©  c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   úIterator[None]r“   )r§   s   "rœ   r¨   ÚComputedBuffer.__annotate__©  s   € ÷ '%ñ '%¨ñ '%r›   c              #  	ó\  "  € V P                   f   \        R4      hV P                  f   \        R4      hV P                  f   \        R4      hV P                  f   \        R4      h\        V P                  \        4      '       g    \        \        V P                  4       4      hV P                  pV P                  p \        VP                  VP                  V P                  V P                  V P                  VP                  VP                  VP                  VP                  VP                   R7
      pW0n        \#        VP                  VP                  V P                  4      V n	        V P$                  P'                  V 4       R x € Wn        W n	        R #   Yn        Y n	        i ; i5i)Nz%Expected self._split_size is not Nonez,Expected self._original_inner_fn is not Nonez*Expected self._original_ranges is not Nonez4Expected self._original_reduction_ranges is not Nonerî  )r¦  rÓ   r§  r¨  r©  r«   r‘  r¿  r�   r’  r8  r7  r…  rÁ  rÂ  rÃ  rÄ  r•  Úget_default_sizes_bodyÚclear_cache)rì  Úold_datarš  Únew_datas   &   rœ   Úwith_original_inner_fnÚ%ComputedBuffer.with_original_inner_fn¨  s_  é € à×ÑÒ#Ü Ð!HÓIÐIØ×"Ñ"Ò*Ü Ð!OÓPÐPØ× Ñ Ò(Ü Ð!MÓNÐNØ×*Ñ*Ò2Ü Ð!WÓXÐXä˜$Ÿ)™)¤Y×/Ò/Ü ¤D¨¯©£OÐ#4Ó6Ð6Ø—9‘9ˆØ—[‘[ˆ
ð	%Ü Ø—‘Ø—n‘nØ×0Ñ0Ø×,Ñ,Ø!%×!@Ñ!@Ø'×6Ñ6Ø"×,Ñ,Ø'×6Ñ6Ø$,×$@Ñ$@Ø"*×"<Ñ"<ôˆHð !ŒIô &Ø—‘Ø—‘Ø×%Ñ%óˆDŒKð
 ×'Ñ'×3Ñ3°DÔ9Ûà ŒIØ$ŽKøð !ŒIØ$�Küs   ‚B<F,Â?CF ÆF,ÆF)Æ)F,c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   ru  Ô  s   € ÷ 6ñ 6˜>ñ 6r›   c               #  	ó„   "  € \         P                  p  R \         n        Rx € V \         n        R#   T \         n        i ; i5i)TN)rà  rp  )Ú	old_values    rœ   Úforce_realizeÚComputedBuffer.force_realizeÒ  s2   é € ô #×1Ñ1ˆ	ð	6Ø,0ŒNÔ)Ûà,5ŒNÖ)ø¨IŒNÕ)üs   ‚A ”0 £A °=½A c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   ru  Ü  s   € ÷ 	ñ 	¨*ñ 	r›   c                óž   € V P                   e   V P                   # \        V P                  R4      '       d   V P                  P                   # R# )z}
Returns self.name if it exists, otherwise returns the name of the data node if that exists.
If neither exist, returns None.
NrŽ   )rŽ   r,  r‘  rë  s   &rœ   Úget_computed_buffer_nameÚ'ComputedBuffer.get_computed_buffer_nameÜ  s:   € ð
 �9‰9Ò Ø—9‘9ÐÜ�4—9‘9˜f×%Ò%Ø—9‘9—>‘>Ð!Ùr›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   ru  ç  r  r›   c                	ó6   € V P                   P                  4       # rª   ©r‘  r  rë  s   &rœ   r  ÚComputedBuffer.num_readsç  rÅ  r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   ru  ê  ó   € ÷ %ñ %˜?ñ %r›   c                	ó6   € V P                   P                  4       # rª   ©r‘  r	  rë  s   &rœ   r	  ÚComputedBuffer.get_readsê  rÅ  r›   c               ó   € V ^8„  d   QhRR/# rý  r“   )r§   s   "rœ   r¨   ru  í  rË  r›   c                	ó6   € V P                   P                  4       # rª   rÍ  rë  s   &rœ   r
  ÚComputedBuffer.get_read_namesí  rÏ  r›   c               ó   € V ^8„  d   QhRR/# r
  r“   )r§   s   "rœ   r¨   ru  ð  s   € ÷ ñ Ð!8ñ r›   c                	ó˜  € \        V P                  \        \        \        \
        34      '       g2   \        P                  ! \        4       \        4       \        4       R 7      # \        P                  ! \        RR4      ;_uu_ 4        V P                  P                  4       '       dV   \        V P                  4       V P                  P                  4       V P                  P!                  4       4      uuRRR4       # \        V P                  4       V P                  P#                  4       4      uuRRR4       #   + '       g   i     R# ; i)©r  ÚwritesÚindex_exprsrú  TN)r«   r‘  r¿  r¨  r  rD  rN   Ú
ReadWritesrD   r!   r‘   r?  r+  rW   Úget_store_functionrå  r1  r<  rë  s   &rœ   r  ÚComputedBuffer.get_read_writesð  sÚ   € Ü˜$Ÿ)™)¤i´´t¼YÐ%G×HÒHÜ×*Ò*Ü “lÜ!“|Ü&›Lôð ô �\Š\œ.Ð*:¸D×AÕAØ�y‰y×+Ñ+×-Ò-Ü*Ø×+Ñ+Ó-Ø—I‘I×0Ñ0Ó2Ø—I‘I×0Ñ0Ó2ó÷ BÒAô +Ø×+Ñ+Ó-Ø—I‘I×&Ñ&Ó(ó÷ B×A×AÓAús   ÂA+D8Ã<1D8Ä8E		c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   ru    s   € ÷ ñ Ø!ðà	!ñr›   c                	óò   € V P                   P                  V4      V P                  P                  V4      ,          pV P                  4       '       d&   W P	                  4       P                  V4      ,          pV# rª   )r’  r'  r‘  Úhas_store_functionr  )rì  r³  r  s   && rœ   r'  Ú#ComputedBuffer.get_free_symbol_uses  sd   € ð$ —‘×1Ñ1Øó
à�I‰I×*Ñ*¨=Ó9õ:ˆð ×"Ñ"×$Ò$Ø×*Ñ*Ó,×AÑAÀ-ÓPÕPˆFØˆr›   c               ó   € V ^8„  d   QhRR/# r³  r“   )r§   s   "rœ   r¨   ru    s   € ÷ 	%ñ 	%ÐAñ 	%r›   c                	ó   <€ V P                  4       '       gk   V P                  \        P                  P                  9  dB   V P                  4       ^ 8X  d-   V P                  '       g   V P                  P                  4       # \        SV `!  4       # rŽ  )
r+  rŽ   r{   r9  Úmutated_buffersr  rp  r‘  r·  rÍ  rº  s   &€rœ   r·  ÚComputedBuffer.make_loader  sf   ø€ à×'Ñ'×)Ò)Ø—	‘	¤§¡×!8Ñ!8Ô8Ø—‘Ó  AÔ%Ø×'×'Ð'ð —9‘9×(Ñ(Ó*Ð*Ü‰wÑ"Ó$Ð$r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   ru  *  s   € ÷ Iñ I Dñ Ir›   c                	óV   € \        V P                  \        \        \        \
        34      # rª   )r«   r‘  r¿  r¨  r  rD  rë  s   &rœ   rœ  Ú!ComputedBuffer.has_store_function*  s   € Ü˜$Ÿ)™)¤i´´t¼YÐ%GÓHÐHr›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   zCallable[..., None]r“   )r§   s   "rœ   r¨   ru  -  s   € ÷ Gñ GÐ$7ñ Gr›   c                	óØ  € V P                  4       P                  4       P                  4       p\        V P                  \
        \        \        34      '       d,   \        V P                  P                  V P                  V4      # \        V P                  \        4      '       g   \        \        V P                  4      4      h\        V P                  P                  V P                  V4      # rª   )r>  rð	  r¾  r«   r‘  r¿  r¨  r  r   rÝ  rŽ   rD  rÓ   r�   r_  )rì  rV  s   & rœ   r˜  Ú!ComputedBuffer.get_store_function-  s–   € Ø—/‘/Ó#×,Ñ,Ó.×;Ñ;Ó=ˆÜ�d—i‘i¤)¬T´4Ð!8×9Ò9Ü˜4Ÿ9™9×4Ñ4°d·i±iÀÓIÐIä˜dŸi™i¬×3Ò3Ü$¤T¨$¯)©)£_Ó5Ð5Ü˜4Ÿ9™9×1Ñ1°4·9±9¸gÓFÐFr›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   úlist[int] | Noner“   )r§   s   "rœ   r¨   ru  6  s   € ÷ (ñ (Ð 0ñ (r›   c                óò  € \        V P                  \        4      '       EdÆ   \        P                  ! V P
                  P                  4       V P
                  P                  4       4      w  w  rpV P                  4       P                  p\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   \        R4      hV UUu. uFl  p\        V\        P                  4      '       g   K%  \        VP                  V Uu/ uF&  qf^ 8w  g   K  V\        P                   P"                  bK(  	  up4      NKn  	  pppV'       d™   \        V P
                  \$        \&        34      '       d   V P
                  P)                  W4      pMTpV Uu. uF,  p\*        P,                  P.                  P1                  W‡4      NK.  	  p	p^RIHp
 V
! W�P7                  4       4      # R# u upi u uppi u upi )aD  
If our layout is still flexible, try to determine the stride order based on stride orders of reads.

TODO(jansel): A better algorithm here would look at downstream consumers of this
              value and try to do global graph-level layout optimization.
              This is also something just begging to be autotuned.
c              3  óv   "  € T F/  p\        V\        P                  \        P                  34      x € K1  	  R # 5irª   )r«   rN   ÚStarDepÚ	MemoryDeprî  s   & rœ   r  Ú0ComputedBuffer.get_fill_order.<locals>.<genexpr>E  s2   é € ð á�Aô ˜1œ|×3Ñ3´\×5KÑ5KÐL×MÐMÛùr‚  FTz\Expected all( isinstance(r, (dependencies.StarDep, dependencies.MemoryDep)) for r in reads )©Úpick_loop_orderN)r«   r’  r?  rN   r  r‘  rå  r1  r  r  r  rÓ   r­  rv   rë   rÌ   rò  ró  r¨  r  rô   r{   r9  r:  r0  Ú	schedulerr°  r<  )rì  Ú
index_varsrÙ  r&  r  rì  Úvr  r]  Ústride_lengthsr°  s   &          rœ   r  ÚComputedBuffer.get_fill_order6  s•  € ô �d—k‘k¤>×2Ó2Ü.:×.MÒ.MØ—	‘	×,Ñ,Ó.°·	±	×0LÑ0LÓ0Nó/Ñ+Ñ(ˆZ¨!ð ×(Ñ(Ó*×0Ñ0ˆE÷ “3ñ áó—3—3’3ñ áó÷ ò ô %Øróð ñ
 ôá�AÜ˜a¤×!7Ñ!7×8ô Y”
˜1Ÿ7™7¹nÓ$W¹n¸ÐUVÑPV¤_ Q¬¯©¯©¢_¹nÑ$WÖXÙð ñ ÷ Ü˜dŸi™i¬$´¨×6Ò6Ø"Ÿi™i×/Ñ/°
ÓK‘Gà(�GáMRó"ÙMRÀT”A—G‘G×$Ñ$×1Ñ1°$Ö@ÉUð ð "õ 7á& ~·}±}³ÓGÐGáùò# %Xùóùò"s*   Ã"G.Ã9G.ÄG)ÄG)Ä9G.Æ2G4Ç)G.c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   ru  `  s   € ÷ %ñ %˜tñ %r›   c                	óÀ   € \        V P                  \        4      '       d>   V P                  4       pV'       d   V P	                  V4       R # V P                  4        R # R # rª   )r«   r’  r?  r  rú  rì  rù  s   & rœ   r  ÚComputedBuffer.decide_layout`  sC   € Ü�d—k‘k¤>×2Ò2Ø×'Ñ'Ó)ˆEßØ×2Ñ2°5Ö9à×"Ñ"Ö$ñ 3r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   zMtuple[tuple[list[Expr], list[Expr]], LoopBody, tuple[list[Expr], list[Expr]]]r“   )r§   s   "rœ   r¨   ru  i  s   € ÷  Jñ  Jð
ñ Jr›   c                	óÐ  € \         P                  ! V P                  4       V P                  4       R R7      w  r\        P
                  ! \        RV P                  4       4      ;_uu_ 4        \        V P                  4       V P                  4       '       d   TMVR,          V.VO5!  pRRR4       . p. p. p. pVP                  4        Fƒ  w  r‰W�^ ,          9   d8   V'       d   \        R4      hVP                  V4       VP                  V	4       KI  W�^,          9  d   \        R4      hVP                  V4       VP                  V	4       K…  	  Wg3XWE33#   + '       g   i     L¶; i)Úqrž   rf  :Nrñ  NNzExpected not reduce_varszExpected v in args[1])rN   r  rå  r1  r!   r‘   rh  rB  rZ   r˜  r+  ÚitemsrÓ   r@  )
rì  rÜ   Ú
var_rangesrz  r²  Úreduce_varsÚ
index_sizeÚreduce_sizer³  r  s
   &         rœ   rw  Ú%ComputedBuffer.get_default_sizes_bodyh  s=  € ô (×:Ò:Ø×#Ñ#Ó% t×'>Ñ'>Ó'@Èô
Ñˆô �\Š\œ.Ð*;¸T¿_¹_Ó=N×OÕOÜØ×'Ñ'Ó)Ø×0Ñ0×2Ò2‘¸¸R½Øðð ó	ˆD÷ Pð ˆ
Ø!#ˆØˆ
ØˆØ×$Ñ$Ö&‰DˆAØ˜•GŒ|ßÜ(Ð)CÓDÐDØ×!Ñ! !Ô$Ø×!Ñ! !Ö$à �GÔ#Ü(Ð)@ÓAÐAØ×"Ñ" 1Ô%Ø×"Ñ" 1Ö%ñ 'ð Ð(¨$°Ð0IÐIÐI÷- P×Oús   Á*=EÅE%	c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   Úextra_indexing_constraintsúExtraIndexingConstraints | NoneÚrecompute_sizes_body_funcrq  r¦   z5tuple[tuple[list[Expr], list[Expr]], LoopBody | None]r“   )r§   s   "rœ   r¨   ru  ‹  s-   € ÷ O2ñ O2à$CðO2ð $=ðO2ð 
?ñ	O2r›   c                óŽ  a aa€ S P                  4       w  w  r4pw  rgV'       d   V! W43WVV34      w  w  r4pw  rg. VP                  P                  4       OoVe`   VP                  pW�P                  8w  d   \        VVP                  34      hVP                   U	u. uF  q™S9  g   K  V	NK  	  p
p	SV
,          o. VP                  4       Oo\        P                  P                  S \        P                  4      '       g    SP                  VP                  4       4       R VVV 3R llpWg,           p\        \!        S 4      4      '       * ;'       g    \"        P$                  '       * pV! VVVV4      w  rïpV! W|WM4      w  ppp\&        P(                  ! VVRR7      w  w  ppp\+        VV! V4      V! V4      .VVV4      pVV3V3# u up	i )aþ  
This is a main place where we do loop transformations in a
backend-agnostic way.

Here we:
    1) Remove any 1 dimensions
    2) Fuse contiguous dimensions together
    3) Reorder dimensions based on stride orders

Optional argument extra_indexing_constraints can be used to append additional
indexing expressions to existing ones derived from buffer's body. This can be useful
to fuse scheduler nodes with compatible ranges, e.g. (s0*s1*...,) and (s0, s1, s2, ...)
on CPU by preventing indexing simplifications and obtaining index/reduce ranges for
the scheduler node compatible with other nodes.
Optional argument recompute_sizes_body_func can be used to recompute sizes and body
on the default body. This can be useful to append additional loop transformations.
c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r¤   Úx_varsúSequence[sympy.Symbol]Úsupport_varsr
  rç   Úsimplify_loopsr¸   r¦   údtuple[list[int], Callable[[Sequence[int]], Sequence[int]], Callable[[Sequence[int]], Sequence[int]]]r“   )r§   s   "rœ   r¨   Ú9ComputedBuffer.simplify_and_reorder.<locals>.__annotate__Ä  s:   € ÷ 4	/ñ 4	/Ø*ð4	/à0ð4	/ð !ð4	/ð !ð	4	/ð

ñ4	/r›   c           	     óô  <€ SP                  WVS4      w  rEpSP                  4       R 8X  do   \        V4      ^8X  d_   \        \	        \        V4      4      4      pV! V4      ^ ,          ^ 8w  d.   V Uu. uF  q‚V,          NK  	  pp\        V4      p\        V4      pV! V 4      p V'       dE   \        P                  P                  P                  V V\        SW4      4      w  rIp
\        Wi4      pMTpWKV3# u upi )r€  )Ú_apply_loop_reorderingr+  rð   rÅ   rñ   rÿ   rø   r{   r9  r:  Ú_simplify_loopsrR   r	  )rÈ  rÊ  r
  rË  ÚnewsizesÚreindex0r  ræ   rò   r  Ú_prunerô   Úindex_formulasÚmemory_addrsrì  s   &&&&        €€€rœ   Úsimplify_and_reorderÚAComputedBuffer.simplify_and_reorder.<locals>.simplify_and_reorderÄ  sï   ø€ ð ,0×+FÑ+FØ e¨\ó,Ñ(ˆH ð* ×&Ñ&Ó(¨EÔ1´c¸%³jÀA´oÜœU¤3 u£:Ó.Ó/�ñ ˜E“? 1Õ%¨Ô*Ù27Ó8±%¨Q a§ ±%�HÐ8Ü+¨EÓ2�HÜ.¨uÓ5�Hñ ˜fÓ%ˆFçÜ-.¯W©W×-=Ñ-=×-MÑ-MØØÜ,¨^¸VÓNó.Ñ*� Fô
 *¨(Ó=‘à"�Ø hÐ.Ð.ùò!  9s   Á2C5Úprž   )rw  Úindexing_exprsrÈ   r½  r¸  rÓ   r3  Úget_write_exprsr{   r9  r$  rO   ÚPREFER_STORE_LOOP_ORDERÚextendÚget_read_exprsrq   rT  rM   Úloop_ordering_after_fusionrN   Úindex_vars_no_squeezerZ   )rì  rÃ  rÅ  r¿  rÀ  rz  r²  r¾  Úexpected_var_rangesr¾  Úextra_indexing_exprrÖ  rÊ  Úshould_merge_loopsÚiter_rangesÚiter_reindexr&  Úreduce_rangesÚreduce_reindexÚ	iter_varsr½  rÔ  rÕ  s   f&&                  @@rœ   rÖ  Ú#ComputedBuffer.simplify_and_reorder‹  sþ  ú€ ð4 ×'Ñ'Ó)ñ		
Ù%ˆZØÙ%ˆZ÷ %ñ
 *ØÐ)¨4¸kÐ1Jóñ	Ù)�ØÙ)�ð
 9˜4×.Ñ.×5Ñ5Ó7Ð8ˆØ%Ò1Ø"&§/¡/ÐØ"×&GÑ&GÔGÜ$à+Ø2×9Ñ9ðóð ð 6×;Ò;ó#Ù;�aÈÑ?V—�Ñ;ð  ð #ð Ð1Õ1ˆNà0˜×-Ñ-Ó/Ð0ˆÜ�w‰w×"Ñ" 4¬×)OÑ)O×PÒPØ×Ñ × 3Ñ 3Ó 5Ô6÷4	/ò 4	/ðl "Õ/ˆä” tÓ,Ó-Ô-×VÐV´V×5VÑ5VÔ1Vð 	ñ (<ØØØØó	(
Ñ$ˆ 1ñ ,@Ø {ó,
Ñ(ˆ�~ qô
 0<×/QÒ/QØØØô0
Ñ,Ñ ˆ�K *ô
 ØÙ˜)Ó$¡n°[Ó&AÐBØØØó
ˆð ˜]Ð+¨TÐ1Ð1ùò#s   ÂGÂ&Gc               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r¤   r²  rÉ  rÊ  r
  rç   rÕ  r°  Úpriority_idxr©  r¦   rÌ  r“   )r§   s   "rœ   r¨   ru    sL   € ÷ (Bñ (BØ*ð(Bà,ð(Bð ð(Bð !ð	(Bð
 'ð(Bð
ñ(Br›   c           
     ó–  € ^RI Hp Vf   . p V Uu. uF-  p\        P                  P                  P                  W`V4      NK/  	  pp\        V4      \        V4      8X  d!   \        V^ ,          4      \        V 4      8X  g   \        R4      h\        \        V! WrV4      4      4      pV U	u. uF  q’V	,          NK  	  pp	V\%        V4      \'        V4      3# u upi   \         d`    \        P                  '       d*   \        P                  R\        \!        Y4      4      T4       \        \#        \        T4      4      4      p Lœi ; iu up	i )zE
Shuffle the order of loops around to hopefully improve performance.
r¯  zSExpected len(strides) == len(memory_addrs) and len(strides[0]) == len( index_vars )z%Did not simplify complex index:
%s
%s)r±  r°  r{   r9  r:  r0  rð   rÓ   rÅ   rW	  Ú	ExceptionrM   r/  r.  ÚwarningrÇ   r÷   rñ   rÿ   rø   )
r²  rÊ  r
  rÕ  rê  r°  r]  rŠ  ræ   rò   s
   &&&&&     rœ   rÏ  Ú%ComputedBuffer._apply_loop_reordering  s&  € õ 	/àÒØˆLð	,ñ )óá(�Dô —‘× Ñ ×-Ñ-¨dÀÖMÙ(ð ð ô
 �G“¤ LÓ 1Ô1´c¸'À!½*³oÌÈZËÔ6Xä$Øióð ô œ¡/°'À,Ó"OÓPÓQˆEñ $)Ó)¡5˜a�q—�¡5ˆÐ)Ø”l 5Ó)¬?¸5Ó+AÐAÐAùò)øô ô 	,Ü�|�|ˆ|Ü—‘Ø=Üœ˜ZÓ/Ó0Ø ôô
 œœs 5›zÓ*Ó+ŠEð	,üò *s0   ŽC ’3CÁA!C Â*EÃC Ã EÃ:AEÅEc               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   ru  G  ó   € ÷ .ñ . Nñ .r›   c                	ó6   € V P                   P                  4       # rª   )r‘  rå  rë  s   &rœ   rå  Ú!ComputedBuffer.get_pointwise_sizeG  ó   € Ø�y‰y×+Ñ+Ó-Ð-r›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   ru  J  rð  r›   c                	ó6   € V P                   P                  4       # rª   ©r‘  r1  rë  s   &rœ   r1  Ú!ComputedBuffer.get_reduction_sizeJ  ró  r›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   ru  M  ó   € ÷ .ñ . Jñ .r›   c                	ó6   € V P                   P                  4       # rª   ©r‘  r+  rë  s   &rœ   r+  Ú!ComputedBuffer.get_reduction_typeM  ró  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   ru  P  s   € ÷ ,ñ ,˜$ñ ,r›   c                	ó6   € V P                   P                  4       # rª   )r‘  r”  rë  s   &rœ   r;  ÚComputedBuffer.is_no_opP  s   € Ø�y‰y×)Ñ)Ó+Ð+r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   ru  S  ó   € ÷ ñ  ñ r›   c                	ó   € R # rR  r“   rë  s   &rœ   r'  ÚComputedBuffer.should_allocateS  r  r›   c               ó    € V ^8„  d   QhRRRR/# r>  r“   )r§   s   "rœ   r¨   ru  V  s   € ÷ 4ñ 4¨ð 4¸&ñ 4r›   c                ó8   € V P                   P                  V4      # )re  ©r‘  r@  r©  s   &&rœ   r@  Ú!ComputedBuffer.constant_to_deviceV  s   € à�y‰y×+Ñ+¨FÓ3Ð3r›   r�  r®  ©NNrª   )(r•   r–   r—   r˜   rS  r™   rp  r¦  r§  r¨  r©  rW  rX  r{  rV  r€  r„  r  r	  r
  r  re   r'  r·  rœ  r˜  r  r  rd   rw  rÖ  rÏ  rå  r1  r+  r;  r'  r@  rš   r  r  s   @rœ   rà  rà  ™  s0  ø‡ ñð ƒKØ%*€N�NÓ*ð #€K�Ó"Ø48ÐÐ1Ó8Ø26ÐÐ/Ó6Ø<@ÐÐ 9Ó@à×Ñô'%ó ð'%ðR Ø×Ñô6ó ó ð6õ	õ%õ%õ*õñ* Ð,Ó-öó .ð÷2	%ð 	%õIõGõ(õT%ð ô Jó ð J÷DO2ðb ö(Bó ð(BõT.õ.õ.õ,õ÷4ó 4r›   rà  c                  óD   € ] tR tRt$ RtR]R&   R]R&   R]R&   R]R&   R	tR
# )ÚFinalizeCodegenResulti[  zNStructured result from TemplateBuffer._finalize_codegen for external backends.r�   Úsourcerº   ÚimportsÚcall_preambleÚ	call_argsr“   Nrn  r“   r›   rœ   r
  r
  [  s   ‡ áXàƒKØÓØÓØ×r›   r
  c                  ó&   € ] tR tRtRtR R ltRtR# )Ú_HasAliasingOrMutationie  zôMinimal view of scheduler.BaseSchedulerNode used by prologue fusion.

ir.py cannot import scheduler (circular), so this documents the single
method consumed by has_aliasing_or_mutation_for_prologue_fusion instead
of typing the argument as Any.
c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   Ú#_HasAliasingOrMutation.__annotate__m  s   € ×3Ñ3¨$Ñ3r›   c                	ó   € R # rª   r“   rë  s   &rœ   Úhas_aliasing_or_mutationÚ/_HasAliasingOrMutation.has_aliasing_or_mutationm  s   € ±r›   r“   N)r•   r–   r—   r˜   rS  r  rš   r“   r›   rœ   r  r  e  s   † ñ÷ 4Ñ3r›   r  c                  ó  a € ] tR tRtRtR&R V 3R lllt]R R l4       tR R	 ltR
 R lt	R'R R llt
R R ltR R ltR R ltR(R R lltR R ltR R ltR R ltR R lt]R R l4       t]R RR!RR"R/R# R$ ll4       tR%tV ;t# ))rã  ip  z¸
Base class for template operators that support epilogue and prologue fusion.
Subclasses: TritonTemplateBuffer (built-in Triton templates),
HelionTemplateBuffer (Helion kernels), etc.
Nc               ó4   € V ^8„  d   QhRRRRRRRRR	R
RRRR/# )r¤   r’  rS  r®  r¯  Úmake_kernel_renderrq  Úmutated_inputsúIterable[IRNode] | NoneÚallowed_prologue_inpsúOrderedSet[str] | NoneÚnamed_inputszdict[str, IRNode] | Noner¦   r¿   r“   )r§   s   "rœ   r¨   ÚTemplateBuffer.__annotate__w  sP   € ÷ 17ñ 17àð17ð !ð17ð 6ð	17ð
 0ð17ð  6ð17ð /ð17ð 
ñ17r›   c           	     	ó¸  <€ \         S
V `  R VR7       \        P                  V4      V n        W0n        \        P                  P                  V 4      V n	        \        P                  P                  V 4       / V n        / V n        / V n        V'       d   \        V4      M/ V n        W@n        . V n        Vey   V P                  ^ ,          p\%        V\&        4      '       g   \)        \+        V4      4      hVP-                  4       pV U	u. uF  p	\/        \1        VR7      W�4      NK  	  up	V n        T;'       g    \3        4       V n        R V n        R V n        R # u up	i )NrI  rÙ  )rÍ  r/  rá  Úunwrap_storager®  r  r{   r9  Úregister_bufferrŽ   Úregister_operationr   Úepilogue_fusable_outputsÚ_multi_output_childrenrÇ   Ú_named_inputsr  Úmutation_outputsr«   r¡   rÓ   r�   rB  ÚMutationOutputr~
  rD   r  Úallow_epilogue_fusionÚallow_prologue_fusion)rì  r’  r®  r  r  r  r  Úfirst_inputr8  r  rÏ  s   &&&&&&&   €rœ   r/  ÚTemplateBuffer.__init__w  s4  ø€ ô 	‰Ñ˜d¨6ÐÔ2Ü"×1Ñ1°&Ó9ˆŒØ"4ÔÜ—G‘G×+Ñ+¨DÓ1ˆŒ	Ü	�‰×"Ñ" 4Ô(à.0ˆÔð 9;ˆÔ%ð ?AˆÔ#÷
 #/ŒD�Ô°Bð 	Ôð
 -ÔØ68ˆÔØÒ%ØŸ+™+ a�.ˆKÜ˜k¬6×2Ò2Ü$¤T¨+Ó%6Ó7Ð7Ø ×+Ñ+Ó-ˆFñ *ó%á)�Cô œz°Ô8¸#ÖDÙ)ñ%ˆDÔ!ð "×1Ð1¤Z£\ð 	Ô"ð
 37ˆÔ"Ø26ˆÖ"ùò%s   ÄEc               ó   € V ^8„  d   QhRR/# rQ  r“   )r§   s   "rœ   r¨   r  «  s   € ÷ 'ñ '�{ñ 'r›   c                	óŒ   € \        V P                  \        4      '       d   \        R 4      hV P	                  4       P
                  # )z1Multi-output templates do not have a single dtype)r«   r’  ÚMultiOutputLayoutrY  r>  r7  rë  s   &rœ   r7  ÚTemplateBuffer.dtypeª  s9   € ä�d—k‘kÔ#4×5Ò5Ü%ØCóð ð �‰Ó ×&Ñ&Ð&r›   c               ó   € V ^8„  d   QhRR/# r
  r“   )r§   s   "rœ   r¨   r  ²  s   € ÷ 8ñ 8Ð!8ñ 8r›   c                	ó&   € V P                  R R7      # )T©Ú	normalize)rW   rë  s   &rœ   r  ÚTemplateBuffer.get_read_writes²  s   € Ø×'Ñ'°$Ð'Ó7Ð7r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   r3  r¸   r¦   zOrderedSet[dependencies.Dep]r“   )r§   s   "rœ   r¨   r  µ  s   € ÷ ñ °ð Ð9Uñ r›   c           	     óÞ  aa€ \        4       pV P                   FÐ  p\        V\        \        34      '       g   \        \        V4      4      hVo\        SP                  \        4      '       g   \        \        SP                  4      4      hSP                  P                  4       oR VV3R llpV\        P                  ! VSP                  4       RVR7      P                  ,          pKÒ  	  V# )z(Build read dependencies from all inputs.c               ó$   € V ^8„  d   QhRRRRRR/# ©r¤   rë   úSequence[Any]rç  r¦   r   r“   )r§   s   "rœ   r¨   Ú;TemplateBuffer._read_deps_from_inputs.<locals>.__annotate__À  s&   € ÷ Dñ D˜]ð D°Mð DÀcñ Dr›   c                ó�   <€ \        V4      ^ 8w  d   \        R4      h\        P                  ! SP	                  4       S! V 4      4      # )r   úExpected len(rindex) == 0)rð   rÓ   ry   r¯  r¼  )rë   rç  rµ  Úinp_indexers   &&€€rœ   ÚdummyÚ4TemplateBuffer._read_deps_from_inputs.<locals>.dummyÀ  s7   ø€ Ü�v“; !Ô#Ü(Ð)DÓEÐEÜ—x’x §¡£±¸EÓ0BÓCÐCr›   r2  r“   )rD   r®  r«   r˜  r»  rÓ   r�   r’  r_  r¾  rN   rW   r<  r  )rì  r3  r  Úinp_rawr>  rµ  r=  s   &&   @@rœ   Ú_read_deps_from_inputsÚ%TemplateBuffer._read_deps_from_inputsµ  sµ   ù€ ä.8«lˆØ—{”{ˆGÜ˜g¬¼Ð'@×AÒAÜ$¤T¨'£]Ó3Ð3Ø,3ˆCÜ˜cŸj™j¬&×1Ò1Ü$¤T¨#¯*©*Ó%5Ó6Ð6ØŸ*™*×1Ñ1Ó3ˆK÷Dñ Dð
 ”\×5Ò5Ø�s—|‘|“~ r°Yôç‰eõŠEñ #ð  ˆr›   c               ó    € V ^8„  d   QhRRRR/# )r¤   r3  r¸   r¦   r  r“   )r§   s   "rœ   r¨   r  Ê  s   € ÷ %ñ %¨Tð %Ð>Uñ %r›   c           	     óH  aa€ \        V P                  \        4      '       dy   \        \        P
                  ! V P                  4       \        P                  ! ^ 4      RRR7      .4      p\        P                  ! V P                  V4      V\        4       RRR7      # V P                  4       oV P                  4       P                  4       oR VV3R llp\        P                  ! W0P                  4       RVR7      pV;P                  V P                  V4      ,          un        V# )a…  Extract read/write dependencies for this TemplateBuffer.

When the layout is MultiOutputLayout (multi-output templates), the
buffer itself has no data layout, so we cannot build an indexer.
Instead, synthesize a trivial write dep and derive read deps from
the named tensor inputs (``_named_inputs``).  For single-output
templates with a concrete layout, fall through to the standard path.
)Ú	var_namesr5  N)r  r•  r–  r  r½  c               ó$   € V ^8„  d   QhRRRRRR/# r8  r“   )r§   s   "rœ   r¨   Ú8TemplateBuffer.extract_read_writes.<locals>.__annotate__æ  ó!   € ÷ 	;ñ 	;˜ð 	;°ð 	;À#ñ 	;r›   c                óv   <€ \        V4      ^ 8w  d   \        R4      h\        P                  ! SS! V 4      R4      # ©r   r<  Úfake©rð   rÓ   ry   r\  ©rë   rç  rV  rŽ   s   &&€€rœ   r>  Ú1TemplateBuffer.extract_read_writes.<locals>.dummyæ  ó2   ø€ Ü�6‹{˜aÔÜ$Ð%@ÓAÐAÜ—9’9˜T¡7¨5£>°6Ó:Ð:r›   r2  r“   )r«   r’  r.  rD   rN   r­  r¼  rÌ   r#   r—  rA  r>  r¾  rW   r<  r  )rì  r3  r•  r>  ÚdepsrV  rŽ   s   &&   @@rœ   rW   Ú"TemplateBuffer.extract_read_writesÊ  sè   ù€ ô �d—k‘kÔ#4×5Ò5Ü3=ä ×*Ò*ØŸ™›¬¯ª°qÓ)9ÀRÈbôðó4ˆFô  ×*Ò*Ø×1Ñ1°)Ó<ØÜ&›LØØôð ð �}‰}‹ˆØ—/‘/Ó#×0Ñ0Ó2ˆ÷	;ñ 	;ô
 ×/Ò/Ø—=‘=“? B°)ô
ˆð 	�
Š
�d×1Ñ1°)Ó<Õ<�
Øˆr›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   r  ñ  rÔ  r›   c                	ó6   € \         P                  P                  # rª   )rÌ   rò  rg  rë  s   &rœ   r1  Ú!TemplateBuffer.get_reduction_sizeñ  s   € Ü�w‰w�{‰{Ðr›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   r  ô  rQ  r›   c                	ó   € R # rª   r“   rë  s   &rœ   r+  Ú!TemplateBuffer.get_reduction_typeô  r  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r  ÷  r  r›   c                	ó   € R # rR  r“   rë  s   &rœ   r'  ÚTemplateBuffer.should_allocate÷  r  r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rÃ  rÄ  rÅ  rq  r¦   z9tuple[tuple[Sequence[Expr], list[Expr]], LoopBody | None]r“   )r§   s   "rœ   r¨   r  ú  s)   € ÷ 
ñ 
à$Cð
ð $=ð
ð 
Cñ	
r›   c                	ó*   € V P                  4       . 3R 3# rª   r„  )rì  rÃ  rÅ  s   &&&rœ   rÖ  Ú#TemplateBuffer.simplify_and_reorderú  s$   € ð —‘“Øðð ð
ð 	
r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r    s   € ÷ :ñ :¨4ñ :r›   c                ó6   € \        V P                  \        4      # )zFWhether this template produces multiple outputs via MultiOutputLayout.)r«   r’  r.  rë  s   &rœ   Úis_multi_outputs_templateÚ(TemplateBuffer.is_multi_outputs_template  s   € ä˜$Ÿ+™+Ô'8Ó9Ð9r›   c               ó   € V ^8„  d   QhRR/# rý  r“   )r§   s   "rœ   r¨   r    s   € ÷ *ñ *¨?ñ *r›   c                	ó   € V P                   # rª   )r  rë  s   &rœ   Úget_allowed_prologue_inpsÚ(TemplateBuffer.get_allowed_prologue_inps  s   € Ø×)Ñ)Ð)r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   Úscheduler_noder  r¦   r¸   r“   )r§   s   "rœ   r¨   r    s   € ÷ 	9ñ 	9Ø4ð	9à	ñ	9r›   c                ó"   € VP                  4       # )a  Return whether this template's aliasing/mutation blocks prologue fusion.

The default preserves the scheduler's conservative behavior. External
template subclasses may override this when they can prove a prologue
producer only feeds independent, non-mutated template inputs.
)r  )rì  rg  s   &&rœ   Ú,has_aliasing_or_mutation_for_prologue_fusionÚ;TemplateBuffer.has_aliasing_or_mutation_for_prologue_fusion  s   € ð ×6Ñ6Ó8Ð8r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   Úhook_outputszdict[str, str]r¦   zFinalizeCodegenResult | Noner“   )r§   s   "rœ   r¨   r    s   € ÷ ñ Ø*ðà	%ñr›   c                ó   € R# )ah  Called after epilogue/prologue subgraph codegen with rendered hook outputs.

``hook_outputs`` maps placeholder keys (e.g. ``<STORE_OUTPUT_0>``,
``<LOAD_INPUT_x>``) to the Triton code generated by Inductor for
each fused subgraph.

Return a ``FinalizeCodegenResult`` to provide custom source code and
call metadata, or ``None`` to use the default codegen path.
Nr“   )rì  rl  s   &&rœ   Ú_finalize_codegenÚ TemplateBuffer._finalize_codegen  s   € ñ r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   rë  r    r¦   r¡   r“   )r§   s   "rœ   r¨   r  (  s   € ÷ 	ñ 	¨	ð 	°fñ 	r›   c                óX  € \        V\        4      '       d-   \        VP                  \        4      '       d   VP                  # \        P                  V4      p\        V\        4      '       d   VP                  p\        VP                  \        4      '       d   VP                  4        V# )zWRealize a TensorBox, preserving MultiOutput layout (unlike ExternKernel.realize_input).)
r«   r    r‘  ÚMultiOutputr+  Úrealize_inputrº  r’  r?  rì  )rê  rë  r  s   && rœ   Úrealize_template_inputÚ%TemplateBuffer.realize_template_input'  sr   € ô �bœ)×$Ò$¬°B·G±G¼[×)IÒ)IØ—7‘7ˆNÜ×+Ñ+¨BÓ/ˆÜ�fœj×)Ò)Ø—[‘[ˆFÜ�f—m‘m¤^×4Ò4Ø× Ñ Ô"Øˆr›   Údirect_alias_at_leafÚon_tensor_leafÚon_non_tensor_leafc               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r¤   Útemplate_bufrã  Ú
structuredr‘   rv  zdict[int, IRNode] | Nonerw  zFCallable[[str, MultiOutput, list[tuple[type, int]], int], None] | Nonerx  zCallable[[int], None] | Noner¦   ztuple[TensorBox, ...]r“   )r§   s   "rœ   r¨   r  4  sF   € ÷ )+ñ )+à$ð)+ð ð)+ð
 7ð)+ðð)+ð 9ð)+ð 
ñ)+r›   c               ó€   aaaaaaa€ / o\         P                  ! 4       oR VVVVVVV3R llo\        S! V. 4      4      # )zLWalk a structured output tree, creating MultiOutput nodes for tensor leaves.c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r£  r‘   r  zlist[tuple[type, int]]r¦   úlist[TensorBox]r“   )r§   s   "rœ   r¨   Ú8TemplateBuffer.build_multi_outputs.<locals>.__annotate__B  s"   € ÷ 	ñ 	˜ð 	Ð*@ð 	À_ñ 	r›   c           
     ó”  <€ \        V \        \        34      '       d@   . p\        V 4       F,  w  r4VP	                  S! V. VO\        V 4      V3N4      4       K.  	  V# \        S
4      p\        V \        P                  4      '       dµ   S	'       d%   VS	9   d   \        P                  S	V,          4      .# \        V 4      pVS9   d   SV,          .# \        \        P                  V 4      SV4      pVSP                  VP!                  4       &   Se   S! VP!                  4       WqV4       \        V4      pVSV&   V.# Se	   S! V4       . # rª   )r«   rÅ   rÆ   r  rÜ  r�   r�  rD  ÚTensorr    rê  Úidrr  ÚFallbackKernelÚtensor_to_layoutr$  r¼  )r£  r  rM  rò   ÚitemÚleaf_idxÚtidÚmorë  rv  Úleaf_counterrx  rw  Úseen_outputsrz  Úwalks   &&       €€€€€€€rœ   r‹  Ú0TemplateBuffer.build_multi_outputs.<locals>.walkB  s0  ø€ Ü˜&¤4¬ -×0Ò0Ø+-�Ü(¨Ö0‘G�AØ—N‘N¡4¨Ð.K°Ð.K¼$¸v»,ÈÐ9JÐ.KÓ#LÖMñ  1à�Ü˜LÓ)ˆHÜ˜&¤%§,¡,×/Ò/ß'¨HÐ8LÔ,LÜ%×,Ñ,Ð-AÀ(Õ-KÓLÐMÐMÜ˜“j�Ø˜,Ô&Ø(¨Õ-Ð.Ð.Ü Ü"×3Ñ3°FÓ;¸\È7ó�ð FH�×3Ñ3°B·K±K³MÑBØ!Ò-Ù" 2§;¡;£=°"¸xÔHÜ˜r“]�Ø$&�˜SÑ!Ø�t�à!Ò-Ù" 8Ô,ØˆIr›   )rP  ÚcountrÆ   )	rê  rz  r{  rv  rw  rx  r‰  rŠ  r‹  s	   &f&ddd@@@rœ   Úbuild_multi_outputsÚ"TemplateBuffer.build_multi_outputs3  s4   þ€ ð .0ˆÜ —’Ó(ˆ÷	ö 	ô6 ‘T˜* bÓ)Ó*Ð*r›   )r$  r%  r(  r)  r  r   r#  r®  r  r  r&  rŽ   )NNNr®  r  )r•   r–   r—   r˜   rS  r/  rY  r7  r  rA  rW   r1  r+  r'  rÖ  r`  rd  ri  rn  r:  rt  rŽ  rš   r  r  s   @rœ   rã  rã  p  s¦   ø† ñ÷17ò 17ðf ô'ó ð'õ8õ÷*%õNõõ÷
õ:õ*õ	9õð ô	ó ð	ð ð)+ð
 :>ð)+ð ð)+ð <@ö)+ó ö)+r›   rã  c                  óv   a € ] tR tRtRR V 3R lllt]! R 4      RR V 3R lll4       tR R ltR R	 ltR
t	V ;t
# )ÚTritonTemplateBufferi`  c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r¤   r’  r_  r®  r¯  r  zCallable[_P, _T] | Noner  r  r  r  r¦   r¿   r“   )r§   s   "rœ   r¨   Ú!TritonTemplateBuffer.__annotate__a  sF   € ÷ >ñ >àð>ð !ð>ð 4ð	>ð
 0ð>ð  6ð>ð 
ñ>r›   c                ó¸   <€ \         SV `  VVVVVR7       V P                  f   \        R4      hV P                  V P                  /V n        RV n        RV n        R# )a·  
NOTE:[TritonTemplates with multiple outputs]
We want the ability for TritonTemplates to output multiple tensors. Triton
kernels have no notion of outputs and this is done by creating tensors that
are then mutated by the kernel. Currently our STORE_OUTPUT codegen doesn't
support creating multinode outputs for triton templates.
We work around this by creating an extra input buffer during the lowering
and we mark them as mutated inputs.
)r  r  NzExpected self.name is not None)rÍ  r/  rŽ   rÓ   r#  Úsubgraph_inpsÚsubgraph_outs)rì  r’  r®  r  r  r  rÏ  s   &&&&&&€rœ   r/  ÚTritonTemplateBuffer.__init__a  sc   ø€ ô" 	‰ÑØØØØ)Ø"7ð 	ô 	
ð �9‰9ÒÜ Ð!AÓBÐBØ)-¯©°D·I±IÐ(>ˆÔ%à@DˆÔØ9=ˆÖr›   c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   r“  �  s   € ÷ ñ Ø!ðà	!ñr›   c                	óJ  <€ \         SV `  V4      pV P                  '       d   V P                  M. pV P                  '       d   V P                  M. pV F|  p\	        V\
        4      '       d   VP                  \        WQ4      4       K5  \	        V\        4      '       d#   VP                  VP                  V4      4       Km  Vf   Ks  \        R4      h	  V FJ  p\	        V\        4      '       d#   VP                  VP                  V4      4       K;  Vf   KA  \        R4      h	  V# )NzExpected inp is NoneúExpected out is None)
rÍ  r'  r–  r•  r«   r"   Úupdater+   r¡   rÓ   )rì  r³  Úresr–  r•  rµ  r'  rÏ  s   &&     €rœ   r'  Ú)TritonTemplateBuffer.get_free_symbol_uses€  sê   ø€ ô ‰gÑ*¨=Ó9ˆØ.2×.@×.@Ð.@˜×*Ò*ÀbˆØ.2×.@×.@Ð.@˜×*Ò*Àbˆã ˆCÜ˜#œt×$Ò$Ø—
‘
Ô+¨CÓ?Ö@Ü˜C¤×(Ò(Ø—
‘
˜3×3Ñ3°MÓBÖCà”?Ü(Ð)?Ó@Ð@ñ !ó !ˆCÜ˜#œv×&Ò&Ø—
‘
˜3×3Ñ3°MÓBÖCà”?Ü(Ð)?Ó@Ð@ñ !ð ˆ
r›   c               ó   € V ^8„  d   QhRR/# r¡  r“   )r§   s   "rœ   r¨   r“  š  ó   € ÷ .ñ .˜\ñ .r›   c                	ó    € V .V P                   O# rª   ©r&  rë  s   &rœ   r¤  Ú TritonTemplateBuffer.get_outputsš  ó   € ØÐ-�t×,Ñ,Ð-Ð-r›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   r“  �  s   € ÷ ñ ˜ñ r›   c                	ó&   € R V P                    R2pV# )zTritonTemplateBuffer(layout=rR  r½  )rì  r'  s   & rœ   rÓ  ÚTritonTemplateBuffer.__str__�  s   € Ø,¨T¯[©[¨M¸Ð;ˆØˆ
r›   )r#  r•  r–  r  r®  )r•   r–   r—   r˜   r/  re   r'  r¤  rÓ  rš   r  r  s   @rœ   r‘  r‘  `  s;   ø† ÷>ò >ñ> Ð2Ó3÷ñ ó 4ðõ2.÷ó r›   r‘  c                  óž   a € ] tR tRtRtR V 3R lltR R ltR R ltR	 R
 ltR R lt	R R lt
R R ltR R ltR R ltR R ltRtV ;t# )ÚChoiceCalleri¥  a  
Represents a possible choice used in autotune_process.py.
During autotuning, self.benchmark() is first called to get benchmark result,
and if this choice is selected, self.output_node() is called to get the output_node.

Children classes: TritonTemplateCaller, CUTLASSTemplateCaller.
c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r¤   rŽ   r�   r´   r¢  r’  r_  Údescriptionr¦   r¿   r“   )r§   s   "rœ   r¨   ÚChoiceCaller.__annotate__®  s<   € ÷ 1ñ 1àð1ð "ð1ð ð	1ð
 ð1ð 
ñ1r›   c                	ó¶   <€ \         SV `  4        Wn        W0n        W n        W@n        R V n        R V n        / V n        RV n	        RV n
        / V n        / V n        R# ©FN)rÍ  r/  rŽ   r’  r´   rª  ÚfailedÚ_benchmark_with_cudagraphsr   r   ÚdecompositionÚdecomposition_kwargsÚconfig_patches)rì  rŽ   r´   r’  rª  rÏ  s   &&&&&€rœ   r/  ÚChoiceCaller.__init__®  s`   ø€ ô 	‰ÑÔØŒ	ØŒØ&Ôð 'ÔØ!ˆŒà05ˆÔ'ð /1ˆÔà/3ˆŒØ8<ˆÔØ79ˆÔ!Ø.0ˆÖr›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rÜ   r   r'  r0  r¦   rA  r“   )r§   s   "rœ   r¨   r«  É  s&   € ÷ Lñ L˜sð L¨ð L¸%ñ Lr›   c               	ó  aa€ V P                  4       oV P                  '       d   \        P                  ! VV3R  l4      # \        P
                  '       d   \        VV3R l4      # \        P                  ! SSRV/RR7      # )c                 ó   <€ S ! S!  # rª   r“   ©ÚalgorÜ   s   €€rœ   r  Ú(ChoiceCaller.benchmark.<locals>.<lambda>Ì  s	   ø€ ÁTÈ4Â[r›   c                 ó   <€ S ! S!  # rª   r“   r·  s   €€rœ   r  r¹  Î  s	   ø€ ±D¸$²Kr›   r'  NrÙ  )Úto_callabler¯  r_   Úbenchmark_gpu_with_cuda_graphrM   Ú/profile_bandwidth_with_do_bench_using_profilingrj   Ú	benchmark)rì  r'  rÜ   r¸  s   &$j@rœ   r¾  ÚChoiceCaller.benchmarkÉ  sb   ù€ Ø×ÑÓ!ˆØ×*×*Ð*Ü×<Ò<Õ=PÓQÐQÜ×A×AÐAÜ+Õ,?Ó@Ð@Ü×$Ò$ T¨4°%¸°ÀdÔKÐKr›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   r«  Ñ  s   € ÷ "ñ "˜3ñ "r›   c                	ó   € \         hrª   re  rë  s   &rœ   Ú	call_nameÚChoiceCaller.call_nameÑ  rg  r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   r¶  r“   )r§   s   "rœ   r¨   r«  Ô  s   € ÷ "ñ "Ð/ñ "r›   c                	ó   € \         hrª   re  rë  s   &rœ   r»  ÚChoiceCaller.to_callableÔ  rg  r›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   r«  ×  s   € ÷ ñ  ñ r›   c                ó"   € V P                  4       # )z‘
Hash key for the underlying kernel. By default, we assume there are no
runtime params, so kernel hash key defaults to choice caller's hash key.
)Úhash_keyrë  s   &rœ   Úkernel_hash_keyÚChoiceCaller.kernel_hash_key×  s   € ð
 �}‰}‹Ðr›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   r«  Þ  s   € ÷ "ñ "˜#ñ "r›   c                	ó   € \         hrª   re  rë  s   &rœ   rÉ  ÚChoiceCaller.hash_keyÞ  rg  r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   r    r“   )r§   s   "rœ   r¨   r«  á  s   € ÷ "ñ "˜Yñ "r›   c                	ó   € \         hrª   re  rë  s   &rœ   r«  ÚChoiceCaller.output_nodeá  rg  r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   z6dict[str, PrimitiveInfoType | list[PrimitiveInfoType]]r“   )r§   s   "rœ   r¨   r«  ä  s   € ÷ ñ ÐQñ r›   c                ó   € / # )zRInformation returned here is logged to the autotune log file when that is enabled.r“   rë  s   &rœ   Ú	info_dictÚChoiceCaller.info_dictä  r&  r›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   r«  è  s   € ÷ $ñ $ #ñ $r›   c                	ó   € R # )Úunsupported_choicer“   rë  s   &rœ   Úautoheuristic_idÚChoiceCaller.autoheuristic_idè  s   € Ù#r›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   r«  ë  s   € ÷ ñ ˜Tñ r›   c                ó   € RV n         R# )zp
Mark the choice as failed so that it can be
removed later. Useful for when we decouple
compilation and tuning.
TN)r®  rë  s   &rœ   Úmark_failedÚChoiceCaller.mark_failedë  s   € ð ˆŽr›   )r¯  r   r²  r°  r±  rª  r®  r   r´   r’  rŽ   )r•   r–   r—   r˜   rS  r/  r¾  rÂ  r»  rÊ  rÉ  r«  rÔ  rÙ  rÝ  rš   r  r  s   @rœ   r¨  r¨  ¥  sE   ø† ñ÷1ð 1õ6Lõ"õ"õõ"õ"õõ$÷ó r›   r¨  c                  ó"   € ] tR tRtR R ltRtR# )ÚTritonTemplateCallerBaseiô  c               ó   € V ^8„  d   QhRR/# )r¤   r¦   r   r“   )r§   s   "rœ   r¨   Ú%TritonTemplateCallerBase.__annotate__õ  s   € ÷ "ñ "¨ñ "r›   c                	ó   € \         hrª   re  rë  s   &rœ   Úget_make_kernel_renderÚ/TritonTemplateCallerBase.get_make_kernel_renderõ  rg  r›   r“   N)r•   r–   r—   r˜   rä  rš   r“   r›   rœ   rà  rà  ô  s   † ÷"ñ "r›   rà  ztype | NoneÚ_NVUniversalGemmCallerClassc               ó    € V ^8„  d   QhRRRR/# )r¤   Úchoicer¨  r¦   r¸   r“   )r§   s   "rœ   r¨   r¨   ü  s   € ÷ 	;ñ 	;¨|ð 	;Àñ 	;r›   c                óh   € \         f
    ^ RIHp Vs \	        V \         4      #   \         d     R# i ; i)N©ÚNVUniversalGemmCallerF)ræ  Ú)torch._inductor.codegen.nv_universal_gemmrë  ÚImportErrorr«   )rè  rë  s   & rœ   Ú"_is_output_plannable_nvgemm_choicerî  ü  s:   € ä"Ò*ð	ÝWà*?Ð'ô �fÔ9Ó:Ð:øô ô 	Úð	ús   Š" ¢1°1c                  óö   a € ] tR tRtRtR V 3R llt]R R l4       t]R R l4       tRR	 R
 llt	]
P                  R R l4       tR R lt]
P                  R R l4       tR R ltRR R lltR R ltRtV ;t# )ÚMultiTemplateBufferi  a3  
Represents a Buffer with multiple backing implementation choices.

Choices can be TritonTemplates or ExternKernels. During scheduling if there is a potential
epilogue we will benchmark each of the choices with the epilogue to determine an implementation.
Otherwise, the fastest base choice will be chosen.
c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r¤   r’  r_  r®  r¯  Úchoice_timings_fnz1Callable[[int | None], dict[ChoiceCaller, float]]Úunfiltered_choicesúlist[ChoiceCaller]r  rþ  r¦   r¿   r“   )r§   s   "rœ   r¨   Ú MultiTemplateBuffer.__annotate__  sG   € ÷ 8ñ 8àð8ð !ð8ð Mð	8ð
 /ð8ð  /ð8ð 
ñ8r›   c                	óü   <€ \         SV `  VVR VR7       W0n        / V n        W@n        W n        \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      V n        / V n        R V n	        R V n
        R # )N)r’  r®  r  r  c              3  óü   "  € T Fr  p\        V\        4      ;'       gV    \        V4      ;'       gC    \        V\        P                  P
                  P                  4      ;'       d    VP                  x € Kt  	  R # 5irª   )r«   rà  rî  rD  r.  Úselect_algorithmÚExternKernelCallerÚhas_out_variant)r  rè  s   & rœ   r  Ú/MultiTemplateBuffer.__init__.<locals>.<genexpr>#  ss   é € ð %
ñ -�ô �vÔ7Ó8÷ ð Ü1°&Ó9÷ð ô ˜6¤5§?¡?×#CÑ#C×#VÑ#VÓW÷ +ð +Ø×*Ñ*ô	ó -ùs   ‚A<žA<±5A<Á'A<FT)rÍ  r/  Ú_choice_timings_fnÚ_choice_timingsÚ_choicesÚoriginal_inputsr  Ú_output_plannableÚ_make_kernel_rendersÚ_render_kindÚ_render_caller)rì  r’  r®  rò  ró  r  rÏ  s   &&&&&&€rœ   r/  ÚMultiTemplateBuffer.__init__  s�   ø€ ô 	‰ÑØØØ#Ø"7ð	 	ô 	
ð #4ÔØLNˆÔØ,>ŒØ%Ôß!$£ñ %
ñ -ó%
§§¢ñ %
ñ -ó%
ó "
ˆÔð <>ˆÔ!Ø(,ˆÔð 48ˆÖr›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rõ  3  s   € ÷ &ñ & $ñ &r›   c                ó   € V P                   # )zgTrue when all choices are TritonTemplates, NVUniversalGemmCallers, or Extern Kernels with out variants.)r   rë  s   &rœ   Úoutput_plannableÚ$MultiTemplateBuffer.output_plannable2  s   € ð ×%Ñ%Ð%r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   rô  r“   )r§   s   "rœ   r¨   rõ  8  s   € ÷ ñ Ð+ñ r›   c                	ó   € V P                   # rª   )rþ  rë  s   &rœ   r&  ÚMultiTemplateBuffer.choices7  s   € à�}‰}Ðr›   c               ó    € V ^8„  d   QhRRRR/# )r¤   Úhint_overriderÉ  r¦   zdict[ChoiceCaller, float]r“   )r§   s   "rœ   r¨   rõ  ;  s   € ÷ 3ñ 3Ø'ð3à	"ñ3r›   c                	ó„   € WP                   9  d   V P                  V4      V P                   V&   V P                   V,          # rª   )rý  rü  )rì  r  s   &&rœ   Úchoice_timingsÚ"MultiTemplateBuffer.choice_timings;  s<   € ð × 4Ñ 4Ô4Ø26×2IÑ2IÈ-Ó2XˆD× Ñ  Ñ/Ø×#Ñ# MÕ2Ð2r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   Úcallerrà  r¦   rt  r“   )r§   s   "rœ   r¨   rõ  C  s   € ÷ .ñ .Ð,Dð .Èñ .r›   c              #  	óÒ  "  € \        V\        P                  P                  P                  4      '       g   \        \        V4      4      hV P                  VP                  8w  d   \        R 4      hV P                  pV P                  pV P                  pVP                  4       V n        RV n	        Wn
         Rx € W n        W0n	        W@n
        R#   Y n        Y0n	        Y@n
        i ; i5i)ú%Expected self.layout == caller.layoutrZ  N)r«   rD  r.  rø  ÚTritonTemplateCallerrÓ   r�   r’  r  r  r  rä  )rì  r  ÚrenderÚ	prev_kindÚprev_callers   &&   rœ   Úswap_as_triton_callerÚ)MultiTemplateBuffer.swap_as_triton_callerB  sÃ   é € äØ”E—O‘O×4Ñ4×IÑI÷
ò 
ô !¤ f£Ó.Ð.Ø�;‰;˜&Ÿ-™-Ô'Ü Ð!HÓIÐIà×(Ñ(ˆØ×%Ñ%ˆ	Ø×)Ñ)ˆØ"(×"?Ñ"?Ó"AˆÔØ$ˆÔØ$Ôð	.Ûà&,Ô#Ø )ÔØ"-Öøð '-Ô#Ø )ÔØ"-Õüs   ‚B5C'Â8C Â<C'ÃC$Ã$C'c               ó    € V ^8„  d   QhRRRR/# )r¤   r  rà  r¦   r¿   r“   )r§   s   "rœ   r¨   rõ  X  s   € ÷ %ñ %Ð0Hð %ÈTñ %r›   c                	óª  € \        V\        P                  P                  P                  4      '       g   \        \        V4      4      hV P                  4       VP                  P                  8w  d   \        R 4      hV P                  4       VP                  P                  8w  d   \        R4      hVP                  4       V n        RV n        Wn        R# )ú.Expected self.get_size() == caller.layout.sizeú2Expected self.get_stride() == caller.layout.striderZ  N)r«   rD  r.  rø  r  rÓ   r�   r<  r’  r5  rn  r6  rä  r  r  r  )rì  r  s   &&rœ   Úfinalize_as_triton_callerÚ-MultiTemplateBuffer.finalize_as_triton_callerX  s�   € ÜØ”E—O‘O×4Ñ4×IÑI÷
ò 
ô !¤ f£Ó.Ð.Ø�=‰=‹?˜fŸm™m×0Ñ0Ô0Ü Ð!QÓRÐRØ�?‰?Ó §¡× 4Ñ 4Ô4Ü Ð!UÓVÐVØ"(×"?Ñ"?Ó"AˆÔØ$ˆÔØ$Ör›   c               ó    € V ^8„  d   QhRRRR/# )r¤   r  r¨  r¦   rt  r“   )r§   s   "rœ   r¨   rõ  f  s   € ÷ .ñ .¨Lð .¸^ñ .r›   c              #  	óž  "  € ^ RI Hp \        W4      '       g   \        R\	        V4       24      hV P
                  VP
                  8w  d   \        R4      hV P                  pV P                  pV P                  pVP                  4       V n        RV n        Wn         Rx € W0n        W@n        WPn        R#   Y0n        Y@n        YPn        i ; i5i)r   rê  ú$expected NVUniversalGemmCaller, got r  ÚnvgemmN)
rì  rë  r«   rÓ   r�   r’  r  r  r  rä  )rì  r  rë  r  r  r  s   &&    rœ   Úswap_as_nvgemm_callerÚ)MultiTemplateBuffer.swap_as_nvgemm_callere  sµ   é € åSä˜&×8Ò8Ü Ð#GÌÈVËÀ~Ð!VÓWÐWØ�;‰;˜&Ÿ-™-Ô'Ü Ð!HÓIÐIà×(Ñ(ˆØ×%Ñ%ˆ	Ø×)Ñ)ˆØ"(×"?Ñ"?Ó"AˆÔØ$ˆÔØ$Ôð	.Ûà&,Ô#Ø )ÔØ"-Öøð '-Ô#Ø )ÔØ"-Õüs   ‚BCÂB6 Â"CÂ6C
Ã
Cc               ó    € V ^8„  d   QhRRRR/# )r¤   r  r¨  r¦   r¿   r“   )r§   s   "rœ   r¨   rõ  {  s   € ÷ %ñ %°ð %Àñ %r›   c                	óv  € ^ RI Hp \        W4      '       g   \        R\	        V4       24      hV P                  4       VP                  P                  8w  d   \        R4      hV P                  4       VP                  P                  8w  d   \        R4      hVP                  4       V n        RV n        Wn        R# )r   rê  r#  r  r  r$  N)rì  rë  r«   rÓ   r�   r<  r’  r5  rn  r6  rä  r  r  r  )rì  r  rë  s   && rœ   Úfinalize_as_nvgemm_callerÚ-MultiTemplateBuffer.finalize_as_nvgemm_caller{  s�   € ÝSä˜&×8Ò8Ü Ð#GÌÈVËÀ~Ð!VÓWÐWØ�=‰=‹?˜fŸm™m×0Ñ0Ô0Ü Ð!QÓRÐRØ�?‰?Ó §¡× 4Ñ 4Ô4Ü Ð!UÓVÐVØ"(×"?Ñ"?Ó"AˆÔØ$ˆÔØ$Ör›   c               ó    € V ^8„  d   QhRRRR/# )r¤   r  rÉ  r¦   ztuple[ChoiceCaller, float]r“   )r§   s   "rœ   r¨   rõ  ˆ  s   € ÷ 1ñ 1Ø'ð1à	#ñ1r›   c                	óf   € V P                  VR 7      p\        W"P                  R7      pW2V,          3# ))r  r  )r  r{  r1  )rì  r  ÚtimingsÚ
min_choices   &&  rœ   Úget_min_choiceÚ"MultiTemplateBuffer.get_min_choiceˆ  s3   € ð ×%Ñ%°MÐ%ÓBˆÜ˜§k¡kÔ2ˆ
Ø JÕ/Ð0Ð0r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   Úcallersz*dict[int | None, TritonTemplateCallerBase]r¦   r¿   r“   )r§   s   "rœ   r¨   rõ  �  s   € ÷ 
,ñ 
,ØAð
,à	ñ
,r›   c                óÌ   € VP                  4        F"  w  r#VP                  4       V P                  V&   K$  	  V P                  R,          V n        RV n        VR,          V n        R# )z;Finalize with multiple callers for different hint overridesNrZ  )r¼  rä  r  r  r  r  )rì  r2  r  r  s   &&  rœ   Úfinalize_as_triton_callersÚ.MultiTemplateBuffer.finalize_as_triton_callers�  sY   € ð &-§]¡]¦_Ñ!ˆMØ7=×7TÑ7TÓ7VˆD×%Ñ% mÓ4ñ &5ð #'×";Ñ";¸DÕ"AˆÔØ$ˆÔØ% d�mˆÖr›   )	rý  rü  rþ  r  r   r  r  r  rÿ  rª   )r•   r–   r—   r˜   rS  r/  rY  r  r&  r  rW  rX  r  r  r%  r)  r/  r4  rš   r  r  s   @rœ   rð  rð    s�   ø† ñ÷8ð 8ðB ô&ó ð&ð ôó ð÷3ð ×Ñô.ó ð.õ*%ð ×Ñô.ó ð.õ*%÷1÷
,ó 
,r›   rð  c                  óF   a € ] tR tRtR V 3R lltR R ltR R ltRtV ;t# )	ÚCUTLASSTemplateBufferiœ  c               ó4   € V ^8„  d   QhRRRRRRRRR	R
RRRR/# )r¤   r’  r_  r®  r¯  r  úCallable[_P, _T]Úworkspace_sizer¬   Útemplater   Úsupports_epilogue_fusionr¸   r¦   r¿   r“   )r§   s   "rœ   r¨   Ú"CUTLASSTemplateBuffer.__annotate__�  sY   € ÷ Añ AàðAð !ðAð -ð	Að
 ðAð "ðAð #'ðAð 
ñAr›   c                	óL   <€ \         SV `  WV4       W@n        WPn        W`n        R # rª   )rÍ  r/  r:  r;  r<  )rì  r’  r®  r  r:  r;  r<  rÏ  s   &&&&&&&€rœ   r/  ÚCUTLASSTemplateBuffer.__init__�  s&   ø€ ô 	‰Ñ˜Ð);Ô<à,ÔØ ŒØ(@Ö%r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   r=  ¬  s   € ÷ Mñ M Cñ Mr›   c                	ó:   € V P                   e   V P                   # ^ # rª   ©r:  rë  s   &rœ   r²  Ú(CUTLASSTemplateBuffer.get_workspace_size¬  s   € Ø&*×&9Ñ&9Ò&Eˆt×"Ñ"ÐLÈ1ÐLr›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   r=  ¯  s   € ÷ 5ñ 5 $ñ 5r›   c                	ó€   € V P                  4        F)  p\        P                  ! VP                  4       R R 4       K+  	  R # rª   )r¤  ry   r\  r¼  )rì  r£  s   & rœ   Úemulate_store_fnÚ&CUTLASSTemplateBuffer.emulate_store_fn¯  s,   € Ø×&Ñ&Ö(ˆFÜ�IŠI�f—o‘oÓ'¨¨tÖ4ó )r›   )r<  r;  r:  )	r•   r–   r—   r˜   r/  r²  rF  rš   r  r  s   @rœ   r7  r7  œ  s   ø† ÷Að AõM÷5ó 5r›   r7  c                  ó@   a € ] tR tRtR V 3R lltR V 3R lltRtV ;t# )ÚCppTemplateBufferi´  c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r¤   r’  r_  r®  r¯  r  r9  r;  r   rè  r   r¦   r¿   r“   )r§   s   "rœ   r¨   ÚCppTemplateBuffer.__annotate__µ  sF   € ÷ 1ñ 1àð1ð !ð1ð -ð	1ð
 "ð1ð ð1ð 
ñ1r›   c                	óN   <€ \         SV `  WV4       W@n        WPn        R V n        R # rª   )rÍ  r/  r;  rè  Úoutputs)rì  r’  r®  r  r;  rè  rÏ  s   &&&&&&€rœ   r/  ÚCppTemplateBuffer.__init__µ  s&   ø€ ô 	‰Ñ˜Ð);Ô<Ø ŒØŒØ,0ˆŽr›   c               ó   € V ^8„  d   QhRR/# r^  r“   )r§   s   "rœ   r¨   rK  Â  s   € ÷ (ñ (˜Fñ (r›   c                	óÆ  <€ \        V P                  \        4      '       d´   \        V P                  \        4      '       g   \        \        V P                  4      4      hV P                  ^ ,          p\        V\        4      '       g   \        \        V4      4      hVP                  p\        V\        4      '       g   \        \        V4      4      hV# \        SV `)  4       # rŽ  )r«   r’  r.  rM  r   rÓ   r�   r»  r_  rÍ  r>  )rì  Úfirst_outputr’  rÏ  s   &  €rœ   r>  ÚCppTemplateBuffer.get_layoutÂ  sž   ø€ Ü�d—k‘kÔ#4×5Ò5Ü˜dŸl™l¬H×5Ò5Ü$¤T¨$¯,©,Ó%7Ó8Ð8àŸ<™<¨�?ˆLÜ˜l¬F×3Ò3Ü$¤T¨,Ó%7Ó8Ð8Ø!×(Ñ(ˆFÜ˜f¤f×-Ò-Ü$¤T¨&£\Ó2Ð2ØˆMä‘7Ñ%Ó'Ð'r›   )rè  rM  r;  )r•   r–   r—   r˜   r/  r>  rš   r  r  s   @rœ   rI  rI  ´  s   ø† ÷1ð 1÷(ö (r›   rI  c                  óB   a € ] tR tRtRtRR V 3R llltR R ltRtV ;t# )	ÚCuteDSLTemplateBufferiÒ  z…
Buffer for CuteDSL (CUTLASS Python DSL) template kernels.
Similar to other template buffers but specialized for CuteDSL operations.
c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r¤   r’  r_  r®  r¯  r  r9  r;  r   r  r  r¦   r¿   r“   )r§   s   "rœ   r¨   Ú"CuteDSLTemplateBuffer.__annotate__Ø  sF   € ÷ ñ àðð !ðð -ð	ð
 ðð 0ðð 
ñr›   c                	óº  <€ \         SV `  WV4       W@n        WPn        V .V n        Ve­   \        V P                  ^ ,          \        4      '       g&   \        \        V P                  ^ ,          4      4      hV P                  ^ ,          P                  4       pT ;P                  V Uu. uF  p\        \        VR7      Wp4      NK  	  up,          un        R # R # u upi rZ  )rÍ  r/  r;  r  rM  r«   r®  r¡   rÓ   r�   rB  r'  r~
  )	rì  r’  r®  r  r;  r  r8  r  rÏ  s	   &&&&&&  €rœ   r/  ÚCuteDSLTemplateBuffer.__init__Ø  s±   ø€ ô 	‰Ñ˜Ð);Ô<Ø ŒØ,ÔØ&* VˆŒàÒ%Ü˜dŸk™k¨!�n¬f×5Ò5Ü$¤T¨$¯+©+°a­.Ó%9Ó:Ð:Ø—[‘[ •^×.Ñ.Ó0ˆFØ�LŠLá)óá)�Cô œz°Ô8¸#ÖDÙ)ñõ �Lñ	 &ùòs   Â'Cc               ó   € V ^8„  d   QhRR/# r¡  r“   )r§   s   "rœ   r¨   rV  î  ó   € ÷ ñ ˜\ñ r›   c                	ó   € V P                   # rª   ©rM  rë  s   &rœ   r¤  Ú!CuteDSLTemplateBuffer.get_outputsî  ó   € Ø�|‰|Ðr›   )r  rM  r;  rª   )	r•   r–   r—   r˜   rS  r/  r¤  rš   r  r  s   @rœ   rT  rT  Ò  s   ø† ñ÷
ò ÷,ó r›   rT  c                  ó^   a € ] tR tRtRtRR V 3R llltR R ltR R ltRR	 R
 lltRt	V ;t
# )ÚNVUniversalGemmBufferiò  z¶
Buffer for NVIDIA Universal GEMM kernels.

Unlike CuteDSL templates which use Jinja templates, this generates
simpler Python code that directly calls the cutlass.operators library.
c               óP   € V ^8„  d   QhRRRRRRRRRRR	R
RRRRRRRRRRRRRRRR/# )r¤   r’  r_  r®  r¯  Úkernelr   Úaccumulator_typeÚvariantr:  r¬   Úscale_type_az
Any | NoneÚscale_type_bÚswizzle_type_aÚswizzle_type_br<  r¸   Úswap_abÚ	bias_nodezBuffer | Noner¦   r¿   r“   )r§   s   "rœ   r¨   Ú"NVUniversalGemmBuffer.__annotate__ú  s–   € ÷ ';ñ ';àð';ð !ð';ð ð	';ð
 ð';ð ð';ð ð';ð !ð';ð !ð';ð #ð';ð #ð';ð #'ð';ð ð';ð !ð';ð 
ñ';r›   c                	ó2  <€ \         SV `  WR R7       W0n        W@n        V .V n        W`n        WPn        Wpn        W€n        W�n	        W n
        W°n        WÀn        WÐn        RVP                  P                  RVP                   /V n        V P$                  V n        R # )N)r  Úkernel_nameÚmin_cc)rÍ  r/  rb  rc  rM  r:  rd  re  rf  rg  rh  r<  ri  rj  ÚmetadataÚoperator_nameÚdesigned_for_min_ccÚkernel_metadataÚ_make_kernel_renderr  )rì  r’  r®  rb  rc  rd  r:  re  rf  rg  rh  r<  ri  rj  rÏ  s   &&&&&&&&&&&&&&€rœ   r/  ÚNVUniversalGemmBuffer.__init__ú  s–   ø€ ô" 	‰Ñ˜¸DÐÔAØŒØ 0ÔØ&* VˆŒØ,ÔØŒØ(ÔØ(ÔØ,ÔØ,ÔØ(@Ô%ØŒð #Œð ˜6Ÿ?™?×8Ñ8Ø�f×0Ñ0ð 
ˆÔð #'×":Ñ":ˆÖr›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   rk  #  s   € ÷ #ñ # Cñ #r›   c                ó   € V P                   # )z#Return the workspace size in bytes.rB  rë  s   &rœ   r²  Ú(NVUniversalGemmBuffer.get_workspace_size#  s   € à×"Ñ"Ð"r›   c               ó   € V ^8„  d   QhRR/# r¡  r“   )r§   s   "rœ   r¨   rk  '  rZ  r›   c                	ó   € V P                   # rª   r\  rë  s   &rœ   r¤  Ú!NVUniversalGemmBuffer.get_outputs'  r^  r›   c               ó8   € V ^8„  d   QhRRRRRRRRR	RR
RRRRR/# )r¤   Úout_noder   r  rÉ  Úepilogue_fn_coderO  Úepilogue_readsrÅ  Úepilogue_writesÚepilogue_var_renamesúdict[str, Any] | NoneÚlocal_reducezGemmReductionPlan | Noner¦   ztuple[Any, Any]r“   )r§   s   "rœ   r¨   rk  *  sd   € ÷ C%ñ C%àðC%ð "ðC%ð %ð	C%ð
 )ðC%ð *ðC%ð 4ðC%ð /ðC%ð 
ñC%r›   c                ó¼  a€ Ve   Vf   \        R4      h^ RIHp ^ RIHp	 . p
V P
                   FX  p\        V\        4      '       d   VP                  p\        V\        4      '       d   VP                  pV
P                  V4       KZ  	  RpV P                  e   V
R,          pV
RR p
\        V	P                  4      pV! R/ RVbRV
bRVbRV P                  bR	V P                  bR
V P                   bRV P"                  bRV P$                  bRV P&                  bRV P(                  bRV P*                  bRVbRVbRVbRVbRVbRV P,                  bRVb oV3R lpSV3# )zÊ
Create a kernel renderer for code generation.

Returns (kernel, render) tuple where:
- kernel: NVUniversalGemmKernel object with call_kernel() method
- render: function that returns source code string
Nz.epilogue_fn_code requires epilogue_var_renames)ÚNVUniversalGemmKernel)ÚPlaceholderrm  r´   r«  rr  rc  r:  rd  re  rf  rg  rh  r}  r~  r  r€  r‚  ri  rj  c                 ó$   <€ S P                  4       # rª   )r  )Úrender_kernels   €rœ   r  Ú9NVUniversalGemmBuffer._make_kernel_render.<locals>.renderj  s   ø€ Ø ×'Ñ'Ó)Ð)r›   rl  r“   )rÓ   ÚBtorch._inductor.codegen.nv_universal_gemm.nv_universal_gemm_kernelr„  Útorch._inductor.utilsr…  r®  r«   r    r‘  rº  r@  rj  r�   ÚKERNEL_NAMErr  rc  r:  rd  re  rf  rg  rh  ri  )rì  r|  r  r}  r~  r  r€  r‚  r„  r…  r´   rµ  rj  rm  r  r‡  s   &&&&&&&&       @rœ   rs  Ú)NVUniversalGemmBuffer._make_kernel_render*  s¨  ø€ ð" Ò'Ø#Ò+Ü$Ð%UÓVÐVõ	
õ 	6à!#ˆØ—;”;ˆCÜ˜#œy×)Ò)Ø—h‘h�Ü˜#œz×*Ò*Ø—h‘h�Ø×Ñ˜sÖ#ñ ð ˆ	Ø�>‰>Ò%Ø# B�ˆIØ% c rÐ*ˆKä˜+×1Ñ1Ó2ˆá-ò 
Ù#ð
á#ð
ñ !ð
ð !×0Ò0ð	
ð
 "×2Ò2ð
ð  ×.Ò.ð
ð —L’Lð
ð ×*Ò*ð
ð ×*Ò*ð
ð  ×.Ò.ð
ð  ×.Ò.ð
ñ .ð
ñ *ð
ñ ,ð
ñ "6ð
ñ  &ð!
ð" —L’Lð#
ñ$  ð%
ˆõ*	*ð ˜fÐ$Ð$r›   )rc  rj  rb  rr  r  rM  re  rf  r<  ri  rg  rh  rd  r:  )r   NNNNFFN)NNNNNN)r•   r–   r—   r˜   rS  r/  r²  r¤  rs  rš   r  r  s   @rœ   r`  r`  ò  s)   ø† ñ÷';ò ';õR#õ÷C%õ C%r›   r`  c               ó    € V ^8„  d   QhRRRR/# )r¤   rÂ   ú#Sequence[IRNode | Sequence[IRNode]]r¦   zTypeIs[Sequence[IRNode]]r“   )r§   s   "rœ   r¨   r¨   p  s   € ÷ 5ñ 5Ø.ð5àñ5r›   c                ój   € \         ;QJ d    R  V  4       F  '       d   K   R# 	  R# ! R  V  4       4      # )c              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5irª   ©r«   r¡   )r  rô  s   & rœ   r  Ú#is_node_sequence.<locals>.<genexpr>s  s   é € Ð4©e¨Œz˜!œV×$Ð$«eùrr	  FT)r  )rÂ   s   &rœ   Úis_node_sequencer“  p  s-   € ÷ ‹3Ñ4©eÓ4�3Œ3Ð4Š3Ð4ˆ3Ñ4©eÓ4Ó4Ð4r›   c                  ó°   € ] tR tRt$ R]R&   R R ltR R ltR R	 lt]R
 R l4       t	]
R R l4       tR R ltR R lt]! R 4      RR R ll4       tRtR# )rá  iv  rŽ  r®  c               ó    € V ^8„  d   QhRRRR/# )r¤   rò   r¬   r¦   r�   r“   )r§   s   "rœ   r¨   ÚInputsKernel.__annotate__z  s   € ÷  ñ  ˜Cð   Cñ  r›   c                	óŠ   € V P                   V,          p\        V\        4      '       g   \        R 4      hVP	                  4       # )z"Expected isinstance(input, IRNode)©r®  r«   r¡   rÓ   r¼  )rì  rò   Úinputs   && rœ   Ú
input_nameÚInputsKernel.input_namez  s5   € Ø—‘˜A•ˆÜ˜%¤×(Ò(Ü Ð!EÓFÐFØ�~‰~ÓÐr›   c               ó   € V ^8„  d   QhRR/# r
  r“   )r§   s   "rœ   r¨   r–  €  s   € ÷ 
ñ 
Ð!8ñ 
r›   c                	ó  a€ \         \        P                  ,          ! 4       p\        P                  oV P                   Fs  p\        V\        4      '       d   VP                  V3R  lV 4       4       K6  \        V\        4      '       d   KN  VP                  S! VP                  4       4      4       Ku  	  \         \        P                  ,          ! V3R lV P                  4        4       4      p\        P                  ! VV\        4       R7      # )c              3  óP   <"  € T F  pS! VP                  4       4      x € K  	  R # 5irª   r  )r  r¥   r¬  s   & €rœ   r  Ú/InputsKernel.get_read_writes.<locals>.<genexpr>…  s   øé € ÐB¹E°q™W Q§Z¡Z£\×2Ð2»Eùó   ƒ#&c              3  óP   <"  € T F  pS! VP                  4       4      x € K  	  R # 5irª   r  )r  r  r¬  s   & €rœ   r  rŸ  Œ  s#   øé € ð .
Ù/A¨‰G�C—L‘L“N×#Ð#Ó/Aùr   r”  )rD   rN   rT   r¬  r®  r«   r   r›  rÑ   r-  r¼  r¤  r—  )rì  r  r™  r•  r¬  s   &   @rœ   r  ÚInputsKernel.get_read_writes€  sÄ   ø€ Üœ<×+Ñ+Ö,Ó.ˆÜ×&Ñ&ˆØ—[”[ˆEÜ˜%¤×*Ò*Ø—‘ÔB¹EÓBÖBÜ˜EÔ#8×9Ò9áà—	‘	™' %§.¡.Ó"2Ó3Ö4ñ !ô œL×,Ñ,Ö-ô .
Ø/3×/?Ñ/?Ô/Aó.
ó 
ˆô ×&Ò&ØØÜ"›ô
ð 	
r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   r–  –  r  r›   c                	ó6   € V P                  4       P                  # rª   r  rë  s   &rœ   r	  ÚInputsKernel.get_reads–  r  r›   c               ó    € V ^8„  d   QhRRRR/# rN  r“   )r§   s   "rœ   r¨   r–  š  s   € ÷ ñ ¨ð °Fñ r›   c                	óî  € \        V\        4      '       d   VP                  p\        V\        4      '       d   VP                  p\        V\        4      '       d,   \        V\
        4      '       g   \        P                  V4      p\        V\        4      '       d   V P                  V4      # \        V\        4      '       d   V# \        V\        \
        34      '       g   \        \        V4      4      hV# rª   )r«   r    r‘  rº  r¸  r˜  r+  rs  Úunwrap_storage_for_inputÚTorchBindObjectr»  rÓ   r�   ©rê  r¥   s   &&rœ   r¨  Ú%InputsKernel.unwrap_storage_for_input™  s¯   € ä�aœ×#Ò#Ø—‘ˆAÜ�aœ×$Ò$Ø—‘ˆAÜ�aœ×"Ò"¬:°a¼×+IÒ+IÜ×*Ñ*¨1Ó-ˆAÜ�aœ×#Ò#ð
 ×/Ñ/°Ó2Ð2Ü�aœ×)Ò)ØˆHÜ˜!œf¤oÐ6×7Ò7Ü ¤ a£Ó)Ð)Øˆr›   c               ó    € V ^8„  d   QhRRRR/# )r¤   r®  rŽ  r¦   zlist[IRNode | Sequence[IRNode]]r“   )r§   s   "rœ   r¨   r–  ®  s   € ÷ 
ñ 
Ø3ð
à	(ñ
r›   c                	óè   € . pV  Fd  p\        V\        4      '       d&   V Uu. uF  p\        P                  V4      NK  	  ppM\        P                  V4      pVP	                  V4       Kf  	  V# u upi rª   )r«   r   rá  r¨  r@  )r®  Ú
inputs_newr¥   rò   s   &   rœ   r   ÚInputsKernel.unwrap_storage­  sm   € ð 79ˆ
ÛˆAÜ˜!œX×&Ò&ÙGHÓIÁqÀ!”\×:Ñ:¸1Ö=Áq�ÐI�ä ×9Ñ9¸!Ó<�Ø×Ñ˜aÖ ñ ð Ðùò	 Js   ¢A/c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r–  º  s   € ÷ ñ ˜4ñ r›   c                	ó   € R # rR  r“   rë  s   &rœ   r6  ÚInputsKernel.is_externº  r  r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   r–  ½  rÎ  r›   c                	ó   € ^# rð  r“   rë  s   &rœ   r  ÚInputsKernel.num_reads½  rÑ  r›   c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   r–  Á  s   € ÷ 
ñ 
Ø!ð
à	!ñ
r›   c                	ó
  € \         \        P                  ,          ! 4       pV P                   FR  p\	        V\
        4      '       d   W#P                  V4      ,          pK2  V F  pW$P                  V4      ,          pK  	  KT  	  V# rª   )rD   rÌ   r$   r®  r«   r¡   r'  )rì  r³  rì  rµ  Ú	inner_inps   &&   rœ   r'  Ú!InputsKernel.get_free_symbol_usesÀ  sg   € ô ”u—|‘|Ö$Ó&ˆØ—;”;ˆCÜ˜#œv×&Ò&Ø×-Ñ-¨mÓ<Õ<’ã!$�IØ×7Ñ7¸ÓFÕF’Aó "%ñ	 ð ˆr›   r“   Nr®  )r•   r–   r—   r˜   r™   rš  r  r	  r:  r¨  rV  r   r6  r  re   r'  rš   r“   r›   rœ   rá  rá  v  sb   ‡ à/Ó/õ õ
õ,,ð ôó ðð& ô
ó ð
õõñ ˜NÓ+ö
ó ,ô
r›   rá  c                  ó.   € ] tR tRtR R ltR R ltRtR# )Ú	NopKerneliÎ  c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   ÚNopKernel.__annotate__Ï  rµ
  r›   c                	ó   € R # rR  r“   rë  s   &rœ   r;  ÚNopKernel.is_no_opÏ  r  r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   r½  Ò  r1	  r›   c                	ó   € \        4       # rª   rC   rë  s   &rœ   r	  ÚNopKernel.get_readsÒ  r¬  r›   r“   N)r•   r–   r—   r˜   r;  r	  rš   r“   r›   rœ   r»  r»  Î  s   † õ÷ñ r›   r»  c                  ó’   € ] tR tRtRt]R R l4       t]RR R ll4       t]! R 4      RR R	 ll4       t	]R
 R l4       t
R R ltRtR# )ÚConcatKerneliÖ  zb
There isn't actually a real kernel for concat, we just change the
storage for the upstream data.
c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r®  r¯  r€  r¬   r¦   rº  r“   )r§   s   "rœ   r¨   ÚConcatKernel.__annotate__Ý  s'   € ÷ Añ AÐ,ð A°3ð A¸:ñ Ar›   c                ó  € V^ ,          P                  4       pV^ ,          P                  4       p\        V^ ,          P                  4       4      p^ .pWR,          .p^ Tu;8:  d   \	        V4      8  g   M \        R4      h\        ^\	        V4      4       EF*  pW,          P                  4       p	VP                  WR,          4       \	        V	4      \	        V4      8w  d   \        R4      hW,          P                  4       V8w  d   \        R4      hW,          P                  4       V8w  d   \        R4      h\        \	        V4      4       FZ  p
W¢8X  d   WZ,          Wš,          ,           WZ&   K"  \        P                  P                  P                  WZ,          Wš,          4      WZ&   K\  	  VP                  WR,          4       EK-  	  \        P                  V4      p\        P                  '       d(   \         P#                  WµV^ ,          P$                  4      p\        \	        V4      4       Fƒ  pW,          p\'        V4      '       g   K  VP)                  4       p\+        V\,        4      '       g   KF  \         P/                  VP0                  VP2                  4      '       g   Kx  \5        V4      p M	  \6        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      p\        P                  P8                  P:                  ^ ,          pVRJ d\   \+        V\        4      '       dF   \6        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   \5        V4      p\<        ;QJ d    R	 V 4       F  '       d   K   RM	  RM! R	 V 4       4      pVf   \        R4      h\?        R
\-        VVVVVR7      . R7      p\A        V4      p. p\C        V4       EFÑ  w  pp\+        V\D        \F        34      '       g   \        \I        V4      4      hV PK                  V\L        PO                  VW&V,          Wx,          RR7      4      p\+        V\P        4      '       g   \        \I        V4      4      h\+        VPR                  \        4      '       g   \        \I        VPR                  4      4      hVPR                  P                  V4       \+        VPT                  \D        4      '       d   VPT                  PW                  4       pMVPT                  p\+        V\@        4      '       g   EKP  VPY                  4       '       g   EKi  VP                  4       ;pf   EK€  \[        VPH                  4      '       g   EKž  \]        V4      '       d   EK²  VP                  VP_                  4       4       EKÔ  	  \	        V4      ^8”  dT   \        P                  Pa                  V\b        Pd                  4      '       d    \        P                  Pg                  V4       \        P                  Pi                  V4      Vn5        V Pm                  VPR                  4      Vn)        \        P                  Po                  V4       V# )z&
Create the concat kernel from inputs
z!Expected 0 <= dim < len(new_size)z)Expected len(input_size) == len(new_size)z'Expected inputs[i].get_dtype() == dtypez)Expected inputs[i].get_device() == devicec              3  ó8   "  € T F  p\        V4      x € K  	  R # 5irª   )r=  r	  s   & rœ   r  Ú&ConcatKernel.create.<locals>.<genexpr>  s   é € Ð-WÑPVÈ1Ô.CÀA×.FÐ.FÓPVùr  TFc              3  ó  "  € T F|  pR VP                   9   ;'       da    \        VP                   R ,          \        P                  R7      ;'       g-    \        VP                   R ,          \        P                  R7      x € K~  	  R# 5i)rf  ©r
  N)r©  r3   rD  r
  r
  ©r  Úargs   & rœ   r  rÉ    sx   é € ð ñ (�Cð ˜Ÿ™Ñ!÷ ð ä<àŸ™ �Ü&+×&9Ñ&9ô÷ 	ð 	ô
 @àŸ™ �Ü&+×&<Ñ&<ôôó (ùs   ‚B�3BÁ5Bc              3  ó|   "  € T F2  p\        V4      ;'       d    VP                  4       P                  x € K4  	  R # 5irª   )r=  r>  r—  r	  s   & rœ   r  rÉ  '  s0   é € ð 
ÙKQÀaÔ! !Ó$×AÐA¨¯©«×)AÑ)AÔAË6ùs   ‚<™#<Nr¨  )r8  r7  r5  r6  r—  ©rŽ   r’  r®  ©r	  )8rB  rA  rÅ   r<  rð   rÓ   rñ   r@  r{   r9  r:  r±
  r?  r@  rM   rë	  r_  rN  r7  r=  r>  r«   r•  rª	  r5  r6  r5   rƒ  Úcurrent_noderÜ   r  rÄ  rº  r  r¸  r¥
  r�   r²
  rõ  rê  r»  r®  r‘  r¹  rÑ  rq   rp   rI  r$  rO   ÚFOREACHÚregister_operation_listr!  rŽ   r   r"  )rê  r®  r€  r8  r7  rÛ  Úoffsets_startÚoffsets_endrò   Ú
input_sizerB  Úoutput_strider¥   r’  Úany_input_is_storage_and_layoutÚfx_node_argsr—  Úconcat_kernelrb  Úop_namesrµ  rm
  Úinput_unwrappedÚdevs   &&&                     rœ   rê  ÚConcatKernel.createÜ  sã  € ð
 ˜•×%Ñ%Ó'ˆØ�q•	×#Ñ#Ó%ˆÜ˜˜q�	×*Ñ*Ó,Ó-ˆØ˜ˆØ•}�oˆØ�SÖ(œ3˜x›=Ö(Ü Ð!DÓEÐEÜ�qœ#˜f›+×&ˆAØ�×+Ñ+Ó-ˆJØ× Ñ  ¥Ô/Ü�:‹¤# h£-Ô/Ü$Ð%PÓQÐQØ�y×"Ñ"Ó$¨Ô-Ü$Ð%NÓOÐOØ�y×#Ñ#Ó%¨Ô/Ü$Ð%PÓQÐQÜœ3˜x›=Ö)�Ø”8Ø"*¥+°
µÕ"=�H“Kä"#§'¡'×"2Ñ"2×"LÑ"LØ � Z¥]ó#�H“Kñ	 *ð ×Ñ˜x�}×-ñ! 'ô$ (6×'HÑ'HÈÓ'RˆÜ×'×'Ð'ä"×/Ñ/Ø¨°­¯©óˆMô
 ”s˜6“{Ö#ˆAØ•	ˆAÜ$ Q×'Ô'ØŸ™›�ÜØœK÷ô ä×8Ñ8¸¿¹ÀfÇmÁm×TÔTä$BÀ8Ó$L�MÙñ $÷ +.«#Ñ-WÑPVÓ-W¯#¯#ª#Ñ-WÑPVÓ-WÓ*WÐ'Ü—w‘w×+Ñ+×0Ñ0°Õ3ˆð ,¨uÓ4Ü˜<¬×.Ò.ß“ñ ñ (ó——’ñ ñ (ó÷ ò ô$ ;¸8ÓDˆMç“Cñ 
ÙKQó
—C—C’Cñ 
ÙKQó
ó 
ˆ	ð Š>Ü Ð!>Ó?Ð?Ü$ØÜØØØØ$Ø#ôð ô

ˆô ˜MÓ*ˆØˆÜ ×'‰FˆAˆsÜ˜c¤H¬jÐ#9×:Ò:Ü$¤T¨#£YÓ/Ð/Ø×+Ñ+ØÜ× Ñ Ø˜C¨qÕ!1°;µ>Èð !ó óˆLô ˜l¬F×3Ò3Ü$¤T¨,Ó%7Ó8Ð8Ü˜m×2Ñ2´D×9Ò9Ü$¤T¨-×*>Ñ*>Ó%?Ó@Ð@Ø× Ñ ×'Ñ'¨Ô5ä˜#Ÿ(™(¤H×-Ò-Ø"%§(¡(×"6Ñ"6Ó"8‘à"%§(¡(�ô ˜?¬J×7Õ7Ø#×3Ñ3×5Õ5ØŸN™NÓ,Ð,�SÕ9Ü˜3Ÿ8™8×$Õ$Ü" <×0Õ0à—‘ × ?Ñ ?Ó A×Bñ7 (ô: ˆx‹=˜1Ô¤§¡×!4Ñ!4°V¼^×=SÑ=S×!TÒ!TÜ�G‰G×+Ñ+¨HÔ5äŸW™W×4Ñ4°]ÓCˆÔØ"×1Ñ1°-×2FÑ2FÓGˆÔÜ	�‰×"Ñ" =Ô1àˆr›   Nc               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r­
  r¡   r®
  r3  r¦   r¸   r“   )r§   s   "rœ   r¨   rÆ  a  s$   € ÷ "
ñ "
Øð"
Ø,ð"
à	ñ"
r›   c                	óä  € \        V\        4      '       d   V P                  VP                  V4      # \        V\        \
        34      '       g   \        \        V4      4      h\        VP                  \        4      '       Ed   \        VP                  P                  \        4      '       d   VP                  P                  '       g   R # Vf   R# \        VP                  4       4      \        VP                  4       4      8w  d   R # \        ;QJ dB    R \        VP                  4       VP                  4       4       4       F  '       d   K   R # 	  R# ! R \        VP                  4       VP                  4       4       4       4      # \!        VP                  R4      ;'       dL    \        VP                  P                  \"        4      ;'       d     \        VP                  \$        4      '       * # )FTc              3  óx   "  € T F0  w  r\         P                  P                  P                  W4      x € K2  	  R # 5irª   r~  r�  s   &  rœ   r  Ú=ConcatKernel.can_realize_into_without_copy.<locals>.<genexpr>z  s1   é € ð áE‘F�Bô —‘× Ñ ×8Ñ8¸×@Ð@ÛEùr�  r’  )r«   r    Úcan_realize_into_without_copyr‘  r¸  rº  rÓ   r�   rð  r’  r•  r  rð   rn  r  r÷   r,  r?  ÚExternKernelAlloc)rê  r­
  r®
  s   &&&rœ   rã  Ú*ConcatKernel.can_realize_into_without_copy`  sd  € ô �cœ9×%Ò%à×4Ñ4°S·X±X¸sÓCÐCä˜#¤¬*Ð5×6Ò6Ü ¤ c£Ó+Ð+Ü�c—h‘hÔ 3×4Ó4ä˜sŸx™xŸ™´×<Ò<Ø—x‘x×0×0Ð0áð Š{Ùô �3—>‘>Ó#Ó$¬¨C¯N©NÓ,<Ó(=Ô=Ùç“3ñ ä! #§.¡.Ó"2°C·N±NÓ4DÔEó—3”3ð ’3ð �3ñ ä! #§.¡.Ó"2°C·N±NÓ4DÔEóó ð ô �C—H‘H˜hÓ'÷ <ð <Ü˜3Ÿ8™8Ÿ?™?¬NÓ;÷<ð <ä˜sŸx™xÔ):Ó;Ô;ð	
r›   c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   rÆ  †  s    € ÷ Cñ CØ!ðCà	!ñCr›   c                	ó,   € \         P                  W4      # rª   )r»  r'  r&  s   &&rœ   r'  Ú!ConcatKernel.get_free_symbol_uses…  s   € ô ×-Ñ-¨dÓBÐBr›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r­
  r¡   r®
  r¦   r“   )r§   s   "rœ   r¨   rÆ  Œ  s!   € ÷ !)ñ !)˜vð !)¨Fð !)°vñ !)r›   c                	óÄ  € \        V\        4      '       g+   \        V4      '       d   \        V4      w  r4\        W4R 7      p\        V\        4      '       g   \	        \        V4      4      h\        V\        4      '       d   V P                  VP                  V4      # \        V\        4      '       du   VP                  4        \        VP                  R4      '       g   \	        R4      hV P                  W4      '       d'   \        V4      VP                  n        VP                  # \        P!                  VP#                  4       VP%                  4       VP'                  4       \)        VP+                  4       VP+                  4       4       UUu. uF.  w  rV\,        P.                  P0                  P3                  WV4      NK0  	  uppR7      pV P                  Wr4      # u uppi )r�  r’  z$Expected hasattr(src.data, "layout")rg  )r«   r˜  r=  r“  rÓ   r�   r    r²
  r‘  rº  r–  r,  rã  r[
  r’  rD  rê  rB  rA  r·  r÷   r<  r{   r9  r:  r±
  )rê  r­
  r®
  r™  r’  rŠ  r‹  Úpws   &&&     rœ   r²
  ÚConcatKernel.realize_into‹  s`  € ô
 ˜#œ×/Ò/Ü$ S×)Ò)Ü"7¸Ó"<‘�Ü%¨7ÔB�Ü˜#œ×/Ò/Ü ¤ c£Ó+Ð+Ü�cœ9×%Ò%à×#Ñ# C§H¡H¨cÓ2Ð2ä�cœ:×&Ò&Ø�K‰KŒMä˜3Ÿ8™8 X×.Ò.Ü$Ð%KÓLÐLØ×0Ñ0°×:Ò:ä"1°#Ó"6�—‘”Ø—x‘x�ä×ÑØ—>‘>Ó#Ø—-‘-“/Ø—_‘_Ó&ô   §¡£°·±³Ô?ôá?‘D�Aô —‘× Ñ ×:Ñ:¸1Ö@Ù?òð	 ó 
ˆð ×Ñ Ó(Ð(ùós   Æ4Gc               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rÆ  ¯  r  r›   c                	ó   € R # rR  r“   rë  s   &rœ   r'  ÚConcatKernel.should_allocate¯  r  r›   r“   rª   r®  )r•   r–   r—   r˜   rS  r:  rê  rã  re   r'  r²
  r'  rš   r“   r›   rœ   rÄ  rÄ  Ö  sm   † ñð
 ôAó ðAðF ö"
ó ð"
ñH ˜NÓ+öCó ,ðCð
 ô!)ó ð!)÷Fñ r›   rÄ  c               ó    € V ^8„  d   QhRRRR/# )r¤   r  r@   r¦   rt  r“   )r§   s   "rœ   r¨   r¨   ´  s   € ÷ ;ñ ;¨Xð ;¸.ñ ;r›   c              #  óˆ   "  € V P                  R 4      p Rx € V P                  V4       R#   T P                  T4       i ; i5ir­  )Ú"_ignore_fresh_unbacked_symbols_set)r  Úprevs   & rœ   Ú_track_fresh_unbacked_symbolsrô  ³  s9   é € à×7Ñ7¸Ó>€Dð;Ûà×4Ñ4°TÖ:øˆ	×4Ñ4°TÕ:üs   ‚A•, ™A¬?¿Ac               ó    € V ^8„  d   QhRRRR/# )r¤   r  r  r¦   zAbstractContextManager[None]r“   )r§   s   "rœ   r¨   r¨   ¼  s   € ÷ ñ Øðà!ñr›   c                ó`   € V e"   V P                  4       '       d   \        V 4      # \        4       # rª   )Ú"_ignore_fresh_unbacked_symbols_tlsrô  r
   )r  s   &rœ   Ú(_fallback_kernel_symbol_tracking_contextrø  ¼  s+   € ð Ò ×!MÑ!M×!OÒ!OÜ,¨YÓ7Ð7Ü‹=Ðr›   c                  óN   € ] tR tRt$ RtR]R&   R]R&   R]R&   R	]R
&   R]R&   RtR# )ÚProcessKernelResultiÄ  zôStructured result of ExternKernel.process_kernel.

Replaces the positional 5-tuple that was unpacked at every call site.
unflatten_args(new_tensor_args, new_non_tensor_args) reconstructs the
original (args, kwargs) tree from replacement lists.
r   Úexample_outputrµ   Útensor_argszlist[object]Únon_tensor_argszCallable[[Any, Any], Any]Úunflatten_argsú)dict[sympy.Symbol, pytree.KeyPath] | NoneÚunbacked_bindingsr“   Nrn  r“   r›   rœ   rú  rú  Ä  s'   ‡ ñð ÓØÓØ!Ó!Ø-Ó-Ø@×@r›   rú  c                  ó  a € ] tR tRt$ RtRmtR]R&   ]P                  ! ]	R7      t
R]R&   RtR	]R
&   RtR]R&   RtR]R&   ]P                  ! ]R7      tR]R&   RtR]R&   RtR]R&   ]P                  ! ]	R7      tR]R&   RtR]R&   ]P                  ! ]	R7      tR]R&   ]P                  ! ]R7      tR]R&   RnR V 3R llltR R ltR  R! ltR" V 3R# lltR$ R% ltR& R' ltRoR( R) lltR* R+ ltRoR, R- lltR. R/ ltR0 R1 lt R2 R3 lt!]"R4 R5 l4       t#]$R6 R7 l4       t%]$R8 R9 l4       t&]$R: R; l4       t']$R< R= l4       t(]$RpR> R? ll4       t)]$RqR@ RA ll4       t*]$RqRB RC ll4       t+]$RD RE l4       t,]$RF RG l4       t-]$RH RI l4       t.]$RJ RK l4       t/RL RM lt0RN RO lt1RoRP RQ llt2RR RS lt3RT RU lt4RqRV RW llt5RX RY lt6RZ R[ lt7R\ R] lt8R^ R_ lt9R` Ra lt:Rb Rc lt;Rd Re lt<Rf Rg lt=]>! R 4      RqRh Ri ll4       t?Rj Rk lt@]@tARltBV ;tC# )rr+  iÔ  z�
A class that represents Kernels which are not directly lowered to Inductor
Loop Level IR, such as custom operators, or aten operators which we fallback to.
r9  Úconstant_argsr�
  r€  rÝ   NúReinterpretView | NoneÚoutput_viewrO  Úpython_kernel_nameÚcpp_kernel_nameúIterable[str]Úordered_kwargs_for_cpp_kernelú_OpOverloads | NoneÚop_overloadzlist[ArgProperty] | NoneÚarg_propertieszdict[str, ArgProperty]Úallarg_propertieszdict[str, ArgProperty] | NoneÚkwarg_propertiesz"dict[sympy.Symbol, pytree.KeyPath]r   zlist[MutationOutput]r&  c               óD   € V ^8„  d   QhRRRRRRRRR	R
RRRRRRRRRRRR/# )r¤   rŽ   rO  r’  rS  r®  rŽ  r  r9  rÝ   r�  r  r  r  r  r  r  r
  r	  r¦   r¿   r“   )r§   s   "rœ   r¨   ÚExternKernel.__annotate__î  sx   € ÷ 1ñ 1àð1ð ð1ð 4ð	1ð
 %ð1ð &ð1ð ,ð1ð 'ð1ð $ð1ð (5ð1ð )ð1ð 
ñ1r›   c                	óJ  <€ \         SV `  VVVR 7       W@n        V'       d   TM/ V n        W`n        W n        V P                  V4       V P                  V4       W�n        V P                  4        / V n
        . V n        \        P                  P                  V n        / V n        R# )rÏ  N)rÍ  r/  r  rÝ   r  r
  Úset_cpp_kernel_nameÚset_python_kernel_namer  Úcollect_arg_kwarg_propertiesr   r&  r{   r9  rÑ  Úfx_noder   )rì  rŽ   r’  r®  r  rÝ   r  r  r  r  r
  rÏ  s   &&&&&&&&&&&€rœ   r/  ÚExternKernel.__init__î  s—   ø€ ô 	‰ÑØØØð 	ô 	
ð
 +Ôß &‘f¨BˆŒØ&ÔØ&ÔØ× Ñ  Ô1Ø×#Ñ#Ð$6Ô7Ø-JÔ*Ø×)Ñ)Ô+Ø!#ˆÔØ "ˆÔÜ—w‘w×+Ñ+ˆŒà.0ˆÖr›   c               ó   € V ^8„  d   QhRR/# r¡  r“   )r§   s   "rœ   r¨   r    rŸ  r›   c                	ó    € V .V P                   O# rª   r¡  rë  s   &rœ   r¤  ÚExternKernel.get_outputs  r£  r›   c               ó   € V ^8„  d   QhRR/# r§  r“   )r§   s   "rœ   r¨   r    r¨  r›   c                	ó   € \        4       # rª   rC   rë  s   &rœ   rª  Ú%ExternKernel.get_unbacked_symbol_defs  r¬  r›   c               ó   € V ^8„  d   QhRR/# r
  r“   )r§   s   "rœ   r¨   r    s   € ÷ ñ Ð!8ñ r›   c                	ó˜   <a€ \         SV `  4       oR  V3R llp\        P                  ! VV P                  V P
                  3R R7       S# )c               ó    € V ^8„  d   QhRRRR/# )r¤   rJ  r   r¦   r¿   r“   )r§   s   "rœ   r¨   Ú2ExternKernel.get_read_writes.<locals>.__annotate__  s   € ÷ 	Fñ 	F˜sð 	F tñ 	Fr›   c                óÂ   <€ \        V \        4      '       dH   V P                  4       pVe2   SP                  P	                  \
        P                  ! V4      4       R # R # R # rª   )r«   r¡   rÌ  r  r-  rN   r¬  )rJ  rŽ   r  s   & €rœ   Úadd_ir_readÚ1ExternKernel.get_read_writes.<locals>.add_ir_read  sM   ø€ Ü˜%¤×(Ò(Ø×+Ñ+Ó-�ØÒ#Ø×%Ñ%×)Ñ)¬,×*>Ò*>¸tÓ*DÖEñ $ñ )r›   c                ó"   € \        V \        4      # rª   r‘  rL  s   &rœ   r  Ú.ExternKernel.get_read_writes.<locals>.<lambda>   s   € ¤*¨U´FÔ";r›   )Úis_leaf)rÍ  r  ÚpytreeÚ	tree_map_r  rÝ   )rì  r!  r  rÏ  s   & @€rœ   r  ÚExternKernel.get_read_writes  sL   ù€ Ü‘gÑ-Ó/ˆ÷	Fð 	Fô 	×ÒØØ×Ñ §¡Ð-Ù;õ	
ð
 Ðr›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   r  $  s   € ÷ #$ñ #$¨dñ #$r›   c           	     	óÄ  € \        V P                  \        P                  P                  4      '       di   V P                  P
                  P                   Uu. uF=  pVP                  '       d   K  R VP                  RVP                  RVP                  /NK?  	  upM-\        \        V P                  4      4       Uu. uF  p/ NK  	  upV n        \        V P                  \        P                  P                  4      '       dT   V P                  P
                  P                   Uu/ uF(  pVP                  RVP                  RVP                  /bK*  	  upM/ V n        \        V P                  \        P                  P                  4      '       d¯   V P                   '       gS   V P                  P
                  P                   Uu. uF"  qP                  '       g   K  VP                  NK$  	  upV n        V P                  P
                  P                   Uu. uF  qP                  '       g   K  VNK  	  upV n        R# . V n        R# u upi u upi u upi u upi u upi )rŽ   r�   r’   N)r«   r
  rD  Ú_opsÚ
OpOverloadÚ_schemaÚ	argumentsÚ
kwarg_onlyrŽ   Ú	real_typer’   rñ   rð   r®  r  r  r  Úschema_kwargs)rì  r¥   rò   s   &  rœ   r  Ú)ExternKernel.collect_arg_kwarg_properties$  sÚ  € ô ˜$×*Ñ*¬E¯J©J×,AÑ,A×BÒBð ×)Ñ)×1Ñ1×;Ò;óñ <�AØ—|•|ôØ˜AŸF™FØ˜AŸK™KØ# Q§_¡_óñ
 <òô $¤C¨¯©Ó$4Ô5Ó6Ñ5˜“"Ñ5Ñ6ð 	Ôô$ ˜$×*Ñ*¬E¯J©J×,AÑ,A×BÒBð ×)Ñ)×1Ñ1×;Ò;óá;�Að —‘˜ §¡¨o¸q¿¹ÐOÒOÙ;òð
 ð 	Ôô �d×&Ñ&¬¯
©
×(=Ñ(=×>Ò>Ø×5×5Ð5à$(×$4Ñ$4×$<Ñ$<×$FÒ$Fó6Ù$F˜qÏ,Í,”F�A—F”FÑ$Fñ6�Ô2ð  ×+Ñ+×3Ñ3×=Ò=ó"Ù=�aÇÅ—�Ñ=ñ"ˆDÖð "$ˆDÖùò?ùò 7ùòùò6ùò"s0   ÁI	Á0*I	Â=IÄ&.IÇIÇIÈIÈ0Ic               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   r  I  s   € ÷ !ñ !˜tñ !r›   c                	óŠ   € \        V P                  \        4      '       d#   V P                  4        V P	                  4        R # R # rª   )r«   r’  r?  Úapply_constraintrì  rë  s   &rœ   r  ÚExternKernel.decide_layoutI  s0   € Ü�d—k‘k¤>×2Ò2Ø×!Ñ!Ô#Ø×ÑÖ ñ 3r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   Úwrapperr€   rm  rO  r¦   r¿   r“   )r§   s   "rœ   r¨   r  N  s)   € ÷ Mñ MØ+ðMØ:DðMà	ñMr›   c                	óØ   € \        W4      w  r4V'       d   VP                  V4       V'       g   V P                  4       pV'       d$   ^RIHp V! WRR7      pVP                  W&4       R# R# )rñ  )Ú'set_kernel_post_grad_provenance_tracingT)r6  N)rm   Úmake_commentÚtry_get_kernel_namer/  r:  Úwrite_provenance_debug_handle)rì  r8  rm  Ú
origin_strÚ_detailed_origin_strr:  Údebug_handles   &&&    rœ   Úcodegen_commentÚExternKernel.codegen_commentN  s]   € ô ,?¸tÓ+MÑ(ˆ
ßØ× Ñ  Ô,çØ×2Ñ2Ó4ˆKßÝFáBØ¨TôˆLð ×1Ñ1°+ÖLñ r›   c               ó    € V ^8„  d   QhRRRR/# ©r¤   r8  r€   r¦   r¿   r“   )r§   s   "rœ   r¨   r  _  s   € ÷ "ñ "Ð3ð "¸ñ "r›   c                	ó   € \         hrª   re  ©rì  r8  s   &&rœ   ÚcodegenÚExternKernel.codegen_  rg  r›   c               ó    € V ^8„  d   QhRRRR/# ©r¤   r  rO  r¦   r¿   r“   )r§   s   "rœ   r¨   r  b  s   € ÷ #;ñ #;°:ð #;Èñ #;r›   c                	ó”  € Wn         \        P                  P                  '       d5   \	        V P
                  \        P                  P                  4      '       g   R # V P
                  pV P                   fÒ   VP                  R8X  d¤   VP                  R8X  d#   VP                  P                  R4      ^ ,          MVP                  P                  RR4      p^ RIHp VP!                  RVP                   2/ 4      p\#        R V 4       ^R7      pV^8”  d   V R	V 2pR
V R2V n         R # VP$                  P&                  V n         R # R # )NÚatenr|  Ú.r&  ©Úinductor_fallback_opszaten.c              3  óv   "  € T F/  qP                  R 4      '       g   K  \        VR,          4      x € K1  	  R# 5i)r³  rÖ	  N)Ú
startswithr¬   )r  r³  s   & rœ   r  Ú3ExternKernel.set_cpp_kernel_name.<locals>.<genexpr>~  s%   é € ÐK© A¿¹Àc×9J”Z”S˜˜2�—Z�Z«ùs   ‚9Ÿ9rŸ  Ú_vz
at::_ops::z::call)r  r{   r9  Úcpp_wrapperr«   r
  rD  r+  r,  Ú	namespaceÚ_overloadnamer•   rA  ÚreplaceÚtorchgen.aoti.fallback_opsrO  r1  r  r-  rŽ   )rì  r  rb  ÚopnamerO  Úversion_infoÚlatest_versions   &&     rœ   r  Ú ExternKernel.set_cpp_kernel_nameb  s"  € Ø.ÔÜ�w‰w×"×"Ð"¬*Ø×ÑœeŸj™j×3Ñ3÷+
ò +
ñ à×!Ñ!ˆØ×ÑÒ'à×Ñ 6Ô)ð ×+Ñ+¨yÔ8ð —O‘O×)Ñ)¨#Ó.¨qÖ1àŸ™×0Ñ0°°cÓ:ð õ Mà4×8Ñ8¸5ÀÇÁÐ@QÐ9RÐTVÓW�Ü!$ÙK©ÓKØô"�ð " AÔ%Ø &˜x r¨.Ð)9Ð:�FØ)3°F°8¸6Ð'B�Ö$à'-§~¡~×':Ñ':�Ö$ñ7 (r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   r  rO  r¦   r¿   r“   )r§   s   "rœ   r¨   r  ‡  s   € ÷ ñ ¸ð Èñ r›   c                	ó"  € Wn         Ve   R # V P                  pVf   R # \        V\        P                  P
                  4      '       d   RVP                   2V n         R # VP                  P                  RR4       RVP                   2V n         R # )Nztorch.ops.higher_order.ú._ops.ú.ops.rM  )	r  r
  r«   rD  r+  ÚHigherOrderOperatorr•   r–   rW  )rì  r  rb  s   && rœ   r  Ú#ExternKernel.set_python_kernel_name‡  s€   € Ø"4ÔØÒ)Ùà×!Ñ!ˆØŠ>ÙÜ˜¤§
¡
× >Ñ >×?Ò?Ø(?ÀÇÁÐ?PÐ&QˆDÖ#ð ×$Ñ$×,Ñ,¨X°wÓ?Ð@ÀÀ&Ç/Á/ÐARÐSð Ö#r›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   r  –  s   € ÷ +ñ + Zñ +r›   c                	ón  € ^RI Hp V P                  4       ;p'       d   VP                  M\        P
                  P                  p\        P
                  P                  '       d   V P                  # \        P
                  P                  '       d›   \        \        P
                  P                  V4      '       g-   \        \        \        P
                  P                  4      4      hV P                  f   R# \        P
                  P                  P                  V P                  V4      # V P                  # )rñ  )ÚCppWrapperCpuN)Úcodegen.cpp_wrapper_cpure  rB  r�   r{   r9  Údevice_typeÚ
fx_wrapperr  rT  r«   rÉ  rÓ   r  Úget_c_shim_func_name)rì  re  Údr8  s   &   rœ   r<  Ú ExternKernel.try_get_kernel_name–  sÍ   € Ý:à!%§¡Ó!2Ð2˜AÖ2�—’¼¿¹×9LÑ9LˆÜ�7‰7××ÐØ×*Ñ*Ð*Ü�W‰W× × Ð ÜœaŸg™g×2Ñ2°M×BÒBÜ$¤T¬!¯'©'×*>Ñ*>Ó%?Ó@Ð@Ø×#Ñ#Ò+ÙÜ—7‘7×'Ñ'×<Ñ<Ø×$Ñ$ fóð ð ×*Ñ*Ð*r›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   r  §  s   € ÷ ñ  ñ r›   c                	óD   € V P                  4       pVf   \        R4      hV# )NzExpected name is not None)r<  rÓ   r•  s   & rœ   Úget_kernel_nameÚExternKernel.get_kernel_name§  s&   € Ø×'Ñ'Ó)ˆØŠ<Ü Ð!<Ó=Ð=Øˆr›   c               ó    € V ^8„  d   QhRRRR/# )r¤   r¥   r¡   r¦   r    r“   )r§   s   "rœ   r¨   r  ®  s   € ÷ 
ñ 
�fð 
 ñ 
r›   c           	     	ó  € \         P                  V P                  4       V P                  4       V P	                  4       V P                  4       V P                  4       V P                  4       R 7      pVP                  4        V# ))r8  r7  r·  r¸  rÈ  rÆ  )	rD  rê  rB  rA  r·  r<  r  r  r–  )r¥   rë  s   & rœ   Ú
copy_inputÚExternKernel.copy_input­  sa   € ä×ÑØ—<‘<“>Ø—+‘+“-Ø—]‘]“_Ø—:‘:“<Ø×)Ñ)Ó+Ø—o‘oÓ'ð ó 
ˆð 	�
‰
ŒØˆ	r›   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   rb  rŠ   rÜ   r   rÝ   r¦   rú  r“   )r§   s   "rœ   r¨   r  »  s2   € ÷ v
ñ v
Ø!ðv
Ø*-ðv
Ø9<ðv
à	ñv
r›   c           	     óJ  aa€ RVRV/p\         P                  ! V4      w  po. o. p. p. pV EFç  p	T	;\        Rc ;en   w    \        P                  P
                  P                  P                  V	RR7      p
SP                  R4       VP                  V
4       VP                  V
4       K~   ;\        Rc ;e¥   w    SP                  R4       VP                  V	4       V	P                  P                  pV	P                  P                  R9   d   Vf   \        R4      hVP                  \        P                  P!                  V4      P#                  4       4       EK/   ;\$        Rc ;eD   w    SP                  R4       VP                  V	4       VP                  V	P&                  4       EK   \(        Rc ;e(   w   SP                  R4       VP                  V	4       EK²    SP                  R4       VP                  V	4       VP                  V	4       EKê  	  R	 VV3R
 llpV Uu. uF  qÐP+                  V4      NK  	  ppV F#  p\-        V4      '       g   K  \/        VRR7       K%  	  . p\1        V\        P2                  P4                  P6                  4      ;'       g?    \        P8                  P:                  \        P2                  P<                  P>                  J pV EFÝ  p\1        V\@        4      '       gn   VPC                  4       \        P                  PD                  9   dA   VP                  \        P                  PD                  VPC                  4       ,          4       K‡  \1        V\@        4      '       go   VPC                  4       \        P                  PF                  9   dB   VP                  \        P                  PF                  VPC                  4       ,          4       EK  \1        V\H        4      '       d¼   V'       d’   \        P                  PJ                  pVPC                  4       V9  d:   \M        \        PN                  VPQ                  4       4      VVPC                  4       &   VP                  VVPC                  4       ,          4       EKº  VP                  VPS                  4       4       EKÜ  \1        V\T        4      '       d   VP                  VPV                  4       EK  \1        V\        PX                  PZ                  P                  4      '       d€   VP                  P                  pVP                  P                  R9   d   Vf   \        R4      hVP                  \        P                  P!                  V4      P#                  4       4       EKÃ  VP                  \]        V4      4       EKà  	  V! Wè4      w  pp\        PN                  P                  p\_        4       ;_uu_ 4        \a        V4      ;_uu_ 4        V! V/ VB pRRR4       RRR4       RpV'       dÑ   \        P8                  Pb                  Pe                  R4      p\g        4       p\        P8                  P:                  \        P2                  P<                  P>                  J d#   V^,          p\i        \        P8                  4      pV;_uu_ 4        \k        V\        P8                  X4       RRR4       \m        VXV4      p\1        X\n        \p        34      '       g   V.MTpV F«  p\1        V\        Pr                  4      '       g   K%  VPt                  '       g   K9  \v        Px                  '       d   KQ  Rp\        P                  P8                  Pb                  Pe                  RR4      ;p'       d   V RV 2pV\        P                  n=        K­  	  \}        VVVVVR7      # u upi   + '       g   i     ELÚ; i  + '       g   i     ELæ; i  + '       g   i     EL-; i)zÊPartition kernel args into tensor and non-tensor, realize tensor inputs,
re-run fake tensor propagation with the realized strides, and return a
ProcessKernelResult (see that class for field semantics).
rÜ   rÝ   r“   N)r³  FzHExpected arg.device.type in ["cuda", "xpu"] and device_index is not NoneTc               ó$   € V ^8„  d   QhRRRRRR/# )r¤   Únew_tensor_argsrì   Únew_non_tensor_argsr¦   ztuple[list[_T], dict[str, _T]]r“   )r§   s   "rœ   r¨   Ú1ExternKernel.process_kernel.<locals>.__annotate__÷  s$   € ÷ 	:ñ 	:Ø)ð	:Ø@Lð	:à+ñ	:r›   c                ó8  <€ . p\        V 4      p\        V4      pS FA  pV'       d   VP                  \        V4      4       K'  VP                  \        V4      4       KC  	  \        P                  ! VS4      pVP                  R . 4      VP                  R/ 4      3# )rÜ   rÝ   )r‘  r@  r�  r&  Útree_unflattenr1  )	rw  rx  r  Ú
it_tensorsÚit_non_tensorsÚ	is_tensorrì  Úargs_flat_is_tensorÚ	args_specs	   &&     €€rœ   rþ  Ú3ExternKernel.process_kernel.<locals>.unflatten_args÷  sƒ   ø€ ð ˆFÜ˜oÓ.ˆJÜ!Ð"5Ó6ˆNÛ0�	ßØ—M‘M¤$ zÓ"2Ö3à—M‘M¤$ ~Ó"6Ö7ñ	 1ô
 ×%Ò% f¨iÓ8ˆAØ—5‘5˜ Ó$ a§e¡e¨H°bÓ&9Ð9Ð9r›   rH  zFExpected x.device.type in ["cuda", "xpu"] and device_index is not Nonerf  zEsparsity not handled. Please file issue for sparse inference weights.r)  z Found from : 
 )rû  rü  rý  rþ  r   )r\  r]  )?r&  Útree_flattenr"   r{   r9  r:  r  Úcreate_symintnoder@  ÚGeneratorStater8  rë   r�   rÓ   rD  Ú_CÚ _accelerator_getDefaultGeneratorÚclone_stateÚOpaqueObjectStaterJ  r¡   rs  r=  r“  r«   Ú_higher_order_opsÚ	torchbindÚCallTorchBindrÑ  rö  ÚeffectsÚwith_effectsr¸  r¼  Ú	constantsÚtorchbind_constantsr©  Útorchbind_replay_objectsr-   r�	  Úget_real_objÚ	get_valuerÒ   Úopaque_example_valuer.  Úirr.  r%   rø  r©  r1  r
   r7   r>   r8   rÅ   rÆ   r�  Ú	is_sparserM   Úgraph_partitionÚdisable_cudagraphs_reasonrú  )rê  rb  rÜ   rÝ   Úbinded_argsÚ	args_flatrü  rý  Úreal_non_tensor_argsrÍ  rÔ   Údevice_indexrþ  r¥   Úexample_argsÚreplay_torchbindÚreplay_objectsÚnew_argsÚ
new_kwargsr  rû  r   Únode_meta_valÚctxÚexample_out_lirH  Úmsgr)  r  r€  s   &&*,                        @@rœ   Úprocess_kernelÚExternKernel.process_kernelº  s  ù€ ð ˜t X¨vÐ6ˆä%×2Ò2°;Ó?Ñˆ	�9à*,Ðà$&ˆØ(*ˆð ð 	ô ˆCØØ”T—VÝŸ7™7×+Ñ+×5Ñ5×GÑGÈÐRVÐGÓW�DØ'×.Ñ.¨uÔ5Ø#×*Ñ*¨4Ô0Ø(×/Ñ/°Ö5ð	 ð &”^×%Ù'×.Ñ.¨uÔ5Ø#×*Ñ*¨3Ô/Ø#&§:¡:×#3Ñ#3�LàŸ
™
Ÿ™¨?Ô:¸|Ò?Wä,Øfóð ð )×/Ñ/ÜŸ™×AÑAØ(óç%™+›-÷ð &ð  )Ô&×(Ù'×.Ñ.¨uÔ5Ø#×*Ñ*¨3Ô/Ø(×/Ñ/°·	±	×:ð )ô
 —XØ'×.Ñ.¨tÔ4Ø×&Ñ& s×+ð ð Ø'×.Ñ.¨uÔ5Ø#×*Ñ*¨3Ô/Ø(×/Ñ/°×4ñI ÷L	:ñ 	:ñ 6AÓA±[°×(Ñ(¨Ö+±[ˆÐAó ˆAÜ$ Q×'Ô'Ü% a°×5ñ ð ð 	ô �vœu×6Ñ6×@Ñ@×NÑNÓO÷ Uð UÜ�~‰~×$Ñ$¬×(?Ñ(?×(GÑ(G×(TÑ(TÐTð 	ô ˆAô ˜a¤×*Ò*¨q¯z©z«|¼q¿w¹w×?PÑ?PÔ/PØ×#Ñ#¤A§G¡G×$5Ñ$5°a·j±j³lÕ$CÖDä˜q¤(×+Ò+Ø—J‘J“L¤A§G¡G×$?Ñ$?Ô?à×#Ñ#¤A§G¡G×$?Ñ$?ÀÇ
Á
ÃÕ$M×NÜ˜Aœ×/Ò/ß#Ü%&§W¡W×%EÑ%E�NØ—z‘z“|¨>Ô9Ü7HÜŸK™K¨¯©Ó)9ó8˜ q§z¡z£|Ñ4ð !×'Ñ'¨°q·z±z³|Õ(D×Eà ×'Ñ'¨¯©«×6Ü˜AÔ0×1Ò1Ø×#Ñ# A×$:Ñ$:×;Ü˜AœuŸ™×1Ñ1×@Ñ@×AÒAØ Ÿx™xŸ~™~�ØŸ™Ÿ™¨Ô8¸\Ò=UÜ(Ø`óð ð ×#Ñ#Ü—H‘H×=Ñ=Ø$óç!‘k“m÷ð ×#Ñ#Ô$5°aÓ$8×9ñE ñH  .¨lÓQÑˆ�*Ü—K‘K×)Ñ)ˆ	ä$×&Õ&Ü4°Y×?Õ?á# XÐ<°Ñ<ˆN÷ @÷ 'ð
 HLÐßÜŸN™N×/Ñ/×3Ñ3°EÓ:ˆMÜ0;³ˆCÜ�~‰~×$Ñ$¬×(?Ñ(?×(GÑ(G×(TÑ(TÓTð !.¨aÕ 0�Ü<¼Q¿^¹^ÓL�ç’Ü 	¬1¯>©>¸>ÔJ÷ ä 9Ø˜>¨=ó!Ðô ˜n¬t´U¨m×<Ò<ð Ñàð 	ó  ˆAä˜1œeŸl™l×+Ô+Ø—K—K’KÜ×.×.Ò.à]�Ü"#§'¡'×"6Ñ"6×";Ñ";×"?Ñ"?ÀÈtÓ"TÐT�;ÖTØ ˜EÐ!2°;°-Ð@�CØ47”—‘Ö1ñ  ô #Ø)Ø#Ø+Ø)Ø/ô
ð 	
ùòM B÷B @×?Ð?ú÷ '×&Ð&ú÷ —�ús6   È&_$×;_=Ø	_)	Ø_=Û`ß)_:ß4	_=ß=`	à`"	c               ó    € V ^8„  d   QhRRRR/# )r¤   r¥   r¡   r¦   r˜  r“   )r§   s   "rœ   r¨   r  t  s   € ÷ G
ñ G
¨Fð G
°ñ G
r›   c                ó´  € \        V\        4      '       g   \        \        V4      4      h\        V\        4      '       d   V# VP                  4       p\        P                  P                  VP                  4       4      pVf   \        R4      hVP                  4       pVeà   RVP                  9   dÏ   \        V\        \        \        34      '       d®   \        VP                  \        4      '       dŽ   \!        VP                  R,          \"        P$                  R7      '       g3   \!        VP                  R,          \"        P&                  R7      '       d*   VP)                  \+        VP-                  4       4      4       MVP/                  4        \0        P2                  ! VP-                  4       RR7      w  rVV^ ,          pVP5                  4       ! V4      p\        P                  P6                  P9                  W†4      p\        P                  P6                  P;                  W‡4      p	\        P                  P6                  P=                  W‡4      p
\?        Wy4      V
,           pW‹8w  d   \@        PC                  RV	V
V4       \D        h\	        VPF                  \I        VPK                  4       VPM                  4       VP-                  4       V	V
RR7      R	7      # )
z€
In order to pass this to an extern kernel we need a
ReinterpretView not a View.  This allows us to avoid some
unneeded copies.
zExpected buf is not Nonerf  rË  rì  rž   z@convert_to_reinterpret_view failed: stride=%s offset=%s index=%sFrz
  r�  )'r«   r¸  rÓ   r�   r˜  r¹  r{   r9  r”
  r¼  r  r©  r»  r¥
  r’  r?  r3   rD  r
  r
  r   r5   r<  rì  rN   r  r¾  r:  r/  Ústride_varsÚ
offset_varrr   r.  r/  rY  r‘  r•  rª  rA  )rê  r¥   Úx_unwrap_viewr  Úx_unwrap_view_fx_nodeÚ
index_argsr½  r  rë   rŠ  r–  Úexpecteds   &&          rœ   Úconvert_to_reinterpret_viewÚ(ExternKernel.convert_to_reinterpret_views  s3  € ô ˜!œX×&Ò&Ü ¤ a£Ó)Ð)Ü�aœ×)Ò)ØˆHð Ÿ™›ˆÜ�g‰g× Ñ  ×!7Ñ!7Ó!9Ó:ˆØŠ;Ü Ð!;Ó<Ð<Ø #× 3Ñ 3Ó 5Ðð "Ò-ØÐ.×3Ñ3Ô3Ü˜=¬?¼FÄJÐ*O×PÒPÜ˜=×/Ñ/´×@Ò@ä8Ø)×.Ñ.¨uÕ5Ü"'×"5Ñ"5÷ó ô <Ø)×.Ñ.¨uÕ5Ü"'×"8Ñ"8÷ó ð ×7Ñ7Ü.¨}×/EÑ/EÓ/GÓHõð ×'Ñ'Ô)ä!-×!@Ò!@Ø�J‰J‹L ô"
Ñˆ
ð   •]ˆ
Ø—‘Ô  Ó,ˆä—‘× Ñ ×5Ñ5°eÓHˆÜ—'‘'×"Ñ"×.Ñ.¨uÓAˆÜ—‘×!Ñ!×,Ñ,¨UÓ?ˆÜ˜ZÓ1°FÕ:ˆàÔÜ�I‰IØRØØØô	ô &Ð%äØ—‘ÜØ×,Ñ,Ó.Ø—k‘k“mØ—Z‘Z“\ØØØôô

ð 
	
r›   c               ó    € V ^8„  d   QhRRRR/# rN  r“   )r§   s   "rœ   r¨   r  ¾  s   € ÷ !!ñ !!˜fð !!¨ñ !!r›   c           
     	ó¨  € Vf   \        4       # \        V\        \        P                  P
                  P                  \        34      '       d   \        VR7      # \        V\        4      '       dz   \        4       ;_uu_ 4        \        P                  P                  \        P                  ! VP                   VP#                  4       VP%                  4       R7      4      uuR R R 4       # \        V\&        4      '       d   V# \        V\(        4      '       d   V P+                  VP,                  4      # \        V\.        4      '       d5   \/        V P+                  VP,                  4      VP1                  4       R7      # \        V\2        4      '       dB   VP5                  4        \7        VP9                  4       4      '       d    V P;                  V4      # \        V\>        4      '       d   VP5                  4        V# \        V\@        \        \B        34      '       d   V# V PE                  V4      #   + '       g   i     ELW; i  \<         d     L}i ; i)N)r]  ©r7  r8  r�  )#rL  r«   r"   rÌ   rÍ   rÎ   rÏ   r¬   rÑ   r5	  rE   r{   r9  Úadd_tensor_constantrD  r‰  rJ  rA  rB  rh  r    rs  r‘  r˜  r>  r¸  r–  r=  r¹  r¯  rY  rº  ÚNonTensorObjrÒ   rr  rª  s   &&rœ   rs  ÚExternKernel.realize_input½  s   € àŠ9Ü'Ó)Ð)Ü�aœ$¤§¡× 3Ñ 3× ;Ñ ;¼SÐA×BÒBÜ(¨aÔ0Ð0Ü�aœ×"Ò"ô (×)Õ)Ü—w‘w×2Ñ2Ü—L’L §¡°·±³ÀaÇlÁlÃnÔUó÷ *Ò)ô �aœ×(Ò(ØˆHÜ�aœ×#Ò#Ø×$Ñ$ Q§V¡VÓ,Ð,Ü�aœ×)Ò)Ü"Ø×&Ñ& q§v¡vÓ.°q·|±|³~ôð ô �aœ×"Ò"Ø�I‰IŒKÜ$ Q§]¡]£_×5Ò5ðØ×:Ñ:¸1Ó=Ð=ô �aœ×$Ò$à�I‰IŒKØˆHÜ�aœ,Ô(=Ô?PÐQ×RÒRØˆHØ�~‰~˜aÓ Ð ÷3 *×)Ð)ûô" +ô Ùðús   ÂAH/ÇI È/I 	ÉIÉIc               ó    € V ^8„  d   QhRRRR/# rN  r“   )r§   s   "rœ   r¨   r  â  s   € ÷ !ñ ! ð !¨6ñ !r›   c                	óÊ   € \        V4      '       dC   \        VP                  4       4      ^ 8X  d   V# VP                  4        F  pV^8X  g   K  Vu # 	  V P                  V4      # rŽ  )r=  rð   rn  rr  )rê  r¥   r6  s   && rœ   Úrequire_stride1ÚExternKernel.require_stride1á  sR   € ä  ×#Ò#Ü�1—<‘<“>Ó" aÔ'Ø�ØŸ,™,ž.�Ø˜Q–;Ø’Hñ )ð �~‰~˜aÓ Ð r›   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R/# )
r¤   r¥   r¡   ræ   zSequence[int] | Noner  r}  rð  r¸   r¦   r“   )r§   s   "rœ   r¨   r  ì  sC   € ÷ Vñ VàðVð $ðVð 1ð	Vð
 ðVð 
ñVr›   c           	     óî  € Vf   Vf   \        R4      hVP                  4       R9   d   V'       g   V# \        V4      '       Ed�   \        VP	                  4       \
        4      '       dS   V'       d8   \        W4      pV'       d   VP                  4        V# \        VRRVVR7       V# \        VRRRVVR7       V# RpV'       dD   V'       d<   \        \        P                  W1P                  4       VP                  4       4      4      p\        VP	                  4       \        \        34      '       d   V'       d&   VP	                  4       P!                  V4      '       gA   V'       dJ   \#        W1P	                  4       P$                  VP                  4       4      '       d   Ve   \'        W4      # T# Ven   \        VP	                  4       \        \        34      '       dD   \#        WaP	                  4       P$                  VP                  4       4      '       d   \'        W4      # \        VP	                  4       ;p\(        4      '       d›   \        VP+                  4       ;p\
        4      '       d   \        R4      h\        V\        4      '       dT   V'       d   VP!                  V4      '       g3   V'       d-   \#        W8P$                  VP                  4       4      '       d   V# \        V\,        4      '       dp   V'       d&   VP	                  4       P!                  V4      '       gA   V'       d;   \#        W1P	                  4       P$                  VP                  4       4      '       d   V# \        V\.        4      '       dì   \        VP0                  \2        4      '       dÌ   \        VP0                  \4        4      '       g¬   \        VP7                  4       ;p	4      '       d‹   \9        V	R4      '       dy   \        V	P0                  \:        4      '       gY    V P=                  VP0                  4      Vn        V'       d   V P?                  WVR	7      # V'       d   V PA                  WVR	7      #  Rp
VP                  4       pVeÏ   \D        PF                  PH                  p\K        \M        VP                  4       4      4       Uu. uFT  pVPO                  W=,          ^ 4      '       g   K#  VPQ                  VP                  4       V,          ^4      '       g   KR  VNKV  	  p
pV
 F.  p\R        PT                  PV                  PY                  W^ ^4      pK0  	  VP                  4       PZ                  '       Ed   VeI   \        VP]                  4       VP                  4       VP                  4       4      P_                  W4R	7      pMVVf   \        R
4      h\        VP]                  4       VP                  4       VP                  4       4      Pa                  W$R	7      pTp\R        PT                  PV                  Pc                  VP                  4       VP$                  VP                  4       VP]                  4       R7      p\d        Pg                  VV4       M"V Pi                  V4      p\        VRRVVVR7       V'       d^   \k        VP                  4       4      '       g?   \k        VPm                  4       4      '       g    \        W4      '       g   \        R4      h V# V
'       dH   Ve   Vf   \        R4      h\R        PT                  PV                  Po                  W4      p\'        W4      # V#   \B         d     ELi ; iu upi )zUEnsure x has the requested stride order or exact strides, inserting a copy if needed.Nz7Expected order is not None or exact_strides is not NoneTF)rI  rX  rY  rð  r\  zHthe MutationLayoutSHOULDREMOVE's real layout shouldn't be FlexibleLayoutr‘  r]  z5Expected order is not None when exact_strides is Noner³  z5Expected is_stride_order_storage_and_layout(x, order)z<Expected orig_size is not None and exact_strides is not None)r   rñ  )8rÓ   r‰  r=  r«   r>  r?  rb  rì  r“  rÅ   r_  rN  r<  rA  r•  r[
  ra  r‡  r6  rž  r�
  r™
  râ  r    r‘  r¸  r˜  r¹  r,  rä  r¯  Úrequire_stride_orderrJ  rY  r{   r9  r:  rñ   rð   r  r	  rD  r.  ÚloweringÚslice_Ú
is_complexrª  rA
  r=
  rE  ÚInplaceCopyFallbackrê  rr  r:   rn  rU  )rê  r¥   ræ   r  rð  Úuse_current_stride_orderÚpadded_exact_stridesÚmutation_layoutr™
  r¹  Úexpanded_dimsÚ	orig_sizer:  rò   r€  r’  r­
  s   &&&&&            rœ   Úrequire_stridesÚExternKernel.require_stridesë  s  € ð Ò! ]Ò%>Ü ØIóð ð �;‰;‹=˜FÔ"¯=ØˆHô ! ×#Ó#Ü˜!Ÿ,™,›.¬.×9Ò9ßô 0RØó0Ð,÷ 0ØŸ™Ô)ð �Hô .ØØ#'Ø,1Ø).Ø*7õð �Hô *ØØ#Ø(-Ø%)Ø&3Ø&3õð �Hð
 $(Ð ß§Ü'+Ü×'Ñ'¨·z±z³|ÀQÇ[Á[Ã]ÓSó(Ð$ô ˜!Ÿ,™,›.¬;¼Ð*H×IÒIß˜1Ÿ<™<›>×;Ñ;¸E×BÒBç!Ü1Ø%§|¡|£~×'<Ñ'<¸a¿j¹j»l÷ò ð %Ò0ô 4°AÓEðð ðð %Ò0Ü˜qŸ|™|›~´¼_Ð/M×NÒNÜ-Ø(¯,©,«.×*?Ñ*?ÀÇÁÃ÷ò ô 7°qÓOÐOÜØ$%§L¡L£NÐ2�Ô5O÷ò ô Ø$3×$?Ñ$?Ó$AÐA�[ÄN÷ò ô )Øbóð ô   ¬[×9Ò9ß˜{×<Ñ<¸U×CÒCç%Ü5Ø)×+=Ñ+=¸q¿z¹z»|÷ò ð
 �Hô �aœ×%Ò%ß�q—|‘|“~×7Ñ7¸×>Ò>çÜ-Ø!§<¡<£>×#8Ñ#8¸!¿*¹*»,÷ò ð
 ˆHä�qœ)×$Ò$Ü˜1Ÿ6™6¤8×,Ò,Ü˜qŸv™v¤×7Ò7Ü%°Q·]±]³_Ð&D k×EÒEÜ˜ V×,Ò,Ü˜{×/Ñ/Ô1B×CÒCðØ×8Ñ8¸¿¹Ó@�”ßØ×3Ñ3Ø°ð 4ó ð ÷ #Ø×4Ñ4Ø¸ð 5ó ð ð #ð +/ˆØ—J‘J“Lˆ	ØÒ$Ü—w‘w×'Ñ'ˆHô œs 1§:¡:£<Ó0Ô1óá1�AØ×3Ñ3°MÕ4DÀa×Hô ð ×1Ñ1°!·*±*³,¸qµ/À1×E÷ �Ù1ð ð ó %�Ü—O‘O×,Ñ,×3Ñ3°A¸A¸qÓA’ñ %ð �;‰;‹=×#×#Ñ#ð Ò(Ü'Ø×)Ñ)Ó+¨Q¯[©[«]¸A¿J¹J»Lóç"Ñ" =Ð"ÓNñ ð ’=Ü(ØOóð ô (Ø×)Ñ)Ó+¨Q¯[©[«]¸A¿J¹J»Lóç!‘/ %�/ÓEð ð ˆCÜ—‘×(Ñ(×6Ñ6Ø—
‘
“Ø—‘Ø—k‘k“mØ×,Ñ,Ó.ð	 7ó ˆAô  ×&Ñ& q¨#Õ.ð —‘˜qÓ!ˆAä!ØØØ %Ø"Ø+Ø+õ÷ Ü)¨!¯*©*«,×7Ò7Ü)¨!¯,©,«.×9Ò9ä5°a×?Ò?Ü$ØKóð ð @ð ˆ÷ ØÒ)¨mÒ.GÜ$ØRóð ô —‘×(Ñ(×/Ñ/°Ó=ˆAä2°1ÓDÐDàˆøô] 'ô Úðüòs6   Ð']  Ð8]  Ñ]  Ñ]  Ò; ]2Ó *]2Ô]2Ý ]/Ý.]/c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   r¥   r¡   r  ry  rð  r¸   r¦   r“   )r§   s   "rœ   r¨   r  Å  s,   € ÷ 	
ñ 	
Øð	
Ø'9ð	
ØJNð	
à	ñ	
r›   c           
     	óÀ   € T P                  TV Uu. uF;  p\        V\        P                  4      '       d   VP                  P
                  MTNK=  	  upVR 7      # u upi ))r  rð  )rÇ  r«   rD  ÚSymIntrÔ   r]  )rê  r¥   r  rð  r  s   &&&& rœ   rJ  Ú"ExternKernel.require_exact_stridesÄ  s]   € ð ×"Ñ"ØáKXóÙKXÀaœz¨!¬U¯\©\×:Ò:�—‘—’ÀÒAÉ=ñð (ð #ó 
ð 	
ùòs   ‘AA
c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   r¥   r¡   ræ   rç   rð  r¸   r¦   r“   )r§   s   "rœ   r¨   r  Ñ  s2   € ÷ Pñ PØðPØ,ðPØ=AðPà	ñPr›   c                	ó(   € V P                  WVR 7      # ))ræ   rð  )rÇ  )rê  r¥   ræ   rð  s   &&&&rœ   r½  Ú!ExternKernel.require_stride_orderÐ  s   € ð ×"Ñ" 1ÀÐ"ÓOÐOr›   c               ó    € V ^8„  d   QhRRRR/# rN  r“   )r§   s   "rœ   r¨   r  ×  s   € ÷ >ñ > fð >°ñ >r›   c                	ó.   € V P                  V\        4      # rª   )r½  r
  rª  s   &&rœ   Úrequire_channels_lastÚ"ExternKernel.require_channels_lastÖ  s   € à×'Ñ'¨Ô+<Ó=Ð=r›   c               ó    € V ^8„  d   QhRRRR/# rN  r“   )r§   s   "rœ   r¨   r  Û  s   € ÷ ?ñ ?¨ð ?°Fñ ?r›   c                	ó.   € V P                  V\        4      # rª   )r½  r 
  rª  s   &&rœ   Úrequire_channels_last_3dÚ%ExternKernel.require_channels_last_3dÚ  s   € à×'Ñ'¨Ô+=Ó>Ð>r›   c               ó    € V ^8„  d   QhRRRR/# rN  r“   )r§   s   "rœ   r¨   r  ß  s   € ÷ ñ  6ð ¨fñ r›   c                	ó”   € R  R lpV! V4      '       d   V# V P                  V\        P                  VP                  4       4      4      # )c               ó    € V ^8„  d   QhRRRR/# rF  r“   )r§   s   "rœ   r¨   Ú5ExternKernel.require_contiguous.<locals>.__annotate__à  s   € ÷ 	Sñ 	S ð 	S¨4ñ 	Sr›   c                óô   €  V P                  4       pT\        P                  P
                  9   ;'       d,    \        P                  P
                  T,          P                  #   \        \        3 d     R # i ; ir®  )r¼  ÚAttributeErrorrY  r{   r9  rŽ  Ú	is_mkldnn)r¥   rŽ   s   & rœ   Úis_mkldnn_tensorÚ9ExternKernel.require_contiguous.<locals>.is_mkldnn_tensorà  s`   € ðØ—z‘z“|�ð œ1Ÿ7™7×,Ñ,Ñ,×RÐR´·±×1BÑ1BÀ4Õ1H×1RÑ1RÐRøô #Ô$7Ð8ô Úðús   ‚A" Á"A7Á6A7©rJ  r?  r@  r<  )rê  r¥   rß  s   && rœ   rP  ÚExternKernel.require_contiguousÞ  sC   € õ	Sñ ˜A×ÒØˆHà×,Ñ,Ø”>×4Ñ4°Q·Z±Z³\ÓBóð r›   c               ó    € V ^8„  d   QhRRRR/# rN  r“   )r§   s   "rœ   r¨   r  ñ  s   € ÷ 
ñ 
¨6ð 
°fñ 
r›   c                	óh   € V P                  V\        P                  VP                  4       4      4      # rª   rá  rª  s   &&rœ   Úrequire_contiguous_stridesÚ'ExternKernel.require_contiguous_stridesð  s-   € ð ×(Ñ(ØŒ~×0Ñ0°·±³Ó>ó
ð 	
r›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   r  ø  s   € ÷ ñ  $ñ r›   c                	ó   € R # rª   r“   rë  s   &rœ   r5  ÚExternKernel.apply_constraintø  ræ  r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rÜ   r9  rÝ   r€  r¦   r“   )r§   s   "rœ   r¨   r  û  s$   € ÷ $ñ $Ø!ð$Ø+9ð$à	ñ$r›   c                	ó6  € \        V\        4      '       g   \        \        V4      4      h\        V\        4      '       g   \	        V4      pV P
                  '       g   \        R 4      h\        V4      p\        V P
                  4      pW48  d‹   \        P                  RV P                  WC,
          4       \        W44       FT  pV P
                  V,          R,          pTP                  Wb9   d	   W&,          MV P
                  V,          R,          4       KV  	  V# )z/ExternKernel.arg_properties should not be emptyzv%s has %d unprovided positional arguments. Will check if they are in the keyword arguments or will use default values.rŽ   r’   )r«   r   rÓ   r�   rÅ   r  rð   r.  r/  r
  rñ   r@  )rì  rÜ   rÝ   Ún_argsÚ
n_pos_argsrò   Úarg_names   &&&    rœ   Úfill_non_provided_argsÚ#ExternKernel.fill_non_provided_argsû  sê   € ô ˜$¤×)Ò)Ü ¤ d£Ó,Ð,Ü˜$¤×%Ò%Ü˜“:ˆDØ×"×"Ð"Ü Ð!RÓSÐSä�T“ˆÜ˜×,Ñ,Ó-ˆ
ð ÔÜ�I‰Ið^à× Ñ ØÕ#ô	ô ˜6Ö.�Ø×.Ñ.¨qÕ1°&Õ9�Ø—‘àÔ)ð Ö$à×,Ñ,¨QÕ/°Õ@öñ /ð ˆr›   c               ó    € V ^8„  d   QhRRRR/# )r¤   rÅ  rÅ  r¦   rº   r“   )r§   s   "rœ   r¨   r  !  s   € ÷ #Xñ #XÐ(8ð #XÀIñ #Xr›   c                	óî  € \         P                  P                  '       Ed‰   . pR pV'       ds   V P                  '       da   \	        V P
                  4      \	        V4      8w  d   \        R4      hV P                   Uu/ uF  pVP                  R4      ;pf   K  WTbK  	  pp\        V P
                  4       Fï  w  rgVeC   Vf   \        R4      hVP                  W,          4      pV'       d   VP                  R4      MR p	Ml\	        V P                  4      V,           p
V P                  '       d=   V
\	        V P                  4      8  d#   V P                  V
,          P                  R4      MR p	VP                  \         P                  P                  P                  Wy4      4       Kñ  	  V# V P
                   Uu. uF,  p\         P                  P                  P                  V4      NK.  	  up# u upi u upi )NzDnames passed to codegen_const_args does not match self.constant_argsrŽ   zExpected names is not Noner�   )r{   r9  rT  r  rð   r  rÓ   r1  r  r®  r@  rÉ  Úval_to_arg_str)rì  rÅ  r  Úname_to_arg_propertiesrÍ  rŽ   rò   r¥   ÚpropÚtype_r  rŠ  s   &&          rœ   Úcodegen_const_argsÚExternKernel.codegen_const_args!  s£  € Ü�7‰7××ÑØˆFð
 EIÐ"ß˜×,×,Ð,Ü�t×)Ñ)Ó*¬c°%«jÔ8Ü(Ø^óð ð
  $×2Ò2ó*á2˜Ø #§¡¨£Ð/˜ô �D’IÙ2ð 'ð *ô " $×"4Ñ"4Ö5‘�Ø)Ò5Ø’}Ü,Ð-IÓJÐJØ1×5Ñ5°eµhÓ?�Dß04˜DŸH™H VÔ,¸$‘Eä˜dŸk™kÓ*¨QÕ.�Cð  ×.×.Ð.°3¼¸T×=PÑ=PÓ9QÔ3Qð ×+Ñ+¨CÕ0×4Ñ4°VÔ<à!ð ð
 —‘œaŸg™g×2Ñ2×AÑAÀ!ÓKÖLñ 6ð ˆMàDH×DVÒDVÓWÑDV¸q”A—G‘G×(Ñ(×7Ñ7¸Ö:ÑDVÑWÐWùò-*ùò, Xs   Á<G-ÂG-Æ82G2c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   rº   r“   )r§   s   "rœ   r¨   r  F  s   € ÷ ñ ˜iñ r›   c                	ó<  € \         P                  P                  '       dF   V P                  e8   V P	                  . V P
                  OV P                  OV P                  4      pRpMV P
                  pRp. p\        V4       Fð  w  rE\         P                  P                  '       d”   V P                  '       d   V\        V P                  4      8  g   \        R4      hV P                  V,          P                  R4      pVP                  \         P                  P                  P                  WV4      4       K¸  VP                  \         P                  P                  P                  V4      4       Kò  	  V'       d    VP!                  V P#                  4       4       V# )NFTz-Invalid access to ExternKernel.arg_propertiesr�   )r{   r9  rT  r
  rï  r®  r  rÝ   r  r  rð   rÓ   r1  r@  rÉ  ró  rÜ  r÷  )rì  r®  Úneed_codegen_constant_argsrÜ   rò   r¥   rö  s   &      rœ   Úcodegen_argsÚExternKernel.codegen_argsF  s3  € Ü�7‰7××Ð 4×#3Ñ#3Ò#?à×0Ñ0Ø3�$—+‘+Ð3 × 2Ñ 2Ð3°T·[±[óˆFð */Ñ&à—[‘[ˆFØ)-Ð&àˆÜ˜fÖ%‰DˆAÜ�w‰w×"×"Ð"Ø×+×+Ð+°´C¸×8KÑ8KÓ4LÔ0LÜ(ØGóð ð ×+Ñ+¨AÕ.×2Ñ2°6Ó:�Ø—‘œAŸG™G×0Ñ0×?Ñ?ÀÓIÖJà—‘œAŸG™G×0Ñ0×?Ñ?ÀÓBÖCñ &÷ &Ø�K‰K˜×/Ñ/Ó1Ô2Øˆr›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rî  r�   rÝ   r   r¦   r“   )r§   s   "rœ   r¨   r  a  s&   € ÷ Jñ J¨ð J¸ð JÀñ Jr›   c                ó  € W9   d   VP                  V4      # WP                  9   d   V P                  P                  V4      # V P                  P                  V4      ;pe   VP                  R4      # \        V R24      h)zÂGiven an argument name, queries for values in (in order):
1. any provided kwargs for this function.
2. the class self.kwargs member.
3. any available default arguments in self.allarg_properties.r’   z not in self.allarg_properties)r1  rÝ   r  rÓ   )rì  rî  rÝ   rÍ  s   &&, rœ   Úget_kwargs_valueÚExternKernel.get_kwargs_valuea  st   € ð
 ÔØ—:‘:˜hÓ'Ð'Ø—{‘{Ô"Ø—;‘;—?‘? 8Ó,Ð,Ø×)Ñ)×-Ñ-¨hÓ7Ð7ˆCÒDØ—7‘7˜?Ó+Ð+Ü ˜zÐ)GÐHÓIÐIr›   c               ó    € V ^8„  d   QhRRRR/# )r¤   Úskip_outr¸   r¦   rº   r“   )r§   s   "rœ   r¨   r  n  s   € ÷ ñ  tð ¸	ñ r›   c           	     	ó  € \         P                  P                  '       Ed	   V P                  e   \	        V P
                  4      ^ 8X  d   . # . pV P                   FÊ  pV'       d
   VR8X  d   K  V P                  V4      p\        V\        4      '       d   VP                  V4       KN  V P                  f   \        R4      hV P                  P                  V/ 4      P                  R4      pVP                  \         P                  P                  P                  WE4      4       KÌ  	  V# V P                   P#                  4        UUu. uF3  w  rdV R\         P                  P                  P                  V4       2NK5  	  pppV# u uppi )Nr'  z+Expected self.allarg_properties is not Noner�   rÈ  )r{   r9  rT  r
  rð   r1  r  r  r«   r"   r@  r  rÓ   r1  rÉ  ró  rÝ   r¼  )rì  r  rÝ   rî  r³  rö  Úks   &&     rœ   Úcodegen_kwargsÚExternKernel.codegen_kwargsn  sG  € Ü�7‰7××ÑØ×ÑÒ+´°D×4FÑ4FÓ0GÈ1Ô0Là�	àˆFØ ×>Ô>�ß ¨EÔ 1áà×)Ñ)¨(Ó3�Ü˜a¤×&Ò&Ø—M‘M !Ö$à×-Ñ-Ò5Ü,ØIóð ð !×2Ñ2×6Ñ6°xÀÓD×HÑHÈÓP�EØ—M‘M¤!§'¡'×"6Ñ"6×"EÑ"EÀaÓ"OÖPñ ?ð( ˆð !ŸK™K×-Ñ-Ô/ôá/‘D�Að �#�Q”q—w‘w×+Ñ+×:Ñ:¸1Ó=Ð>Ó?Ù/ð ñ ð ˆùó	s   Å9Fc               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   r  ‹  s   € ÷ 	ñ 	˜Sñ 	r›   c                	óÔ   € V P                   eX   V P                   P                  p\        VRR4      pVP                  RR4      pVP	                  R^4      ^ ,          pV RV 2pV# RpV# )Nr–   Úunknown_namespacer_  r`  rM  Ú
unknown_op)r  rö  rà   rW  Úrsplit)rì  rö  Úop_namespaceÚop_names   &   rœ   Úget_op_nameÚExternKernel.get_op_name‹  sv   € Ø�<‰<Ò#Ø—\‘\×(Ñ(ˆFÜ" 6¨<Ð9LÓMˆLØ'×/Ñ/°¸'ÓBˆLØ'×.Ñ.¨s°AÓ6°qÕ9ˆLØ%˜ a¨ xÐ0ˆGð ˆð #ˆGØˆr›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r  –  s   € ÷ 
ñ 
 ñ 
r›   c                	óÐ   € \        V P                  \        P                  P                  4      ;'       d2    \        P
                  P                  V P                  P                  9   # rª   )r«   r
  rD  r+  r,  ÚTagÚinplace_viewÚtagsrë  s   &rœ   Úis_inplace_viewÚExternKernel.is_inplace_view–  sK   € ä�t×'Ñ'¬¯©×)>Ñ)>Ó?÷ @ð @Ü—	‘	×&Ñ&¨$×*:Ñ*:×*?Ñ*?Ñ?ð	
r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   r  r�   r¦   r¸   r“   )r§   s   "rœ   r¨   r  œ  s   € ÷ 
ñ 
¨3ð 
°4ñ 
r›   c                	óJ  € V P                  4       '       * ;'       dˆ    VP                  R 4      '       * ;'       dj    V P                  \        P                  P
                  P                  P                  \        P                  P
                  P                  P                  39  # )z#torch.ops.aten.quantize_per_tensor.)	r  rQ  r
  rD  ry   rL  Úquantize_per_tensorr|  Útensor_qparams)rì  r  s   &&rœ   Úshould_assert_dtypeÚ ExternKernel.should_assert_dtypeœ  s�   € ð ×$Ñ$Ó&Ô&÷ ð Ø×&Ñ&Ð'LÓMÔM÷ð ð × Ñ ä—I‘I—N‘N×6Ñ6×>Ñ>Ü—I‘I—N‘N×6Ñ6×EÑEðñð	
	
r›   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   r  «  s   € ÷ Mñ MÐ,@ð MÀTñ Mr›   c                	óL  € \         P                  '       g   R # V P                  4       '       d#   \        P                  P
                  '       g   R # V P                  4       pV P                  4       p\        P                  P
                  '       dj   V P                  4       '       dT   \        V P                  ^ ,          \        4      '       g   \        R4      hV P                  ^ ,          P                  4       p\        P                  P                  P                  V P                  4       4      p\        P                  P                  P                  V P                  4       4      pV P!                  V4      '       d   V P#                  4       MR pVP%                  W4WRV4       R # )Nz+Expected isinstance(self.inputs[0], IRNode))rM   Úsize_assertsr  r{   r9  rT  r  r¼  r«   r®  r¡   rÓ   rÉ  Úcodegen_shape_tupler<  rn  r  rA  Úwrite_assert_size_stride)rì  r8  r  rŽ   r5  r6  r7  s   &&     rœ   Úcodegen_size_assertsÚ!ExternKernel.codegen_size_asserts«  s  € Ü×"×"Ð"ÙØ×Ñ×!Ò!¬!¯'©'×*=×*=Ð*=ÙØ×"Ñ"Ó$ˆØ�}‰}‹ˆÜ�7‰7××Ðð ×#Ñ#×%Ò%Ü! $§+¡+¨a¥.´&×9Ò9Ü(Ð)VÓWÐWØ—{‘{ 1•~×.Ñ.Ó0�Ü�w‰w×#Ñ#×7Ñ7¸¿¹»ÓHˆÜ—‘×%Ñ%×9Ñ9¸$¿/¹/Ó:KÓLˆØ$(×$<Ñ$<¸W×$EÒ$E�—‘Ô È4ˆØ×(Ñ(¨°VÀeÖLr›   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   r  ¾  s   € ÷ ñ Ð1Eð È$ñ r›   c           	     	óx  € \         P                  '       d¤   \        P                  P                  '       g‚   V P                  4       pV\        P                  P                  9  pV P                  4       pV'       d#   VP                  R V R\         RV: R24       R# VP                  RV RV R24       R# R# R# )zassert_alignment(rß  rR  z	# buffer z (op: z) is assumed to be not alignedN)
rM   Úalignment_assertsr{   r9  rT  r¼  rg  r  rË  rn   )rì  r8  rŽ   Úalignedr  s   &&   rœ   Úcodegen_alignment_assertsÚ&ExternKernel.codegen_alignment_asserts¾  s    € Ü×#×#Ð#¬A¯G©G×,?×,?Ð,?Ø—=‘=“?ˆDØ¤!§'¡'×";Ñ";Ñ;ˆGØ×&Ñ&Ó(ˆGßØ×!Ñ!Ø'¨ v¨R´Ð/@ÀÀ7Á+ÈQÐOöð ×!Ñ!Ø ˜v V¨G¨9Ð4RÐSöñ -@Ñ#r›   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   r  Ì  s   € ÷ 	=ñ 	=Ð/Cð 	=Èñ 	=r›   c                óú   € \         P                  P                  '       d!   \        P                  P
                  '       d   R# VP                  4        V P                  4       pVP                  RV RV R24       R# )zS
Track outputs of fallback operators if config.test_configs.track_memory_lifecycle
Nztrack_tensor(z, 'z'))	rM   Útest_configsÚtrack_memory_lifecycler{   r9  rT  Ú"write_memory_track_allocation_oncer¼  rË  )rì  r8  rŽ   s   && rœ   Úcodegen_memory_trackingÚ$ExternKernel.codegen_memory_trackingÌ  s\   € ô ×"Ñ"×9×9Ð9¼Q¿W¹W×=P×=PÐ=PÙà×2Ñ2Ô4Ø�}‰}‹ˆØ×Ñ˜M¨$¨¨s°4°&¸Ð;Ö<r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   z'tuple[list[Sequence[Expr]], list[Expr]]r“   )r§   s   "rœ   r¨   r  ×  s   € ÷ $ñ $Ð"Iñ $r›   c                óN   € V P                  4       pV P                  4       pV. .V3# )z4
get output sizes and strides, for template_codegen
)r<  rn  )rì  rs	  rt	  s   &  rœ   Úget_group_strideÚExternKernel.get_group_stride×  s*   € ð —‘“ˆØ—/‘/Ó#ˆà�rˆ{˜GÐ#Ð#r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   ztuple[Expr, Sequence[Expr]]r“   )r§   s   "rœ   r¨   r  à  s   € ÷ 'ñ 'Ð9ñ 'r›   c                óÂ  € \         P                  P                  pV P                  4       pV P	                  4       pV Uu. uF  qAP                  V4      NK  	  pp\        \        V4      4       Uu. uF  p\        RV 24      NK  	  pp\        \        \        V4      4      VP                  RR7      p\        V4       UU	u/ uF  w  r‰W˜bK	  	  p
pp	\        \        V
4      4       Uu. uF  qZV,          NK  	  ppV Uu. uF  qVV,          NK  	  ppV P                  4       pV! V4      p\         P                  P                  P                  WbV.4      w  rïp\        R4      w  pp\        \!        Yo! V Uu. uF  pV! V4      NK  	  up4      4      4      p\#        \$        P&                  ! V4      V4      pV\)        V4      3# u upi u upi u up	pi u upi u upi u upi )z3
Manually get canonicalization of the output index
rj  T)r	  r€  Úc)r{   r9  r:  r<  rn  r;  rñ   rð   rs   r  r'
  r  r¾  rÐ  rY   rÇ   r÷   rv   rÌ   rU  rÆ   )rì  r:  r
  rŠ  r¥   rò   r²  Úindex_orderr  r   r!  ræ   rV  rë   Ú	new_sizesrô   rÓ  r&  Úadd_varÚreplacements   &                   rœ   ÚcanonicalizeÚExternKernel.canonicalizeà  s¤  € ô
 —7‘7×#Ñ#ˆØ—‘“ˆØ—/‘/Ó#ˆñ ;BÓB¹'°Q×-Ñ-¨aÖ0¹'ˆÐBä;@ÄÀUÃÔ;LÓMÑ;L°aÔ(¨1¨Q¨C¨Ö1Ñ;Lˆ
ÐMäœU¤3 w£<Ó0°g×6IÑ6IÐSWÔXˆÜ+4°[Ô+AÔBÑ+A™x˜s�#’(Ñ+AˆÑBÜ$)¬#¨f«+Ô$6Ó7Ñ$6˜q˜—�Ñ$6ˆÐ7Ù-2Ó3©U¨ —m�m©Uˆ
Ð3Ø×#Ñ#Ó%ˆÙ˜
Ó#ˆä%&§W¡W×%5Ñ%5×%EÑ%EØ ˜wó&
Ñ"ˆ	˜Fô ! Ó%‰
ˆˆ7Üœ3˜z¨7É	Ó3RÉ	À1±G¸A¶JÉ	Ñ3RÓ+SÓTÓUˆäœ5Ÿ<š<¨Ó.°Ó<ˆØ”e˜IÓ&Ð&Ð&ùò+ CùâMùó CùÚ7ùÚ3ùò 4Ss#   ¿GÁ0GÃGÃ'GÃ>GÅ5Gc               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   r     s   € ÷ ñ Ø!ðà	!ñr›   c                	óø   € V'       d   \         M\        p\        P                  W4      pV P                   F  pW2! V4      ,          pK  	  V P
                  P                  4        F  pW2! V4      ,          pK  	  V# rª   )Úmaybe_free_unbacked_symbolsÚmaybe_free_symbolsrá  r'  r  rÝ   rÈ   )rì  r³  Úmaybe_get_symbolsrì  rÍ  s   &&   rœ   r'  Ú!ExternKernel.get_free_symbol_uses   sp   € ÷ ,9Õ'Ô>Pð 	ô ×-Ñ-¨dÓBˆØ×%Ô%ˆCØÐ" 3Ó'Õ'ŠAñ &à—;‘;×%Ñ%Ö'ˆCØÐ" 3Ó'Õ'ŠAñ (àˆr›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   r     s   € ÷ 
&ñ 
&˜ñ 
&r›   c           
     	ó2  € \        V R R4      pRV: 2.pT\        P                  ! V 4       Uu. uF'  pVP                   R\        WP                  4       2NK)  	  up,          pVP	                  RV P
                  : 24       V P                  V4      # u upi )r  Nzpython_kernel_name=rÈ  rÉ  )rà   rT  ÚfieldsrŽ   r@  rÈ  rN  )rì  rm  rF  rU  s   &   rœ   rÓ  ÚExternKernel.__str__   s�   € Ü˜dÐ$8¸$Ó?ˆà! +¡Ð1ð
ˆð 	ä$×+Ò+¨DÔ1ó
á1�ð �z‰zˆl˜!œG D¯*©*Ó5Ð6Ó7Ù1ñ
õ 	
ˆð 	�‰�| D×$4Ñ$4Ñ#7Ð8Ô9Ø�‰˜uÓ%Ð%ùò
s   ®-B)r  r   r  r  r  r  rÝ   r&  r
  r  r  r  r1  r   r“   ©r“   NNNNr“   Nrª   )NNFr®  )Dr•   r–   r—   r˜   rS  r  r™   rT  rU  rÇ   rÝ   r  r  r  rÅ   r  r
  r  r  r  r   r&  r/  r¤  rª  r  r  r  rA  rG  r  r  r<  rn  rV  rr  r:  r¥  r¯  rs  r¹  rÇ  rJ  r½  rÒ  rÖ  rP  rå  r5  rï  r÷  rý  r  r  r  r  r  r$  r*  r1  r5  r>  re   r'  rÓ  r9  rš   r  r  s   @rœ   r+  r+  Ô  sŽ  ø‡ ñð
 $&€M�=Ó%Ø(×.Ò.¸tÔD€FˆNÓDØ*.€KÐ'Ó.Ø%)Ð˜
Ó)Ø"&€O�ZÓ&ð 4?×3DÒ3DØô4Ð! =ó ð (,€KÐ$Ó+Ø/3€NÐ,Ó3Ø0;×0AÒ0AÐRVÔ0WÐÐ-ÓWØ6:ÐÐ3Ó:Ø<G×<MÒ<MØô=ÐÐ9ó ð .9×->Ò->ÈtÔ-TÐÐ*ÓT÷1ò 1õ@.õ÷ð õ #$õJ!÷
Mõ""÷#;õJõ+õ"ð ô
ó ð
ð ôv
ó ðv
ðp ôG
ó ðG
ðR ô!!ó ð!!ðF ô!ó ð!ð öVó ðVðp ö	
ó ð	
ð öPó ðPð
 ô>ó ð>ð ô?ó ð?ð ôó ðð" ô
ó ð
õõ$÷L#XõJõ6J÷õ:	õ
õ
õMõ&õ	=õ$õ'ñB ˜NÓ+öó ,ðõ
&ð †Hr›   r+  c                  óJ   a € ] tR tRtR R ltR	R V 3R llltR R ltRtV ;t# )
ÚExternKernelOuti    c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   ÚExternKernelOut.__annotate__"   ó   € ÷ 1ñ 1Ð3ð 1¸ñ 1r›   c                	ó(   € VP                  V 4       R # rª   )Úgenerate_extern_kernel_outrF  s   &&rœ   rG  ÚExternKernelOut.codegen"   ó   € Ø×*Ñ*¨4Ö0r›   c               ó@   € V ^8„  d   QhRRRRRRRRR	R
RRRRRRRRRR/
# )r¤   r’  r_  r®  r¯  r  r9  rÝ   r�  r  r  r  rO  r  r  r
  r	  r¦   r¿   r“   )r§   s   "rœ   r¨   rN  %   sn   € ÷ )ñ )àð)ð !ð)ð %ð	)ð
 &ð)ð ,ð)ð 'ð)ð $ð)ð (5ð)ð )ð)ð 
ñ)r›   c
                	óH  <€ V P                  V4      p
\        V
\        4      '       g   \        \	        V
4      4      h\
        ST `  R TT
TT;'       g    / R VVVV	4
       \        P                  P                  V 4      V n
        \        P                  P                  V 4       R # rª   )r   r«   r   rÓ   r�   rÍ  r/  r{   r9  r!  rŽ   r"  )rì  r’  r®  r  rÝ   r  r  r  r  r
  Úunwrapped_inputsrÏ  s   &&&&&&&&&& €rœ   r/  ÚExternKernelOut.__init__%   s�   ø€ ð  ×.Ñ.¨vÓ6ÐÜÐ*¬H×5Ò5Ü ¤Ð&6Ó!7Ó8Ð8Ü‰ÑØØØØØ�LˆL�bØØØØ)Øô	
ô —G‘G×+Ñ+¨DÓ1ˆŒ	Ü	�‰×"Ñ" 4Ö(r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rN  C   r  r›   c                	ó   € R # rR  r“   rë  s   &rœ   r'  ÚExternKernelOut.should_allocateC   r  r›   r  rJ  )	r•   r–   r—   r˜   rG  r/  r'  rš   r  r  s   @rœ   rL  rL      s   ø† õ1÷)ò )÷<ó r›   rL  c                  ó.   a € ] tR tRtR V 3R lltRtV ;t# )ÚRandomSeedsiG   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r�  r¬   r8  r¦  r¦   r¿   r“   )r§   s   "rœ   r¨   ÚRandomSeeds.__annotate__H   s!   € ÷ 
ñ 
˜cð 
¨<ð 
¸Dñ 
r›   c           	     	ó  <€ \         P                  ! \         P                  4      p\        SV `  \        V\         P                  V.R 7      . VP                  VP                  V..RR\        P                  P                  R7       R# )r  zaten.randint.low_outzat::_ops::randint_low_out::call)r’  r®  r  r  r  r
  N)rD  r¾  rW  rÍ  r/  r•  r{  r  rL  ÚrandintÚlow_out)rì  r�  r8  ÚlimitsrÏ  s   &&& €rœ   r/  ÚRandomSeeds.__init__H   sl   ø€ Ü—’œUŸ[™[Ó)ˆÜ‰ÑÜØÜ—k‘kØ�Wôð
 Ø!Ÿ:™: v§z¡z°E°7Ð;Ø5ð >ÜŸ™×,Ñ,ð 	ö 	
r›   r“   ©r•   r–   r—   r˜   r/  rš   r  r  s   @rœ   r\  r\  G   s   ø† ÷
ö 
r›   r\  c                  óV   a € ] tR tRtR R ltRR V 3R llltR R ltR R	 ltR
tV ;t	# )rä  i[   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   ÚExternKernelAlloc.__annotate__\   s   € ÷ 3ñ 3Ð3ð 3¸ñ 3r›   c                	ó(   € VP                  V 4       R # rª   )Úgenerate_extern_kernel_allocrF  s   &&rœ   rG  ÚExternKernelAlloc.codegen\   s   € Ø×,Ñ,¨TÖ2r›   c               ó<   € V ^8„  d   QhRRRRRRRRR	R
RR
RRRRRR/	# )r¤   r’  rS  r®  r¯  r  r9  rÝ   r�  r  rO  r  r  r
  r	  r¦   r¿   r“   )r§   s   "rœ   r¨   rg  _   sd   € ÷ !)ñ !)àð!)ð !ð!)ð %ð	!)ð
 &ð!)ð 'ð!)ð $ð!)ð (5ð!)ð )ð!)ð 
ñ!)r›   c	                	ó¾  <€ V P                  V4      p	\        ;QJ d    R  V	 4       F  '       d   K   RM	  RM! R  V	 4       4      '       g   \        R4      h\        S
T `  RT\        \        \        ,          V	4      TT;'       g    / RVVVV4
       . V n        \        P                  P                  V 4      V n        \        P                  P                  V 4       R# )c              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5irª   r‘  ri  s   & rœ   r  Ú-ExternKernelAlloc.__init__.<locals>.<genexpr>k   s   é € ÐCÑ2B¨Q”:˜a¤×(Ð(Ó2Bùrr	  FTz=Expected all(isinstance(i, IRNode) for i in unwrapped_inputs)N)r   r  rÓ   rÍ  r/  r   r   r¡   rM  r{   r9  r!  rŽ   r"  )rì  r’  r®  r  rÝ   r  r  r  r
  rV  rÏ  s   &&&&&&&&& €rœ   r/  ÚExternKernelAlloc.__init___   sº   ø€ ð  ×.Ñ.¨vÓ6Ðß‹sÑCÑ2BÓC�s�sŠsÑCÑ2BÓC×CÒCÜ ØOóð ô 	‰ÑØØÜ”œ&Õ!Ð#3Ó4ØØ�LˆL�bØØØØ)Øô	
ð ')ˆŒÜ—G‘G×+Ñ+¨DÓ1ˆŒ	Ü	�‰×"Ñ" 4Ö(r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rg  ‚   ó   € ÷ ñ  ñ r›   c                	ó   € R # r®  r“   rë  s   &rœ   r'  Ú!ExternKernelAlloc.should_allocate‚   r±  r›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   rg  …   s   € ÷ "ñ " $ñ "r›   c                	ó   € \         hrª   re  rë  s   &rœ   r5  Ú"ExternKernelAlloc.apply_constraint…   rg  r›   )rŽ   rM  )r“   NNNr“   N)
r•   r–   r—   r˜   rG  r/  r'  r5  rš   r  r  s   @rœ   rä  rä  [   s"   ø† õ3÷!)ò !)õF÷"ó "r›   rä  c                  ób   a € ] tR tRtRtR V 3R lltR R ltR R ltR	 R
 ltR R lt	Rt
V ;t# )r'  i‰   zH
An output buffer that represents the mutation of a pre-existing buffer
c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r¤   r’  rS  Úmutated_noder¡   Úmutating_noder[  r¦   r¿   r“   )r§   s   "rœ   r¨   ÚMutationOutput.__annotate__Ž   s,   € ÷ 2ñ 2Ø ð2Ø06ð2ØGPð2à	ñ2r›   c                	óì   <€ \         SV `  R VR7       VP                  4       p\        P                  P                  V4       V.V n        W0n        \        P                  P                  V 4      V n	        R # )NrI  )
rÍ  r/  r¼  r{   r9  r•
  Úmutation_namesrz  r!  rŽ   )rì  r’  ry  rz  Úmutated_node_namerÏ  s   &&&& €rœ   r/  ÚMutationOutput.__init__Ž   s`   ø€ ô 	‰Ñ˜d¨6ÐÔ2Ø(×1Ñ1Ó3ÐÜ	�‰×#Ñ#Ð$5Ô6Ø0Ð1ˆÔØ(5ÔÜ—G‘G×+Ñ+¨DÓ1ˆŽ	r›   c               ó   € V ^8„  d   QhRR/# r0  r“   )r§   s   "rœ   r¨   r{  ˜   s   € ÷ "ñ " ñ "r›   c                	ó   € V P                   # rª   )rz  rë  s   &rœ   r  ÚMutationOutput.get_defining_op˜   s   € Ø×!Ñ!Ð!r›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   r{  ›   ó   € ÷ #ñ # Mñ #r›   c                	ó   € V P                   # rª   ©r}  rë  s   &rœ   rE  Ú!MutationOutput.get_mutation_names›   r×  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r{  ž   rq  r›   c                	ó   € R # r®  r“   rë  s   &rœ   r'  ÚMutationOutput.should_allocatež   r±  r›   c               ó   € V ^8„  d   QhRR/# ©r¤   r¦   r¯  r“   )r§   s   "rœ   r¨   r{  ¡   s   € ÷ 
ñ 
Ð&6ñ 
r›   c                	ój   € V P                  4       pR  V 4        Uu. uF  pVf   K	  VNK  	  up# u upi )c              3  ó`   "  € T F$  p\         P                  P                  V4      x € K&  	  R # 5irª   )r{   r9  Útry_get_buffer)r  rŽ   s   & rœ   r  Ú6MutationOutput.get_mutation_buffers.<locals>.<genexpr>¥   s"   é € ÐPÁ¸œŸ™×.Ñ.¨t×4Ð4Ãùs   ‚,.)rE  )rì  r}  r  s   &  rœ   Úget_mutation_buffersÚ#MutationOutput.get_mutation_buffers¡   sB   € Ø×0Ñ0Ó2ˆñ QÁÔPó
áP�Ø÷ ˆCÙPñ
ð 	
ùò 
s   œ0§0)rz  r}  rŽ   )r•   r–   r—   r˜   rS  r/  r  rE  r'  r‘  rš   r  r  s   @rœ   r'  r'  ‰   s+   ø† ñ÷2ð 2õ"õ#õ÷
ó 
r›   r'  c                  óN   a € ] tR tRtRtRtR V 3R lltR R ltR R	 ltR
t	V ;t
# )ÚOrderingBarrieriª   aº  A no-op that creates a rename chain for scheduling order.

Takes a source buffer and produces a new buffer name. The scheduler
sees this as a node with a rename (source -> self), so future readers
of the source are redirected through this barrier.

Uses WeakDep(is_fake=True) instead of StarDep via the ``ordering_only``
flag, avoiding lifetime extension and mark_buffer_mutated side effects.
No kernel is generated and no allocation occurs.
Tc               ó    € V ^8„  d   QhRRRR/# )r¤   Úsource_noder¡   r¦   r¿   r“   )r§   s   "rœ   r¨   ÚOrderingBarrier.__annotate__¸   s   € ÷ 	)ñ 	) Fð 	)¨tñ 	)r›   c                	ó0  <€ VP                  4        \        SV `	  R \        VP	                  4       R7      V.R7       VP                  4       .V n        \        P                  P                  V 4      V n
        \        P                  P                  V 4       R # )NrÙ  rÏ  )r–  rÍ  r/  r~
  rB  r¼  r}  r{   r9  r!  rŽ   r"  )rì  r–  rÏ  s   &&€rœ   r/  ÚOrderingBarrier.__init__¸   sx   ø€ Ø×ÑÔÜ‰ÑØÜ [×%;Ñ%;Ó%=Ô>Ø�=ð 	ô 	
ð
  +×3Ñ3Ó5Ð6ˆÔÜ—G‘G×+Ñ+¨DÓ1ˆŒ	Ü	�‰×"Ñ" 4Ö(r›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   r—  Ã   r„  r›   c                	ó   € V P                   # rª   r†  rë  s   &rœ   rE  Ú"OrderingBarrier.get_mutation_namesÃ   r×  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r—  Æ   rq  r›   c                	ó   € R # r®  r“   rë  s   &rœ   r'  ÚOrderingBarrier.should_allocateÆ   r±  r›   )r}  rŽ   )r•   r–   r—   r˜   rS  r½
  r/  rE  r'  rš   r  r  s   @rœ   r”  r”  ª   s(   ø† ñ	ð €M÷	)ð 	)õ#÷ó r›   r”  c                  ó†   a € ] tR tRt$ Rt/ tR]R&   ]R R l4       t]R R l4       t	R	 V 3R
 llt
R R ltR R ltRtV ;t# )ÚTMADescriptoriÊ   aL  
An IR node representing a generic host-side TMA descriptor in the Triton API
Mostly useful for user-defined Triton kernels relying on host-side TMA;
but can, in principle, be used for Inductor's Triton templates, too.

See TMADescriptorExperimental and TMADescriptorStable for the two implementations
(the old API and the new API)
zdict[Any, TMADescriptor]Ú_CACHEc               ó$   € V ^8„  d   QhRRRRRR/# ©r¤   r‰  r¡   Útma_metaztuple[str, tuple[Any, ...]]r¦   r¡  r“   )r§   s   "rœ   r¨   ÚTMADescriptor.__annotate__Ù   s$   € ÷ 
=ñ 
=Øð
=Ø'Bð
=à	ñ
=r›   c                	óÖ   € \        V4      ^8w  d   \        R4      hV^ ,          R8X  d   \        V.V^,          O5!  # V^ ,          R8w  d   \        R4      h\        V.V^,          O5!  # )r¤   zExpected len(tma_meta) == 2Úexperimentalr  z Expected tma_meta[0] == "stable")rð   rÓ   ÚTMADescriptorExperimentalÚTMADescriptorStable)rê  r‰  r¥  s   &&&rœ   Ú_create_implÚTMADescriptor._create_implØ   sh   € ô ˆx‹=˜AÔÜ Ð!>Ó?Ð?Ø�A�;˜.Ô(Ü,¨VÐB°h¸qµkÓBÐBà˜�{˜hÔ&Ü$Ð%GÓHÐHÜ& vÐ<°¸µÓ<Ð<r›   c               ó$   € V ^8„  d   QhRRRRRR/# r¤  r“   )r§   s   "rœ   r¨   r¦  æ   s$   € ÷ ñ ØðØ'Bðà	ñr›   c                	óž   € \        V4      V3pW0P                  9  d   V P                  W4      V P                  V&   V P                  V,          # rª   )r‚  r¢  r«  )rê  r‰  r¥  r	  s   &&& rœ   rê  ÚTMADescriptor.createå   sB   € ô �&‹z˜8Ð$ˆØ—j‘jÔ Ø!×.Ñ.¨vÓ@ˆC�J‰J�s‰OØ�z‰z˜#�Ðr›   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   r‰  r¡   r®  r9  r  r¦   r¿   r“   )r§   s   "rœ   r¨   r¦  î   s,   € ÷ )ñ )Øð)Ø&3ð)ØDQð)à	ñ)r›   c           
     	óH  <€ \         SV `  R \        \        VVP	                  4       R7      4      \        \        \        ,          V4      \        V4      R 4       Wn	        \        P                  P                  V 4      V n        \        P                  P                  V 4       R # )Nr�  )rÍ  r/  r[
  r˜  r>  r   r   r»  rÆ   r‰  r{   r9  r!  rŽ   r"  )rì  r‰  r®  r  rÏ  s   &&&&€rœ   r/  ÚTMADescriptor.__init__î   s�   ø€ ô 	‰ÑØô ÜØØ!×,Ñ,Ó.ôóô ”œ&Õ! 6Ó*Ü�-Ó Øô	
ð  ŒÜ—G‘G×+Ñ+¨DÓ1ˆŒ	Ü	�‰×"Ñ" 4Ö(r›   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   r¦  !  ó   € ÷ .ñ .Ð3ð .¸ñ .r›   c                	ó(   € VP                  V 4       R # rª   )Úgenerate_tma_descriptorrF  s   &&rœ   rG  ÚTMADescriptor.codegen!  ó   € Ø×'Ñ'¨Ö-r›   c               ó   € V ^8„  d   QhRR/# rç  r“   )r§   s   "rœ   r¨   r¦  !  r»  r›   c                	ó   € V P                   # rª   )r‰  rë  s   &rœ   Ú
get_tensorÚTMADescriptor.get_tensor!  rÛ  r›   )rŽ   r‰  )r•   r–   r—   r˜   rS  r¢  r™   r:  r«  rê  r/  rG  r»  rš   r  r  s   @rœ   r¡  r¡  Ê   sT   ø‡ ñð (*€FÐ$Ó)àô
=ó ð
=ð ôó ð÷)ð )õ..÷ó r›   r¡  c                  ó6   a € ] tR tRtRtRR V 3R llltRtV ;t# )r©  i!  z“
the new host-side TMA Descriptor API:
(the ones obtained via create_{1d,2d}_tma_descriptor calls).

See also TMADescriptorStable for the new API.
c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r¤   r‰  r¡   rú  úlist[int | torch.SymInt]Ú
block_dimsÚelement_sizerÉ  r¦   r¿   r“   )r§   s   "rœ   r¨   Ú&TMADescriptorExperimental.__annotate__!  s<   € ÷ 
ñ 
àð
ð 'ð
ð -ð	
ð
 !ð
ð 
ñ
r›   c                	ó�  <€ \        V4      R9  d   \        R4      h\        V4      \        V4      8w  d   \        R4      hVf   VP                  4       P                  pW n        W0n        W@n        \        V P                  4      V n        V.p. V P                  OV P
                  OV P                  Np\        SV `%  VVVR7       R# )rñ  zExpected len(dims) in (1, 2)z%Expected len(dims) == len(block_dims)N©r‰  r®  r  )rñ  r¤   )
rð   rÓ   rA  r™  rú  rÀ  rÁ  rá	  rÍ  r/  )rì  r‰  rú  rÀ  rÁ  r®  r  rÏ  s   &&&&&  €rœ   r/  Ú"TMADescriptorExperimental.__init__!  sÅ   ø€ ô ˆt‹9˜FÔ"Ü Ð!?Ó@Ð@Üˆt‹9œ˜J›Ô'Ü Ð!HÓIÐIàÒØ!×+Ñ+Ó-×6Ñ6ˆLàŒ	Ø$ŒØ(ÔÜ˜Ÿ	™	“NˆŒ	à�ˆð
Ø�Y‰Yð
à�_‰_ð
ð ×Ñð
ˆô 	‰ÑØØØ'ð 	ö 	
r›   )rÀ  rú  rÁ  rá	  rª   ©r•   r–   r—   r˜   rS  r/  rš   r  r  s   @rœ   r©  r©  !  s   ø† ñ÷
÷ 
ð 
r›   r©  c                  ó2   a € ] tR tRtRtR V 3R lltRtV ;t# )rª  i6!  z‘
the new host-side TMA descriptor API
(the ones obtained via TensorDescriptor.from_tensor).

See also TMADescriptorExperimental for the old API.
c               ó    € V ^8„  d   QhRRRR/# )r¤   r‰  r¡   Úblock_shaper¿  r“   )r§   s   "rœ   r¨   Ú TMADescriptorStable.__annotate__>!  s   € ÷ 
ñ 
˜vð 
Ð4Lñ 
r›   c                	ó:   <€ W n         \        SV `	  VV.VR 7       R# )rÄ  N)rÉ  rÍ  r/  )rì  r‰  rÉ  rÏ  s   &&&€rœ   r/  ÚTMADescriptorStable.__init__>!  s&   ø€ Ø&Ôä‰ÑØØ�8Ø%ð 	ö 	
r›   )rÉ  rÆ  r  s   @rœ   rª  rª  6!  s   ø† ñ÷
ö 
r›   rª  c                  ó>   a € ] tR tRtRR V 3R llltR R ltRtV ;t# )ÚSubgraphBufferiH!  c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r¤   r’  r_  r´   r¢  r   r¡  Úexample_inputsú	list[Any]Úsubgraph_namer�   r²  r�  r“   )r§   s   "rœ   r¨   ÚSubgraphBuffer.__annotate__I!  sN   € ÷ -Añ -Aàð-Að "ð-Að !ð	-Að
 "ð-Að ð-Að .ñ-Ar›   c           	     	óž  <€ \         SV `  R W4       W0n        W@n        \        P
                  P                  V 4      V n        \        P
                  P                  V 4       \        P
                  P                  V P                  WE4      V n
        \        V P                  4      '       g   \        R4      h\        V P                  4      pV FT  pW€P                  P                  VP                  &   V P                  P                   P#                  VP                  4       KV  	  V U	u. uF  q™P                  NK  	  up	V n        ^ R IHu Hp
 \        P,                  ! V P                  4      ;_uu_ 4        RRRRRR/p/ VCT;'       g    / CpV
P/                  V4      ;_uu_ 4        V P                  P0                  ! V P                  !   R R R 4       V'       d=   V P                  P2                   F"  pVP5                  VP7                  4       4       K$  	  R R R 4       R # u up	i   + '       g   i     Lc; i  + '       g   i     R # ; i)Nú&Expected is_node_sequence(self.inputs)Úmax_autotuneFÚmax_autotune_gemmÚmax_autotune_gemm_backendsÚATEN)rÍ  r/  r   rÐ  r{   r9  r!  rŽ   r"  Úmake_subgraphÚsubgraphr“  r®  rÓ   r¶  rÐ  Úgraph_input_namesr@  Ú
sym_inputsÚtorch._inductor.configr.  rM   Úset_graph_handlerr!   ÚrunÚ
operationsrˆ  r‹  )rì  r’  r´   r   rÐ  rÒ  r²  rÝ  Úsym_inpÚsym_varÚinductor_configÚbase_patchesÚmerged_patchesr¥  rÏ  s   &&&&&&&       €rœ   r/  ÚSubgraphBuffer.__init__I!  s²  ø€ ô 	‰Ñ˜˜vÔ3ØŒØ,ÔÜ—G‘G×+Ñ+¨DÓ1ˆŒ	Ü	�‰×"Ñ" 4Ô(äŸ™×-Ñ-¨d¯g©g°~ÓUˆŒä §¡×,Ò,Ü Ð!IÓJÐJÜ(¨¯©Ó5ˆ
ã!ˆGØ7>�M‰M×&Ñ& w§|¡|Ñ4Ø�M‰M×+Ñ+×2Ñ2°7·<±<Ö@ñ "ñ 8BÓB±z¨GŸ<œ<±zÑBˆŒç8Ð8ä× Ò  §¡×/Õ/ð  Ø# UØ,¨fðˆLð .X°Ð-WÀ×AUÐAUÐSUÐ-WˆNØ ×&Ñ& ~×6Õ6Ø—‘×!Ò! 4×#6Ñ#6Ò7÷ 7÷
 ØŸ-™-×2Ô2�BØ×)Ñ)¨.×*=Ñ*=Ó*?Ö@ñ 3÷ 0Ñ/ùò	 C÷ 7×6ú÷ 0×/Ð/ús0   Ä)H#Å62H;Æ(%H(	ÇH;Ç<H;È(H8È3H;È;I	c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   rÓ  x!  s   € ÷ 
ñ 
Ð3ð 
¸ñ 
r›   c                	ó8  €  ! R  R4      p\        V P                  4      '       g   \        R4      hV P                   Uu. uF  q3P                  4       NK  	  ppVP	                  V! V P
                  4      . V P                  OVOV P                  .4       R# u upi )c                  ó"   € ] tR tRtR R ltRtR# )Ú,SubgraphBuffer.codegen.<locals>.CodegenGraphiy!  c               ó   € V ^8„  d   QhRR/# )r¤   r9  r�   r“   )r§   s   "rœ   r¨   Ú9SubgraphBuffer.codegen.<locals>.CodegenGraph.__annotate__z!  s   € ÷ 'ñ ' mñ 'r›   c                	ó4   € Wn         VP                  V n        R # rª   ©r9  rŽ   )rì  r9  s   &&rœ   r/  Ú5SubgraphBuffer.codegen.<locals>.CodegenGraph.__init__z!  s   € Ø"”
Ø!ŸJ™J�–	r›   rï  N)r•   r–   r—   r˜   r/  rš   r“   r›   rœ   ÚCodegenGraphrë  y!  s   † ÷'ñ 'r›   rñ  rÕ  N)r“  r®  rÓ   r�  Ú'codegen_subgraph_with_flattened_outputsrÛ  rÝ  rŽ   )rì  r8  rñ  rH  Úouter_inputss   &&   rœ   rG  ÚSubgraphBuffer.codegenx!  s‚   € ÷	'ñ 	'ô
   §¡×,Ò,Ü Ð!IÓJÐJØ7;·{²{ÓC±{°!×+Ñ+Ö-±{ˆÐCà×7Ñ7Ù˜Ÿ™Ó'Ø-ˆd�o‰oÐ- Ð-Ø�Y‰YˆKö	
ùò Ds   ¿B)rÐ  r   rŽ   rÛ  rÝ  rª   ©r•   r–   r—   r˜   r/  rG  rš   r  r  s   @rœ   rÎ  rÎ  H!  s   ø† ÷-Aò -A÷^
ó 
r›   rÎ  c                  óÈ   a € ] tR tRtRtR R ltR R lt]R R l4       tR	 R
 lt	R R lt
]! R 4      RR V 3R lll4       tR R ltR V 3R lltR R ltR R ltRtV ;t# )ÚUserDefinedTritonKerneli‰!  z6
A user-defined triton kernel (e.g. via @triton.jit).
c               ó   € V ^8„  d   QhRR/# )r¤   r¦   z(tuple[Kernel, Any, list[str], list[str]]r“   )r§   s   "rœ   r¨   Ú$UserDefinedTritonKernel.__annotate__Ž!  s   € ÷  Gñ  GÐ)Qñ  Gr›   c                	ó²  a€ ^ RI Hp ^ RIHp VP	                  V P
                  4      o. p. p. p\        SV4      '       Ed   \        SR4      '       d'   VP                  V3R lSP                   4       4       M8\        SR4      '       g   \        R4      hVP                  SP                  4       \        SR4      '       dA   SP                   F/  pVP                  SP                  P                  V,          4       K1  	  M8\        SR4      '       g   \        R	4      hVP                  SP                   4       SP"                  pSP                  oSW4V3# )
r   )Ú	Autotuner)Úkernel_side_tableÚrestore_idxc              3  ó^   <"  € T F"  pSP                   P                  V,          x € K$  	  R # 5irª   )rá   Ú	arg_names)r  rò   rb  s   & €rœ   r  ÚBUserDefinedTritonKernel.get_kernel_and_metadata.<locals>.<genexpr>›!  s'   øé € ð *Ù4F¨q�F—I‘I×'Ñ'¨×*Ò*Ó4Fùs   ƒ*-Úrestore_valuez)Expected hasattr(kernel, "restore_value")Ú	reset_idxÚreset_to_zeroz)Expected hasattr(kernel, "reset_to_zero"))Útriton.runtime.autotunerrû  Ú*torch._higher_order_ops.triton_kernel_wraprü  Ú
get_kernelÚ
kernel_idxr«   r,  rÜ  rý  rÓ   r  r  r@  rá   rÿ  r  Úconfigs)rì  rû  rü  r  Úrestore_value_argsÚreset_to_zero_argsrò   rb  s   &      @rœ   Úget_kernel_and_metadataÚ/UserDefinedTritonKernel.get_kernel_and_metadataŽ!  s#  ø€ Ý6åPà"×-Ñ-¨d¯o©oÓ>ˆØˆØ(*ÐØ(*ÐÜ�f˜i×(Ó(ô �v˜}×-Ò-Ø"×)Ñ)ô *Ø4:×4FÒ4Fó*õ ô ˜v ×7Ò7Ü(Ð)TÓUÐUØ"×)Ñ)¨&×*>Ñ*>Ô?ä�v˜{×+Ò+Ø×)Ô)�AØ&×-Ñ-¨f¯i©i×.AÑ.AÀ!Õ.DÖEò *ô ˜v ×7Ò7Ü(Ð)TÓUÐUØ"×)Ñ)¨&×*>Ñ*>Ô?à—n‘nˆGØ—Y‘YˆFà�wÐ4FÐFÐFr›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rù  °!  s   € ÷ 7ñ 7 4ñ 7r›   c                ó$  € \         P                  '       g   R# V P                  P                  '       g   R# \	        V P
                  P                  4      ^8w  d   R# \	        V P                  4      ^8w  d   \        R4      h\        V P                  ^ ,          \        4      '       g   R# \        V P                  ^ ,          P                  \        4      '       g   R# \        V P                  ^ ,          P                  P                  \        4      '       g   R# \        V P                  ^ ,          P                  P                  P                  \        4      '       g   R# \        ;QJ dU    R V P                  ^ ,          P                  P                  P                  P                    4       F  '       d   K   RMJ	  RMF! R V P                  ^ ,          P                  P                  P                  P                    4       4      '       g   R# R# )aµ  
For kernels like

@triton.jit
def add_kernel(in_ptr0, in_ptr1, out_ptr, n_elements, BLOCK_SIZE: tl.constexpr):
    pid = tl.program_id(0)
    offs = pid * BLOCK_SIZE + tl.arange(0, BLOCK_SIZE)
    mask = offs < n_elements
    x = tl.load(in_ptr0 + offs, mask=mask)
    y = tl.load(in_ptr1 + offs, mask=mask)
    tl.store(out_ptr + offs, x + y, mask=mask)

@torch.compile
def fn(a, b):
    out = torch.empty_like(a)
    grid = (triton.cdiv(a.numel(), 1024),)
    add_kernel[grid](a, b, out, a.numel(), BLOCK_SIZE=1024)
    return out.relu()

We can potentially fuse the relu epilogue into the add_kernel.
We do this by pruning the `out` tensor allocation and directly writing the relu-output.
Fz$Expected len(self.mutable_args) == 1c              3  ó*   "  € T F	  q^ 8H  x € K  	  R# 5iri  r“   rî  s   & rœ   r  Ú<UserDefinedTritonKernel.can_fuse_epilogue.<locals>.<genexpr>ä!  s   é € ÐNÑ#M˜a˜–6Ó#Mùrð  T)rM   Ú*epilogue_fusion_user_defined_triton_kernelÚarg_accessesÚcan_fuse_epiloguerð   Úkernel_storesÚstoresÚmutable_argsrÓ   r«   r    r‘  rº  rà  rD  r  r¸  rë  s   &rœ   r  Ú)UserDefinedTritonKernel.can_fuse_epilogue°!  sd  € ô0 ×@×@Ð@Ùà× Ñ ×2×2Ð2Ùô ˆt×!Ñ!×(Ñ(Ó)¨QÔ.Ùô ˆt× Ñ Ó! QÔ&Ü Ð!GÓHÐHÜ˜$×+Ñ+¨AÕ.´	×:Ò:ÙÜ˜$×+Ñ+¨AÕ.×3Ñ3´Z×@Ò@ÙÜ˜$×+Ñ+¨AÕ.×3Ñ3×8Ñ8¼.×IÒIÙÜ˜$×+Ñ+¨AÕ.×3Ñ3×8Ñ8×=Ñ=¼y×IÒIÙß‹sÑN 4×#4Ñ#4°QÕ#7×#<Ñ#<×#AÑ#A×#FÑ#F×#MÒ#MÓN�s�sŠsÑN 4×#4Ñ#4°QÕ#7×#<Ñ#<×#AÑ#A×#FÑ#F×#MÒ#MÓN×NÒNÙár›   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   rù  ê!  s   € ÷ <ñ <Ð3ð <¸ñ <r›   c                	ó(   € V P                  VR R7      # )N)Úepilogue_fusion©Ú_codegenrF  s   &&rœ   rG  ÚUserDefinedTritonKernel.codegené!  s   € à�}‰}˜W°dˆ}Ó;Ð;r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r8  r€   r  ztuple[ComputedBuffer, str]r¦   r¿   r“   )r§   s   "rœ   r¨   rù  í!  s$   € ÷ 7ñ 7Ø+ð7Ø>Xð7à	ñ7r›   c                ó$   € V P                  W4      # )zA
epilogue_fusion: (fused epilogue node, modified kerel src code)
r  )rì  r8  r  s   &&&rœ   Úcodegen_with_epilogue_fusionÚ4UserDefinedTritonKernel.codegen_with_epilogue_fusioní!  s   € ð �}‰}˜WÓ6Ð6r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r8  r€   r  z!tuple[ComputedBuffer, str] | Noner¦   r¿   r“   )r§   s   "rœ   r¨   rù  õ!  s-   € ÷ m
ñ m
à%ðm
ð ;ðm
ð 
ñ	m
r›   c                ó  a€ ^ RI Hp V P                  4       w  ppppV P                  p/ p	V'       d¸   \	        V P
                  P                  P                  4      ^8w  d6   \        R\	        V P
                  P                  P                  4       24      h\        \        V P
                  P                  P                  4      4      P                  p
Vw  r¼/ V P                  CW«/CpW«/p	VP                  VVVVVV P                  VV P                  4      w  ppppV P                   Uu/ uF  pVV P!                  V4      bK  	  ppVP#                  V	4       VP$                   Uu. uF  pVP                  NK  	  upoVP$                   Uu. uF#  pVP&                  '       g   K  VP(                  NK%  	  pp\+        V3R lV 4       4      p. p. p. p. p\,        P.                  ! VP1                  4       \3        \,        P4                  ! R4      V4      4       EF�  w  ppVV9   d   V! 4       '       d   K  VP7                  V4       VP7                  V4       \9        V\:        4      '       dA   VP7                  VP=                  4       4       VP7                  VP?                  4       4       K•  \9        V\@        \B        \D        \F        34      '       d.   VP7                  V4       VP7                  \I        V4      4       Kè  VV9   d*   VP7                  R
4       VP7                  \@        4       EK  Vf[    V! 4       '       d*   VP7                  R
4       VP7                  \@        4       EKS  VPK                  4        VPK                  4        EKv  \M        R\I        V4       RV 24      h	  V PO                  W4       VPQ                  VVVVVVVRV PS                  4       V PT                  P                  R	7
       R# u upi u upi u upi )úQOverrides the parent member.
See https://github.com/pytorch/pytorch/issues/151692)Útriton_version_uses_attrs_dictzexpected one write, got c              3  ó6   <"  € T F  pSV,          x € K  	  R # 5irª   r“   )r  rò   rÿ  s   & €rœ   r  Ú3UserDefinedTritonKernel._codegen.<locals>.<genexpr>*"  s   øé € Ð$F¹:°a Y¨q§\¢\»:ùrN  r<  NzUnsupported arg type: rQ  T)Ú	arg_typesÚraw_argsÚraw_keysÚtriton_metaÚinductor_metarZ  r8  Úoriginal_fxnode_namerl  )+rŠ  r%  r  rÝ   rð   r  r  r•  rÓ   r�  r‘  rŽ   Ú!define_user_defined_triton_kernelÚgridÚlaunch_kwargsr  r  r›  r²  Úis_constexprÚnumrD   rP  rÙ	  r¼  r÷   Úrepeatr@  r«   r¡   r�  rA  r¬   rA  r¸   r"   r�   ré  rY  rA  Úgenerate_kernel_callrB  r  )rì  r8  r  r%  rb  r  r	  r
  Úkernel_kwargsÚepilogue_out_overrideÚmutable_arg_nameÚepilogue_computed_bufferr&  Únew_namer+  r,  Úextra_launch_argsr  Ú
named_argsrØ  Ú
constexprsÚconstexpr_namesrÜ   r(  Úraw_keys_filteredÚraw_args_filteredrŽ   rÍ  rÿ  s   &&&                         @rœ   r  Ú UserDefinedTritonKernel._codegenõ!  s†  ø€ õ 	Ið ×(Ñ(Ó*ñ	
ØØØØð
 Ÿ™ˆØ02ÐßÜ�4×$Ñ$×0Ñ0×7Ñ7Ó8¸AÔ=Ü$Ø.¬s°4×3DÑ3D×3PÑ3P×3WÑ3WÓ/XÐ.YÐZóð ô  $¤D¨×):Ñ):×)FÑ)F×)MÑ)MÓ$NÓO×TÑTÐØ*9Ñ'Ð$ØW˜tŸ{™{ÐWÐ,<ÑWˆMØ%5Ð$PÐ!ð ×5Ñ5ØØØØØØ�I‰IØØ×Ñó	
ñ	
ØØØØð 26×1SÒ1Só
Ù1S¨AˆAˆt×$Ñ$ QÓ'Ò'Ñ1Sð 	ð 
ð 	×ÑÐ/Ô0à%+§]¢]Ó3¡] �Q—V”V¡]Ñ3ˆ	Ø%+§]¢]ÓE¡] °a·nµn”e�a—e”e¡]ˆ
ÐEÜ$Ô$F¹:Ó$FÓFˆàˆØ!ˆ	Ø')ÐØ')ÐÜ"ŸšØ×ÑÓ¤¤I×$4Ò$4°RÓ$8Ð:KÓ L÷
‰IˆD�#ð �Ô&Ñ+I×+KÒ+KáØ×$Ñ$ TÔ*Ø×$Ñ$ SÔ)Ü˜#œv×&Ò&Ø—‘˜C×1Ñ1Ó3Ô4Ø× Ñ  §¡£Ö1Ü˜C¤#¤u¬d´DÐ!9×:Ò:Ø—‘˜CÔ Ø× Ñ ¤ c£Ö+Ø˜Ô(ð —‘˜B”Ø× Ñ ¤×%Ø’ðñ 2×3Ò3Ø—K‘K ”OØ×$Ñ$¤S×)à%×)Ñ)Ô+Ø%×)Ñ)×+ä)Ð,BÄ4ÈÃ9À+ÈRÐPSÈuÐ*UÓVÐVñI
ðL 	×Ñ˜WÔ/Ø×$Ñ$ØØØØ&Ø&Ø#Ø'ØØ—?‘?Ó$Ø!%§¡×!2Ñ!2ð 	%ö 	
ùòi
ùò
 4ùÚEs   Ä)O8Å%O=ÆPÆ$Pc               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   rù  e"  rÄ  r›   c                	óX   <€ \         SV `  V4      \        V P                  V4      ,          # rª   )rÍ  r'  r+   r/  rÎ  s   &&€rœ   r'  Ú,UserDefinedTritonKernel.get_free_symbol_usesd"  s-   ø€ ô ‰wÑ+¨MÓ:Ô=MØ�I‰I�}ó>
õ 
ð 	
r›   c               ó   € V ^8„  d   QhRR/# r§  r“   )r§   s   "rœ   r¨   rù  n"  r¨  r›   c                	ó   € \        4       # rª   rC   rë  s   &rœ   rª  Ú0UserDefinedTritonKernel.get_unbacked_symbol_defsn"  r¬  r›   c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r¤   r  r¬   r/  r   Útma_descriptor_metadatar€  Úkernel_argsr0  ztuple[str, ...]r¦   r¿   r“   )r§   s   "rœ   r¨   rù  q"  sP   € ÷ S)ñ S)ð ðS)ð ð	S)ð
 "0ðS)ð $ðS)ð 'ðS)ð 
ñS)r›   c          	     	ó>  <€ . p/ p. pVP                  4        F�  w  rš\        V
\        4      '       d^   \        P	                  V P                  V
4      4      pW“9   d   \        P                  W³V	,          4      pVP                  V4       W·V	&   Kx  VP                  V
4       W§V	&   K�  	  \        V4      ^ 8X  d   \        R4      hV^ ,          P                  4       V n        \        V\        4      '       g   \        \        V4      4      h\        SV `A  R\#        V P                  R7      V\%        V4      V4       Wn        W n        WPn        V P-                  4       w  rÍ p\/        VR4      '       g   \        R4      hVP0                   Uu. uF  qÿV9   g   K  VNK  	  upV n        ^ RIHpHp \        V4      ^ 8”  d   V^ ,          P:                  M/ p^ RIpVP>                  V n         VPC                  V P@                  4      V n"        V! V P@                  4      V n#        W@n$        V! V/ VCVCV4      V n%        V PJ                  PL                  PN                   Uu. uFG  p\        VPQ                  VPR                  4      \        4      '       g   K4  VVPR                  ,          NKI  	  upV n*        V PT                   Uu. uF$  p\W        \#        V P                  R7      VV 4      NK&  	  upV n,        \Z        P\                  P_                  V 4       R# u upi u upi u upi )r   zExpected len(inputs) != 0NrÙ  rÿ  z%Expected hasattr(kernel, "arg_names"))Úidentify_accessed_tensorsÚidentify_triton_stores)0r¼  r«   r    rá  r¨  rs  r¡  rê  r@  rð   rÓ   rB  r8  r   r�   rÍ  r/  r~
  rÆ   r  r/  r0  r  r,  rÿ  r  r  rK  rL  rÝ   Úastr­
  Ú
kernel_srcÚparseÚ
kernel_astr  rI  r  r  r•  r1  rŽ   r  r'  r&  r{   r9  r"  )rì  r  r/  rH  rI  r0  r®  rÝ   r  r  r³  rH  rb  r  r&  rÍ  rK  rL  Úautotuned_kwargsrM  r	  r  rÏ  s   &$$$$$                €rœ   r/  Ú UserDefinedTritonKernel.__init__q"  s«  ø€ ð  "ˆØ$&ˆØ&(ˆà×%Ñ%Ö'‰DˆAÜ˜!œY×'Ò'Ü ×9Ñ9¸$×:LÑ:LÈQÓ:OÓP�ØÔ/Ü%×,Ñ,¨QÈÕ0JÓK�AØ—‘˜aÔ Ø�q“	à×$Ñ$ QÔ'Ø�q“	ñ (ô ˆv‹;˜!ÔÜ Ð!<Ó=Ð=Ø˜Q•i×*Ñ*Ó,ˆŒä˜&¤(×+Ò+Ü ¤ f£Ó.Ð.Ü‰ÑØÜ˜dŸk™kÔ*ØÜ�-Ó Øô	
ð %ŒØŒ	Ø*Ôà $× <Ñ <Ó >Ñˆ˜˜Aô �v˜{×+Ò+Ü Ð!HÓIÐIà!×+Ò+ó.
Ù+�C°kÑ/A�CˆCÑ+ñ.
ˆÔ*÷	
ô
 14°G³¸qÔ0@˜7 1�:×,Ò,ÀbÐãð !Ÿ*™*ˆŒØŸ)™) D§O¡OÓ4ˆŒÙ3°D·O±OÓDˆÔØ&Ôá5ØØ/ˆ{Ð/Ð.Ð/Ø#ó
ˆÔð ×(Ñ(×4Ñ4×;Ò;ó
á;�Ü˜+Ÿ/™/¨#¯(©(Ó3´Y×?ô "ˆK˜Ÿ™×!Ð!Ù;ñ
ˆÔð ×(Ò(ó!
á(�ô œ:¨T¯[©[Ô9¸3ÀÖEÙ(ñ!
ˆÔô 	
�‰×"Ñ" 4Ö(ùòK.
ùò6
ùò!
s   ÆLÆLÉ1LÊLÊ=*Lc               ó   € V ^8„  d   QhRR/# r¡  r“   )r§   s   "rœ   r¨   rù  Æ"  s   € ÷ +ñ +˜\ñ +r›   c                	ó,   € \        V P                  4      # rª   )rÅ   r&  rë  s   &rœ   r¤  Ú#UserDefinedTritonKernel.get_outputsÆ"  s   € Ü�D×)Ñ)Ó*Ð*r›   c               ó   € V ^8„  d   QhRR/# r   r“   )r§   s   "rœ   r¨   rù  É"  r×  r›   c                	ó   € V P                   # rª   rÙ  rë  s   &rœ   rB  Ú"UserDefinedTritonKernel.get_deviceÉ"  rÛ  r›   )r  r8  r/  rI  rP  r  rN  r  r0  r  r&  r  r®  )r•   r–   r—   r˜   rS  r  r  r   rG  r   r  re   r'  rª  r/  r¤  rB  rš   r  r  s   @rœ   r÷  r÷  ‰!  su   ø† ñõ GõD7ðr ô<ó ð<õ7õm
ñ^ Ð5Ó6÷
ñ 
ó 7ð
õ÷S)ð S)õj+÷ó r›   r÷  c                  ób   a € ] tR tRtRtR R ltR R ltR R ltR	 R
 ltR V 3R llt	Rt
V ;t# )ÚInplaceBernoulliFallbackiÍ"  ú=
This needs to be a custom class to handle mutation properly
c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   Ú%InplaceBernoulliFallback.__annotate__Ò"  s   € ÷ ñ Ð3ð ¸ñ r›   c                	ó’  € \         ;QJ d&    R  V P                   4       F  '       d   K   RM	  RM! R  V P                   4       4      '       g   \        R4      hR V P                   4       w  p\        P                  P
                  '       d^   VP                  V P                  4        RV RRP                  \        \        V P                  4      4       RVP                   24       R	# VP                  V P                  4        RV RRP                  \        \        V P                  4      4       RVP                   24       R	# )
c              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5irª   r‘  ©r  rH  s   & rœ   r  Ú3InplaceBernoulliFallback.codegen.<locals>.<genexpr>Ó"  s   é € Ð>±+¨Q”:˜a¤×(Ð(³+ùrr	  FTz8Expected all(isinstance(t, IRNode) for t in self.inputs)c              3  ó^   "  € T F#  p\        \        V4      P                  4       x € K%  	  R # 5irª   )r   r¡   r�  r`  s   & rœ   r  ra  ×"  s"   é € ÐI¹[¸””V˜Q“×1Ñ1×3Ð3»[ùs   ‚+-rI  rß  z, NULL)rR  N)r  r®  rÓ   r{   r9  rT  rË  rn  rL  rJ  Úreprr  Úending)rì  r8  r¥   s   && rœ   rG  Ú InplaceBernoulliFallback.codegenÒ"  s  € ß‹sÑ>°$·+²+Ó>�s�sŠsÑ>°$·+²+Ó>×>Ò>Ü ØJóð ñ J¸T¿[º[ÓI‰ˆä�7‰7××Ðð ×ÑØ×'Ñ'Ó)Ð*¨!¨A¨3¨b°·±¼3¼tÀT×EWÑEWÓ;XÓ1YÐ0ZÐZaÐbi×bpÑbpÐaqÐröð ×ÑØ×'Ñ'Ó)Ð*¨!¨A¨3¨b°·±¼3¼tÀT×EWÑEWÓ;XÓ1YÐ0ZÐZ[Ð\c×\jÑ\jÐ[kÐlör›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r]  ä"  rq  r›   c                	ó   € R # r®  r“   rë  s   &rœ   r'  Ú(InplaceBernoulliFallback.should_allocateä"  r±  r›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   r]  ç"  ó   € ÷ $ñ $ Mñ $r›   c                	ó&   € V P                  ^ 4      .# rŽ  ©rš  rë  s   &rœ   rE  Ú+InplaceBernoulliFallback.get_mutation_namesç"  ó   € Ø—‘ Ó"Ð#Ð#r›   c               ó   € V ^8„  d   QhRR/# r§  r“   )r§   s   "rœ   r¨   r]  ê"  r¨  r›   c                	ó   € \        4       # rª   rC   rë  s   &rœ   rª  Ú1InplaceBernoulliFallback.get_unbacked_symbol_defsê"  r¬  r›   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r¤   r
  rŠ   r¥   r¡   r  r   r¦   r¿   r“   )r§   s   "rœ   r¨   r]  í"  s,   € ÷ )ñ )Ø'ð)Ø,2ð)ØDGð)à	ñ)r›   c                	ó`  <€ \         SV `  R \        VP                  4       R7      V P	                  V.4      VVR7       \
        P                  P                  VP                  4       4       \
        P                  P                  V 4      V n
        \
        P                  P                  V 4       R # )NrÙ  ©r
  )rÍ  r/  r~
  rB  r   r{   r9  r•
  r¼  r!  rŽ   r"  )rì  r
  r¥   r  rÏ  s   &&&*€rœ   r/  Ú!InplaceBernoulliFallback.__init__í"  s€   ø€ ô 	‰ÑØÜ˜aŸl™l›nÔ-Ø×Ñ  Ó$ØØ#ð 	ô 	
ô 	
�‰×#Ñ# A§J¡J£LÔ1Ü—G‘G×+Ñ+¨DÓ1ˆŒ	Ü	�‰×"Ñ" 4Ö(r›   r  ©r•   r–   r—   r˜   rS  rG  r'  rE  rª  r/  rš   r  r  s   @rœ   rZ  rZ  Í"  s&   ø† ñõõ$õ$õ÷)ö )r›   rZ  c                  ó|   a € ] tR tRtRtR R ltR R ltR R ltR	 R
 ltR V 3R llt	]
RR R ll4       tRtV ;t# )rÁ  iý"  r[  c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   Ú InplaceCopyFallback.__annotate__#  s   € ÷ <ñ <Ð3ð <¸ñ <r›   c                	óP   € V P                  4       w  r#pVP                  W2V4       R # rª   )rý  Úcodegen_device_copy)rì  r8  r®
  r­
  Únon_blockings   &&   rœ   rG  ÚInplaceCopyFallback.codegen#  s%   € Ø#'×#4Ñ#4Ó#6Ñ ˆ�<Ø×#Ñ# C¨lÖ;r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   ry  #  rq  r›   c                	ó   € R # r®  r“   rë  s   &rœ   r'  Ú#InplaceCopyFallback.should_allocate#  r±  r›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   ry  	#  rj  r›   c                	ó&   € V P                  ^ 4      .# rŽ  rl  rë  s   &rœ   rE  Ú&InplaceCopyFallback.get_mutation_names	#  rn  r›   c               ó   € V ^8„  d   QhRR/# r§  r“   )r§   s   "rœ   r¨   ry  #  r¨  r›   c                	ó   € \        4       # rª   rC   rë  s   &rœ   rª  Ú,InplaceCopyFallback.get_unbacked_symbol_defs#  r¬  r›   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r¤   r’  rS  r®  r¯  r  r9  r¦   r¿   r“   )r§   s   "rœ   r¨   ry  #  s2   € ÷ )ñ )àð)ð !ð)ð %ð	)ð
 
ñ)r›   c           	     	ó   <€ \         SV `  R VVVRRR7       \        P                  P	                  V^ ,          P                  4       4       \        P                  P                  V 4      V n        \        P                  P                  V 4       R # )Nz
aten.copy_Úaoti_torch_copy_)r  r  )	rÍ  r/  r{   r9  r•
  r¼  r!  rŽ   r"  )rì  r’  r®  r  rÏ  s   &&&&€rœ   r/  ÚInplaceCopyFallback.__init__#  sr   ø€ ô 	‰ÑØØØØØ+Ø.ð 	ô 	
ô 	
�‰×#Ñ# F¨1¥I×$6Ñ$6Ó$8Ô9Ü—G‘G×+Ñ+¨DÓ1ˆŒ	Ü	�‰×"Ñ" 4Ö(r›   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   r®
  r¡   r­
  r|  r¸   r¦   rÁ  r“   )r§   s   "rœ   r¨   ry  "#  s,   € ÷ 
ñ 
Øð
Ø%ð
Ø59ð
à	ñ
r›   c                	ó    € W3 Uu. uF  q@P                  V4      NK  	  ppV3p\        \        VP                  4       R 7      VV4      pV# u upi )rÙ  )rs  rÁ  r~
  rB  )rê  r®
  r­
  r|  rH  r®  r  r  s   &&&&    rœ   rê  ÚInplaceCopyFallback.create!#  sU   € ð 25±
Ó;±
¨1×#Ñ# AÖ&±
ˆÐ;Ø%˜ˆÜ$Ü˜cŸn™nÓ.Ô/ØØó
ˆð
 ˆùò <s   †Ar  r®  )r•   r–   r—   r˜   rS  rG  r'  rE  rª  r/  r:  rê  rš   r  r  s   @rœ   rÁ  rÁ  ý"  s:   ø† ñõ<õõ$õ÷)ð )ð$ ö
ó ö
r›   rÁ  c                  óV   € ] tR tRtRtR R ltR R ltR R ltR	 R
 ltR R lt	Rt
R# )ÚMutatingFirstArgExternKerneli/#  r[  c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   Ú)MutatingFirstArgExternKernel.__annotate__4#  s   € ÷ 	
ñ 	
Ð3ð 	
¸ñ 	
r›   c                	ó0  € \        V P                  4      '       g   \        R 4      h. R V P                   4       O\        \        V P
                  4      OpVP                  V P                  4        RRP                  V4       RVP                   24       R# )rÕ  c              3  ó@   "  € T F  qP                  4       x € K  	  R # 5irª   )r�  r`  s   & rœ   r  Ú7MutatingFirstArgExternKernel.codegen.<locals>.<genexpr>8#  s   é € Ð9©[¨×!Ñ!×#Ð#«[ùrk  rI  rß  rR  N)
r“  r®  rÓ   rJ  rc  r  rË  rn  rL  rd  )rì  r8  Úargrefss   && rœ   rG  Ú$MutatingFirstArgExternKernel.codegen4#  s‡   € Ü §¡×,Ò,Ü Ð!IÓJÐJð
Ù9¨T¯[ª[Ó9ð
ä”�t×)Ñ)Ó*ð
ˆð 	×ÑØ×#Ñ#Ó%Ð& a¨¯	©	°'Ó(:Ð';¸1¸W¿^¹^Ð<LÐMö	
r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r‘  ?#  rq  r›   c                	ó   € R # r®  r“   rë  s   &rœ   r'  Ú,MutatingFirstArgExternKernel.should_allocate?#  r±  r›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   r‘  B#  rj  r›   c                	ó&   € V P                  ^ 4      .# rŽ  rl  rë  s   &rœ   rE  Ú/MutatingFirstArgExternKernel.get_mutation_namesB#  rn  r›   c               ó   € V ^8„  d   QhRR/# r§  r“   )r§   s   "rœ   r¨   r‘  E#  r¨  r›   c                	ó   € \        4       # rª   rC   rë  s   &rœ   rª  Ú5MutatingFirstArgExternKernel.get_unbacked_symbol_defsE#  r¬  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r‘  H#  ó   € ÷ ñ  $ñ r›   c                	ó   € R # rR  r“   rë  s   &rœ   Úhas_side_effectsÚ-MutatingFirstArgExternKernel.has_side_effectsH#  r  r›   r“   N)r•   r–   r—   r˜   rS  rG  r'  rE  rª  r£  rš   r“   r›   rœ   r�  r�  /#  s%   † ñõ	
õõ$õ÷ñ r›   r�  c                  ó.   a € ] tR tRtR V 3R lltRtV ;t# )ÚResizeStorageBytesiL#  c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   Úvariabler¡   rÛ  r¬   r¦   r¿   r“   )r§   s   "rœ   r¨   ÚResizeStorageBytes.__annotate__M#  s&   € ÷ Bñ B ð B°3ð B¸4ñ Br›   c                	óª  <€ \        V\        4      '       g   \        R 4      h\        SV `  R\        VP                  4       R7      V P                  V.4      V3R7       \        P                  P                  VP                  4       4       \        P                  P                  V 4      V n        \        P                  P                  V 4       RV n        RV n        \        V\"        \$        \&        34      '       g   \        \)        V4      4      h\        P                  P*                  P-                  VP.                  P                  4       4       R# )zTODO: dynamic shapesNrÙ  )r  z"inductor_ops.resize_storage_bytes_z&torch::inductor::resize_storage_bytes_)r«   r¬   rÓ   rÍ  r/  r~
  rB  r   r{   r9  r•
  r¼  r!  rŽ   r"  r  r  r¸  rº  r    r�   Únever_reuse_buffersr-  r‘  )rì  r¨  rÛ  rÏ  s   &&&€rœ   r/  ÚResizeStorageBytes.__init__M#  sô   ø€ Ü˜(¤C×(Ò(Ü Ð!7Ó8Ð8Ü‰ÑØÜ˜h×1Ñ1Ó3Ô4Ø×Ñ  
Ó+Ø#˜+ð	 	ô 	
ô 	
�‰×#Ñ# H×$5Ñ$5Ó$7Ô8Ü—G‘G×+Ñ+¨DÓ1ˆŒ	Ü	�‰×"Ñ" 4Ô(Ø"FˆÔØGˆÔÜ˜(¤X¬z¼9Ð$E×FÒFÜ ¤ h£Ó0Ð0Ü	�‰×#Ñ#×'Ñ'¨¯©×(>Ñ(>Ó(@ÖAr›   )r  rŽ   r  rd  r  s   @rœ   r¦  r¦  L#  s   ø† ÷Bö Br›   r¦  c                  ó:   a € ] tR tRtR V 3R lltR R ltRtV ;t# )ÚSetSourceTensorKerneli`#  c               ó$   € V ^8„  d   QhRRRRRR/# ©r¤   Úself_tensorr¡   Ústorage_tensorr¦   r¿   r“   )r§   s   "rœ   r¨   Ú"SetSourceTensorKernel.__annotate__a#  ó!   € ÷ 
ñ 
 Fð 
¸Fð 
Àtñ 
r›   c                	ó0  <€ V P                  V4      pVP                  4        \        SV `  VP	                  4       W.R \
        P                  P                  P                  P                  R7       \        V\        \        \        34      '       g   \        \        V4      4      h\         P"                  P$                  P'                  VP(                  P+                  4       4       \         P"                  P$                  P'                  VP+                  4       4       \         P"                  P$                  P'                  V P+                  4       4       VP-                  4       p\/        \1        VR7      W4      \/        \1        VR7      W 4      .V n        R# )z!torch.ops.aten.set_.source_Tensor©r  r
  rÙ  N©rs  rì  rÍ  r/  r>  rD  ry   rL  Úset_Úsource_Tensorr«   r¸  rº  r    rÓ   r�   r{   r9  r«  r-  r‘  r¼  rB  r'  r~
  r&  ©rì  r±  r²  r8  rÏ  s   &&& €rœ   r/  ÚSetSourceTensorKernel.__init__a#  ó  ø€ Ø×+Ñ+¨NÓ;ˆØ×$Ñ$Ô&Ü‰ÑØ×%Ñ%Ó'ØÐ)ØBÜŸ	™	Ÿ™×+Ñ+×9Ñ9ð	 	ô 	
ô ˜+¬´*¼iÐ'H×IÒIÜ ¤ kÓ!2Ó3Ð3Ü	�‰×#Ñ#×'Ñ'¨×(8Ñ(8×(AÑ(AÓ(CÔDÜ	�‰×#Ñ#×'Ñ'¨×(?Ñ(?Ó(AÔBÜ	�‰×#Ñ#×'Ñ'¨¯©«Ô8Ø×*Ñ*Ó,ˆäœ:¨VÔ4°kÓHÜœ:¨VÔ4°nÓKð!
ˆÖr›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   r³  u#  ó   € ÷ 8ñ 8¨mñ 8r›   c                	óF   € V P                  ^ 4      V P                  ^4      .# rŽ  rl  rë  s   &rœ   rM  Ú2SetSourceTensorKernel.get_inputs_that_alias_outputu#  ó   € Ø—‘ Ó" D§O¡O°AÓ$6Ð7Ð7r›   r¡  ©r•   r–   r—   r˜   r/  rM  rš   r  r  s   @rœ   r®  r®  `#  ó   ø† ÷
ð 
÷(8ó 8r›   r®  c                  ó:   a € ] tR tRtR V 3R lltR R ltRtV ;t# )ÚShallowCopyDataKerneliy#  c               ó$   € V ^8„  d   QhRRRRRR/# r°  r“   )r§   s   "rœ   r¨   Ú"ShallowCopyDataKernel.__annotate__z#  r´  r›   c                	ó0  <€ V P                  V4      pVP                  4        \        SV `  VP	                  4       W.R \
        P                  P                  P                  P                  R7       \        V\        \        \        34      '       g   \        \        V4      4      h\         P"                  P$                  P'                  VP(                  P+                  4       4       \         P"                  P$                  P'                  VP+                  4       4       \         P"                  P$                  P'                  V P+                  4       4       VP-                  4       p\/        \1        VR7      W4      \/        \1        VR7      W 4      .V n        R# )z!torch.ops.aten.shallow_copy_data_r¶  rÙ  Nr·  rº  s   &&& €rœ   r/  ÚShallowCopyDataKernel.__init__z#  r¼  r›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   rÇ  Ž#  r¾  r›   c                	óF   € V P                  ^ 4      V P                  ^4      .# rŽ  rl  rë  s   &rœ   rM  Ú2ShallowCopyDataKernel.get_inputs_that_alias_outputŽ#  rÁ  r›   r¡  rÂ  r  s   @rœ   rÅ  rÅ  y#  rÃ  r›   rÅ  c                  ón   a € ] tR tRtRtR R ltR R ltR R ltR	 R
 ltRRRR/R V 3R lllt	Rt
V ;t# )ÚScatterFallbacki’#  zµ
This needs to be a custom class to handle mutation properly.
This class handles both aten.scatter_ and aten.scatter_reduce_.
It also handle the case `src` being a scalar properly.
c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   ÚScatterFallback.__annotate__™#  s   € ÷ 0ñ 0Ð3ð 0¸ñ 0r›   c                	ó(   € VP                  V 4       R # rª   )Úgenerate_scatter_fallbackrF  s   &&rœ   rG  ÚScatterFallback.codegen™#  s   € Ø×)Ñ)¨$Ö/r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rÐ  œ#  rq  r›   c                	ó   € R # r®  r“   rë  s   &rœ   r'  ÚScatterFallback.should_allocateœ#  r±  r›   c               ó   € V ^8„  d   QhRR/# rú  r“   )r§   s   "rœ   r¨   rÐ  Ÿ#  s   € ÷  ñ   Iñ  r›   c                	óŒ   € V P                   ^ ,          p\        V\        4      '       g   \        R4      hVP	                  4       .# ©r   z Expected isinstance(inp, IRNode)r˜  ©rì  rµ  s   & rœ   rE  Ú"ScatterFallback.get_mutation_namesŸ#  s7   € Ø�k‰k˜!�nˆÜ˜#œv×&Ò&Ü Ð!CÓDÐDØ—‘“ÐÐr›   c               ó   € V ^8„  d   QhRR/# r§  r“   )r§   s   "rœ   r¨   rÐ  ¥#  r¨  r›   c                	ó   € \        4       # rª   rC   rë  s   &rœ   rª  Ú(ScatterFallback.get_unbacked_symbol_defs¥#  r¬  r›   rO  NÚinclude_selfTc               ó8   € V ^8„  d   QhRRRRRRRRRRR	R
RRRR/# )r¤   r
  rŠ   r¥   r¡   r€  r¬   rë   r­
  rO  rO  rß  r¸   r¦   r¿   r“   )r§   s   "rœ   r¨   rÐ  ¨#  sZ   € ÷ !)ñ !)à!ð!)ð ð!)ð ð	!)ð
 ð!)ð ð!)ð ð!)ð ð!)ð 
ñ!)r›   c               	ót  <€ \        V\        4      V n        V P                  '       d&   W$V3 Uu. uF  q€P                  V4      NK  	  p	pV3p
M#W$3 Uu. uF  q€P                  V4      NK  	  p	pW53p
\        SV `  R \        VP                  4       R7      V P                  V	4      V
RVRV/\        V4      RR.VR7       \        P                  P                  VP                  4       4       \        P                  P                  V 4      V n        \        P                  P!                  V 4       R # u upi u upi )NrÙ  rO  rß  )r  r  r
  )r«   r    Úsrc_is_tensorrs  rÍ  r/  r~
  rB  r   r�   r{   r9  r•
  r¼  r!  rŽ   r"  )rì  r
  r¥   r€  rë   r­
  rO  rß  rH  Útensorsr  rÏ  s   &&&&&&$$   €rœ   r/  ÚScatterFallback.__init__¨#  s  ø€ ô (¨¬YÓ7ˆÔð ××ÐØ78À±oÓF±o°×)Ñ)¨!Ö,±oˆGÐFØ ˜F‰Mà78±jÓA±j°×)Ñ)¨!Ö,±jˆGÐAØ ˜JˆMä‰ÑØÜ˜aŸl™l›nÔ-Ø×Ñ Ó(ØØ�v˜~¨|Ð<Ü" ;Ó/Ø+3°^Ð*DØ#ð 	ô 		
ô 	
�‰×#Ñ# A§J¡J£LÔ1Ü—G‘G×+Ñ+¨DÓ1ˆŒ	Ü	�‰×"Ñ" 4Ö(ùò% Gùò Bs   ¯D0ÁD5)rŽ   râ  rv  r  s   @rœ   rÎ  rÎ  ’#  s?   ø† ñõ0õõ õð!)ð "ð!)ð "÷!)÷ !)ð !)r›   rÎ  c                  ób   a € ] tR tRtRtR R ltR R ltR R ltR	 R
 ltR V 3R llt	Rt
V ;t# )ÚIndexPutFallbackiÌ#  zI
This needs to be a custom class to handle mutation and indices properly
c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   ÚIndexPutFallback.__annotate__Ñ#  s   € ÷ 2ñ 2Ð3ð 2¸ñ 2r›   c                	ó(   € VP                  V 4       R # rª   )Úgenerate_index_put_fallbackrF  s   &&rœ   rG  ÚIndexPutFallback.codegenÑ#  s   € Ø×+Ñ+¨DÖ1r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rè  Ô#  rq  r›   c                	ó   € R # r®  r“   rë  s   &rœ   r'  Ú IndexPutFallback.should_allocateÔ#  r±  r›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   rè  ×#  rj  r›   c                	ó&   € V P                  ^ 4      .# rŽ  rl  rë  s   &rœ   rE  Ú#IndexPutFallback.get_mutation_names×#  rn  r›   c               ó   € V ^8„  d   QhRR/# r§  r“   )r§   s   "rœ   r¨   rè  Ú#  r¨  r›   c                	ó   € \        4       # rª   rC   rë  s   &rœ   rª  Ú)IndexPutFallback.get_unbacked_symbol_defsÚ#  r¬  r›   c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r¤   r
  útorch._ops.OpOverloadr¥   r¡   r  rÑ  rÈ   r9  Ú
accumulater   r¦   r¿   r“   )r§   s   "rœ   r¨   rè  Ý#  sF   € ÷ )ñ )à*ð)ð ð)ð ð	)ð
 ð)ð ð)ð 
ñ)r›   c           
     	óú  <€ W0n         V Uu. uF
  qff   K  VNK  	  ppW$.VO Uu. uF  q P                  V4      NK  	  ppRp	\        S
V `  R \	        XP                  4       R7      V P                  V4      V3RV	VR7       \        P                  P                  V P                  ^ 4      4       \        P                  P                  V 4      V n        \        P                  P                  V 4       R # u upi u upi )NÚaoti_torch_index_put_outrÙ  zaten.index_put_)r  r  r
  )r  rs  rÍ  r/  r~
  rB  r   r{   r9  r•
  rš  r!  rŽ   r"  )rì  r
  r¥   r  rÈ   r÷  rò   Úvalid_indicesrã  r  rÏ  s   &&&&&&    €rœ   r/  ÚIndexPutFallback.__init__Ý#  sØ   ø€ ð ŒÙ$+Ó=¡G˜qŸ˜¡GˆÐ=à34Ð2M¸}Ñ2MÓNÑ2M¨Q×%Ñ% aÖ(Ñ2MˆÐNØ4ˆÜ‰ÑØÜ˜aŸl™l›nÔ-Ø×Ñ Ó(ØˆMØ0Ø+Ø#ð 	ô 	
ô 	
�‰×#Ñ# D§O¡O°AÓ$6Ô7Ü—G‘G×+Ñ+¨DÓ1ˆŒ	Ü	�‰×"Ñ" 4Ö(ùò >ùâNs   ŒC3–C3¥C8)r  rŽ   rv  r  s   @rœ   ræ  ræ  Ì#  s&   ø† ñõ2õõ$õ÷)ö )r›   ræ  c                  ó8   € ] tR tRt]R R l4       tR R ltRtR# )Ú
DeviceCopyiø#  c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   r¥   r¡   r8  r¦  r|  r¸   r¦   r“   )r§   s   "rœ   r¨   ÚDeviceCopy.__annotate__ú#  s(   € ÷ .
ñ .
�vð .
 |ð .
À4ð .
ÈFñ .
r›   c           
     	ó\  € VP                  4       pVf   \        R4      hVP                  4       '       Eg   \        V4      \        P
                  P                  9  dæ   \        ;QJ d*    R VP                  4        4       F  '       d   K   RM	  RM! R VP                  4        4       4      '       d�   \        P                  P                  '       gp   \        P
                  P                  '       d?   \        P
                  P                  V4       \        P
                  P                  V4       VP                  V4      # \        P
                  P                  V4       \        P
                  P                  V4       \        R4       V3p\         P#                  V4      pR pVP%                  4       '       d   VP'                  4       p\)        VP*                  4      ;'       d    VP*                  R8H  ;'       d    TpVP*                  R8H  ;'       d     \)        VP*                  4      ;'       d    TpV'       d'   \-        V4      '       d   RVP/                  4       n        \3        \5        VVP7                  4       VP%                  4       VVR7      V P9                  V4      .V4      # )NzExpected x_device is not Nonec              3  óZ   "  € T F!  q\         P                  P                  9   x € K#  	  R # 5irª   )r{   r9  rŽ  rî  s   & rœ   r  Ú$DeviceCopy.create.<locals>.<genexpr>$  s   é € ÐGÑ4F¨qœŸ™×*Ñ*Ö*Ó4Fùs   ‚)+FTzDeviceCopy in input programrX  rX
  )rB  rÓ   r6  r½  r{   r9  r   r  r
  rM   Úaot_inductorÚuse_runtime_constant_foldingrT  Úadd_device_infor@  ri   r+  rP  r<  rn  rq   r�   r=  r>  r—  rý  r•  rA  rs  )	rê  r¥   r8  r|  Úx_devicer  r6  Úis_destination_pinnedÚis_source_pinneds	   &&&&     rœ   rê  ÚDeviceCopy.createù#  så  € à—<‘<“>ˆØÒÜ Ð!@ÓAÐAà—‘—“ä˜Q“¤q§w¡w×'>Ñ'>Ô>ß“ÑG°A×4DÑ4DÔ4FÓG——’ÑG°A×4DÑ4DÔ4FÓG×GÒGÜ×'Ñ'×D×DÐDä�w‰w×"×"Ð"ô —‘×'Ñ'¨Ô/Ü—‘×'Ñ'¨Ô1Ø×'Ñ'¨Ó/Ð/ä	�‰×Ñ Ô'Ü	�‰×Ñ Ô)ÜÐ7Ô8Ø%˜ˆä×+Ñ+¨AÓ.ˆØˆØ�:‰:�<Š<à—\‘\“^ˆFä�8—=‘=Ó!×KÐK f§k¡k°UÑ&:×KÐK¸|ð 	ð �M‰M˜UÑ"×KÐK¤v¨f¯k©kÓ':×KÐK¸|ð 	÷ Ô 5°a× 8Ò 8Ø'+ˆA�L‰L‹NÔ$ÜÜØØ—‘“Ø—
‘
“ØØ/ôð ×Ñ˜qÓ!Ð"Øó

ð 
	
r›   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   rÿ  *$  s   € ÷ 3ñ 3Ð3ð 3¸ñ 3r›   c                	ó  € V P                  4       p\        V4      ^8w  d   \        R4      hV P                  '       d;   VP	                  V^ ,          V P                  P                  4       V^,          4       M/VP	                  V^ ,          V P                  4       V^,          4       \        V P                  \        4      '       d@   V P                  P                  '       d"   VP                  V P                  4       4       R# R# R# )r¤   zExpected len(args) == 2N)rý  rð   rÓ   r  r{  r�  r«   r’  r_  r—  Úsync_d2h_copyr¼  )rì  r8  rÜ   s   && rœ   rG  ÚDeviceCopy.codegen*$  sÂ   € Ø× Ñ Ó"ˆÜˆt‹9˜Œ>Ü Ð!:Ó;Ð;Ø××ÐØ×'Ñ'Ø�Q•˜×)Ñ)×;Ñ;Ó=¸tÀA½wõð ×'Ñ'¨¨Q­°×1GÑ1GÓ1IÈ4ÐPQÍ7ÔSÜ�d—k‘k¤6×*Ò*¨t¯{©{×/D×/DÐ/DØ×!Ñ! $§-¡-£/Ö2ñ 0EÑ*r›   r“   N)r•   r–   r—   r˜   r:  rê  rG  rš   r“   r›   rœ   rý  rý  ø#  s   † Øô.
ó ð.
÷`3ñ 3r›   rý  c                  óˆ   a € ] tR tRtRtR R ltR R ltR V 3R lltR	 R
 lt]	! R 4      RR R ll4       t
R R ltRtV ;t# )ÚDynamicSelectStorageOffseti8$  a¿  
The result of computing a dynamic selection index is determined as follows: when the index in the
select operation is unbacked, the actual index calculation is ambiguous for negative indices
(index + size) versus non-negative indices (just index). To resolve this, we allocate an unbacked
SymInt to represent the storage offset and decompose the select operation into a call to as_strided,
computing the storage offset at runtime with this node.
c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   Ú'DynamicSelectStorageOffset.__annotate__A$  r1	  r›   c                	ó   € \        4       # rª   rC   rë  s   &rœ   r	  Ú$DynamicSelectStorageOffset.get_readsA$  r¬  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r  D$  rq  r›   c                	ó   € R # r®  r“   rë  s   &rœ   r'  Ú*DynamicSelectStorageOffset.should_allocateD$  r±  r›   c               ó4   € V ^8„  d   QhRRRRRRRRRRRR	R
R/# )r¤   Úunbacked_offset_symbolúsympy.Symbolrë   Úbase_offsetúsympy.Symbol | intÚbase_dim_strider5  r	  r¸   r¦   r¿   r“   )r§   s   "rœ   r¨   r  G$  sP   € ÷ ñ à ,ðð ðð (ð	ð
 ,ðð !ðð ðð 
ñr›   c                	ó®   <€ \         SV `  R \        \        P                  ! R4      R7      . 4       Wn        W n        W0n        W@n        WPn	        W`n
        R # ©NrX  rÙ  )rÍ  r/  r~
  rD  r8  r  rë   r  r  r5  r	  )rì  r  rë   r  r  r5  r	  rÏ  s   &&&&&&&€rœ   r/  Ú#DynamicSelectStorageOffset.__init__G$  sG   ø€ ô 	‰Ñ˜œz´·²¸eÓ1DÔEÀrÔJð '=Ô#ØŒ
Ø&ÔØ.ÔØŒ	ØŽ
r›   c               ó   € V ^8„  d   QhRR/# r§  r“   )r§   s   "rœ   r¨   r  Z$  s   € ÷ 9ñ 9Ð*Bñ 9r›   c                	ó.   € \        V P                  .4      # rª   )rD   r  rë  s   &rœ   rª  Ú3DynamicSelectStorageOffset.get_unbacked_symbol_defsZ$  s   € Ü˜4×6Ñ6Ð7Ó8Ð8r›   c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   r  ^$  ó   € ÷ 
ñ 
Ø!ð
à	!ñ
r›   c                	ó   € \        V P                  V4      P                  \        V P                  V4      4      P                  \        V P                  V4      4      P                  \        V P
                  V4      4      # rª   )r+   rë   rÁ  r5  r  r  r&  s   &&rœ   r'  Ú/DynamicSelectStorageOffset.get_free_symbol_uses]$  s]   € ô
 ˜TŸZ™Z¨Ó7ß‰UÔ# D§I¡I¨}Ó=Ó>ß‰UÔ# D×$4Ñ$4°mÓDÓEß‰UÔ# D×$8Ñ$8¸-ÓHÓIð		
r›   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   r  h$  s   € ÷ Eñ EÐ3ð E¸ñ Er›   c                	ó>   € VP                  W P                  R 7       R# )rÐ  N)Úcodegen_dynamic_select_indexr	  rF  s   &&rœ   rG  Ú"DynamicSelectStorageOffset.codegenh$  s   € Ø×,Ñ,¨T¿¹Ð,ÖDr›   )r  r  r	  rë   r5  r  r®  ©r•   r–   r—   r˜   rS  r	  r'  r/  rª  re   r'  rG  rš   r  r  s   @rœ   r  r  8$  sG   ø† ñõõ÷ð õ&9ñ Ð8Ó9ö
ó :ð
÷Eó Er›   r  c                  óˆ   a € ] tR tRtRtR R ltR R ltR V 3R lltR	 R
 lt]	! R 4      RR R ll4       t
R R ltRtV ;t# )ÚDynamicSliceSizeil$  a7  
Computes the output size of a slice call, handling the correct semantics in codegen.
We do this for flexible handling for unbacked indices (to not data-dependent error).

Slicing has 4 semantics for indices, i.e. x[start:] could be:
1) start < -x.size(0)            -> x[0:]                    # negative out-of-bounds
2) start in [-x.size(0), 0)      -> x[x.size(0) + start:]    # negative slicing
3) start in [0, x.size(0))       -> x[start:]                # standard slicing
4) start >= x.size(0)            -> empty slice              # positive out-of-bounds

If the appropriate semantics are known beforehand, the output size is computed based on
the start & end indices. If not (with unbacked indices), a new unbacked symbol is created
to represent the output size, and codegen handles computing the correct case.
c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   ÚDynamicSliceSize.__annotate__|$  r1	  r›   c                	ó   € \        4       # rª   rC   rë  s   &rœ   r	  ÚDynamicSliceSize.get_reads|$  r¬  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r/  $  rq  r›   c                	ó   € R # r®  r“   rë  s   &rœ   r'  Ú DynamicSliceSize.should_allocate$  r±  r›   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )r¤   Úunbacked_size_symbolr  r÷  r  r	  rø  r5  r“   )r§   s   "rœ   r¨   r/  ‚$  s<   € ÷ ñ à*ðð "ðð  ð	ð
 !ðð !ñr›   c                	ó¢   <€ \         SV `  R \        \        P                  ! R4      R7      . 4       Wn        W n        W0n        W@n        WPn	        R # r  )
rÍ  r/  r~
  rD  r8  r6  r÷  r	  rø  r5  )rì  r6  r÷  r	  rø  r5  rÏ  s   &&&&&&€rœ   r/  ÚDynamicSliceSize.__init__‚$  s>   ø€ ô 	‰Ñ˜œz´·²¸eÓ1DÔEÀrÔJà$8Ô!ØŒ
ØŒØŒ	ØŽ	r›   c               ó   € V ^8„  d   QhRR/# r§  r“   )r§   s   "rœ   r¨   r/  ’$  s   € ÷ 7ñ 7Ð*Bñ 7r›   c                	ó.   € \        V P                  .4      # rª   )rD   r6  rë  s   &rœ   rª  Ú)DynamicSliceSize.get_unbacked_symbol_defs’$  s   € Ü˜4×4Ñ4Ð5Ó6Ð6r›   c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   r/  –$  r$  r›   c                	ó   € \        V P                  V4      P                  \        V P                  V4      4      P                  \        V P                  V4      4      P                  \        V P
                  V4      4      # rª   )r+   r÷  rÁ  r	  r5  rø  r&  s   &&rœ   r'  Ú%DynamicSliceSize.get_free_symbol_uses•$  sY   € ô
 ˜TŸZ™Z¨Ó7ß‰UÔ# D§H¡H¨mÓ<Ó=ß‰UÔ# D§I¡I¨}Ó=Ó>ß‰UÔ# D§I¡I¨}Ó=Ó>ð		
r›   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   r/   $  rO  r›   c                	ó(   € VP                  V 4       R # rª   )Úcodegen_dynamic_slice_sizerF  s   &&rœ   rG  ÚDynamicSliceSize.codegen $  rS  r›   )r	  r5  r÷  rø  r6  r®  r+  r  s   @rœ   r-  r-  l$  sE   ø† ñõõ÷ð õ 7ñ Ð.Ó/ö
ó 0ð
÷1ó 1r›   r-  c                  ób   a € ] tR tRtRtR R ltR R ltR V 3R lltR	 R
 ltR R lt	Rt
V ;t# )rÊ   i¤$  z3
The result of a call to aten._local_scalar_dense.
c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   ÚDynamicScalar.__annotate__©$  r1	  r›   c                	ó   € \        4       # rª   rC   rë  s   &rœ   r	  ÚDynamicScalar.get_reads©$  r¬  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rE  ¬$  rq  r›   c                	ó   € R # r®  r“   rë  s   &rœ   r'  ÚDynamicScalar.should_allocate¬$  r±  r›   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r¤   Úsymr  Úkeypathzpytree.KeyPathr‘  r¡   r¦   r¿   r“   )r§   s   "rœ   r¨   rE  ¯$  s,   € ÷ ñ ØðØ*8ðØ@Fðà	ñr›   c                	ó¾   <€ VP                  4        \        SV `	  R \        \        P
                  ! R4      R7      V P                  V.4      4       Wn        W n        R # r  )	r–  rÍ  r/  r~
  rD  r8  r   rL  rM  )rì  rL  rM  r‘  rÏ  s   &&&&€rœ   r/  ÚDynamicScalar.__init__¯$  sI   ø€ ð 	�‰ŒÜ‰ÑØ”*¤E§L¢L°Ó$7Ô8¸$×:MÑ:MÈtÈfÓ:Uô	
ð ŒØŽr›   c               ó   € V ^8„  d   QhRR/# r§  r“   )r§   s   "rœ   r¨   rE  ¹$  s   € ÷ &ñ &Ð*Bñ &r›   c                	ó.   € \        V P                  .4      # rª   )rD   rL  rë  s   &rœ   rª  Ú&DynamicScalar.get_unbacked_symbol_defs¹$  s   € Ü˜4Ÿ8™8˜*Ó%Ð%r›   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   rE  ¼$  s   € ÷ -ñ -Ð3ð -¸ñ -r›   c                	ó(   € VP                  V 4       R # rª   )Úcodegen_dynamic_scalarrF  s   &&rœ   rG  ÚDynamicScalar.codegen¼$  s   € Ø×&Ñ& tÖ,r›   )rM  rL  )r•   r–   r—   r˜   rS  r	  r'  r/  rª  rG  rš   r  r  s   @rœ   rÊ   rÊ   ¤$  s+   ø† ñõõ÷ð õ&÷-ó -r›   rÊ   c                  óˆ   a € ] tR tRtRtR R ltR R ltR V 3R lltR	 R
 lt]	! R 4      RR R ll4       t
R R ltRtV ;t# )rË   iÀ$  z-
The result of a call to aten._assert_scalar
c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   ÚAssertScalar.__annotate__Å$  r1	  r›   c                	ó   € \        4       # rª   rC   rë  s   &rœ   r	  ÚAssertScalar.get_readsÅ$  r¬  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rY  È$  rq  r›   c                	ó   € R # r®  r“   rë  s   &rœ   r'  ÚAssertScalar.should_allocateÈ$  r±  r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   Úscalarr|   r¤  r�   r¦   r¿   r“   )r§   s   "rœ   r¨   rY  Ë$  s!   € ÷ 	ñ 	˜|ð 	°#ð 	¸$ñ 	r›   c                	ó~   <€ \         SV `  R \        \        P                  ! R4      R7      . 4       Wn        W n        R # r  )rÍ  r/  r~
  rD  r8  r`  r¤  )rì  r`  r¤  rÏ  s   &&&€rœ   r/  ÚAssertScalar.__init__Ë$  s3   ø€ Ü‰ÑàÜœeŸlšl¨5Ó1Ô2àô	
ð ŒØŽr›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rY  Ö$  r¡  r›   c                	ó   € R # rR  r“   rë  s   &rœ   r£  ÚAssertScalar.has_side_effectsÖ$  r  r›   c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   rY  Ú$  s   € ÷ <ñ <Ø!ð<à	!ñ<r›   c                	ó.   € \        V P                  V4      # rª   )r+   r`  r&  s   &&rœ   r'  Ú!AssertScalar.get_free_symbol_usesÙ$  s   € ô   §¡¨]Ó;Ð;r›   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   rY  ß$  s   € ÷ ;ñ ;Ð3ð ;¸ñ ;r›   c           	     	óî  € \         P                  '       g   R # \        \        V P	                  RR7      4      4      p\
        P                  P                  '       d   R # \
        P                  P                  '       dc   RV R2p\
        P                  P                  P                  V P                  RR7      pVP                  RV RV P                   RV R	24       R # \
        P                  P                  P                  V P                  RR7      pVP                  R
V R24       VP                  R\        V P                  4       R24       VP                  V P!                  4        R24       R # )NFr²  zstd::to_string(rR  )r–  zif (!(z()) { throw std::runtime_error("Expected z but received " + z); }zif not (z):z    raise RuntimeError(z = None)rM   Úscalar_assertsr�  r‘  r'  r{   r9  rh  rT  rÉ  Úcodegen_cpp_sizevarr`  rË  r¤  Úcodegen_python_sizevarrc  r¼  )rì  r8  r  Ú
symbol_strÚsizevars   &&   rœ   rG  ÚAssertScalar.codegenß$  s=  € Ü×$×$Ð$Ùô ”d˜4×4Ñ4À5Ð4ÓIÓJÓKˆÜ�7‰7××ÐáÜ�W‰W× × Ð Ø*¨6¨(°!Ð4ˆJÜ—g‘g×*Ñ*×>Ñ>Ø—‘ eð ?ó ˆGð ×ÑØ˜˜	Ð!JÈ4Ï8É8È*ÐTfÐgqÐfrÐrwÐxöô —g‘g×*Ñ*×AÑAØ—‘ eð Bó ˆGð ×Ñ ¨¨	°Ð4Ô5Ø×ÑÐ 7¼¸T¿X¹X»Ð7GÀqÐIÔJð ×Ñ §¡£Ð 1°Ð9Ö:r›   )r¤  r`  r®  )r•   r–   r—   r˜   rS  r	  r'  r/  r£  re   r'  rG  rš   r  r  s   @rœ   rË   rË   À$  sD   ø† ñõõ÷	ð 	õñ ˜NÓ+ö<ó ,ð<÷
;ó ;r›   rË   c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚExternKernelNodeiÿ$  r�   rŽ   zexport_schema.NoderÔ   r“   Nr”   r“   r›   rœ   rr  rr  ÿ$  s   ‡ à
ƒIØ
×r›   rr  c                  ó  a € ] tR tRtRtR#RR/R V 3R lllltR V 3R lltR	 R
 ltR R ltR R lt	R R lt
]R R l4       tR R ltR R ltR R ltR t]R R l4       t]R R l4       t]R R l4       t]R  R! l4       tR"tV ;t# )$rƒ  i%  zà
A class that represents a fallback kernel for handling operators that are not
directly support by inductor. It currently supports functional ops, view ops,
inplace aten ops, and mutating ops that are auto-functionalizable.
Nr   c               ó8   € V ^8„  d   QhRRRRRRRRR	R
RRRRRR/# ©r¤   r’  rS  rb  rŠ   rü  r¯  Únontensor_argsr9  rþ  r¶  rÝ   r�  r   rÿ  r¦   r¿   r“   )r§   s   "rœ   r¨   ÚFallbackKernel.__annotate__%  se   € ÷ N4ñ N4àðN4ð ðN4ð &ð	N4ð
 &ðN4ð +ðN4ð &ðN4ð EðN4ð 
ñN4r›   c               	óÆ  <a € \         SS `  V\        V4      \        V4      VR 7       RS n        T;'       g    / S n        \        V\        P                  P                  \        P                  P                  34      '       g   \        RV R\        V4       R24      hVS n        VS n        Vf   / MTS n        S P                  f   \        R4      h\         P"                  P%                  S P                  4       . S n        . S n        \        S P                  \        P                  P                  4      '       d   R# RS P                  P+                  4       9   d   R# S P                  P,                  p\        P.                  P0                  P3                  S P                  4      '       dc   S P(                  P5                  V^ ,          P7                  4       4       S P&                  P5                  V^ ,          P7                  4       4       R# R R	 lp	VP8                  '       dL   \;        S P                  4      '       g1   V	! S P                  4      '       g   \=        R
S P                   24      hS P                  S P>                  S P@                  4      w  r¦R V 3R llp\        P.                  P0                  PC                  WŠV4       F  w  rÍV! WÍ4       K  	  R# )rt  Fú#Fails to create FallbackKernel for rQ  ú not supportedNú,Expected self.python_kernel_name is not NoneÚ_c10d_functionalc               ó    € V ^8„  d   QhRRRR/# )r¤   r¥  rö  r¦   r¸   r“   )r§   s   "rœ   r¨   Ú-FallbackKernel.__init__.<locals>.__annotate__U%  s   € ÷ 	ñ 	Ð'<ð 	Àñ 	r›   c                ó<  € \         P                  P                  V P                  4       \         P                  P                  P
                  4      ;'       gF    \        V R 4      ;'       d2    \         P                  P                  P
                  V P                  9   # )Ú
py_kernels)rD  r…  Ú%_dispatch_has_kernel_for_dispatch_keyrŽ   ÚDispatchKeyÚFunctionalizer,  r€  r¤  s   &rœ   Úhas_functionalize_implÚ7FallbackKernel.__init__.<locals>.has_functionalize_implU%  sr   € Ü—8‘8×AÑAØ—‘“	œ5Ÿ8™8×/Ñ/×=Ñ=ó÷ ð ô ˜˜LÓ)÷ Hð HÜ—H‘H×(Ñ(×6Ñ6¸"¿-¹-ÑGð	r›   z'NYI: Can't generate FallbackKernel for c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   Úinfoztorch._C.ArgumentrÍ  r   r¦   r¿   r“   )r§   s   "rœ   r¨   r~  h%  s"   € ÷ /	/ñ /	/Ð/@ð /	/Àsð /	/Ètñ /	/r›   c                óœ  <a a€ \        S P                  \        P                  4      '       d1   \        V\        \
        34      '       g   \        \        V4      4      h\        P                  ! S P                  4      '       d(   \        V\
        \        34      '       d   \        R 4      hVf   R# S P                  f   R# R V V3R lloR V3R llp\        P                  ! S P                  4      '       d   Ve   V F  pV! V4       K  	  R# R# \        P                  ! S P                  4      '       g   \        R4      hV! V4       R# )z+Expected not isinstance(arg, (tuple, list))Nc               ó    € V ^8„  d   QhRRRR/# )r¤   rH  r¡   r¦   r¿   r“   )r§   s   "rœ   r¨   ÚSFallbackKernel.__init__.<locals>.handle_aliasing_and_mutation.<locals>.__annotate__x%  s   € ÷ ñ ˜Vð ¨ñ r›   c                óD  <€ SP                   P                  V P                  4       4       SP                  f   \	        R4      hSP                  P
                  '       dA   SP                  P                  \        \        V P                  4       R7      V S4      4       R # R # )Nz$Expected info.alias_info is not NonerÙ  )
Úalias_namesr@  r¼  Ú
alias_inforÓ   Úis_writer&  r'  r~
  rB  )rH  r‡  rì  s   &€€rœ   Ú	add_aliasÚPFallbackKernel.__init__.<locals>.handle_aliasing_and_mutation.<locals>.add_aliasx%  ss   ø€ Ø× Ñ ×'Ñ'¨¯
©
«Ô5Ø—?‘?Ò*Ü(Ð)OÓPÐPØ—?‘?×+×+Ð+Ø×)Ñ)×0Ñ0Ü&¤z¸¿¹»Ô'HÈ!ÈTÓRöñ ,r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   rH  r   r¦   r¿   r“   )r§   s   "rœ   r¨   rŠ  �%  s   € ÷ 
ñ 
¨Sð 
°Tñ 
r›   c                óÂ   <€ V f   R # \        V \        \        .\        O54      '       d   R # \        V \        4      '       g   \        \        V 4      4      hS! V 4       R # rª   )r«   r   r"   rA   r¡   rÓ   r�   )rH  r�  s   &€rœ   Úadd_alias_if_graph_bufferÚ`FallbackKernel.__init__.<locals>.handle_aliasing_and_mutation.<locals>.add_alias_if_graph_buffer�%  sJ   ø€ Ø’9ÙÜ˜a¤&¬$Ð!:´Ñ!:×;Ò;ñ Ü! !¤V×,Ò,Ü(¬¨a«Ó1Ð1Ù˜!–r›   z5Expected library_utils.is_tensor_like_type(info.type))r«   r�   rD  ÚListTyperÅ   rÆ   rÓ   Úlibrary_utilsÚis_tensor_like_typer�  Úis_tensorlist_like_type)r‡  rÍ  r“  Úoptional_tensor_argr�  rì  s   f&  @€rœ   Úhandle_aliasing_and_mutationÚ=FallbackKernel.__init__.<locals>.handle_aliasing_and_mutationh%  sû   ú€ ä˜$Ÿ)™)¤U§^¡^×4Ò4Ü! #¬¬e }×5Ò5Ü(¬¨c«Ó3Ð3Ü×0Ò0°·±×;Ò;ô ˜c¤E¬4 =×1Ò1Ü(Ð)VÓWÐWàŠ{ÙØ�‰Ò&Ù÷ñ ÷
ð 
ô ×4Ò4°T·Y±Y×?Ò?Ø’?Û/2Ð+Ù1Ð2EÖFó 03ñ #ô %×8Ò8¸¿¹×CÒCÜ(ØOóð ñ *¨#Ö.r›   )"rÍ  r/  rÆ   Úuse_runtime_dispatchr   r«   rD  r+  r,  ra  rÓ   r�   r
  rþ  rÝ   r  r{   r9  Úwarn_fallbackrŒ  r}  rŽ   r-  Ú_libraryrg
  Úmutates_and_returns_first_argr@  r¼  Ú
is_mutabler(   rY  r®  r  Ú
zip_schema)rì  r’  rb  rü  rv  rþ  rÝ   r   Úschemar„  rÜ   rš  r‡  rÍ  rÏ  s   f&&&&&&$      €rœ   r/  ÚFallbackKernel.__init__%  s]  ù€ ô 	‰ÑØÜ�+ÓÜ�.Ó!Øð	 	ô 	
ð %*ˆÔ!Ø!2×!8Ð!8°bˆÔäØ”U—Z‘Z×*Ñ*¬E¯J©J×,JÑ,JÐK÷
ò 
ô !Ø5°f°X¸RÄÀVÃ¸~È^Ð\óð ð "ˆÔØ,ˆÔØ"šN‘b°ˆŒØ×"Ñ"Ò*Ü Ð!OÓPÐPÜ	�‰×Ñ˜d×5Ñ5Ô6ð ')ˆÔà)+ˆÔä�d×&Ñ&¬¯
©
×(FÑ(F×GÒGñ à ×!1Ñ!1×!6Ñ!6Ó!8Ô8ñ
 à×!Ñ!×)Ñ)ˆô �>‰>×Ñ×=Ñ=¸d×>NÑ>N×OÒOØ×Ñ×&Ñ& {°1¥~×'>Ñ'>Ó'@ÔAð ×Ñ×#Ñ# K°¥N×$;Ñ$;Ó$=Ô>Ùõ	ð ××ÐÜ*¨4×+;Ñ+;×<Ò<Ù*¨4×+;Ñ+;×<Ò<ä%Ø9¸$×:JÑ:JÐ9KÐLóð ð ×*Ñ*¨4¯;©;¸×8JÑ8JÓK‰ˆ÷/	/ð /	/ôb Ÿ™×-Ñ-×8Ñ8¸ÀvÖN‰IˆDÙ(¨Ö3ó Or›   c               ó   € V ^8„  d   QhRR/# r
  r“   )r§   s   "rœ   r¨   rw  œ%  s   € ÷ 
ñ 
Ð!8ñ 
r›   c                	óD  <€ \         SV `  4       pV P                  \        P                  P
                  P                  J d_   V P                   FN  p\        V\        4      '       g   K  VP                  \        P                  ! VP                  4       4      4      pKP  	  V# rª   )rÍ  r  r
  rD  Ú_primsÚ	rng_primsÚgraphsafe_run_with_rng_stater  r«   r„  Ú	with_readrN   r¬  r¼  )rì  r  rÍ  rÏ  s   &  €rœ   r  ÚFallbackKernel.get_read_writesœ%  sw   ø€ Ü‘gÑ-Ó/ˆà×ÑœuŸ|™|×5Ñ5×RÑRÓRØ×)Ô)�Ü˜c¤>×2Ô2Ø"-×"7Ñ"7Ü$×,Ò,¨S¯\©\«^Ó<ó#’Kñ *ð Ðr›   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   rw  ¨%  s   € ÷ 
ñ 
Ð4Hð 
ÈTñ 
r›   c           	     	óv   € VP                  V P                  4       V P                  4       \        V R R4      4      # ©r   N)Ú(codegen_unbacked_symbol_defs_for_outputsr¼  Úcodegen_outputsrà   rF  s   &&rœ   Úcodegen_unbacked_symbol_defsÚ+FallbackKernel.codegen_unbacked_symbol_defs¨%  s7   € Ø×?Ñ?Ø�M‰M‹OØ× Ñ Ó"Ü�DÐ-¨tÓ4ó
ð 	
r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   r9  r“   )r§   s   "rœ   r¨   rw  ¯%  s   € ÷ %ñ % ñ %r›   c                	óœ   € V P                   '       d   V P                   # \        V P                  \        4      '       d   V .# V P                  # rª   )rM  r«   r’  r_  r&  rë  s   &rœ   r¯  ÚFallbackKernel.codegen_outputs¯%  s9   € Ø�<�<ˆ<Ø—<‘<ÐÜ�d—k‘k¤6×*Ò*Ø�6ˆMØ×$Ñ$Ð$r›   c               ó   € V ^8„  d   QhRR/# r§  r“   )r§   s   "rœ   r¨   rw  ¶%  ó   € ÷ 	 ñ 	 Ð*Bñ 	 r›   c                	óì   € \        V R R4      ;p'       dW   \        \        P                  P                  P
                  V4      pVf   \        R4      h\        VP                  4       4      # \        4       # ©r   NzExpected resolved is not None©	rà   r?   r{   r9  r:  r  rÓ   rD   r1  ©rì  r   Úresolveds   &  rœ   rª  Ú'FallbackKernel.get_unbacked_symbol_defs¶%  óe   € Ü '¨Ð.AÀ4Ó HÐHÐÖHÜ0Ü—‘× Ñ ×*Ñ*Ð,=óˆHð ÒÜ$Ð%DÓEÐEÜ˜hŸm™m›oÓ.Ð.ä“<Ðr›   c               ó   € V ^8„  d   QhRR/# rú  r“   )r§   s   "rœ   r¨   rw  Á%  s   € ÷ ñ ˜iñ r›   c                	ó�  € \         P                   ! R  R4      4       p\        V P                  4      '       g   \	        R4      hV P                   Uu. uF  q!! VP                  4       4      NK  	  ppV P                  W0P                  4      w  rE\        P                  P                  '       dµ   \        V P                  \        P                  P                  4      '       d�   V P!                  WE4      p\#        V P                  P$                  P&                  V4       UUu. uF8  w  rb\        P                  P(                  P+                  W&P,                  4      NK:  	  pppM8V Uu. uF,  p\        P                  P(                  P+                  V4      NK.  	  ppV P.                  P1                  V4       V# u upi u uppi u upi )c                  ó.   € ] tR tRt$ R]R&   R R ltRtR# )Ú)FallbackKernel.codegen_args.<locals>.ShimiÂ%  r   Úrefc               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   Ú6FallbackKernel.codegen_args.<locals>.Shim.__annotate__Æ%  s   € ÷  ñ   #ñ  r›   c                	ó   € V P                   # rª   )rÂ  rë  s   &rœ   r9  Ú2FallbackKernel.codegen_args.<locals>.Shim.__repr__Æ%  s   € Ø—x‘x�r›   r“   N)r•   r–   r—   r˜   r™   r9  rš   r“   r›   rœ   ÚShimrÁ  Â%  s   ‡ à‹H÷ ñ  r›   rÇ  rÕ  )rT  Ú	dataclassr“  r®  rÓ   r�  rþ  r  r{   r9  rT  r«   r
  rD  r+  r,  rï  r÷   r-  r.  rÉ  ró  r0  rÝ   r›  )rì  rÇ  r¥   rü  rÜ   rÝ   Úparams   &      rœ   rý  ÚFallbackKernel.codegen_argsÁ%  se  € Ü	×	Ñ	÷	 ð 	 ó 
ð	 ô   §¡×,Ò,Ü Ð!IÓJÐJØ<@¿KºKÓH¹K°q�t˜A×/Ñ/Ó1Ö2¹KˆÐHØ×*Ñ*¨;×8JÑ8JÓK‰ˆÜ�7‰7××Ð¤:¨d×.>Ñ.>ÄÇ
Á
×@UÑ@U×#VÒ#VØ×.Ñ.¨tÓ<ˆDô !$ D×$4Ñ$4×$<Ñ$<×$FÑ$FÈÔ Môá M‘H�Eô —‘×$Ñ$×3Ñ3°A·±ÖGÙ Mð ñ ˆDñ
 EIÓIÁD¸q”A—G‘G×(Ñ(×7Ñ7¸Ö:ÁDˆDÐIð 	�‰×Ñ˜6Ô"Øˆùò Iùóùò
 Js   ÁF8Ä!>F=Å'2Gc               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rü  úSequence[IRNode] | Nonerû  r9  r¦   r   r“   )r§   s   "rœ   r¨   rw  Û%  s$   € ÷ %ñ %Ø,ð%Ø>Kð%à	ñ%r›   c                	óÔ  € V '       d+   V  Uu. uF  p\        V\        4      '       d   K  VNK  	  upMR pV'       dS   V '       g   \        R4      hV  Uu. uF*  qDP                  4       '       g   K  VP                  4       NK,  	  ppV^ ,          # \        V\        P
                  4      '       d   VP                  # \        V\        P                  P                  \        34      '       g   \        V4      '       d   \        P                  ! R4      # \        V\        \        34      '       d¬   \        R V 4       4      pV Uu. uF  qw'       g   K  VNK  	  pp\        V4      ^8X  d
   V^ ,          # V'       g   R # V FM  p\        V\        P                  4      '       g   \        R4      h\        VP                   4      '       g   KK  Vu # 	  V^ ,          # R # u upi u upi u upi )NzExpected tensor_argsrX  c              3  óN   "  € T F  p\         P                  R V4      x € K  	  R # 5irª   )rƒ  Úfind_devicer	  s   & rœ   r  Ú-FallbackKernel.find_device.<locals>.<genexpr>ï%  s)   é € ð $ñ (�Aô ×*Ñ*¨4°×3Ð3Û'ùs   ‚#%z)Expected isinstance(device, torch.device))r«   r©  rÓ   rB  rD  r�  r8  r…  ÚScriptObjectr,   r/   rÅ   rÆ   rD   rð   rq   r�   )rü  rû  rH  Únon_torch_bind_tensor_argsrÍ  ÚdevicesÚ
device_setr8  s   &&      rœ   rÏ  ÚFallbackKernel.find_deviceÚ%  s‡  € ÷ ñ $ÓJ™�1¬:°a¼×+I�QˆQ™ÒJàð 	#÷
 &ßÜ$Ð%;Ó<Ð<Ù3>ÓS±;¨CÇ.Á.×BRÔ'�s—~‘~Ö'±;ˆGÐSØ˜1•:ÐÜ�n¤e§l¡l×3Ò3Ø!×(Ñ(Ð(ÜØœUŸX™X×2Ñ2Ô4DÐE÷
ò 
ä  ×0Ò0Ü—<’< Ó&Ð&Ü�n¤t¬U m×4Ò4Ü#ñ $ñ (ó$ó ˆJñ -7ÓA©J &»&—v�v©JˆGÐAÜ�7‹|˜qÔ Ø˜q•zÐ!ßÙÛ!�Ü! &¬%¯,©,×7Ò7Ü(Ð)TÓUÐUÜ˜&Ÿ+™+×&Ô&Ø!’Mñ	 "ð
 ˜1•:ÐÙùòC Kùò Tùò Bs"   �GªGÁG Á0G Å	G%ÅG%c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rw  &  s   € ÷ +ñ + $ñ +r›   c                	ó2   € ^ RI Hp V! V P                  4      # )r   )Ú	is_impure)Útorch._library.utilsrØ  r
  )rì  rØ  s   & rœ   r£  ÚFallbackKernel.has_side_effects&  s   € Ý2ñ ˜×)Ñ)Ó*Ð*r›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   rw  	&  s   € ÷ $ñ $¨mñ $r›   c                	ó@  € \        V P                  \        P                  P                  \        P                  P
                  34      '       g0   \        R V P                   R\        V P                  4       R24      h\        V P                  \        P                  P
                  4      '       gc   RV P                  P                  4       9  dD   V P                  P                  P                  '       d   \        V P                  4      '       d   . # V P                  # )ry  rQ  rz  r|  )r«   r
  rD  r+  r,  ra  rÓ   r�   rŽ   r-  r   r(   rŒ  rë  s   &rœ   rM  Ú+FallbackKernel.get_inputs_that_alias_output	&  sÚ   € ÜØ×ÑœuŸz™z×4Ñ4´e·j±j×6TÑ6TÐU÷
ò 
ô !Ø5°d×6FÑ6FÐ5GÀrÜ˜×(Ñ(Ó)Ð*¨.ð:óð ô ˜4×+Ñ+¬U¯Z©Z×-KÑ-K×LÒLØ"¨$×*:Ñ*:×*?Ñ*?Ó*AÔAØ× Ñ ×(Ñ(×3×3Ð3Ü& t×'7Ñ'7×8Ò8àˆIà×#Ñ#Ð#r›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   rw  &  s   € ÷ #ñ # Mñ #r›   c                	ód   € \        V P                  4      ^8”  d   \        R4      hV P                  # )rñ  z&Expected len(self.mutation_names) <= 1)rð   r}  rÓ   rë  s   &rœ   rE  Ú!FallbackKernel.get_mutation_names&  s-   € Üˆt×"Ñ"Ó# aÔ'Ü Ð!IÓJÐJØ×"Ñ"Ð"r›   c           
     óâ  € \         P                  RV P                  4       V P                  4       \	        V \
        4      '       g   \        \        V 4      4      hV P                  V P                  V P                  4      w  rV P                  W4      pV P                   Uu. uF  pV P                  ! V3/ VB NK  	  ppV P                  p\        P                  P                   '       g   . VOVO# \#        R. 4      pVP%                  WQV4      pR R lp\	        V\&        P(                  P*                  P,                  4      '       d,   VP/                  V^ ,          V^,          4      P0                  p	MVP2                  P0                  p	\5        V	4      ^8X  d.   V P7                  4       p
V	^ ,          P8                  pV! Wº4      .pM9\;        W�P<                  4       UUu. uF  w  rÞV! VP8                  V4      NK  	  pppV P                  f   \        R4      h/ p\	        V P                  \&        P>                  P@                  4      '       d(   \B        PD                  ! V P                  4      e   RVR&   \G        V P                  4       \H        PJ                  ! V P                  PM                  4       VVVR7      R	7      p\        PN                  PQ                  V4       . VOVO# u upi u uppi )
a�  
ProxyExecutor Design Note
We export the ExternFallbackNodes (for custom ops) into a serialized file
and run it with a host side proxy executor to address the ABI problem
This is currently only implemented for fbcode. Eventually, we will also make this work for OSS.
Detailed design doc can be found at
https://docs.google.com/document/d/1wC4DOZFaYym2t1Esz0X5yxlLI3RDnSiyRbUus3bkJ64/edit?usp=sharing
z4Extern kernel node added for node %s with target %s.Nc               ó$   € V ^8„  d   QhRRRRRR/# )r¤   Úreturn_typez1torch.TensorType | torch.ListType | torch.JitTyper£  úIRNode | Sequence[IRNode]r¦   zexport_schema.Argumentr“   )r§   s   "rœ   r¨   Ú>FallbackKernel.export_extern_kernel_node.<locals>.__annotate__E&  s+   € ÷ 8	Sñ 8	SØJð8	Sà-ð8	Sð $ñ8	Sr›   c           	     ó¾  € \        V \        P                  \        P                  34      '       dö   Tp\        V\        \
        34      '       d%   \        V4      ^8w  d   \        R4      hV^ ,          p\        V \        P                  4      '       de   \        V\        4      '       g   \        R4      h\        P                  P                  \        P                  ! VP                  4       R7      R7      # Ve   \        R4      h\        P                  P                  RR7      # \        V \        P                  4      '       d¬   \        V P                  4       \        P                  4      '       d~   \        V\         4      '       g   \        \#        V4      4      h\        P                  P                  V Uu. uF(  p\        P                  ! VP                  4       R7      NK*  	  upR7      # \        V \        P$                  4      '       dó   \        V P                  4       \        P                  4      '       dÅ   Vf?   \        P                  P                  \        P&                  P                  RR7      R	7      # \        V\        4      '       g   \        R
4      h\        P                  P                  \        P&                  P                  \        P                  ! VP                  4       R7      R7      R	7      # \        V \        P(                  4      '       d!   \        P                  P                  VR7      # \+        R\#        V 4       24      hu upi )rñ  zExpected len(output) == 1z Expected isinstance(out, IRNode)r  )Ú	as_tensorrš  T)Úas_none)Ú
as_tensors)Úas_optional_tensorz#Expected isinstance(output, IRNode))Úas_intzUnsupported return type )r«   rD  Ú
TensorTypeÚNoneTyperÅ   rÆ   rð   rÓ   r¡   Úexport_schemar}   rê  ÚTensorArgumentr¼  r•  ÚgetElementTyper   r�   ÚOptionalTypeÚOptionalTensorArgumentÚIntTypeÚRuntimeError)rã  r£  r'  s   && rœ   Úhandle_single_outputÚFFallbackKernel.export_extern_kernel_node.<locals>.handle_single_outputE&  s¬  € ô ˜+¬×(8Ñ(8¼%¿.¹.Ð'I×JÒJà�Ü˜f¤t¬U m×4Ò4Ü˜6“{ aÔ'Ü,Ð-HÓIÐIØ  �)�CÜ˜k¬5×+;Ñ+;×<Ò<Ü% c¬6×2Ò2Ü,Ð-OÓPÐPÜ(×1Ñ1×8Ñ8Ü"/×">Ò">ÀCÇLÁLÃNÔ"Sð 9ó ð ð ’Ü,Ð-CÓDÐDÜ(×1Ñ1×8Ñ8ÀÐ8ÓFÐFÜ˜K¬¯©×8Ò8¼ZØ×*Ñ*Ó,¬e×.>Ñ.>÷>ò >ô " &¬(×3Ò3Ü(¬¨f«Ó6Ð6ä$×-Ñ-×4Ñ4ñ $*ó á#)˜Cô &×4Ò4¸#¿,¹,».×IÙ#)ñ ð 5ó ð ô ˜K¬×);Ñ);×<Ò<ÄØ×*Ñ*Ó,¬e×.>Ñ.>÷Bò Bð ’>Ü(×1Ñ1×8Ñ8Ü+8×+OÑ+O×+VÑ+VØ$(ð ,Wó ,ð 9ó ð ô & f¬f×5Ò5Ü,Ð-RÓSÐSÜ(×1Ñ1×8Ñ8Ü+8×+OÑ+O×+VÑ+VÜ&3×&BÒ&BØ%+§_¡_Ó%6ô'ð ,Wó ,ð 9ó ð ô ˜K¬¯©×7Ò7Ü$×-Ñ-×4Ñ4¸FÐ4ÓCÐCä"Ð%=¼dÀ;Ó>OÐ=PÐ#QÓRÐRùò9 s   Æ;.Mú%Expected self.op_overload is not NoneÚ1Útorch_library_custom_op)rö  r®  rM  ro  )rŽ   rÔ   ))r.  r/  r¼  r
  r«   rƒ  rÓ   r�   rþ  r®  r  rï  r  r  r{   r9  Úaot_moder'   Úserialize_inputsrD  r‰  rŠ  r‹  r¢  Úreturnsr-  rð   r¯  r0  r÷   rM  r+  r,  Ú
custom_opsÚ_maybe_get_opdefrr  rî  rB   rŽ   Úextern_kernel_nodesr@  )rì  rÜ   rÝ   r	  Úordered_kwargsrö  Ú
serializerÚnamed_argumentsrõ  rü  rM  rã  Úoutput_argumentsÚreturn_schemar£  ro  rÔ   s   &                rœ   Úexport_extern_kernel_nodeÚ(FallbackKernel.export_extern_kernel_node$&  s“  € ô 	�	‰	ØBØ�M‰M‹OØ×Ñô	
ô ˜$¤×/Ò/Ü ¤ d£Ó,Ð,Ø×*Ñ*¨4¯;©;¸×8JÑ8JÓK‰ˆØ×*Ñ*¨4Ó8ˆð ×9Ò9ó
á9�ð ×!Ò! #Ñ0¨Ô0Ù9ð 	ð 
ð ×!Ñ!ˆä�w‰w××Ðà+�TÐ+˜NÐ+Ð+ä*¨4°Ó4ˆ
Ø$×5Ñ5°fÀFÓKˆõ8	Sôt �fœe×5Ñ5×?Ñ?×MÑM×NÒNØ—m‘m D¨¥G¨T°!­WÓ5×=Ñ=‰Gà—n‘n×,Ñ,ˆGÜˆw‹<˜1Ôð ×*Ñ*Ó,ˆGØ! !�*×.Ñ.ˆKÙ 4°[Ó JÐKÑô .1°¿,¹,Ô-Gô ñ
 .HÑ)�Mñ	 %Ø!×+Ñ+Øöñ .Hð ñ  ð ×ÑÒ#Ü Ð!HÓIÐIØˆä�t×'Ñ'¬¯©×)>Ñ)>×?Ò?Ü×+Ò+¨D×,<Ñ,<Ó=ÒIà25ˆHÐ.Ñ/äØ—‘“Ü×#Ò#Ø×'Ñ'×,Ñ,Ó.Ø&Ø(Ø!ô	ô
ˆô 	
×Ñ×$Ñ$ TÔ*à'�Ð'˜Ð'Ð'ùòe
ùój s   Â!K&ÇK+c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   rw  ¬&  s   € ÷ X2ñ X2Ð3ð X2¸ñ X2r›   c           	     ób  a aa€ S P                   pVf   \        R4      hVP                  R8X  d“   \        V\        P
                  P                  4      '       g   \        \        V4      4      h\        P                  P                  '       d4   ^ RIHp \        V4      V9  d   \        P                  RV4       RS n        M’VP                  R8X  d@   \        V\        P
                  P                  4      '       g   \        \        V4      4      hMB\        P                  P                  '       d#   V\"        P$                  P&                  9  S n        \        P                  P                  '       Ed   \        V\        P
                  P                  4      '       dê   S P                   '       gØ   R V3R	 lloS P)                  S P*                  S P,                  4      w  po\.        P0                  ! VVV 3R
 lS P2                   4       4      p\4        ;QJ d<    V3R l\7        WRP8                  P:                  4       4       F  '       g   K   RM1	  RM-! V3R l\7        WRP8                  P:                  4       4       4      S n        S P=                  V4       S P                   '       dŽ   S P?                  4       pS P@                  f   \        R4      hS P                   f   \        R4      hVPC                  S PE                  4       S P@                  V 3R lS P                   VS PG                  4       4       MVPI                  S 4       S PK                  V4       \        S PL                  \N        4      '       d6   S PQ                  V4       S PS                  V4       S PU                  V4       R# R# )r$  NzExpected kernel is not NonerL  rN  zG%s is missing a c-shim implementation, using proxy executor as fallbackTÚ
_quantizedc               ó    € V ^8„  d   QhRRRR/# )r¤   rH  r�   r¦   r¸   r“   )r§   s   "rœ   r¨   Ú,FallbackKernel.codegen.<locals>.__annotate__Õ&  s   € ÷ 7ñ 7˜]ð 7¨tñ 7r›   c                ó¤   <€ \        V \        P                  4      '       d   S! V P                  4       4      # \        V \        P                  4      # rª   )r«   rD  rñ  rð  Ú
NumberType)rH  Ú	is_numbers   &€rœ   r  Ú)FallbackKernel.codegen.<locals>.is_numberÕ&  s=   ø€ Ü˜a¤×!3Ñ!3×4Ò4Ù$ Q×%5Ñ%5Ó%7Ó8Ð8Ü! !¤U×%5Ñ%5Ó6Ð6r›   c              3  óJ   <"  € T F  pSP                   ! V3/ SB x € K  	  R # 5irª   )r  )r  r  rÝ   rì  s   & €€rœ   r  Ú)FallbackKernel.codegen.<locals>.<genexpr>â&  s(   øé € ð á?˜ð ×)Ò)¨!Ñ6¨vÖ6Û?ùs   ƒ #c              3  ó|   <"  € T F1  w  r\        V\        4      ;'       d    S! VP                  4      x € K3  	  R # 5irª   )r«   Úcomplexr0  )r  r³  rŠ  r  s   &  €rœ   r  r  ç&  s5   øé € ð ,áD‘D�Aô ˜1œgÓ&×AÐA©9°Q·[±[Ó+AÔAÛDùs   ƒ<¡<Fr{  r÷  c                 óH   <€ . S P                  4       OS P                  4       O# rª   )rý  r  rë  s   €rœ   r  Ú(FallbackKernel.codegen.<locals>.<lambda>÷&  s"   ø€ ÐF˜$×+Ñ+Ó-ÐF°×0CÑ0CÓ0EÑFr›   )+r
  rÓ   rU  r«   rD  r+  r,  r�   r{   r9  rT  rX  rO  r�   r.  rí  rœ  rM   r  Úcustom_ops_to_c_shimsrþ  r®  r  rP  rÙ	  r  rƒ  r÷   r-  r.  rA  r  r  Ú,generate_fallback_kernel_with_runtime_lookupr¼  r¯  Úgenerate_fallback_kernelr°  r’  r_  r$  r*  r1  )	rì  r8  rb  rO  rÜ   Ú	args_iterÚexported_argsr  rÝ   s	   f&     @@rœ   rG  ÚFallbackKernel.codegen«&  sÄ  ú€ ð ×!Ñ!ˆØŠ>Ü Ð!>Ó?Ð?Ø×Ñ˜vÔ%ä˜f¤e§j¡j×&;Ñ&;×<Ò<Ü$¤T¨&£\Ó2Ð2Ü�w‰w×"×"Ð"ÝLä�v“;Ð&;Ô;ô —K‘KØaØôð 15�DÔ-øØ×Ñ Ô-ä˜f¤e§j¡j×&;Ñ&;×<Ò<Ü$¤T¨&£\Ó2Ð2ð =ä�W‰W× × Ð ð œf×1Ñ1×GÑGÑGð Ô%ô �G‰G××ÑÜ˜6¤5§:¡:×#8Ñ#8×9Ò9Ø×-×-Ð-÷7ð 7ð  ×.Ñ.¨t¯{©{¸D×<NÑ<NÓO‰LˆD�&ô "ŸšØõà!×?Ò?óóˆI÷ ),«ô ,ä 	¯>©>×+CÑ+CÔDó,¯¯ªô ,ä 	¯>©>×+CÑ+CÔDó,ó )ˆDÔ%ð
 	×Ñ˜WÔ%Ø×$×$Ð$Ø ×:Ñ:Ó<ˆMØ×&Ñ&Ò.Ü$Ð%SÓTÐTØ×ÑÒ'Ü$Ð%LÓMÐMà×@Ñ@Ø—‘“Ø×'Ñ'ÜFØ× Ñ Øà×$Ñ$Ó&õð ×,Ñ,¨TÔ2à×)Ñ)¨'Ô2Ü�d—k‘k¤6×*Ò*Ø×%Ñ% gÔ.Ø×*Ñ*¨7Ô3Ø×(Ñ(¨Ö1ñ +r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   r£  r0  r¦   r•  r“   )r§   s   "rœ   r¨   rw  '  s   € ÷ 
ñ 
 ð 
°+ñ 
r›   c           	     	óî   € R p V P                  4       p\        V P                  V P                  \        V P                  4       4      \        V P                  4       4      VR7      #   \         d     L_i ; i)FrX
  )r—  rô  r•  r8  r7  rg   r5  r6  )r£  r—  s   & rœ   r„  ÚFallbackKernel.tensor_to_layout'  sj   € àˆ	ð	Ø×(Ñ(Ó*ˆIô Ø�M‰MØ�L‰LÜ% f§k¡k£mÓ4Ü% f§m¡m£oÓ6Øô
ð 	
øô ô 	áð	ús   „A& Á&A4Á3A4c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   rb  rö  rÜ   r   rÝ   r¦   r¿   r“   )r§   s   "rœ   r¨   rw  '  s,   € ÷ 0ñ 0Ø*ð0Ø36ð0ØBEð0à	ñ0r›   c                ó¼  € ^ RI Hp VP                  pVP                  V4      pVe!   VP                  P                  4       '       g   R# ^RIHpHp VP                  P                  4       p	V	f   R# ^ RI	H
p
 V
! WVRR7      pVf   \        P                  RV4       R# Vw  rÍVP                  R4      pVf   R# V	 Fœ  pVP                  V4      p\        P                  ! V4      w  ppV Fi  p\        V\         4      '       g   K  V! V\"        P$                  4      '       d   V! V\"        P$                  V4       KR  \        P                  R	VV4       Kk  	  Kž  	  R# )
zARealize symm_mem args as comm buffers based on registry metadata.)Ú	singletonN)Úcan_realize_as_comm_bufferÚrealize_as_comm_buffer)Únormalize_functionT)Únormalize_to_only_use_kwargsz:Failed to normalize arguments for symm_mem realization: %srv
  z8Failed to realize %s as a symmetric memory buffer for %s)Útorch._library.simple_registryr!  r—   r1  Úsymm_mem_argsÚis_registeredÚcomm_loweringr"  r#  Útorch.fx.operator_schemasr$  r.  rí  r&  r‚  r«   r    rp
  rr
  )rê  rb  rÜ   rÝ   r!  ÚqualnameÚentryr"  r#  r'  r$  Ú
normalizedr&  Úall_argsrv
  rî  Ú	arg_valuerã  rH  s   &&*,               rœ   Ú_maybe_realize_symm_mem_argsÚ+FallbackKernel._maybe_realize_symm_mem_args'  s-  € õ
 	=à×&Ñ&ˆØ—‘˜hÓ'ˆØŠ= × 3Ñ 3× AÑ A× CÒ CÙçUà×+Ñ+×/Ñ/Ó1ˆØÒ Ùå@á'Ø˜&¸tô
ˆ
ð ÒÜ�K‰KØLØôñ à ‰ˆà—\‘\ ,Ó/ˆ
ØÒÙã%ˆHØ Ÿ™ XÓ.ˆIÜ×,Ò,¨YÓ7‰JˆG�QÛ�Ü! !¤Y×/Ò/ÙÙ-¨a´×1HÑ1H×IÒIÙ*¨1¬n×.EÑ.EÀzÖRä—K‘KØRØ Ø öó ó &r›   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r¤   rb  rŠ   rÜ   r   rÝ   r¦   rƒ  r“   )r§   s   "rœ   r¨   rw  J'  s.   € ÷ xñ x˜Lð x°ð xÀð xÈñ xr›   c                óì  a aaaaaaaaaa€ \         P                  3pSV9  d1   \        \        R,          \        P
                  P                  4      pM
\        4       pV;_uu_ 4        S P                  ! S.VO5/ SB pRRR4       XP                  pVP                  oVP                  oVP                  oVP                  o\        S\        P                   P"                  4      '       d   S P$                  ! S.VO5/ SB  \        S\        P                   P"                  4      '       dá   \        P&                  P(                  P+                  S4      '       g²   \        V\        P,                  4      '       d’   ^ RIHpHp	Hp
Hp RpV! SP8                  4      '       d	   V! S4      pVf	   V
! S4      pVeT   \;        V	! V4      4      ^8X  d>   S P=                  V4      p\?        V\A        S4      \A        S4      S\C        V4      VR7      # \D        ;QJ d    R S 4       F  '       g   K   RM	  RM! R S 4       4      oS PG                  SV4      oS'       gs   \        S\        PH                  PJ                  PL                  4      '       g)   S\        PN                  PP                  PR                  J d   \        PT                  ! R4      oR V VVVVVVVV3	R	 llp\        S\        P                   P"                  4      '       d|   \        P&                  P(                  P+                  S4      '       gM   \        P
                  PV                  '       g-   S'       d%   \X        P[                  SVSSSSSSSR
7	      pVe   V# Vf   S ! \]        SR7      SSSSSSR7      oMT\        V\        P,                  4      '       d	   V! V4      # S'       g   \_        R4      hS ! \a        SR7      SSSSSSR7      oR V VVVV3R lloS! V. 4      p\        V\@        \b        34      '       d
   VSn2        V# \        V\f        4      '       d   \c        V4      Sn2        V# V.Sn2        V#   + '       g   i     ELì; i)z9Create an instance of FallbackKernel from an _OpOverloadsN)Ú_is_functionalÚget_out_arg_namesÚlookup_manual_out_variantÚto_out_variant)r’  r®  r  rÝ   r  r
  c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5irª   )re  rÌ  s   & rœ   r  Ú(FallbackKernel.create.<locals>.<genexpr>'  s   é € Ð!K¹{¸¤,¨s×"3Ð"3»{ùr  TFrX  c               ó    € V ^8„  d   QhRRRR/# )r¤   r£  r0  r¦   rƒ  r“   )r§   s   "rœ   r¨   Ú+FallbackKernel.create.<locals>.__annotate__Š'  s   € ÷ 	ñ 	¨ð 	¸.ñ 	r›   c           
     ó6  <	€ S'       g   \        R 4      hS! SP                  V 4      SSSS
SS	R7      p\        P                  '       g   S'       g   \	        V 4      '       g8   \
        P                  P                  P                  VP                  4       4       V# )ú"Not sure where to find device info©rÝ   r   )
rÓ   r„  rM   Ú assume_unaligned_fallback_outputrw   r{   r9  rg  r-  r¼  )r£  Úpackedrê  r8  Úhas_unaligned_inputrb  rÝ   rý  rü  r   rþ  s   & €€€€€€€€€rœ   Úcreate_direct_outputÚ3FallbackKernel.create.<locals>.create_direct_outputŠ'  s|   ø€ ßÜ$Ð%IÓJÐJÙØ×$Ñ$ VÓ,ØØØØØØ"3ôˆFô ×7×7Ð7ß&Ü(¨×0Ò0ä—‘×)Ñ)×-Ñ-¨f¯o©oÓ.?Ô@ØˆMr›   )r   rA  rÙ  r>  r=  c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r£  r   r  zlist[tuple[Any, int]]r¦   r“   )r§   s   "rœ   r¨   r;  Î'  s"   € ÷ *	ñ *	 Cð *	Ð2Gð *	ÈCñ *	r›   c                ó  <a a€ \        S \        \        34      '       d0   \        S 4      ! VVV 3R  l\	        \        S 4      4       4       4      # \        S \        4      '       d@   S P                  4        UUu/ uF"  w  r#VS! VS\        S 4      V3.,           4      bK$  	  upp# \        S \        P                  4      '       d�   \        SP                  S 4      S	S4      p\        P                  '       g   S'       g   \        S 4      '       g4   \        P                   P"                  P%                  VP&                  4       V# \        S \(        4      '       d   S # \        S \        P*                  4      '       d   S P,                  P.                  # \        S \        P0                  P2                  \4        34      '       g   \7        S 4      '       d   \9        \;        SR7      S	SS 4      # S e   \=        R\        S 4       R24      hR# u uppi )c              3  ój   <"  € T F(  pS! SV,          S\        S4      V3.,           4      x € K*  	  R # 5irª   )r�   )r  rò   Úgenerate_outputr  r£  s   & €€€rœ   r  ÚAFallbackKernel.create.<locals>.generate_output.<locals>.<genexpr>Ð'  s7   øé € ð $á/˜ñ $ F¨1¥I¨w¼4À»<ÈÐ:KÐ9LÕ/L×MÐMÛ/ùs   ƒ03rÙ  NzFallbackKernel output type z is not supported)r«   rÅ   rÆ   r�   rñ   rð   rÇ   r¼  rD  r�  rr  r„  rM   r?  rw   r{   r9  rg  r-  rŽ   r¬   rË  rÔ   r]  r…  rÑ  r,   r/   rÒ   r~
  rÓ   )
r£  r  r	  rf  r  rê  r8  rG  rA  r@  s
   ff   €€€€€rœ   rG  Ú.FallbackKernel.create.<locals>.generate_outputÎ'  s®  ú€ Ü˜&¤4¬ -×0Ò0Ü˜F”|ö $ä"¤3 v£;Ô/ó$ó ð ô ˜F¤D×)Ò)ð %+§L¡L¤Nôá$2™˜ð ™¨¨g¼$¸v»,ÈÐ9LÐ8MÕ.MÓNÒNÙ$2òð ô ˜F¤E§L¡L×1Ò1Ü!Ø×(Ñ(¨Ó0ØØó�ô ×;×;Ð;ß*Ü,¨V×4Ò4ä—G‘G×-Ñ-×1Ñ1°#·(±(Ô;Ø�
Ü˜F¤C×(Ò(Ø�Ü˜F¤E§L¡L×1Ò1Ø—{‘{×'Ñ'Ð'ÜØœŸ™×.Ñ.Ô0@ÐA÷ò ä$ V×,Ò,Ü(Ü fÔ-ØØØó	ð ð Ò%Ü(Ø5´d¸6³l°^ÐCTÐUóð ñ ùóGs   Á8(H	)4rL  Ú*_fused_moving_avg_obs_fq_helper_functionalr   r	   r{   r9  r�	  r
   r¥  rû  rü  rý  rþ  r   r«   rD  r+  r,  r0  rž  rg
  Ú
is_builtinr�  Útorch._library._out_variantr4  r5  r6  r7  r-  rð   r„  rL  rÅ   Ú_make_out_variant_kernel_namerƒ  rÏ  r‰  rŠ  r‹  ry   Úhigher_orderÚprintr8  rT  ÚExternKernelMultiOutÚ
try_creater~
  rÓ   r.  rÆ   rM  rÇ   )rê  rb  rÜ   rÝ   Úfake_incorrect_kernelsÚcontextr  rû  r4  r5  r6  r7  Úout_opr’  rB  Ú
out_resultrM  r8  rG  rA  rý  r@  rü  r   rþ  s   ff*l             @@@@@@@@rœ   rê  ÚFallbackKernel.createI'  s¤  ÿú€ ô #'×"QÑ"QÐ!SÐØÐ/Ô/ÜÔ1°$Õ7¼¿¹×9JÑ9JÓK‰Gä!“mˆGçŠWØ×'Ò'¨Ð@°Ò@¸Ñ@ˆF÷ à×.Ñ.ˆØ×(Ñ(ˆØ ×0Ñ0ˆØ×.Ñ.ˆØ"×4Ñ4Ðô �fœeŸj™j×3Ñ3×4Ò4Ø×,Ò,¨VÐE°dÒE¸fÒEô �vœuŸz™z×4Ñ4×5Ò5Ü—N‘N×(Ñ(×3Ñ3°F×;Ò;Ü˜>¬5¯<©<×8Ò8÷ó ð ˆFÙ˜fŸn™n×-Ò-Ù'¨Ó/�ØŠ~Ù2°6Ó:�àÒ!¤cÑ*;¸FÓ*CÓ&DÈÔ&IØ×-Ñ-¨nÓ=�Ü&Ø!Ü Ó,Ü"& Ó"7Ø!Ü'DÀVÓ'LØ &ôð ÷ "›cÑ!K¹{Ó!KŸcŸcšcÑ!K¹{Ó!KÓKÐà—‘ ¨nÓ=ˆ÷ Ü�vœu×6Ñ6×@Ñ@×NÑN×OÒOØœŸ™×/Ñ/×5Ñ5Ó5ä—\’\ %Ó(ˆF÷	÷ 	ð 	ô, �vœuŸz™z×4Ñ4×5Ò5Ü—N‘N×(Ñ(×3Ñ3°F×;Ò;Ü—G‘G×'×'Ð'ßä-×8Ñ8ØØØØØØØØ"3Ø$7ð 9ó 
ˆJð Ò%Ø!Ð!àÒ!ÙÜ &Ô)ØØØØØØ"3ô‰Fô ˜¬¯©×5Ò5Ù'¨Ó7Ð7÷ Ü$Ð%IÓJÐJÙÜ!¨Ô0ØØØØØØ"3ôˆF÷*	ô *	ñX " .°"Ó5ˆÜ�g¤¤e˜}×-Ò-Ø$ˆFŒNð ˆô ˜¤×&Ò&Ü" 7›^ˆFŒNð ˆð &˜YˆFŒNàˆ÷a �WˆWús   Á(Q"Ñ"Q3	)rŒ  rÝ   r}  r
  r   rþ  rœ  rª   )r•   r–   r—   r˜   rS  r/  r  r°  r¯  rª  rý  rV  rÏ  r£  rM  rE  r  r   rG  r„  r:  r0  rê  rš   r  r  s   @rœ   rƒ  rƒ  %  sÁ   ø† ññN4ð HL÷N4ó N4÷`
ð 
õ
õ%õ	 õð2 ô%ó ð%õN+õ$õ,#ò
E(ðN ôX2ó ðX2ðt ô
ó ð
ð ô0ó ð0ðd ôxó öxr›   rƒ  c                  óV   a € ] tR tRtRtR R ltR R ltRRR	R/R
 V 3R llltRtV ;t	# )ÚComplexViewi(  z9View a complex number as two dtyped numbers or vice versac               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   ÚComplexView.__annotate__	(  rq  r›   c                	ó   € R # r®  r“   rë  s   &rœ   r'  ÚComplexView.should_allocate	(  r±  r›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   rZ  (  s   € ÷ $ñ $¨mñ $r›   c                	ó&   € V P                  ^ 4      .# rŽ  rl  rë  s   &rœ   rM  Ú(ComplexView.get_inputs_that_alias_output(  s   € à—‘ Ó"Ð#Ð#r›   rÝ   Nr   c               ó8   € V ^8„  d   QhRRRRRRRRR	R
RRRRRR/# ru  r“   )r§   s   "rœ   r¨   rZ  (  s[   € ÷ 
ñ 
àð
ð ð
ð &ð	
ð
 &ð
ð +ð
ð &ð
ð Eð
ð 
ñ
r›   c          
     	ó4   <€ \         SV `  VVVVVVVR 7       R# )r>  N)rÍ  r/  ©	rì  r’  rb  rü  rv  rþ  rÝ   r   rÏ  s	   &&&&&&$$€rœ   r/  ÚComplexView.__init__(  s,   ø€ ô 	‰ÑØØØØØØØ/ð 	ö 	
r›   r“   )
r•   r–   r—   r˜   rS  r'  rM  r/  rš   r  r  s   @rœ   rX  rX  (  s5   ø† áCõõ$ð
ð )-ð
ð HL÷
÷ 
ð 
r›   rX  c                  ó&   € ] tR tRtRtR R ltRtR# )ÚMemoryCheckKerneli&(  z¢
Custom kernel for memory checking that generates direct function calls

TODO - the custom op was erroring with str inputs. should be able to custom op directly.
c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   ÚMemoryCheckKernel.__annotate__-(  s   € ÷  ñ  Ð3ð  ¸ñ  r›   c                óð   € VP                  4        V P                  w  r#p\        V4      p\        V4      pV'       d   VP                  R4       RV RV RV R2pM	RV RV R2pVP                  V4       R# )z.Override codegen to write direct function callzW# note: don't currently distinguish between buffers returned and dealloc'd in last stepzcheck_memory_step(allocated=z, freed=z, is_final_step=rR  N)r0  r  rc  rË  )rì  r8  Ú
alive_listÚ	dead_listÚis_final_stepÚ
alive_reprÚ	dead_reprÚcalls   &&      rœ   rG  ÚMemoryCheckKernel.codegen-(  sŠ   € ð 	×2Ñ2Ô4Ø/3×/AÑ/AÑ,ˆ
˜}ä˜*Ó%ˆ
Ü˜“Oˆ	ßØ×ÑØiôð 2°*°¸XÀiÀ[ÐP`ÐanÐ`oÐopÐq‰Dà1°*°¸XÀiÀ[ÐPQÐRˆDØ×Ñ˜$Ör›   r“   N)r•   r–   r—   r˜   rS  rG  rš   r“   r›   rœ   re  re  &(  s   † ñ÷ ñ  r›   re  c                  ó.   € ] tR tRt$ R]R&   R R ltRtR# )r.  i?(  r¦  r8  c               ó   € V ^8„  d   QhRR/# r   r“   )r§   s   "rœ   r¨   ÚMultiOutputLayout.__annotate__C(  r×  r›   c                	ó   € V P                   # rª   rÙ  rë  s   &rœ   rB  ÚMultiOutputLayout.get_deviceC(  rÛ  r›   r“   N)r•   r–   r—   r˜   r™   rB  rš   r“   r›   rœ   r.  r.  ?(  s   ‡ àÓ÷ñ r›   r.  c                  óˆ   a € ] tR tRtR R ltRR V 3R lllt]! R 4      RR R ll4       tR R	 ltR
 R lt	R R lt
RtV ;t# )rr  iG(  c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   ÚMultiOutput.__annotate__H(  s   € ÷ 4ñ 4Ð3ð 4¸ñ 4r›   c                	ó”   € VP                  V 4       V P                  '       g%   V P                  V4       V P                  V4       R # R # rª   )Úcodegen_multi_outputÚ!skip_size_stride_alignment_checksr$  r*  rF  s   &&rœ   rG  ÚMultiOutput.codegenH(  s=   € Ø×$Ñ$ TÔ*Ø×5×5Ð5Ø×%Ñ% gÔ.Ø×*Ñ*¨7Ö3ñ 6r›   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r¤   r’  rS  r™  r¡   r  úlist[tuple[Any, ...]]rz  r¸   r¦   r¿   r“   )r§   s   "rœ   r¨   rw  N(  sC   € ÷ Sñ SàðSð ðSð 'ð	Sð
 ,0ðSð 
ñSr›   c                	óÊ   <€ \         SV `  R W.R4       \        P                  P	                  V 4      V n        \        P                  P                  V 4       W0n        W@n        R # r(	  )	rÍ  r/  r{   r9  r!  rŽ   r"  r  rz  )rì  r’  r™  r  rz  rÏ  s   &&&&&€rœ   r/  ÚMultiOutput.__init__N(  sK   ø€ ô 	‰Ñ˜˜v w°Ô3Ü—G‘G×+Ñ+¨DÓ1ˆŒ	Ü	�‰×"Ñ" 4Ô(ØŒØ1RÖ.r›   c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   rw  \(  s   € ÷ >ñ >Ø!ð>à	!ñ>r›   c                	óŒ   € V P                   ^ ,          p\        V\        4      '       g   \        V4      hVP	                  V4      # rŽ  )r®  r«   r¡   rÓ   r'  )rì  r³  rô  s   && rœ   r'  Ú MultiOutput.get_free_symbol_uses[(  s:   € ð —[‘[ •^ˆ
Ü˜*¤f×-Ò-Ü  Ó,Ð,Ø×.Ñ.¨}Ó=Ð=r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rw  d(  s   € ÷ 
ñ 
 ñ 
r›   c                	ó„   € \        V P                  4      ^8H  ;'       d"    \        V P                  ^ ,          \        4      # rð  )rð   r®  r«   rI  rë  s   &rœ   r'  ÚMultiOutput.should_allocated(  s5   € Ü�4—;‘;Ó 1Ñ$÷ 
ð 
Ü�t—{‘{ 1•~Ô'8Ó9ð	
r›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   rw  i(  s   € ÷ 
ñ 
¨mñ 
r›   c                	óÐ   € V P                    Uu. uFK  p\        V\        4      '       g   K  \        VP	                  4       4      ^ 8”  g   K;  VP                  4       NKM  	  up# u upi rŽ  )r®  r«   rƒ  rð   rM  r¼  rÚ  s   & rœ   rM  Ú(MultiOutput.get_inputs_that_alias_outputi(  s\   € ð —{’{ó
á"�Ü˜#œ~×.ô ô �C×4Ñ4Ó6Ó7¸!Ñ;ô ˆC�L‰LŽNÙ"ñ
ð 	
ùò 
s   �A#¬A#ÁA#c               ó   € V ^8„  d   QhRR/# r
  r“   )r§   s   "rœ   r¨   rw  q(  s   € ÷ !
ñ !
Ð!8ñ !
r›   c                	ó�  aa€ \        4       pV P                   FN  p\        V\        4      '       g   K  VP	                  \
        P                  ! VP                  4       4      4       KP  	  V P                  4       oV P                  4       P                  4       oR  VV3R llpV P                  4       p\        P                  '       * ;'       g'    VRJ ;'       g    \        VP                  4      '       * p\
        P                  ! W0P!                  4       RVR7      p\
        P"                  ! VVP$                  \        4       R7      # )c               ó$   € V ^8„  d   QhRRRRRR/# r8  r“   )r§   s   "rœ   r¨   Ú1MultiOutput.get_read_writes.<locals>.__annotate__€(  rH  r›   c                óv   <€ \        V4      ^ 8w  d   \        R4      h\        P                  ! SS! V 4      R4      # rJ  rL  rM  s   &&€€rœ   r>  Ú*MultiOutput.get_read_writes.<locals>.dummy€(  rO  r›   Nr2  r”  r“   )rD   r®  r«   r¡   r-  rN   r¬  r¼  r>  r¾  rB  rM   rÞ  rq   r�   rW   r<  r—  r•  )	rì  r  rµ  r>  r8  Úshould_normalizeÚwrite_rwrV  rŽ   s	   &      @@rœ   r  ÚMultiOutput.get_read_writesq(  sý   ù€ ô /9«lˆØ—;”;ˆCÜ˜#œv×&Ô&Ø—	‘	œ,×.Ò.¨s¯|©|«~Ó>Ö?ñ ð �}‰}‹ˆØ—/‘/Ó#×0Ñ0Ó2ˆ÷	;ñ 	;ð
 —‘Ó"ˆä×1Ñ1Ô1÷ 'ð 'Ø˜ˆ~÷'ð 'ä˜&Ÿ+™+Ó&Ô&ð 	ô
  ×3Ò3Ø—=‘=“? BÐ2Bô
ˆô ×&Ò&ØØ—?‘?Ü"›ô
ð 	
r›   )r  rŽ   rz  r®  )r•   r–   r—   r˜   rG  r/  re   r'  r'  rM  r  rš   r  r  s   @rœ   rr  rr  G(  sA   ø† õ4÷Sò Sñ ˜MÓ*ö>ó +ð>õ
õ

÷!
ó !
r›   rr  c                  ó`   a € ] tR tRtRtR V 3R llt]R R l4       tR R ltR	 R
 lt	Rt
V ;t# )rÒ   i•(  zMultiOutput for opaque objects.c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r¤   r’  rS  r™  r¡   r  r}  Úopaque_valuer   r¦   r¿   r“   )r§   s   "rœ   r¨   ÚOpaqueMultiOutput.__annotate__˜(  s<   € ÷ 1ñ 1àð1ð ð1ð 'ð	1ð
 ð1ð 
ñ1r›   c                	ó8   <€ \         SV `  WVR R7       W@n        R# )T©rz  N)rÍ  r/  r“  )rì  r’  r™  r  r”  rÏ  s   &&&&&€rœ   r/  ÚOpaqueMultiOutput.__init__˜(  s    ø€ ô 	‰Ñ˜¨ÐSWÐÔXØ$0Ö!r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   r   r“   )r§   s   "rœ   r¨   r•  £(  s   € ÷ ?ñ ?�uñ ?r›   c                	ó   € \        R 4      h)zOpaqueMultiOutput has no dtype)rÝ  rë  s   &rœ   r7  ÚOpaqueMultiOutput.dtype¢(  s   € äÐ=Ó>Ð>r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   rÒ   r“   )r§   s   "rœ   r¨   r•  ¦(  s   € ÷ ñ Ð#4ñ r›   c                	ó   € V # rª   r“   rë  s   &rœ   rí  Ú#OpaqueMultiOutput.wrap_for_lowering¦(  r‹
  r›   c               ó   € V ^8„  d   QhRR/# r
  r“   )r§   s   "rœ   r¨   r•  ©(  s   € ÷ 
ñ 
Ð!8ñ 
r›   c                	óp  € \        4       pV P                   FN  p\        V\        4      '       g   K  VP	                  \
        P                  ! VP                  4       4      4       KP  	  \        \
        P                  ! V P                  4       4      .4      p\
        P                  ! VV\        4       R 7      # )r”  )	rD   r®  r«   r¡   r-  rN   r¬  r¼  r—  )rì  r  rµ  r•  s   &   rœ   r  Ú!OpaqueMultiOutput.get_read_writes©(  s„   € Ü.8«lˆØ—;”;ˆCÜ˜#œv×&Ô&Ø—	‘	œ,×.Ò.¨s¯|©|«~Ó>Ö?ñ ô 0:Ü×!Ò! $§-¡-£/Ó2Ð3ó0
ˆô ×&Ò&ØØÜ"›ô
ð 	
r›   )r“  )r•   r–   r—   r˜   rS  r/  rY  r7  rí  r  rš   r  r  s   @rœ   rÒ   rÒ   •(  s3   ø† Ù)÷1ð 1ð ô?ó ð?õ÷
ó 
r›   rÒ   c                  ó2   € ] tR tRtRtR R ltR R ltRtR# )	ÚAllocatingMultiOutputi¸(  zåMultiOutput with Inductor-controlled allocation for .out() variant ops.

Overrides should_allocate()=True so Inductor allocates the output buffer,
and skips tuple-indexing codegen since .out() writes directly into these buffers.
c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   Ú"AllocatingMultiOutput.__annotate__¿(  r  r›   c                	ó   € R # rR  r“   rë  s   &rœ   r'  Ú%AllocatingMultiOutput.should_allocate¿(  r  r›   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   r¥  Â(  s   € ÷ 4ñ 4Ð3ð 4¸ñ 4r›   c                	ór   € V P                   '       g%   V P                  V4       V P                  V4       R # R # rª   )rz  r$  r*  rF  s   &&rœ   rG  ÚAllocatingMultiOutput.codegenÂ(  s/   € Ø×5×5Ð5Ø×%Ñ% gÔ.Ø×*Ñ*¨7Ö3ñ 6r›   r“   N)r•   r–   r—   r˜   rS  r'  rG  rš   r“   r›   rœ   r£  r£  ¸(  s   † ñõ÷4ñ 4r›   r£  c               ó    € V ^8„  d   QhRRRR/# )r¤   rT  rö  r¦   r�   r“   )r§   s   "rœ   r¨   r¨   È(  s   € ÷ 2ñ 2Ð*?ð 2ÀCñ 2r›   c                ó    € V P                   pV P                  P                  P                  R4      ^,          pV P                  pRV RV RV 2# )z8Build fully-qualified kernel name for an out-variant op.z::z
torch.ops.rM  )rU  r-  rŽ   rA  rV  )rT  Únsr  r   s   &   rœ   rM  rM  È(  sP   € à	×	Ñ	€BØ�n‰n×!Ñ!×'Ñ'¨Ó-¨aÕ0€GØ×#Ñ#€HØ˜�t˜1˜W˜I Q x jÐ1Ð1r›   c                  óv   a € ] tR tRt$ RtR]R&   R]R&   R V 3R lltR	 R
 lt]RRRR/R R ll4       t	Rt
V ;t# )rP  iÐ(  zµMulti-output .out() variant lowering.

Subclass of FallbackKernel that emits .out() calls with pre-allocated
output buffers. Uses AllocatingMultiOutput child nodes for each output.
rº   Úout_arg_nameszlist[AllocatingMultiOutput]Úout_variant_output_nodesc          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r¤   rÜ   r   rT  rö  r¯  rº   rÝ   r¦   r¿   r“   )r§   s   "rœ   r¨   Ú!ExternKernelMultiOut.__annotate__Ú(  s<   € ÷ "ñ "àð"ð &ð"ð !ð	"ð
 ð"ð 
ñ"r›   c               	ón   <€ \         SV `  ! V/ VB  W n        . V n        \	        V4      V n        Wn        R # rª   )rÍ  r/  r¯  r°  rM  r  r
  )rì  rT  r¯  rÜ   rÝ   rÏ  s   &$$*,€rœ   r/  ÚExternKernelMultiOut.__init__Ú(  s8   ø€ ô 	‰Ò˜$Ð) &Ò)Ø*ÔØ(*ˆÔ%Ü"?ÀÓ"GˆÔØ!Ör›   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   r²  ç(  s   € ÷ 7ñ 7Ð3ð 7¸ñ 7r›   c                	óJ   € V P                  V4       VP                  V 4       R # rª   )rA  Ú generate_extern_kernel_multi_outrF  s   &&rœ   rG  ÚExternKernelMultiOut.codegenç(  s   € Ø×Ñ˜WÔ%Ø×0Ñ0°Ö6r›   r   NrA  Fc               ó@   € V ^8„  d   QhRRRRRRRRR	R
RRRRRRRRRR/
# )r¤   rb  rö  rû  r   r8  r¦  rü  r¯  rý  r9  rþ  r¶  rÝ   r�  r   rÿ  rA  r¸   r¦   z&Sequence[AllocatingMultiOutput] | Noner“   )r§   s   "rœ   r¨   r²  ì(  s{   € ÷ Jñ Jà%ðJð ðJð ð	Jð
 &ðJð 'ðJð +ðJð &ðJð EðJð "ðJð 
0ñJr›   c               óÐ  € ^ RI Hp
HpHp V
! VP                  4      '       g   R# \        V\        \        34      '       g   R# V! V4      pVf   R# V! V4      p\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   R# \        V4      \        V4      8w  d   R# V ! \        VR7      VVVVVVVVR7	      p. p\        V4       FÒ  w  pp\        VP                  VP                  . VP                  O. VP!                  4       OR7      p\#        VV\%        V4      V3.R	7      p\&        P(                  '       g   V	'       g   \+        V4      '       g4   \,        P.                  P0                  P3                  VP4                  4       VP7                  V4       KÔ  	  VVn        VVn        \        V\        4      '       d   \        V4      # \        V4      # )
zGCreate an ExternKernelMultiOut if the op has a matching .out() variant.)r4  r5  r7  Nc              3  óV   "  € T F  p\        V\        P                  4      x € K!  	  R # 5irª   )r«   rD  r�  r`  s   & rœ   r  Ú2ExternKernelMultiOut.try_create.<locals>.<genexpr>)  s   é € ÐG¹°1”:˜a¤§¡×.Ð.»ùs   ‚')FTrÙ  )rÝ   r   rT  r¯  ©r8  r7  r5  r6  )r’  r™  r  )rL  r4  r5  r7  r-  r«   rÆ   rÅ   r  rð   r.  r  r•  r8  r7  r{  r6  r£  r�   rM   r?  rw   r{   r9  rg  r-  rŽ   r@  r°  rM  )rê  rb  rû  r8  rü  rý  rþ  rÝ   r   rA  r4  r5  r7  rT  r¯  r@  rM  rò   Ú
tensor_outr’  Ú	multi_outs   &&&&&&&&$$           rœ   rQ  ÚExternKernelMultiOut.try_createë(  s   € ÷	
ñ 	
ñ ˜fŸn™n×-Ò-Ùä˜.¬5´$¨-×8Ò8Ùá Ó'ˆØŠ>Ùá)¨&Ó1ˆß‹sÑG¹ÓG�s�sŠsÑG¹ÓG×GÒGÙÜˆ~Ó¤# mÓ"4Ô4ÙáÜ VÔ,ØØØØØØ/ØØ'ô

ˆð 02ˆÜ& ~Ö6‰MˆAˆzÜ Ø!×(Ñ(Ø ×&Ñ&Ø(�z×'Ñ'Ð(Ø-˜×*Ñ*Ó,Ð-ô	ˆFô .ØØÜ˜~Ó.°Ð2Ð3ôˆIô ×7×7Ð7ß&Ü(¨×4Ò4ä—‘×)Ñ)×-Ñ-¨i¯n©nÔ=Ø�N‰N˜9Ö%ñ% 7ð( +2ˆÔ'Ø ˆŒä�n¤e×,Ò,Ü˜“>Ð!Ü�G‹}Ðr›   )r
  r¯  r°  r  )r•   r–   r—   r˜   rS  r™   r/  rG  r:  rQ  rš   r  r  s   @rœ   rP  rP  Ð(  sS   ø‡ ñð ÓØ9Ó9÷"ð "õ7ð ðJð HLðJð %*öJó öJr›   rP  c                  óD  € ] tR tRt$ RtR]R&   R R ltR R ltR	 R
 ltR R lt	R R lt
R R ltRWR R lltRR/R R lltR R ltR R ltR R ltR R ltRXR  R! lltR" R# ltR$ R% ltRXR& R' lltR( R) ltR* R+ ltR, R- ltR. R/ ltR0 R1 ltR2 R3 ltR4 R5 ltR6 R7 ltR8 R9 ltR: R; ltR< R= lt R> R? lt!R@ RA lt"]#! R 4      RXRB RC ll4       t$RD RE lt%RF RG lt&RWRH RI llt'](RJ RK l4       t)RL RM lt*RN RO lt+RP RQ lt,](RR RS l4       t-RT RU lt.].t/RVt0R# )Yr¥
  i;)  z;
TensorBox / StorageBox allow in-place mutation of Tensors
r¡   r‘  c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   ÚMutableBox.__annotate__C)  r«  r›   c                	ó6   € V P                   P                  4       # rª   r­  rë  s   &rœ   r¯  Ú!MutableBox.has_exceeded_max_readsC)  r¯  r›   c               ó   € V ^8„  d   QhRR/# r   r“   )r§   s   "rœ   r¨   rÃ  F)  r�  r›   c                	ó6   € V P                   P                  4       # rª   r’  rë  s   &rœ   rB  ÚMutableBox.get_deviceF)  rŽ  r›   c               ó   € V ^8„  d   QhRR/# r³  r“   )r§   s   "rœ   r¨   rÃ  I)  s   € ÷ 'ñ 'ÐAñ 'r›   c                	ó6   € V P                   P                  4       # rª   rò  rë  s   &rœ   r·  ÚMutableBox.make_loaderI)  ó   € Ø�y‰y×$Ñ$Ó&Ð&r›   c               ó   € V ^8„  d   QhRR/# r»  r“   )r§   s   "rœ   r¨   rÃ  L)  s   € ÷ (ñ (Ð>ñ (r›   c                	ó6   € V P                   P                  4       # rª   )r‘  r¾  rë  s   &rœ   r¾  ÚMutableBox.make_indexerL)  ó   € Ø�y‰y×%Ñ%Ó'Ð'r›   c               ó   € V ^8„  d   QhRR/# rx  r“   )r§   s   "rœ   r¨   rÃ  O)  s   € ÷ &ñ &Ð.ñ &r›   c                	ó6   € V P                   P                  4       # rª   )r‘  rn  rë  s   &rœ   rn  ÚMutableBox.get_strideO)  rŽ  r›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   rÃ  R)  r™  r›   c                	ó6   € V P                   P                  4       # rª   r›  rë  s   &rœ   r¼  ÚMutableBox.get_nameR)  r�  r›   Nc               ó    € V ^8„  d   QhRRRR/# rÔ  r“   )r§   s   "rœ   r¨   rÃ  U)  s   € ÷ 7ñ 7¨Jð 7À$ñ 7r›   c                	ó8   € V P                   P                  V4      # rª   )r‘  rØ  r×  s   &&rœ   rØ  ÚMutableBox.has_large_inner_fnU)  s   € Ø�y‰y×+Ñ+¨IÓ6Ð6r›   rÚ  Tc               ó$   € V ^8„  d   QhRRRRRR/# rÜ  r“   )r§   s   "rœ   r¨   rÃ  X)  r£  r›   c               	ó:   € V P                   P                  WR 7      # r¥  r§  rß  s   &&$rœ   rà  ÚMutableBox.mark_reuseX)  r©  r›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   rÃ  [)  s   € ÷ (ñ (˜dñ (r›   c                	ó6   € V P                   P                  4       # rª   r¸  rë  s   &rœ   rä  ÚMutableBox.realize_hint[)  rÐ  r›   c               ó   € V ^8„  d   QhRR/# rç  r“   )r§   s   "rœ   r¨   rÃ  ^)  s   € ÷ 'ñ '˜Vñ 'r›   c                	ó6   € V P                   P                  4       # rª   )r‘  r¹  rë  s   &rœ   r¹  ÚMutableBox.unwrap_view^)  rÌ  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rÃ  a)  s   € ÷ +ñ + ñ +r›   c                	ó6   € V P                   P                  4       # rª   )r‘  rÑ  rë  s   &rœ   rÑ  ÚMutableBox.is_input_buffera)  ó   € Ø�y‰y×(Ñ(Ó*Ð*r›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   rÃ  d)  s   € ÷ )ñ )˜tñ )r›   c                	ó6   € V P                   P                  4       # rª   )r‘  rì  rë  s   &rœ   rì  ÚMutableBox.freeze_layoutd)  s   € Ø�y‰y×&Ñ&Ó(Ð(r›   c               ó$   € V ^8„  d   QhRRRRRR/# rï  r“   )r§   s   "rœ   r¨   rÃ  g)  s)   € ÷ Oñ OØ"ðOØ37ðOà	ñOr›   c                	ó8   € V P                   P                  W4      # rª   )r‘  ró  rò  s   &&&rœ   ró  Ú*MutableBox.freeze_layout_with_stride_orderg)  s   € ð �y‰y×8Ñ8¸ÓNÐNr›   c               ó    € V ^8„  d   QhRRRR/# r÷  r“   )r§   s   "rœ   r¨   rÃ  l)  s   € ÷ >ñ >°=ð >ÀTñ >r›   c                	ó8   € V P                   P                  V4      # rª   )r‘  rú  rù  s   &&rœ   rú  Ú(MutableBox.freeze_layout_with_fill_orderl)  s   € Ø�y‰y×6Ñ6°uÓ=Ð=r›   c               ó    € V ^8„  d   QhRRRR/# rý  r“   )r§   s   "rœ   r¨   rÃ  o)  s   € ÷ ?ñ ?Ð4Fð ?È4ñ ?r›   c                	ó8   € V P                   P                  V4      # rª   )r‘  r   rÿ  s   &&rœ   r   Ú(MutableBox.freeze_layout_with_same_ordero)  s   € Ø�y‰y×6Ñ6°vÓ>Ð>r›   c               ó$   € V ^8„  d   QhRRRRRR/# r  r“   )r§   s   "rœ   r¨   rÃ  r)  s)   € ÷ Xñ XØ/ðXØ@DðXà	ñXr›   c                	ó8   € V P                   P                  W4      # rª   )r‘  r  r  s   &&&rœ   r  Ú+MutableBox.freeze_layout_with_exact_stridesr)  s   € ð �y‰y×9Ñ9¸-ÓWÐWr›   c               ó   € V ^8„  d   QhRR/# r
  r“   )r§   s   "rœ   r¨   rÃ  w)  s   € ÷ +ñ +Ð!8ñ +r›   c                	ó6   € V P                   P                  4       # rª   )r‘  r  rë  s   &rœ   r  ÚMutableBox.get_read_writesw)  ræ  r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   rÃ  z)  r‹  r›   c                	ó6   € V P                   P                  4       # rª   r�  rë  s   &rœ   r	  ÚMutableBox.get_readsz)  rÅ  r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   rÃ  })  r  r›   c                	ó6   € V P                   P                  4       # rª   rˆ  rë  s   &rœ   r  ÚMutableBox.num_reads})  rÅ  r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   rÃ  €)  r»  r›   c                	ó6   € V P                   P                  4       # rª   r½  rë  s   &rœ   r   ÚMutableBox.get_storage_numel€)  r¿  r›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   rÃ  ƒ)  rù  r›   c                	ó6   € V P                   P                  4       # rª   rû  rë  s   &rœ   r+  ÚMutableBox.get_reduction_typeƒ)  ró  r›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   rÃ  †)  rð  r›   c                	ó6   € V P                   P                  4       # rª   rö  rë  s   &rœ   r1  ÚMutableBox.get_reduction_size†)  ró  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rÃ  ‰)  rÁ  r›   c                	ó6   € V P                   P                  4       # rª   rÃ  rë  s   &rœ   r6  ÚMutableBox.is_extern‰)  rÅ  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rÃ  Œ)  s   € ÷ $ñ $˜$ñ $r›   c                	ó6   € V P                   P                  4       # rª   )r‘  r;  rë  s   &rœ   r;  ÚMutableBox.is_no_opŒ)  r�  r›   c               ó    € V ^8„  d   QhRRRR/# r>  r“   )r§   s   "rœ   r¨   rÃ  �)  s   € ÷ 4ñ 4¨ð 4¸&ñ 4r›   c                	ó8   € V P                   P                  V4      # rª   r  r©  s   &&rœ   r@  ÚMutableBox.constant_to_device�)  s   € Ø�y‰y×+Ñ+¨FÓ3Ð3r›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   rÃ  ’)  s   € ÷ .ñ . Mñ .r›   c                	ó6   € V P                   P                  4       # rª   )r‘  rE  rë  s   &rœ   rE  ÚMutableBox.get_mutation_names’)  ró  r›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   rÃ  •)  s   € ÷ .ñ . Cñ .r›   c                	ó6   € V P                   P                  4       # rª   )r‘  rI  rë  s   &rœ   rI  ÚMutableBox.get_operation_name•)  ró  r›   c               ó   € V ^8„  d   QhRR/# rC  r“   )r§   s   "rœ   r¨   rÃ  ˜)  r¾  r›   c                	ó6   € V P                   P                  4       # rª   )r‘  rM  rë  s   &rœ   rM  Ú'MutableBox.get_inputs_that_alias_output˜)  s   € Ø�y‰y×5Ñ5Ó7Ð7r›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   rÃ  ›)  r±  r›   c                	ó6   € V P                   P                  4       # rª   r³  rë  s   &rœ   r–  ÚMutableBox.realize›)  rµ  r›   c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   rÃ  Ÿ)  s   € ÷ =ñ =Ø!ð=à	!ñ=r›   c                	ó8   € V P                   P                  V4      # rª   rm  r&  s   &&rœ   r'  ÚMutableBox.get_free_symbol_usesž)  s   € ð �y‰y×-Ñ-¨mÓ<Ð<r›   c               ó   € V ^8„  d   QhRR/# rý  r“   )r§   s   "rœ   r¨   rÃ  ¤)  rË  r›   c                	ó6   € V P                   P                  4       # rª   rÍ  rë  s   &rœ   r
  ÚMutableBox.get_read_names¤)  rÏ  r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   rÃ  §)  s   € ÷ +ñ +Ð!1ñ +r›   c                	ó6   € V P                   P                  4       # rª   )r‘  r  rë  s   &rœ   r  ÚMutableBox.get_defining_op§)  ræ  r›   c               ó    € V ^8„  d   QhRRRR/# r™  r“   )r§   s   "rœ   r¨   rÃ  ª)  s   € ÷ 3ñ 3Ð(=ð 3Èñ 3r›   c                	ó8   € V P                   P                  V4      # rª   )r‘  r�  rœ  s   &&rœ   r�  ÚMutableBox.codegen_referenceª)  s   € Ø�y‰y×*Ñ*¨6Ó2Ð2r›   c               ó   € V ^8„  d   QhRR/# rj  r“   )r§   s   "rœ   r¨   rÃ  ®)  s   € ÷ +ñ +˜
ñ +r›   c                	ó6   € V P                   P                  4       # rª   ©r‘  rl  rë  s   &rœ   r’  ÚMutableBox.layout­)  s   € ð �y‰y×(Ñ(Ó*Ð*r›   c               ó   € V ^8„  d   QhRR/# r^  r“   )r§   s   "rœ   r¨   rÃ  ²)  rŠ  r›   c                	ó6   € V P                   P                  4       # rª   rŒ  rë  s   &rœ   r>  ÚMutableBox.get_layout²)  rŽ  r›   c               ó   € V ^8„  d   QhRR/# rj  r“   )r§   s   "rœ   r¨   rÃ  µ)  s   € ÷ +ñ + ñ +r›   c                	ó6   € V P                   P                  4       # rª   r+  rë  s   &rœ   rl  ÚMutableBox.get_output_specµ)  ræ  r›   c               ó   € V ^8„  d   QhRR/# r.  r“   )r§   s   "rœ   r¨   rÃ  ¸)  rá  r›   c                	ó6   € V P                   P                  4       # rª   rã  rë  s   &rœ   r<  ÚMutableBox.get_size¸)  r�  r›   c               ó   € V ^8„  d   QhRR/# rQ  r“   )r§   s   "rœ   r¨   rÃ  ¼)  s   € ÷ ñ �{ñ r›   c                	ó.   € V P                   P                  # rª   )r‘  r7  rë  s   &rœ   r7  ÚMutableBox.dtype»)  s   € à�y‰y�‰Ðr›   c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   rÃ  ¿)  s   € ÷  ñ  ˜ñ  r›   c                	ó€  € \        V P                  \        4      '       dR   \        V 4      P                   R \        V P                  4      P                   R 2pRpV P                  P                  pM&\        V 4      P                   R 2pV P                  pRpV\        \        V4      4      V.pRP                  V4      # )rI  z))rR  r>  )r«   r‘  r¥
  r�   r•   rK  r�   rL  )rì  Úline0Úendlr{  rF  s   &    rœ   rÓ  ÚMutableBox.__str__¿)  s¢   € Ü�d—i‘i¤×,Ò,Ü˜D“z×*Ñ*Ð+¨1¬T°$·)±)«_×-EÑ-EÐ,FÀaÐHˆEØˆDØ—I‘I—N‘N‰Eä˜D“z×*Ñ*Ð+¨1Ð-ˆEØ—I‘IˆEØˆDð Ü”3�u“:ÓØð
ˆð
 �y‰y˜ÓÐr›   r“   rª   r®  )1r•   r–   r—   r˜   rS  r™   r¯  rB  r·  r¾  rn  r¼  rØ  rà  rä  r¹  rÑ  rì  ró  rú  r   r  r  r	  r  r   r+  r1  r6  r;  r@  rE  rI  rM  r–  re   r'  r
  r  r�  rY  r’  r>  rl  r<  r7  rÓ  r9  rš   r“   r›   rœ   r¥
  r¥
  ;)  s  ‡ ñð ƒLõ2õ&õ'õ(õ&õ$÷7ðD¸D÷ Dõ(õ'õ+õ)÷Oõ
>õ?÷Xõ
+õ%õ%õ-õ.õ.õ%õ$õ4õ.õ.õ8õ#ñ ˜LÓ)ö=ó *ð=õ
*õ+÷3ð ô+ó ð+õ&õ+õ$ð ôó ðõ ð" „Hr›   r¥
  c                  ól   € ] tR tRt]]R R l4       4       t]]R R l4       4       t]R R l4       tRtR	# )
r    iÓ)  c               ó    € V ^8„  d   QhRRRR/# )r¤   r‘  rÑ   r¦   r“   )r§   s   "rœ   r¨   ÚTensorBox.__annotate__Ö)  s   € ×IÑIÐ*ÐIÐ/DÑIr›   c                	ó   € R # rª   r“   ©r‘  s   &rœ   rê  ÚTensorBox.createÔ)  s   € áFIr›   c               ó    € V ^8„  d   QhRRRR/# )r¤   r‘  r¡   r¦   r    r“   )r§   s   "rœ   r¨   r@  Ù)  s   € ×.Ñ.�VÐ. 	Ñ.r›   c                	ó   € R # rª   r“   rB  s   &rœ   rê  rC  ×)  s   € á+.r›   c               ó   € V ^8„  d   QhRR/# )r¤   r‘  r¡   r“   )r§   s   "rœ   r¨   r@  Ü)  s   € ÷ +ñ +�Vñ +r›   c                	óZ   € \        V \        4      '       d   V # \        \        V 4      4      # rª   )r«   rÑ   r    rº  rB  s   &rœ   rê  rC  Û)  s%   € ä�dÔ1×2Ò2ØˆKÜœ DÓ)Ó*Ð*r›   r“   N)r•   r–   r—   r˜   r   rV  rê  rš   r“   r›   rœ   r    r    Ó)  s@   † ØØÜIó ó àIØØÜ.ó ó à.àô+ó ô+r›   c                  ó–   € ] tR tRtRtR R ltR R ltR R ltR	 R
 ltR R lt	R R lt
RR/R R lltRR/R R lltR R ltRtR# )rº  iâ)  z/
StorageBox allow in-place mutation of Tensors
c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   ÚStorageBox.__annotate__ç)  s   € ÷ ñ  ñ r›   c                	ó¼   € \        V P                  \        \        34      '       d6   V P                  P	                  4       \
        P                  P                  9   # R # r®  )r«   r‘  râ  r˜  r¼  r{   r9  rÐ  rë  s   &rœ   rÑ  ÚStorageBox.is_input_bufferç)  s=   € Ü�d—i‘i¤+¬Ð!?×@Ò@Ø—9‘9×%Ñ%Ó'¬1¯7©7×+?Ñ+?Ñ?Ð?Ùr›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rJ  ì)  s   € ÷ 
ñ 
 $ñ 
r›   c                	ó°   € \        V P                  \        4      ;'       d6    V P                  P                  4       \        P
                  P                  9   # rª   )r«   r‘  rh  r¼  r{   r9  rŽ  rë  s   &rœ   rÈ  ÚStorageBox.is_module_bufferì)  s>   € ä�t—y‘y¤>Ó3÷ :ð :Ø—	‘	×"Ñ"Ó$¬¯©×(9Ñ(9Ñ9ð	
r›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   rJ  ò)  s   € ÷ ñ ˜ñ r›   c           
     	óª  € \         P                  V P                  4      '       d   V P                  P                  4       # \	        V P                  \
        \        \        \        34      '       g   \        \        V P                  4      4      hV P                  P                  4       pV P                  P                  4       pV P                  P                  4       pVf   \        R4      h\        R \        VV P                  P!                  4       V P                  P#                  4       RR7      V P                  R7      V n        \$        P&                  P)                  V P                  4      V P                  n        \$        P&                  P-                  V P                  4       V P.                  V P                  n        WP                  n        W P                  n        V P                  P                  P4                  V P                  n        V P                  P                  P6                  V P                  n        V P                  P*                  # )Nr¨  F)r8  r7  r5  r—  r  )r¡   rä  r‘  r¼  r«   rD  r¿  r¨  r  rÓ   r�   r  r  rB  rà  r?  rA  r<  r{   r9  r!  rŽ   r"  rÄ  rÈ  rÆ  rÊ  rÌ  )rì  rÈ  rÆ  r8  s   &   rœ   r–  ÚStorageBox.realizeò)  s€  € Ü×"Ñ" 4§9¡9×-Ò-Ø—9‘9×%Ñ%Ó'Ð'ä˜$Ÿ)™)¤i´¼DÄ$Ð%G×HÒHÜ ¤ d§i¡i£Ó1Ð1Ø—i‘i×/Ñ/Ó1ˆØ—I‘I×+Ñ+Ó-ˆ	Ø—‘×%Ñ%Ó'ˆØŠ>Ü Ð!>Ó?Ð?ä"ØÜ!ØØ—i‘i×)Ñ)Ó+Ø—Y‘Y×'Ñ'Ó)Øô	ð —‘ô	
ˆŒ	ô Ÿ™×0Ñ0°·±Ó;ˆ�	‰	ŒÜ	�‰×"Ñ" 4§9¡9Ô-Ø ŸL™Lˆ�	‰	ÔØ +�	‰	ÔØ'�	‰	ÔØ#Ÿy™yŸ~™~×8Ñ8ˆ�	‰	ÔØ ŸI™IŸN™N×2Ñ2ˆ�	‰	ÔØ�y‰y�~‰~Ðr›   c               ó   € V ^8„  d   QhRR/# rö  r“   )r§   s   "rœ   r¨   rJ  *  s   € ÷ ñ ˜dñ r›   c                óÌ   € \        V P                  \        \        34      '       d>   V P                  P	                  4       P
                  ^8”  d   V P                  4        R# R# R# )z<
Called on buffers we expect to be forced to realize later.
N)r«   r‘  rD  r¿  r   Únontrivial_read_countr–  rë  s   &rœ   rä  ÚStorageBox.realize_hint*  sI   € ô
 �t—y‘y¤9¬iÐ"8×9Ò9Ø—	‘	×*Ñ*Ó,×BÑBÀQÔFà�L‰LŽNñ Gñ :r›   c               ó    € V ^8„  d   QhRRRR/# )r¤   rÕ  r¬   r¦   r¸   r“   )r§   s   "rœ   r¨   rJ  *  s   € ÷ 
ñ 
¸cð 
Àdñ 
r›   c                	óL  € ^ RI Hp V P                  4        Uu. uF2  pV! V4      '       d   K  \        P                  P                  V4      NK4  	  ppV'       g   R# \        V4      p\        V4      p\        V4      pWQ8¬  ;'       d    WV,          ^8¬  ;'       d    Wg8H  # u upi )r   )Úis_nonfreeable_buffersF)	rŠ  rY  r	  r{   r9  Úget_dep_size_hintr  r  r{  )rì  rÕ  rY  r  Úsize_of_readsÚ
total_sizeÚmax_sizeÚmin_sizes   &&      rœ   Ú$has_accumulated_enough_reads_by_sizeÚ/StorageBox.has_accumulated_enough_reads_by_size*  s¢   € Ý@ð —~‘~Ô'ó
á'�Ù)¨#×.ô +ŒA�G‰G×%Ñ% cÖ*Ù'ð 	ð 
÷
 ÙÜ˜Ó'ˆ
Ü�}Ó%ˆÜ�}Ó%ˆàÑ#÷ %ð %ØÕ%¨Ñ*÷%ð %àÑ$ð	
ùò
s
   ™B!®#B!c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   rJ  .*  s   € ÷ 
ñ 
¨ñ 
r›   c                	ó  € \         P                  pVf>   \        V P                  4      '       d   \         P                  pM>\         P
                  pM-\        V\        4      '       g   \        R\        V4       24      h\        V P                  \        4      ;'       dm    V P                  4       V8„  ;'       gR    V P                  4       ;'       g:    \         P                  R J;'       d     V P                  \         P                  4      # )Nz.expected int realize_acc_reads_threshold, got )rM   Úrealize_acc_reads_thresholdrd  r‘  Úrealize_cpu_acc_reads_thresholdÚ$_realize_acc_reads_threshold_defaultr«   r¬   rÓ   r�   rD  r  rØ  Ú realize_acc_reads_size_thresholdr_  )rì  rc  s   & rœ   r¯  Ú!StorageBox.has_exceeded_max_reads.*  sí   € Ü&,×&HÑ&HÐ#Ø&Ò.Ü�d—i‘i× Ò Ü.4×.TÑ.TÑ+ô ×?Ñ?ñ ,ô Ð9¼3×?Ò?Ü$ØDÄTÐJeÓEfÐDgÐhóð ô ˜$Ÿ)™)¤YÓ/÷ 	
ð 	
Ø�N‰NÓÐ:Ñ:÷ ð Ø×&Ñ&Ó(÷ð ô ×7Ñ7¸tÐC÷ ð Ø×=Ñ=Ü×;Ñ;óð		
r›   rÚ  Tc               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rÝ  r¬   rÚ  r¸   r¦   r“   )r§   s   "rœ   r¨   rJ  G*  s"   € ÷ !ñ !¨Sð !À$ð !ÐRVñ !r›   c               óþ  a€ V^8”  Edt   \        V P                  \        \        34      '       EdM   V P                  P	                  4       oRSP
                  9   d   R# \        V P                  4      '       dÂ   . ROp\        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       d   R# V P                  P                  4       p\        V P                  \        4      '       dB   V'       d:   V\        P                  8”  d%   SP                  \        ^ V^,
          4      8”  d   R# V P                  4       '       d   R# T;'       d"    V P                  4       \        P                  8„  # R# )zR
A heuristic to decide if we should realize a tensor
that is used multiple times.
Úinline_asm_elementwiseTc              3  ó@   <"  € T F  qSP                   9   x € K  	  R # 5irª   )Úused_ops)r  r¥   Úopcounts   & €rœ   r  Ú5StorageBox.should_realize_on_reuse.<locals>.<genexpr>[*  s   øé € Ð@±i°˜G×,Ñ,Ö,³iùs   ƒF)Úexpr.  Úlog10Úlog1pÚlog2ÚsigmoidÚtanh)r«   r‘  rD  r¿  r   rl  rd  rƒ  r  rM   Úrealize_opusers_thresholdr  r  rØ  r  Úrealize_reads_threshold)rì  rÝ  rÚ  Ú	heavy_opsÚrealize_thresholdrm  s   &&$  @rœ   Úshould_realize_on_reuseÚ"StorageBox.should_realize_on_reuseG*  s  ø€ ð
 �1�9œ D§I¡I´	¼9Ð/E×FÓFØ—i‘i×0Ñ0Ó2ˆGØ'¨7×+;Ñ+;Ô;ÙÜ�d—i‘i× Ò ò�	÷ “3Ô@±iÓ@—3—3’3Ô@±iÓ@×@Ò@ÙØ$(§I¡I×$KÑ$KÓ$MÐ!ä˜tŸy™y¬)×4Ò4ß#Ø¤× @Ñ @Ô@ØŸ™¬#¨aÐ1BÀQÕ1FÓ*GÔGáØ×&Ñ&×(Ò(ÙØ×TÐT 4§>¡>Ó#3´f×6TÑ6TÑ#TÐTÙr›   c               ó$   € V ^8„  d   QhRRRRRR/# rÜ  r“   )r§   s   "rœ   r¨   rJ  j*  s!   € ÷ ñ  ð °Tð ÀTñ r›   c               	óZ   € V P                  WR 7      '       d   V P                  4        R# R# )r¦  N)ry  r–  rß  s   &&$rœ   rà  ÚStorageBox.mark_reusej*  s%   € Ø×'Ñ'¨Ð'×GÒGØ�L‰LŽNñ Hr›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   rJ  n*  r  r›   c                	ó6   € V P                   P                  4       # rª   rˆ  rë  s   &rœ   r  ÚStorageBox.num_readsn*  rÅ  r›   rB  N)r•   r–   r—   r˜   rS  rÑ  rÈ  r–  rä  r_  r¯  ry  rà  r  rš   r“   r›   rœ   rº  rº  â)  sH   † ñõõ

õõ>õ
õ&
ð2!È÷ !ðF¸D÷ ÷%ñ %r›   rº  c                  óH   € ] tR tRt$ R]R&   R]R&   RtR]R&   RtR	]R
&   RtR# )ÚSubgraphir*  r�   rŽ   r¡  Úgraph_moduleNr�  Úinductor_config_patcheszGraphLowering | Noner9  r“   )r•   r–   r—   r˜   r™   r„  r9  rš   r“   r›   rœ   r‚  r‚  r*  s$   ‡ à
ƒIØ&Ó&Ø59ÐÐ2Ó9Ø"&€EÐ×&r›   r‚  c               ó    € V ^8„  d   QhRRRR/# )r¤   Úbuffersr¯  r¦   r¸   r“   )r§   s   "rœ   r¨   r¨   z*  s   € ÷ Lñ LÐ"2ð L°tñ Lr›   c                óÈ   € V  Uu. uF+  p\        V\        4      '       d   VP                  4       MTNK-  	  p p\        \	        R  V  4       4      4      \        V 4      8  # u upi )c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5irª   )r‚  )r  r^  s   & rœ   r  Ú'_has_aliased_buffers.<locals>.<genexpr>€*  s   é € Ð;±7¨œ"˜VŸ*˜*³7ùr  )r«   r˜  r¹  rð   rD   )r†  r^  s   & rœ   Ú_has_aliased_buffersrŠ  z*  sd   € ñ óáˆFô !+¨6´?× CÒ Cˆ×ÑÔÈÒOÙð ð ô
 ŒzÑ;±7Ó;Ó;Ó<¼sÀ7»|ÑKÐKùòs   …1Ac                  óŒ   a € ] tR tRt$ RtRtR]R&   RtR]R&   RtR]R&   R	 V 3R
 llt	R R lt
]R R l4       tR R ltRtV ;t# )ÚInvokeSubgraphiƒ*  z&
Ir node for the invoke_subgraph HOP.
NúSubgraph | NonerÛ  rÌ  ÚoperandsrM  c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r¤   rÛ  r‚  rŽ  r¯  r’  r.  r¦   r¿   r“   )r§   s   "rœ   r¨   ÚInvokeSubgraph.__annotate__�*  s,   € ÷ 
)ñ 
)Ø ð
)Ø,<ð
)ØFWð
)à	ñ
)r›   c                	ó¾   <€ \         SV `  R VVR7       Wn        \        P                  P                  V 4      V n        \        P                  P                  V 4       R # )NrÏ  )rÍ  r/  rÛ  r{   r9  r!  rŽ   r"  )rì  rÛ  rŽ  r’  rÏ  s   &&&&€rœ   r/  ÚInvokeSubgraph.__init__�*  sO   ø€ ô 	‰ÑØØØð 	ô 	
ð
 !ŒÜ—G‘G×+Ñ+¨DÓ1ˆŒ	Ü	�‰×"Ñ" 4Ö(r›   c               ó   € V ^8„  d   QhRR/# r!  r“   )r§   s   "rœ   r¨   r�  ™*  s   € ÷ 8ñ 8˜~ñ 8r›   c                	óD   € V P                   '       d   V P                   .# . # rª   )rÛ  rë  s   &rœ   r$  ÚInvokeSubgraph.get_subgraphs™*  s   € Ø"&§-§- -�—‘ˆÐ7°RÐ7r›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rÛ  r‚  rŽ  r¡   r¦   z@list[ShapeAsConstantBuffer | NoneAsConstantBuffer | MultiOutput]r“   )r§   s   "rœ   r¨   r�  �*  s)   € ÷ |ñ |Øð|Ø,2ð|à	Iñ|r›   c           	     ó  a€ ^RI Hp \        P                  P                  pRpVP
                  P                  R4      ;p'       dˆ   ^pVP                  \        P                  P                  P                  J dG   VP                  ^,          \        P                  P                  P                  Jd   \        R4      h^pV^ ,          VR pMª^pVP                  \        P                  P                  P                  J dG   VP                  ^,          \        P                  P                  P                  Jd   \        R4      h^pVP                  VR pV U	u. uF  q™P
                  R,          NK  	  pp	V U	u. uF  q�P                  V	4      NK  	  pp	. p
\!        V4       FW  w  r¼\#        V\$        \&        \(        34      '       d   V
P+                  V4       K9  V
P+                  V! WÅV,          4      4       KY  	  T
pVP,                  f>   VP
                  P                  R/ 4      P                  R4      p\/        VRR4      Vn        VP                  fÖ   VP,                  '       d!   \0        P2                  ! VP,                  4      M	\5        4       pT;_uu_ 4        \        P                  P7                  VP8                  VVP:                  R	7      Vn        \        P<                  ! VP                  4      ;_uu_ 4        VP                  P>                  ! V!   RRR4       RRR4       VP                  P@                  pRpV F+  p\#        V\$        4      '       d   K  VPC                  4       p M	  Vf   \        R
4      h\E        VV\G        VR7      R7      oR V3R llp\!        V4       UUu. uF  w  ppV! VV4      NK  	  pppVSn$        V# u up	i u up	i   + '       g   i     LÊ; i  + '       g   i     LÕ; iu uppi )z|For each operand, get a realized input, force it to have the same
strides as the subgraph inputs, then use an InvokeSubgraph)Úconstrain_to_fake_tensorNÚeager_input_valszGExpected current_node.args[1] is torch.ops.higher_order.invoke_subgraphrf  rÈ  Únested_region_configr„  ©r   rÐ  rÒ  r¨  rÙ  )rÛ  rŽ  r’  c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r£  r¡   Úindr¬   r¦   z:ShapeAsConstantBuffer | NoneAsConstantBuffer | MultiOutputr“   )r§   s   "rœ   r¨   Ú+InvokeSubgraph.create.<locals>.__annotate__ÿ*  s$   € ÷ 	ñ 	Øð	Ø!$ð	àGñ	r›   c                ó|  <€ \        V \        \        34      '       d   V # V P                  4       pVf   \	        R4      h\        \        VV P                  4       V P                  4       V P                  4       V P                  4       P                  V P                  4       P                  R7      S\        V3.RR7      # )Nr¨  rz
  Tr—  )r«   rÑ   rL  rB  rÓ   rr  r•  rA  r<  rn  r>  r–  r—  rÅ   )r£  r�  r8  Úinvoke_subgraphs   && €rœ   Úcreate_outputÚ,InvokeSubgraph.create.<locals>.create_outputÿ*  s¬   ø€ ô ˜&Ô#8Ô:NÐ"O×PÒPØ�à×*Ñ*Ó,�Ø’>Ü(Ð)FÓGÐGä"ÜØ%Ø$×.Ñ.Ó0Ø#Ÿ_™_Ó.Ø%×0Ñ0Ó2Ø%×0Ñ0Ó2×9Ñ9Ø"(×"3Ñ"3Ó"5×"?Ñ"?ôð $Ü˜C�[�MØ6:ôð r›   )%r¾  r˜  r{   r9  rÑ  r©  r1  rö  rD  ry   rN  r�  rÜ   r   rÓ   rs  r  r«   rÑ   r„  rˆ  r@  r„  rà   rM   r!   r
   rÚ  rƒ  rŽ   rß  rà  Úgraph_outputsrB  rŒ  r.  rM  )rê  rÛ  rŽ  r˜  rÑ  Úfake_operandsr™  r–  Úfx_operandsr¥   Únew_operandsr  ÚoperandÚnested_configr¢  rM  r8  r¡  rò   r£  Úoutsr   s   &&*                  @rœ   rê  ÚInvokeSubgraph.createœ*  su  ø€ õ 	7ô —w‘w×+Ñ+ˆàˆØ+×0Ñ0×4Ñ4Ð5GÓHÐHÐÖHàˆFØ×"Ñ"¤e§i¡i×&<Ñ&<×&IÑ&IÓIà×$Ñ$ QÕ'¬u¯y©y×/EÑ/E×/UÑ/UÓUÜ(Øaóð ð �Ø,¨QÕ/°°Ð8‰MàˆFØ×"Ñ"¤e§i¡i×&<Ñ&<×&IÑ&IÓIà×$Ñ$ QÕ'¬u¯y©y×/EÑ/E×/UÑ/UÓUÜ(Øaóð ð �ð '×+Ñ+¨F¨GÐ4ˆKÙ4?Ó@±K¨qŸV™V EŸ]˜]±KˆMÐ@ñ AIÓ!IÁ¸1×"3Ñ"3°AÖ"6ÁˆÐ!IØ%'ˆä% hÖ/‰LˆCÜØÔ/´ÔARÐS÷ò ð ×#Ñ# GÖ,à×#Ñ#Ù,¨WÀCÕ6HÓIöñ 0ð  ˆà×+Ñ+Ò3Ø(×-Ñ-×1Ñ1°(¸BÓ?×CÑCØ&óˆMô 07ØÐ8¸$ó0ˆHÔ,ð �>‰>Ò!ð ×3×3Ð3ô —’˜X×=Ñ=Ô>ä “]ð ÷
 ’Ü!"§¡×!6Ñ!6Ø×,Ñ,Ø#0Ø"*§-¡-ð "7ó "�”ô
 ×(Ò(¨¯©×8Õ8Ø—N‘N×&Ò&¨Ò6÷ 9÷ ð —.‘.×.Ñ.ˆð ˆÛˆGÜ˜gÔ'<×=Ô=Ø ×+Ñ+Ó-�Ùñ  ð Š>Ü Ð!>Ó?Ð?Ü(ØØÜ$¨FÔ3ô
ˆ÷	ð 	ô0 ;DÀGÔ:LÔMÑ:L©Y¨Q°‘˜f aÖ(Ñ:LˆÑMØ"&ˆÔØˆùòs Aùò "J÷J 9×8ú÷ —üód Ns7   ÅOÅ<OÊ A$O4ÌO!	ÌO4Î6PÏ!O1Ï,O4Ï4P	c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   r�  +  r´  r›   c                	ó(   € VP                  V 4       R # rª   )Úcodegen_invoke_subgraphrF  s   &&rœ   rG  ÚInvokeSubgraph.codegen+  r¸  r›   )rŽ   rÛ  )r•   r–   r—   r˜   rS  rÛ  r™   rŽ  rM  r/  r$  r:  rê  rG  rš   r  r  s   @rœ   rŒ  rŒ  ƒ*  sZ   ø‡ ñð !%€HˆoÓ$Ø(,€HÐ%Ó,Ø'+€GÐ$Ó+÷
)ð 
)õ8ð ô|ó ð|÷|.ó .r›   rŒ  c               ó    € V ^8„  d   QhRRRR/# )r¤   r  zint | torch.SymIntr¦   z
int | Exprr“   )r§   s   "rœ   r¨   r¨   +  s   € ÷ ñ Ð%ð ¨*ñ r›   c                ó^   € \        V \        4      '       d   V # V P                  P                  # )zLConvert an int or SymInt to a plain int or sympy Expr for use in IR layouts.)r«   r¬   rÔ   r]  )r  s   &rœ   Ú_maybe_exprr±  +  s"   € ä�!”S×ÒØˆØ�6‰6�;‰;Ðr›   c                  ó¼   a € ] tR tRt$ RtRtR]R&   RtR]R&   RtR]R	&   R
t	R]R&   Rt
R]R&   RR V 3R llltR R lt]RR R ll4       tR R ltR R ltRtV ;t# )ÚSwitchi&+  a²  
IR node representing torch.cond and torch.switch.

For torch.cond: ``selector`` is a boolean scalar tensor, branches contains exactly
two subgraphs (true branch, false branch), and is_cond=True.
For torch.switch: ``selector`` is an integer scalar tensor, branches contains one
subgraph per case, and is_cond=False.

Attributes:
    selector: A scalar tensor selecting which branch to execute.
    branches: Non-empty sequence of subgraphs representing the individual branches.
    operands: Input tensors passed to the individual subgraphs.
    is_cond: True when this node represents a torch.cond (boolean 2-branch select).
    outputs: MultiOutput nodes representing the node's outputs.
Nr3  ÚselectorzSequence[Subgraph] | NoneÚbranchesrÌ  rŽ  Fr¸   Úis_condúSequence[MultiOutput] | NonerM  c               ó4   € V ^8„  d   QhRRRRRRRRR	R
RRRR/# )r¤   r´  r¡   rµ  zSequence[Subgraph]rŽ  r¯  r’  r.  r   rÿ  r¶  r¸   r¦   r¿   r“   )r§   s   "rœ   r¨   ÚSwitch.__annotate__>+  sQ   € ÷ )ñ )àð)ð %ð)ð #ð	)ð
 "ð)ð Eð)ð ð)ð 
ñ)r›   c                	ó  <€ Wn         W n        W0n        W`n        \	        V.VO4      w  rx\
        S	V `  R VVVR7       Ve   WPn        \        P                  P                  V 4      V n        \        P                  P                  V 4       R # ©N)rŽ   r’  r®  r  )r´  rµ  rŽ  r¶  Ú_split_by_sym_typerÍ  r/  r   r{   r9  r!  rŽ   r"  )
rì  r´  rµ  rŽ  r’  r   r¶  Úsym_argsrü  rÏ  s
   &&&&&&&  €rœ   r/  ÚSwitch.__init__>+  s‚   ø€ ð !ŒØ ŒØ ŒØŒä 2°HÐ3H¸xÐ3HÓ IÑˆä‰ÑØØØØ"ð	 	ô 	
ð Ò(Ø%6Ô"ä—G‘G×+Ñ+¨DÓ1ˆŒ	Ü	�‰×"Ñ" 4Ö(r›   c               ó   € V ^8„  d   QhRR/# r!  r“   )r§   s   "rœ   r¨   r¹  Z+  s   € ÷ Hñ H˜~ñ Hr›   c                	óL   € V P                   e   \        V P                   4      # . # rª   )rµ  rÅ   rë  s   &rœ   r$  ÚSwitch.get_subgraphsZ+  s   € Ø&*§m¡mÒ&?Œt�D—M‘MÓ"ÐGÀRÐGr›   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r¤   r´  r    rµ  r"  rŽ  r~  r¶  r¸   r¦   zlist[MultiOutput]r“   )r§   s   "rœ   r¨   r¹  ^+  sC   € ÷ lñ làðlð !ðlð "ð	lð
 ðlð 
ñlr›   c                óš  € V P                  V4      pV Uu. uF  qPP                  V4      NK  	  pp\        P                  P                  P                  R,          p\        V\        4      '       g   \        \        V4      4      h. pV FN  p\        V\        4      '       d%   VP                  VP                  R,          4       K=  VP                  V4       KP  	  \        P                  P                  P                  R,          p	R R lp
V EF_  pVP                  e   K  \        P                  P                  VP                  VVP                  R7      Vn        VP                  P                  P                  4       P                  ^ ,          p\        V\        4      '       g   \        \        V4      4      hV Uu. uF.  p\        V\        4      '       d   VP                  R,          MTNK0  	  pp\        P                   ! VP                  4      ;_uu_ 4        VP                  P"                  ! V!   V
! VP                  P$                  Wž4      VP                  n        RRR4       EKb  	  \&        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   \        R	4      hV Uu. uF  qÿP                  P$                  NK  	  ppV'       d   R
MRp\)        VV4       F8  w  pp\+        V4      '       g   K  \        RV RVP                   RV RV 24      h	  V^ ,          pVR,           Fò  p\-        V4      \-        V4      8w  d   \        VV34      h\/        \)        VV4      4       F°  w  pw  ppVP1                  4       VP1                  4       8w  d   \        VVV34      hVP3                  4       VP3                  4       8w  d   \        VVV34      hVP5                  4       P6                  VP5                  4       P6                  8w  g   K¤  \        VVV34      h	  Kô  	  \9        R W1.,            4       4      p\;        \        P                  P<                  P>                  \        P                  P                  P                  PA                  RR4      4      pVf   \        R4      h\C        VVV\E        VR7      VVR7      p\/        \)        V\        P                  P                  P                  R,          4      4       UUUUu. uFÚ  w  pw  pp\G        \I        VP1                  4       e   VP1                  4       MTVP3                  4       VPK                  4        Uu. uF  p\M        V4      NK  	  upVPO                  4        Uu. uF  p\M        V4      NK  	  upVP5                  4       P6                  VP5                  4       PP                  R7      V\R        V3.4      NKÜ  	  pppppVVn*        ^ RI+H,p \[        4       pV F-  pV! VP                  4      w    p p!p V\[        V!4      ,          pK/  	  \]        V4       U"u. uF(  p"\_        VV",          P`                  VV",          V4      NK*  	  up"Vn1        V# u upi u upi   + '       g   i     EKŸ  ; iu upi u upi u upi u uppppi u up"i )z:Create a sequence of IRNodes from a switch/cond statement.rf  c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r¤   r£  r¯  Úfake_tensorszSequence[torch.Tensor]Úbranch_fakesz#Sequence[torch.Tensor | int | None]r¦   rµ   r“   )r§   s   "rœ   r¨   Ú#Switch.create.<locals>.__annotate__z+  s0   € ÷ 	ñ 	Ø+ð	à0ð	ð >ð	ð ñ		r›   c           	     óJ  € . p\        WV4       F�  w  rEp\        V\        4      '       d   VP                  V4       K/  VP	                  4       p\        V4      '       d   VP	                  4       pVP                  \        P                  \        V4      VR R7      4       K’  	  V# )Fr]  )	r÷   r«   rÑ   r@  r6  r<   r+  rJ  r    )r£  rÅ  rÆ  Úretr£  rK  Úbranch_fakerŠ  s   &&&     rœ   Ú_require_exact_stridesÚ-Switch.create.<locals>._require_exact_stridesz+  s–   € ð
 ˆCÜ-0Ø¨\ö.Ñ)�˜kô ˜fÔ&;×<Ò<Ø—J‘J˜vÖ&à"Ÿk™k›m�Gô 1°×9Ò9à"-×"4Ñ"4Ó"6˜Ø—J‘Jä$×:Ñ:Ü% fÓ-¨wÀeð ;ó öñ.ð& ˆJr›   Nr›  c              3  ó<   "  € T F  qP                   R J x € K  	  R # 5irª   )r9  )r  Úbranchs   & rœ   r  Ú Switch.create.<locals>.<genexpr>­+  s   é € Ð;±(¨�|‰|˜tÕ#³(ùs   ‚TFz(Expected all branch.graph to be not Nonez
torch.condztorch.switchz7Output aliasing is currently not supported in compiled z. The outputs of the z subgraph of z are aliased: rÖ	  c              3  ór   "  € T F-  p\        V\        4      '       d   K  VP                  4       x € K/  	  R # 5irª   )r«   rÑ   rB  )r  Úos   & rœ   r  rÏ  Ì+  s,   é € ð 
á*�Ü˜aÔ!6×7ô ˆA�L‰L�NˆNÛ*ùs   ‚7Ÿ7r   zcannot determine devicerÙ  )r´  rµ  rŽ  r’  r   r¶  rz
  )Ú-check_input_alias_and_mutation_return_outputsrl  )2rs  r{   r9  rÑ  rÜ   r«   r   rÓ   r�   rB   r@  r©  rÚ  rƒ  rŽ   r«  rß  rà  r£  rƒ  r÷   rŠ  rð   r  rB  rA  r>  r–  r�  r?   r:  r  r1  r³  r.  rr  r•  r5  r±  r6  r—  rÅ   rM  Útorch._higher_order_ops.utilsrÒ  rD   r  r'  r’  r&  )#rê  r´  rµ  rŽ  r¶  r¥   r¥  r¤  Úfx_opÚfake_outputsrË  rÛ  Úbranch_out_argsrŠ  rÆ  rÎ  Úbranch_outputsr  Ú	b_outputsÚref_outputsrò   Úr_oÚb_or8  r   Úswitchr£  Úmerged_outputr  rM  rÒ  Úmutated_operand_indicesr&  Úbranch_mutatedr  s#   &&&&&                              rœ   rê  ÚSwitch.create]+  sÈ  € ð ×$Ñ$ XÓ.ˆá2:Ó;±(¨Q×%Ñ% aÖ(±(ˆÐ;Ü !§¡× 4Ñ 4× 9Ñ 9¸"Õ =ˆä˜+¤x×0Ò0Ü ¤ kÓ!2Ó3Ð3ð $&ˆÛ ˆEÜ˜%¤×&Ò&Ø×$Ñ$ U§Z¡Z°Õ%6Ö7ð ×$Ñ$ UÖ+ñ !ô —w‘w×+Ñ+×0Ñ0°Õ7ˆõ	ô6 !ˆHØ�~‰~Ô%ä!"§¡×!6Ñ!6Ø×,Ñ,Ø#0Ø"*§-¡-ð "7ó "�”ð
 #+×"7Ñ"7×"=Ñ"=×"IÑ"IÓ"K×"PÑ"PÐQRÕ"S�Ü! /´8×<Ò<Ü(¬¨oÓ)>Ó?Ð?áIXó+ÙIXÀA¤Z°´4×%8Ò%8�A—F‘F˜5–M¸aÒ?Éð ð +ô ×(Ò(¨¯©×8Õ8Ø—N‘N×&Ò&¨Ò6ñ
 4JØ Ÿ™×4Ñ4°ló4�H—N‘NÔ0÷ 9Ò8ñ !÷0 ‹3Ñ;±(Ó;�3�3Š3Ñ;±(Ó;×;Ò;Ü Ð!KÓLÐLáCKÓLÁ8¸Ÿ,™,×4Ô4Á8ˆÐLç")‘,¨~ˆÜ!$ X¨~Ö!>ÑˆF�IÜ# I×.Ô.Ü$ØMÈgÈYð W*Ø*0¯+©+¨°mÀGÀ9ÈNÐ[dÐZeðgóð ñ "?ð % QÕ'ˆØ'¨×+Ð+ˆIÜ�;Ó¤3 y£>Ô1Ü$ k°9Ð%=Ó>Ð>Ü!*¬3¨{¸IÓ+FÖ!G‘�‘:�C˜Ø—>‘>Ó# s§~¡~Ó'7Ô7Ü(¨!¨S°#¨Ó7Ð7Ø—=‘=“? c§m¡m£oÔ5Ü(¨!¨S°#¨Ó7Ð7Ø—>‘>Ó#×*Ñ*¨c¯n©nÓ.>×.EÑ.EÖEÜ(¨!¨S°#¨Ó7Ð7ó "Hñ ,ô ñ 
à 
Ö*ó
ó 
ˆô
 6Ü�G‰G×Ñ×&Ñ&Ü�G‰G× Ñ ×%Ñ%×)Ñ)Ð*=¸tÓDó
Ðð Š>Ü Ð!:Ó;Ð;ÜØØØÜ$¨FÔ3Ø/Øô
ˆô6 /8Ü�K¤§¡×!5Ñ!5×!:Ñ!:¸5Õ!AÓBô/ö%
ñ$/Ñ*�Ñ*�F˜Mô# Üð ×(Ñ(Ó*Ò6ð "×,Ñ,Ô.àØ ×*Ñ*Ó,Ø4A×4FÑ4FÔ4HÓIÑ4H¨bœ+ bž/Ñ4HÑIØ6C×6JÑ6JÔ6LÓMÑ6L°œK¨žOÑ6LÑMØ!×,Ñ,Ó.×5Ñ5Ø$×/Ñ/Ó1×;Ñ;ô
ð Ü˜��öñ"/ð% 	ó 
ð. !ˆŒõ	
ô 4>³<ÐÛˆFá=¸f×>QÑ>QÓRñ )ˆQ��1�n að $¤z°.Ó'AÕAÒ#ñ	 ô Ð5Ô6ó#
á6�ô ˜8 C�=×/Ñ/°¸#µÀÖGÙ6ñ#
ˆÔð
 ˆùòC <ùòn+÷ 9×8Ñ8üò Mùòp JùÚMùõ
ùòJ#
sJ   –ZÇ4ZÈAZÊ<Z1ÔA[ 
Õ7Z6Ö[ 
ÖZ;Ö3A[ 
Ù.[ÚZ.Ú6
[ 
c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   r¹  ,  ó   € ÷ 
ñ 
Ð3ð 
¸ñ 
r›   c           	     	ó”   € VP                  V 4       VP                  V P                  4       V P                  \	        V R / 4      4       R# r­  )Úcodegen_switchr®  r¼  rM  rà   rF  s   &&rœ   rG  ÚSwitch.codegen,  s9   € Ø×Ñ˜tÔ$Ø×8Ñ8Ø�M‰M‹O˜TŸ\™\¬7°4Ð9LÈbÓ+Qö	
r›   c               ó   € V ^8„  d   QhRR/# r§  r“   )r§   s   "rœ   r¨   r¹  ,  r¶  r›   c                	óì   € \        V R R4      ;p'       dW   \        \        P                  P                  P
                  V4      pVf   \        R4      h\        VP                  4       4      # \        4       # r¸  r¹  rº  s   &  rœ   rª  ÚSwitch.get_unbacked_symbol_defs,  r½  r›   )rµ  r¶  rŽ   rŽ  r´  r   r®  )r•   r–   r—   r˜   rS  r´  r™   rµ  rŽ  r¶  rM  r/  r$  r:  rê  rG  rª  rš   r  r  s   @rœ   r³  r³  &+  su   ø‡ ñð  #€HˆmÓ"Ø*.€HÐ'Ó.Ø(,€HÐ%Ó,Ø€GˆTÓØ,0€GÐ)Ó0÷)ò )õ8Hð öló ðlõ\
÷	 ó 	 r›   r³  c               ó    € V ^8„  d   QhRRRR/# )r¤   rÜ   rÑ  r¦   z-tuple[list[ShapeAsConstantBuffer], list[Any]]r“   )r§   s   "rœ   r¨   r¨   ,  s   € ÷ "ñ "Ø
ð"à2ñ"r›   c                óª   € . p. pV  FG  p\        V\        4      '       d   VP                  VP                  4       K6  VP                  V4       KI  	  W!3# rª   )r«   rÑ   r@  r]  )rÜ   Únon_sym_argsr½  rÍ  s   &   rœ   r¼  r¼  ,  sO   € ð €LØ€HÛˆÜ�cÔ0×1Ò1Ø�O‰O˜CŸH™HÖ%à×Ñ Ö$ñ	 ð Ð!Ð!r›   c                  óà   a € ] tR tRt$ RtRtR]R&   RtR]R&   RtR]R&   Rt	R]R	&   Rt
R
]R&   R V 3R lltR R lt]R R l4       t]R R l4       t]R R l4       tR R ltR R ltRtV ;t# )Ú	WhileLoopi,,  zSThe IR node for while_loop and while_loop_stack_output. It supports input mutation.NrÌ  Úcarried_inputsÚadditional_inputsr�  Úcond_subgraphÚbody_subgraphr·  rM  c               ó8   € V ^8„  d   QhRRRRRRRRRRR	R
RRRR/# )r¤   rî  r¯  rï  rð  r‚  rñ  r’  r.  r   rÿ  Ústack_outputr¸   r¦   r¿   r“   )r§   s   "rœ   r¨   ÚWhileLoop.__annotate__6,  s[   € ÷ )ñ )à(ð)ð ,ð)ð  ð	)ð
  ð)ð "ð)ð Eð)ð ð)ð 
ñ)r›   c                	ó&  <€ Wn         W n        W0n        W@n        \	        . VOVO4      w  r‰\
        S
V `  R VV	VR7       Ve   W`n        Wpn        \        P                  P                  V 4      V n        \        P                  P                  V 4       R # r»  )rî  rï  rð  rñ  r¼  rÍ  r/  r   ró  r{   r9  r!  rŽ   r"  )rì  rî  rï  rð  rñ  r’  r   ró  r½  rü  rÏ  s   &&&&&&&&  €rœ   r/  ÚWhileLoop.__init__6,  s”   ø€ ð -ÔØ!2ÔØ*ÔØ*Ôä 2Ø1ˆnÐ1Ð0Ð1ó!
Ñˆô 	‰ÑØØØØ"ð	 	ô 	
ð Ò(Ø%6Ô"Ø(Ôä—G‘G×+Ñ+¨DÓ1ˆŒ	Ü	�‰×"Ñ" 4Ö(r›   c               ó   € V ^8„  d   QhRR/# r!  r“   )r§   s   "rœ   r¨   rô  U,  s   € ÷ ñ ˜~ñ r›   c                	ó¾   € . pV P                   '       d   VP                  V P                   4       V P                  '       d   VP                  V P                  4       V# rª   )rð  r@  rñ  )rì  Ú	subgraphss   & rœ   r$  ÚWhileLoop.get_subgraphsU,  sM   € Øˆ	Ø××ÐØ×Ñ˜T×/Ñ/Ô0Ø××ÐØ×Ñ˜T×/Ñ/Ô0ØÐr›   c               ó    € V ^8„  d   QhRRRR/# )r¤   rî  r¯  r¦   r“   )r§   s   "rœ   r¨   rô  a,  s   € ÷ ñ Ð.>ð ÐCSñ r›   c                	ó¦  € \        V 4      '       g   V # V  Uu. uF+  p\        V\        4      '       d   VP                  4       MTNK-  	  pp\	        4       p. p\        W4       Ff  w  rV\        V4      V9   d'   VP                  \        P                  V4      4       K;  VP                  \        V4      4       VP                  V4       Kh  	  V# u upi rª   )rŠ  r«   r˜  r¹  rD   r÷   r‚  r@  r+  rr  r-  )rî  r^  Úunwrapped_buffersÚseen_buffersr  Úoriginal_inputÚunwrapped_buffers   &      rœ   Ú_clone_aliased_inputsÚWhileLoop._clone_aliased_inputs`,  sÁ   € ä# N×3Ò3Ø!Ð!ñ )ó
á(�ô %/¨v´×$GÒ$GˆF×ÑÔ ÈVÒSÙ(ð 	ð 
ô )3«ˆØ+-ˆä03°NÖ0VÑ,ˆNÜÐ"Ó# |Ô3Ø—‘œl×5Ñ5°nÓEÖFà× Ñ ¤Ð$4Ó!5Ô6Ø—‘˜nÖ-ñ 1Wð ˆùò!
s   ˜1Cc               ó    € V ^8„  d   QhRRRR/# )r¤   r'  r¡   r¦   r“   )r§   s   "rœ   r¨   rô  {,  s   € ÷ Lñ L vð L°&ñ Lr›   c                	ó  € \        V \        4      '       d   V # \        V \        \        34      '       d   \        V 4      # \        V \        4      '       d   \        P                  V 4      # \        R \        V 4       24      h)zNYI unsupported output type: )r«   r    rº  r˜  rr  rê  rô  r�   )r'  s   &rœ   Ú_maybe_wrap_as_tensor_boxÚ#WhileLoop._maybe_wrap_as_tensor_boxz,  se   € ä�cœ9×%Ò%ØˆJÜ˜œj¬/Ð:×;Ò;Ü˜S“>Ð!Ü˜œ[×)Ò)Ü×#Ñ# CÓ(Ð(äÐ!>¼tÀC»y¸kÐJÓKÐKr›   c               ó0   € V ^8„  d   QhRRRRRRRRRRR	R
/# )r¤   Úcond_fnr‚  Úbody_fnrî  r¯  rï  ró  r¸   r¦   rä  r“   )r§   s   "rœ   r¨   rô  †,  sN   € ÷ mñ màðmð ðmð )ð	mð
 ,ðmð ðmð 
#ñmr›   c                óÞ  € ^ RI Hp R R lp\        P                  P                  P
                  R,          p\        P                  P                  P
                  R,          p	W‰,           p
V
 Uu. uF  q»P                  R,          NK  	  ppV Uu. uF  q»P                  R,          NK  	  ppV	 Uu. uF  q»P                  R,          NK  	  ppV Uu. uF  q°P                  V4      NK  	  pp\        P                  V4      pV! Wý4      pV Uu. uF  q°P                  V4      NK  	  ppV! VV4      pVV,           pW3 EF.  pVP                  e   K  \        V
\        4      '       g   \        \        V
4      4      h\        P                  P                  VP                  V
VP                   R7      Vn        \        P"                  ! VP                  4      ;_uu_ 4        VP                  P$                  ! V!   VVJ de   \'        VP                  P(                  4      \'        V4      8w  d   \        R4      hV! VP                  P(                  V4      VP                  n        RRR4       EK1  	  VP                  '       d   VP                  '       g   \        R4      hVP                  P(                  pVP                  P(                  p\+        V4      '       d   \        R	V 24      h\'        V4      ^8w  d   \        V4      hV^ ,          p\        V\,        4      '       gX   VP/                  4       \0        P2                  8w  d   \        V4      h\'        VP5                  4       4      ^ 8w  d   \        V4      h\'        V4      ^ 8:  d   \        R
4      hV^ ,          P7                  4       pVf   \        R4      h\'        V4      \'        V4      8w  d   \        VV34      h\9        \;        VV4      4       F¼  w  pw  ppR R lpV! VP5                  4       VP5                  4       4       V! VP=                  4       VP=                  4       4       VP7                  4       VP7                  4       8w  d   \        VVVV34      hVP/                  4       VP/                  4       8w  g   K°  \        VVV34      h	  Vf   \        R4      h\?        \        P                  P@                  PB                  \        P                  P                  P                  PE                  RR4      4      p\        VVVV\G        VR7      VVR7      pVP                  e?   \        VP                  PH                  \0        PJ                  PL                  4      '       g   \        R4      hV! VP                  PH                  V4      ^,          p\O        V4      pV Uu. uF  pVV,          NK  	  p p\Q        V 4      p!. p". Vn)        . Vn*        V'       Ed   \'        V4      ^ 8w  d   \        R4      h\9        \        P                  P                  P                  R,          4       Fµ  w  pp#\W        \Y        V#PZ                  V#P\                  V#P_                  4        U$u. uF  p$\a        V$4      NK  	  up$V#Pc                  4        U%u. uF  p%\a        V%4      NK  	  up%R7      V\d        V3.4      p&VPR                  Pg                  V&4       V"Pg                  V&4       K·  	  EM%\9        V4       EF  w  pp#VV9   dj   V\'        V4      8¼  d   \        R4      h\i        V!4      p'VPT                  Pg                  \k        V'Pl                  V'V4      4       V"Pg                  V'4       Kw  \W        \Y        V#P7                  4       V#P/                  4       V#P5                  4       V#P=                  4       V#Po                  4       Pp                  R7      V\d        V3.4      p&VPR                  Pg                  V&4       V"Pg                  V&4       EK  	  \;        VV"4       Fl  w  p(p)V(Ps                  4       \        P                  Pt                  9   g   K5  \        P                  Pv                  Py                  V)Ps                  4       4       Kn  	  V"# u upi u upi u upi u upi u upi   + '       g   i     EKŸ  ; iu upi u up$i u up%i )z€create the while_loop IR node. stack_output controls whether it stack
each iterations' output, which is necessary for training.
)Úcheck_input_alias_and_mutationc               ó$   € V ^8„  d   QhRRRRRR/# )r¤   Útensor_boxesr¯  rÅ  z'list[int | torch.SymInt | torch.Tensor]r¦   rµ   r“   )r§   s   "rœ   r¨   Ú&WhileLoop.create.<locals>.__annotate__“,  s&   € ÷ 	ñ 	Ø*ð	àAð	ð ñ	r›   c           	     ór  € \        V 4      \        V4      8w  d   \        R 4      h. p\        W4       F�  w  r4\        V\        P
                  4      '       dL   \        P                  V4      pVP                  \        P                  WTP                  4       RR7      4       Kp  VP                  V4       Kƒ  	  V# )z/Expected len(tensor_boxes) == len(fake_tensors)Fr]  )rð   rÓ   r÷   r«   rD  r�  rí  r  r@  r+  rJ  r6  )r  rÅ  rÉ  rë  ÚfkÚnew_tbs   &&    rœ   rË  Ú0WhileLoop.create.<locals>._require_exact_strides“,  s™   € ô �<Ó ¤C¨Ó$5Ô5Ü$Ð%VÓWÐWØˆCÜ˜lÖ9‘�Ü˜b¤%§,¡,×/Ò/ô '×@Ñ@ÀÓD�FØ—J‘JÜ$×:Ñ:Ø"§I¡I£K¸uð ;ó öð —J‘J˜r–Nñ) :ð* ˆJr›   rf  Nr›  zHExpected len(subgraph.graph.graph_outputs) == len( fake_carried_inputs )z(Expected cond_fn.graph and body_fn.graphzŽOutput aliasing is currently not supported in compiled torch.while_loop. The outputs of the body_fn subgraph of torch.while_loop are aliased: z9torch.while_loop is assumed to have at least one operand.r¨  c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   Ú	lhs_exprszSequence[int | Expr]Ú	rhs_exprsr¦   r¿   r“   )r§   s   "rœ   r¨   r  -  s&   € ÷ <ñ <Ø/ð<à/ð<ð ñ<r›   c                óÈ   € \        V 4      \        V4      8w  d   \        R 4      h\        W4       F.  w  r#\        P                  P
                  P                  W#4       K0  	  R# )z)Expected len(lhs_exprs) == len(rhs_exprs)N)rð   rÓ   r÷   r{   r9  r:  rh  )r  r  ÚlhsÚrhss   &&  rœ   Ú_guard_list_equalsÚ,WhileLoop.create.<locals>._guard_list_equals-  sI   € ô �y“>¤S¨£^Ô3Ü(Ð)TÓUÐUÜ # IÖ 9‘H�CÜ—G‘G×$Ñ$×1Ñ1°#Ö;ó !:r›   r   rÙ  )rî  rï  rð  rñ  r’  r   ró  z_Expected body_fn.graph is not None and isinstance( body_fn.graph.module, torch.fx.GraphModule )z-NYI: while_loop_stack_output input mutations.r½  zonly carries can be mutated.)r8  r7  r5  r6  r–  éþÿÿÿrl  )=rÓ  r  r{   r9  rÑ  rÜ   r©  rs  rí  r  r«   r   rÓ   r�   rÚ  rƒ  rŽ   rß  rà  rð   r£  rŠ  rÑ   rA  rD  r¸   r<  rB  r  r÷   rn  r?   r:  r  r1  r.  ÚmoduleÚfxÚGraphModulerD   r‘  rM  r&  rr  r•  r8  r7  r5  r±  r6  rÅ   r@  r�  r'  r’  r>  r–  r¼  rÐ  r«  r-  )*rê  r  r	  rî  rï  ró  r  rË  Úfx_carried_inputsÚfx_additional_inputsÚfx_all_inputsr¥   Úfake_all_inputsÚfake_carried_inputsÚfake_additional_inputsÚcarried_inputs_Úadditional_inputs_Ú
all_inputsrÛ  Úcond_outputsÚbody_outputsrØ  r8  rò   r¥  Úbor  r   Ú
while_loopÚmutated_idxsÚmutated_idx_setr  r  Úmutated_inputs_iterÚall_outputsr£  r  r  r¿  Úmutated_inputrµ  r'  s*   &&&&&&                                    rœ   rê  ÚWhileLoop.create…,  sf  € õ 	Qõ	ô< ŸG™G×0Ñ0×5Ñ5°bÕ9ÐÜ Ÿw™w×3Ñ3×8Ñ8¸Õ<ÐØ)Õ@ˆÙ2?Ó@±-¨QŸ6™6 %Ÿ=˜=±-ˆÐ@Ù6GÓHÑ6G°Ÿv™v eŸ}˜}Ñ6GÐÐHÙ9MÓ!NÑ9M°A§&¡&¨§- -Ñ9MÐÐ!Ná9GÓH¹°A×,Ñ,¨QÖ/¹ˆÐHÜ#×9Ñ9¸/ÓJˆÙ0°ÓVˆÙ<MÓNÑ<M°q×/Ñ/°Ö2Ñ<MÐÐNÙ3ØÐ 6ó
Ðð %Ð'9Õ9ˆ
à Ô*ˆHØ�~‰~Ô%ä! -´×:Ò:Ü(¬¨mÓ)<Ó=Ð=Ü!"§¡×!6Ñ!6Ø×,Ñ,Ø#0Ø"*§-¡-ð "7ó "�”ô
 ×(Ò(¨¯©×8Õ8Ø—N‘N×&Ò&¨Ò8ð   7Ó*Ü˜xŸ~™~×;Ñ;Ó<ÄØ/óAô ô #1Ø jó#ð ñ 8NØ$ŸN™N×8Ñ8Ø/ó8˜Ÿ™Ô4÷ 9Ò8ñ +ð< ——� '§-§- -Ü Ð!KÓLÐLØ—}‘}×2Ñ2ˆØ—}‘}×2Ñ2ˆä ×-Ò-Ü ðXØXdÐWeðgóð ô ˆ|Ó Ô!Ü  Ó.Ð.Ø˜�OˆÜ˜!Ô2×3Ò3Ø�{‰{‹}¤§
¡
Ô*Ü$ QÓ'Ð'Ü�1—:‘:“<Ó  AÔ%Ü$ QÓ'Ð'äˆz‹?˜aÔÜ ØKóð ð ˜A•×)Ñ)Ó+ˆàŠ>Ü Ð!>Ó?Ð?äˆÓ¤3 |Ó#4Ô4Ü à#Ø ðóð ô %¤S¨¸,Ó%GÖH‰KˆA‰x��Bõ<ñ ˜rŸ{™{›}¨b¯k©k«mÔ<Ù˜rŸ}™}›°·±³Ô@ð �}‰}‹ "§-¡-£/Ô1Ü$ a¨¨R°Ð%8Ó9Ð9Ø�|‰|‹~ §¡£Ö/Ü$ a¨¨R [Ó1Ð1ñ% Ið( Š>Ü Ð!>Ó?Ð?ä5Ü�G‰G×Ñ×&Ñ&Ü�G‰G× Ñ ×%Ñ%×)Ñ)Ð*=¸tÓDó
Ðô
 Ø*Ø0Ø!Ø!ä$¨FÔ3Ø/Ø%ô	
ˆ
ð �M‰MÒ%Ü˜7Ÿ=™=×/Ñ/´·±×1EÑ1E×FÒFä Øqóð ñ
 6Ø�M‰M× Ñ  /ó
à
õˆô % \Ó2ˆÙ5DÓE±_¨c˜* SŸ/˜/±_ˆÐEô # >Ó2ÐØ$&ˆØˆ
ÔØ&(ˆ
Ô#ßˆ<Ü�?Ó# qÔ(Ü$Ð%TÓUÐUÜ(¬¯©×)=Ñ)=×)BÑ)BÀ5Õ)IÖJ‘��Vä'ÜØ%Ÿ}™}Ø$Ÿl™lØ8>¿¹¼ÓF¹°"œk¨"žo¹ÑFØ:@¿-¹-¼/ÓJ¹/°B¤¨B¦¹/ÑJô	ð Ü˜C�[�Mó	�	ð ×"Ñ"×)Ñ)¨)Ô4Ø×"Ñ" 9Ö-ó  Kô  )¨×6‘��VØ˜/Ô)Øœc .Ó1Ô1Ü,Ð-KÓLÐLä$(Ð)<Ó$=�MØ×/Ñ/×6Ñ6Ü& }×';Ñ';¸]ÈJÓWôð  ×&Ñ& }Ö5ä +Ü#Ø#)×#4Ñ#4Ó#6Ø"(×"2Ñ"2Ó"4Ø!'§¡Ó!2Ø#)×#4Ñ#4Ó#6Ø#)×#4Ñ#4Ó#6×#=Ñ#=ôð #Ü ˜˜ó
!�Ið ×&Ñ&×-Ñ-¨iÔ8Ø×&Ñ& y×1ñ/  7ô2 ˜N¨KÖ8‰HˆC�Ø�|‰|‹~¤§¡×!5Ñ!5Ö5ô —‘×+Ñ+×/Ñ/°·±³Ö?ñ 9ð Ðùò AùÚHùÚ!NùâHùò O÷  9×8Ñ8üò\ Fùò  GùÚJs=   Á/b2Âb7Â1b<ÃcÄcÇBc×c Úc%Ú4c*ãcc               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   rô  u-  râ  r›   c           	     	ó¨   € VP                  W P                  4       VP                  V P                  4       V P                  \        V R / 4      4       R# r­  )Úcodegen_while_loopró  r®  r¼  rM  rà   rF  s   &&rœ   rG  ÚWhileLoop.codegenu-  s?   € Ø×"Ñ" 4×):Ñ):Ô;Ø×8Ñ8Ø�M‰M‹O˜TŸ\™\¬7°4Ð9LÈbÓ+Qö	
r›   c               ó   € V ^8„  d   QhRR/# r§  r“   )r§   s   "rœ   r¨   rô  {-  r¶  r›   c                	óì   € \        V R R4      ;p'       dW   \        \        P                  P                  P
                  V4      pVf   \        R4      h\        VP                  4       4      # \        4       # r¸  r¹  rº  s   &  rœ   rª  Ú"WhileLoop.get_unbacked_symbol_defs{-  r½  r›   )rï  rñ  rî  rð  rŽ   ró  r   )r•   r–   r—   r˜   rS  rî  r™   rï  rð  rñ  rM  r/  r$  rV  r  r  r:  rê  rG  rª  rš   r  r  s   @rœ   rí  rí  ,,  s›   ø‡ á]à.2€NÐ+Ó2Ø15ÐÐ.Ó5Ø%)€M�?Ó)Ø%)€M�?Ó)Ø,0€GÐ)Ó0÷)ð )õ>ð ôó ðð2 ôLó ðLð ômó ðmõ^
÷	 ó 	 r›   rí  c                  óX   a € ] tR tRtRRR/R V 3R lllltR V 3R lltR R	 ltR
tV ;t# )rÐ   i‡-  Nr   c               ó8   € V ^8„  d   QhRRRRRRRRR	R
RRRRRR/# ru  r“   )r§   s   "rœ   r¨   ÚEffectfulKernel.__annotate__ˆ-  s[   € ÷ 2ñ 2àð2ð ð2ð &ð	2ð
 &ð2ð +ð2ð &ð2ð Eð2ð 
ñ2r›   c          
     	ó  <€ \         S
V `  VVVVVR VR7       ^ RIHp V! V4      p	V	f   \	        R4      hW�n        \        P                  P                  P                  V	R 4      V n
        V \        P                  P                  V	&   R # )Nr>  )Ú_get_effectz Expected effect_type is not None)rÍ  r/  Útorch._higher_order_ops.effectsr=  rÓ   Úeffect_typer{   r9  Úeffectful_opsr1  Úprev_effect_buffer)rì  r’  rb  rü  rv  rþ  rÝ   r   r=  r?  rÏ  s   &&&&&&&$  €rœ   r/  ÚEffectfulKernel.__init__ˆ-  s‡   ø€ ô 	‰ÑØØØØØØØ/ð 	ô 	
õ 	@á! &Ó)ˆØÒÜ Ð!CÓDÐDØ&ÔÜ"#§'¡'×"7Ñ"7×";Ñ";¸KÈÓ"NˆÔØ-1Œ�‰×Ñ˜kÓ*r›   c               ó   € V ^8„  d   QhRR/# r
  r“   )r§   s   "rœ   r¨   r;  ¦-  s   € ÷ ñ Ð!8ñ r›   c                	óÎ   <€ \         SV `  4       pV P                  eH   VP                  P	                  \
        P                  ! V P                  P                  4       4      4       V# rª   )rÍ  r  rA  r  r-  rN   r¬  r¼  )rì  r  rÏ  s   & €rœ   r  ÚEffectfulKernel.get_read_writes¦-  sU   ø€ Ü‘gÑ-Ó/ˆà×"Ñ"Ò.Ø×Ñ×!Ñ!Ü×$Ò$ T×%<Ñ%<×%EÑ%EÓ%GÓHôð Ðr›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r;  °-  r¡  r›   c                	ó   € R # rR  r“   rë  s   &rœ   r£  Ú EffectfulKernel.has_side_effects°-  r  r›   )r?  rA  rª   )	r•   r–   r—   r˜   r/  r  r£  rš   r  r  s   @rœ   rÐ   rÐ   ‡-  s-   ø† ñ2ð HL÷2ó 2÷<ð ÷ó r›   rÐ   c                  óH   € ] tR tRt]! R 4      RR R ll4       tR R ltRtR# )	rµ  i´-  c               ó    € V ^8„  d   QhRRRR/# r#  r“   )r§   s   "rœ   r¨   ÚNonTensorObj.__annotate__¶-  r  r›   c                	ó   € \        4       # rª   rC   r&  s   &&rœ   r'  Ú!NonTensorObj.get_free_symbol_usesµ-  r  r›   c               ó   € V ^8„  d   QhRR/# r”  r“   )r§   s   "rœ   r¨   rK  »-  s   € ÷ ñ ˜ñ r›   c                	ó   € R # rª   r“   rë  s   &rœ   r–  ÚNonTensorObj.realize»-  r  r›   r“   Nr®  )r•   r–   r—   r˜   re   r'  r–  rš   r“   r›   rœ   rµ  rµ  ´-  s#   † Ù˜NÓ+öó ,ð÷
ñ r›   rµ  c                  ól   € ] tR tRt$ R]R&   R]R&   R R ltRR	 R
 lltR R ltR R ltR R lt	Rt
R# )r©  i¿-  r�   rŽ   ú%FakeScriptObject | torch.ScriptObjectrJ  c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   ÚTorchBindObject.__annotate__Ä-  ó   € ÷ ñ ˜#ñ r›   c                	ó   € V P                   # rª   r  rë  s   &rœ   r¼  ÚTorchBindObject.get_nameÄ-  rÒ  r›   Nc               ó    € V ^8„  d   QhRRRR/# r™  r“   )r§   s   "rœ   r¨   rT  Ç-  ó   € ÷ ñ Ð(=ð Èñ r›   c                	ó   € V P                   # rª   r  rœ  s   &&rœ   r�  Ú!TorchBindObject.codegen_referenceÇ-  rÒ  r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   rR  r“   )r§   s   "rœ   r¨   rT  Ê-  s   € ÷ ñ Ð@ñ r›   c                	ó   € V P                   # rª   rL  rë  s   &rœ   r’  ÚTorchBindObject.get_valueÊ-  rV  r›   c               ó   € V ^8„  d   QhRR/# )r¤   r¦   ztorch.ScriptObjectr“   )r§   s   "rœ   r¨   rT  Í-  s   € ÷ 'ñ 'Ð0ñ 'r›   c                	óš   € \        V P                  \        P                  4      '       d   V P                  # V P                  P                  # rª   )r«   rJ  rD  rÑ  Úreal_objrë  s   &rœ   r‘  ÚTorchBindObject.get_real_objÍ-  s3   € Ü�d—j‘j¤%×"4Ñ"4×5Ò5Ø—:‘:Ðà—:‘:×&Ñ&Ð&r›   c               ó   € V ^8„  d   QhRR/# r  r“   )r§   s   "rœ   r¨   rT  Ó-  s   € ÷ =ñ =˜sñ =r›   c                	óð  € V P                  4       p\        V4      '       d   ^ # \        VR4      '       g   \        R4      h\	        VP                  4       4      p\        P                  ! V4      ^ ,          pV Uu. uFJ  p\        V\        P                  4      '       g   K%  VP                  4       VP                  4       ,          NKL  	  pp\        P                  ! \        P                   V^ 4      # u upi )r   Ú__obj_flatten__z4Expected hasattr(real_script_obj, "__obj_flatten__"))r‘  r/   r,  rÓ   rÇ   re  r&  r‚  r«   rD  r�  rÁ  r4  r*  rO  Úoperatorr-  )rì  Úreal_script_objÚ	flat_dictÚ
flat_elemsr¥   Ú
flat_sizess   &     rœ   Úget_buf_bytesÚTorchBindObject.get_buf_bytesÓ-  sÇ   € à×+Ñ+Ó-ˆä˜×/Ò/Ùä�Ð(9×:Ò:Ü Ð!WÓXÐXÜ˜×8Ñ8Ó:Ó;ˆ	Ü×(Ò(¨Ó3°AÕ6ˆ
ñ  ó
á�Ü˜!œUŸ\™\×*ô )ˆA�N‰NÓ˜qŸw™w›y×(Ð(Ùð 	ð 
ô
 ×Ò¤§¡¨j¸!Ó<Ð<ùò
s   Á;"C3Â")C3r“   rª   )r•   r–   r—   r˜   r™   r¼  r�  r’  r‘  rk  rš   r“   r›   rœ   r©  r©  ¿-  s+   ‡ à
ƒIØ0Ó0õ÷õõ'÷=ñ =r›   r©  c                  óB   € ] tR tRt$ RtR]R&   R R ltRR R	 lltR
tR# )ÚOpaqueValueTypeConstantiæ-  a  IR node for opaque value type constants that appear directly in graph outputs.

Unlike TorchBindObject (which references named constants loaded at runtime),
this inlines the value's repr into the generated code since value types are
reconstructed from their repr.
r   rJ  c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   Ú$OpaqueValueTypeConstant.__annotate__ñ-  s   € ÷  ñ  ˜#ñ  r›   c                	ó,   € \        V P                  4      # rª   )rc  rJ  rë  s   &rœ   r¼  Ú OpaqueValueTypeConstant.get_nameñ-  s   € Ü�D—J‘JÓÐr›   Nc               ó    € V ^8„  d   QhRRRR/# r™  r“   )r§   s   "rœ   r¨   rp  ô-  s   € ÷ ñ Ð(=ð Èñ r›   c                	ó    € \        V P                  4      w  r#VP                  4        F"  w  rEV\        P                  P
                  V&   K$  	  V# rª   )r.   rJ  r¼  r{   r9  Úopaque_value_type_classes)rì  rš  Úobj_reprÚopaque_typesrô  rH  s   &&    rœ   r�  Ú)OpaqueValueTypeConstant.codegen_referenceô-  sA   € Ü!4°T·Z±ZÓ!@ÑˆØ ×&Ñ&Ö(‰DˆAØ34ŒA�G‰G×-Ñ-¨aÓ0ñ )àˆr›   r“   rª   ©	r•   r–   r—   r˜   rS  r™   r¼  r�  rš   r“   r›   rœ   rn  rn  æ-  s   ‡ ñð ƒJõ ÷ó r›   rn  c                  óH   € ] tR tRt$ R]R&   R]R&   R R ltRR	 R
 lltRtR# )r„  iû-  r�   rŽ   r¦  r8  c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   ÚGeneratorState.__annotate__ .  rU  r›   c                	ó   € V P                   # rª   r  rë  s   &rœ   r¼  ÚGeneratorState.get_name .  rÒ  r›   Nc               ó    € V ^8„  d   QhRRRR/# r™  r“   )r§   s   "rœ   r¨   r|  .  rY  r›   c                	ó   € V P                   # rª   r  rœ  s   &&rœ   r�  Ú GeneratorState.codegen_reference.  rÒ  r›   r“   rª   )r•   r–   r—   r˜   r™   r¼  r�  rš   r“   r›   rœ   r„  r„  û-  s   ‡ à
ƒIØÓõ÷ó r›   r„  c                  óL   € ] tR tRt$ RtR]R&   R]R&   R R ltRR
 R lltRtR	# )rˆ  i.  zÌ
Represents an opaque object (e.g., ProcessGroup) that is passed through
as a graph input. Similar to GeneratorState, this wraps the object with
its placeholder name so codegen can reference it properly.
r�   rŽ   r   rJ  c               ó   € V ^8„  d   QhRR/# rÇ  r“   )r§   s   "rœ   r¨   ÚOpaqueObjectState.__annotate__.  rU  r›   c                	ó   € V P                   # rª   r  rë  s   &rœ   r¼  ÚOpaqueObjectState.get_name.  rÒ  r›   Nc               ó    € V ^8„  d   QhRRRR/# r™  r“   )r§   s   "rœ   r¨   r„  .  rY  r›   c                	ó   € V P                   # rª   r  rœ  s   &&rœ   r�  Ú#OpaqueObjectState.codegen_reference.  rÒ  r›   r“   rª   ry  r“   r›   rœ   rˆ  rˆ  .  s"   ‡ ñð ƒIØƒJõ÷ó r›   rˆ  c                  ój   € ] tR tRtR R ltR R ltRR R llt]R	 R
 l4       t]R R l4       t	Rt
R# )Ú_CollectiveKerneli.  c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   Ú_CollectiveKernel.__annotate__.  rq  r›   c                	ó   € R # r®  r“   rë  s   &rœ   r'  Ú!_CollectiveKernel.should_allocate.  r±  r›   c               ó   € V ^8„  d   QhRR/# rs  r“   )r§   s   "rœ   r¨   r�  .  r¡  r›   c                	ó   € R # rR  r“   rë  s   &rœ   r£  Ú"_CollectiveKernel.has_side_effects.  r  r›   Nc               ó    € V ^8„  d   QhRRRR/# rJ  r“   )r§   s   "rœ   r¨   r�  ".  s   € ÷ 
ñ 
°:ð 
Èñ 
r›   c                	ó|  € \        V P                  4      \        P                  P                  Jd   \        R 4      hV P                  pVe   Wn        MVP                  P                  V n        VP                  P                   Uu. uF"  q3P                  '       g   K  VP                  NK$  	  upV n        R# u upi )z,Setting cpp kernel needs a valid op_overloadN)r�   r
  rD  r+  r,  rÓ   r  r-  rŽ   r.  r/  r  )rì  r  rb  r¥   s   &&  rœ   r  Ú%_CollectiveKernel.set_cpp_kernel_name".  sŒ   € Ü�× Ñ Ó!¬¯©×)>Ñ)>Ó>Ü Ð!OÓPÐPØ×!Ñ!ˆØÒ&Ø#2Õ à#)§>¡>×#6Ñ#6ˆDÔ ð #ŸN™N×4Ò4ó.
Ù4�q¿½ŒFˆA�FŒFÑ4ñ.
ˆÖ*ùò .
s   ÂB9ÂB9c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r¤   rb  rŠ   r®  zIRNode | list[IRNode]rÜ   r   rÝ   r¦   r¿   r“   )r§   s   "rœ   r¨   r�  6.  sC   € ÷ /@ñ /@àð/@ð &ð/@ð ð	/@ð
 ð/@ð 
ñ/@r›   c                	óœ  € \         P                  P                  ;_uu_ 4        V P                  ! W.VO5/ VB pR R R 4       XP                  pVP
                  pVP                  pVP                  '       d   \        V RVP                   24      hR p	V Fn  p
\        V
\        4      '       d   K  V
P                  4        \         P                  P                  V
P                  4       4       V	e   K^  V
P                  4       p	Kp  	  V	f   \        RV R24      hV ! \        V	R7      VVVV4      p\         P"                  ! V4      pVP$                  P'                  V Uu. uF  p\)        \        V	R7      WÛ4      NK  	  up4       VP*                  P'                  V Uu. uF  qîP                  4       NK  	  up4       RV9   dj   VP$                  P-                  \)        \        V	R7      VR,          V4      4       VP*                  P-                  VR,          P                  4       4       R # R #   + '       g   i     ELÿ; iu upi u upi )Nr  zIn-place collective zE requires at least one tensor argument; got only non-tensor IR nodes.rÙ  r'  )r{   r9  r�	  r¥  rü  rý  rþ  r   rÓ   r«   rµ  r–  r•
  r¼  rB  r~
  r&  Útree_leavesr&  rÜ  r'  rŒ  r@  )rê  rb  r®  rÜ   rÝ   r  rü  rý  rþ  r8  Ú
tensor_argr@  Úinpsr  rµ  s   &&&*,          rœ   Úcreate_inplaceÚ _CollectiveKernel.create_inplace5.  sø  € ô �W‰W××ÓØ×'Ò'¨ÐH¸ÒHÀÑHˆF÷ à×(Ñ(ˆØ ×0Ñ0ˆØ×.Ñ.ˆØ×#×#Ð#Ü  F 8¨1¨V×-EÑ-EÐ,FÐ!GÓHÐHØˆÛ%ˆJÜ˜*¤l×3Ò3ÙØ×ÑÔ Ü�G‰G×'Ñ'¨
×(;Ñ(;Ó(=Ô>ØŒ~Ø#×.Ñ.Ó0’ñ &ð Š>Ü Ø& v hð /:ð ;óð ñ Ü˜fÔ%ØØØØó
ˆô ×!Ò! &Ó)ˆØ×Ñ×&Ñ&ÙOSÓTÉtÈŒ^œJ¨fÔ5°sÖCÉtÑTô	
ð
 	×Ñ×!Ñ!¹TÓ"B¹T°c§<¡<¦>¹TÑ"BÔCØ�FŒ?Ø×#Ñ#×*Ñ*Üœz°Ô8¸&À½-ÈÓPôð ×Ñ×%Ñ% f¨U¥m×&<Ñ&<Ó&>Ö?ñ ÷G ×Ðüò< Uùò #Cs   £H0Å IÆI	È0I	c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r¤   rb  rŠ   r®  zTensorBox | list[TensorBox]rÜ   r   rÝ   r¦   z%list[MultiOutput] | _CollectiveKernelr“   )r§   s   "rœ   r¨   r�  ~.  s<   € ÷ 9ñ 9àð9ð ,ð9ð ð	9ð
 ð9ð 
/ñ9r›   c           
     	ó  € \         P                  P                  ;_uu_ 4        V P                  ! W.VO5/ VB pR R R 4       XP                  pVP
                  pVP                  pVP                  p	VP                  '       d   \        V RVP                   24      hV F+  p
\        V
\        4      '       d   K  V
P                  4        K-  	  \        V\        4      '       Ed   V P                  Wv4      pVf   \        R4      hV ! \        VR7      VVVV	4      p\!        V4       UUu. uF(  w  rÞ\#        V P%                  V4      V\        V3.4      NK*  	  uppVn        \)        VP&                  V4       Fa  w  rþ\*        P,                  '       g   \/        V4      '       d   K.  \         P                  P0                  P3                  VP4                  4       Kc  	  VP&                  # V ! V P%                  V4      VVVV	4      p\*        P,                  '       g   \/        V4      '       g4   \         P                  P0                  P3                  VP4                  4       V.Vn        V#   + '       g   i     EL6; iu uppi )Nrß  r¨  rÙ  )r{   r9  r�	  r¥  rû  rü  rý  rþ  r   rÓ   r«   r©  r–  rÅ   rÏ  r.  r  rr  r„  rM  r÷   rM   r?  rw   rg  r-  rŽ   )rê  rb  r®  rÜ   rÝ   r  rû  rü  rý  rþ  r™  r8  r@  rò   r‰  r  s   &&&*,           rœ   Úcreate_out_of_placeÚ%_CollectiveKernel.create_out_of_place}.  s#  € ô �W‰W××ÓØ×'Ò'¨ÐH¸ÒHÀÑHˆF÷ à×.Ñ.ˆØ×(Ñ(ˆØ ×0Ñ0ˆØ×.Ñ.ˆØ×#×#Ð#Ü  F 8¨2¨f×.FÑ.FÐ-GÐ!HÓIÐIÛ%ˆJÜ˜j¬/×:Ô:Ø×"Ñ"Ö$ñ &ô �n¤d×+Ó+Ø—_‘_ [ÓAˆFØŠ~Ü$Ð%BÓCÐCÙÜ!¨Ô0ØØØØóˆFô "+¨>Ô!:ôñ ";‘I�Aô Ø×(Ñ(¨Ó0ØÜ˜A�Y�Köñ
 ";òˆFŒNô  # 6§>¡>°>ÖB‘�Ü×:×:Ð:ÔBSØ÷Cô Cô —G‘G×-Ñ-×1Ñ1°#·(±(Ö;ñ	  Cð
 —>‘>Ð!áØ×$Ñ$ ^Ó4ØØØØóˆFô ×6×6Ð6Ô>OØ÷?ò ?ô —‘×)Ñ)×-Ñ-¨f¯k©kÔ:Ø$˜XˆFŒNØˆM÷e ×Ðüó.s   £I'Ä*.I;É'I8	)r  r  rª   )r•   r–   r—   r˜   r'  r£  r  r:  r›  rŸ  rš   r“   r›   rœ   r‹  r‹  .  s<   † õõ÷

ð& ô/@ó ð/@ðN ô9ó ô9r›   r‹  c                  óF   a € ] tR tRtR	RR/R V 3R lllltR R ltRtV ;t# )
Ú_AllReduce_Kerneliº.  Nr   c               ó8   € V ^8„  d   QhRRRRRRRRR	R
RRRRRR/# ru  r“   )r§   s   "rœ   r¨   Ú_AllReduce_Kernel.__annotate__».  óe   € ÷ Pñ PàðPð ðPð &ð	Pð
 &ðPð +ðPð &ðPð EðPð 
ñPr›   c          
     	óV   <€ \         SV `  VVVVVR VR7       V P                  R4       R # )Nr>  Ú+aoti_torch_cpu__c10d_functional_all_reduce_©rÍ  r/  r  rb  s	   &&&&&&&$€rœ   r/  Ú_AllReduce_Kernel.__init__».  ó=   ø€ ô 	‰ÑØØØØØØØ/ð 	ô 	
ð 	× Ñ Ð!NÖOr›   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   r¤  Ñ.  ó   € ÷ /ñ /Ð3ð /¸ñ /r›   c                	ó°   € VP                  R 4       VP                  V 4       \        V P                  \        4      '       d   V P                  V4       R# R# ©z+torch/csrc/inductor/aoti_torch/c/shim_cpu.hN©Úinclude_extra_headerri  r«   r’  r_  r$  rF  s   &&rœ   rG  Ú_AllReduce_Kernel.codegenÑ.  óC   € Ø×$Ñ$Ð%RÔSØ×,Ñ,¨TÔ2ä�d—k‘k¤6×*Ò*Ø×%Ñ% gÖ.ñ +r›   r“   rª   rõ  r  s   @rœ   r¢  r¢  º.  s&   ø† ñPð HL÷Pó P÷,/ó /r›   r¢  c                  óF   a € ] tR tRtR	RR/R V 3R lllltR R ltRtV ;t# )
Ú_AllReduceKerneliÙ.  Nr   c               ó8   € V ^8„  d   QhRRRRRRRRR	R
RRRRRR/# ru  r“   )r§   s   "rœ   r¨   Ú_AllReduceKernel.__annotate__Ú.  se   € ÷ Oñ OàðOð ðOð &ð	Oð
 &ðOð +ðOð &ðOð EðOð 
ñOr›   c          
     	óV   <€ \         SV `  VVVVVR VR7       V P                  R4       R # )Nr>  Ú*aoti_torch_cpu__c10d_functional_all_reducer¨  rb  s	   &&&&&&&$€rœ   r/  Ú_AllReduceKernel.__init__Ú.  s=   ø€ ô 	‰ÑØØØØØØØ/ð 	ô 	
ð 	× Ñ Ð!MÖNr›   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   r¶  ð.  r¬  r›   c                	ó°   € VP                  R 4       VP                  V 4       \        V P                  \        4      '       d   V P                  V4       R# R# r®  r¯  rF  s   &&rœ   rG  Ú_AllReduceKernel.codegenð.  r²  r›   r“   rª   rõ  r  s   @rœ   r´  r´  Ù.  s&   ø† ñOð HL÷Oó O÷,/ó /r›   r´  c                  óz   a € ] tR tRtRRR/R V 3R lllltR R ltR R	 lt]R
 R l4       tR V 3R llt	Rt
V ;t# )Ú_WaitKerneliø.  Nr   c               ó8   € V ^8„  d   QhRRRRRRRRR	R
RRRRRR/# ru  r“   )r§   s   "rœ   r¨   Ú_WaitKernel.__annotate__ù.  r¥  r›   c          
     	óV   <€ \         SV `  VVVVVR VR7       V P                  R4       R # )Nr>  Ú+aoti_torch_cpu__c10d_functional_wait_tensorr¨  rb  s	   &&&&&&&$€rœ   r/  Ú_WaitKernel.__init__ù.  rª  r›   c               ó    € V ^8„  d   QhRRRR/# rD  r“   )r§   s   "rœ   r¨   rÀ  /  r¬  r›   c                	ó°   € VP                  R 4       VP                  V 4       \        V P                  \        4      '       d   V P                  V4       R# R# r®  r¯  rF  s   &&rœ   rG  Ú_WaitKernel.codegen/  r²  r›   c               ó   € V ^8„  d   QhRR/# rŒ  r“   )r§   s   "rœ   r¨   rÀ  /  s   € ÷ ñ Ð$4ñ r›   c                	óî  € V P                   ^ ,          p\        V\        4      '       g   \        R4      h\        V\        4      '       dA   VP                   ^ ,          p\        V\        4      '       g   \        \        V4      4      hV.# \        V\        4      '       dU   VP                   ^ ,          p\        V\        4      '       d*   VP                  ^ ,          w  rEVP                   V,          .# . # . # rÙ  )r®  r«   r¡   rÓ   r‹  r�   rr  r  )rì  rµ  rò   Úcollr&  r  s   &     rœ   Úget_volatile_readsÚ_WaitKernel.get_volatile_reads/  s½   € Ø�k‰k˜!�nˆÜ˜#œv×&Ò&Ü Ð!CÓDÐDÜ�cÔ,×-Ò-à—
‘
˜1•ˆAÜ˜a¤×(Ò(Ü$¤T¨!£WÓ-Ð-Ø�3ˆJÜ˜œ[×)Ò)ð —:‘:˜a•=ˆDä˜$Ô 1×2Ò2ØŸ™ Q�‘�àŸ™ CÕ(Ð)Ð)àˆIð ˆIr›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   rb  rŠ   rµ  r    r¦   r¿   r“   )r§   s   "rœ   r¨   rÀ  2/  s!   € ÷ 
ñ 
 ð 
°Ið 
À$ñ 
r›   c                	óú  € \         P                  P                  ;_uu_ 4        V P                  W4      pR R R 4       XP                  '       d   \        V RVP                   24      hV ! \        VP                  4       R7      VVP                  VP                  VP                  4      pVP                  P                  \        \        VP                  4       R7      W$4      4       R #   + '       g   i     L½; i)Nr  rÙ  )r{   r9  r�	  r¥  r   rÓ   r~
  rB  rü  rý  rþ  r&  r@  r'  )rê  rb  rµ  r  r@  s   &&&  rœ   Úcreate_waitÚ_WaitKernel.create_wait1/  s¼   € ä�W‰W××ÓØ×'Ñ'¨Ó4ˆF÷ à×#×#Ð#Ü  F 8¨1¨V×-EÑ-EÐ,FÐ!GÓHÐHÙÜ˜cŸn™nÓ.Ô/ØØ×ÑØ×"Ñ"Ø×!Ñ!ó
ˆð 	×Ñ×&Ñ&Üœ:¨S¯^©^Ó-=Ô>ÀÓLö	
÷ ×ús   £C*Ã*C:	c               ó   € V ^8„  d   QhRR/# r
  r“   )r§   s   "rœ   r¨   rÀ  B/  s   € ÷ ñ Ð!8ñ r›   c                	óÐ   <€ \         SV `  4       pV P                  4       pV F@  pVP                  P	                  \
        P                  ! VP                  4       4      4       KB  	  V# rª   )rÍ  r  rÊ  r  r-  rN   r¬  r¼  )rì  r  Úvolatile_readsÚvrrÏ  s   &   €rœ   r  Ú_WaitKernel.get_read_writesB/  sS   ø€ Ü‘gÑ-Ó/ˆà×0Ñ0Ó2ˆÛ ˆBØ×Ñ×!Ñ!¤,×"6Ò"6°r·{±{³}Ó"EÖFñ !àÐr›   r“   rª   )r•   r–   r—   r˜   r/  rG  rÊ  r:  rÎ  r  rš   r  r  s   @rœ   r¾  r¾  ø.  sD   ø† ñPð HL÷Pó Põ,/õð6 ô
ó ð
÷ ö r›   r¾  c               ó    € V ^8„  d   QhRRRR/# ©r¤   r  r‘   r¦   r  r“   )r§   s   "rœ   r¨   r¨   N/  s   € ÷ ñ  6ð Ð.@ñ r›   c                ól  € \        V \        \        34      '       d   \        V 4      # \        V \        \
        34      '       d>   \        \        P                  ,          ! 4       pV  F  pV\        V4      ,          pK  	  V# \        V \        P                  4      '       d   \        V 4      # \        4       # rª   )r«   rA   r"   r:   rÆ   rÅ   rD   rÌ   r$   rB  rD  r�  ©r  rì  rH  s   &  rœ   rB  rB  N/  s„   € Ü�!”h¤Ð%×&Ò&ä$ QÓ'Ð'Ü	�Aœœt�}×	%Ò	%Ü”u—|‘|Ö$Ó&ˆÛˆAØÔ,¨QÓ/Õ/ŠAñ àˆÜ	�A”u—|‘|×	$Ò	$ä$ QÓ'Ð'ä‹|Ðr›   c               ó    € V ^8„  d   QhRRRR/# rÖ  r“   )r§   s   "rœ   r¨   r¨   ^/  s   € ÷ ñ ˜&ð Ð%7ñ r›   c                ól  € \        V \        \        34      '       d   \        V 4      # \        V \        \
        34      '       d>   \        \        P                  ,          ! 4       pV  F  pV\        V4      ,          pK  	  V# \        V \        P                  4      '       d   \        V 4      # \        4       # rª   )r«   rA   r"   r9   rÆ   rÅ   rD   rÌ   r$   rC  rD  r�  rØ  s   &  rœ   rC  rC  ^/  s‚   € Ü�!”h¤Ð%×&Ò&ä˜A‹ÐÜ	�Aœœt�}×	%Ò	%Ü”u—|‘|Ö$Ó&ˆÛˆAØÔ# AÓ&Õ&ŠAñ àˆÜ	�A”u—|‘|×	$Ò	$ä˜A‹Ðä‹|Ðr›   c               ó$   € V ^8„  d   QhRRRRRR/# )r¤   r  r   rô  ztorch.fx.Noder¦   r¿   r“   )r§   s   "rœ   r¨   r¨   n/  s&   € ÷ Tñ T˜sð T }ð T¸ñ Tr›   c                óx  € \        V \        4      '       Ed#   \        V P                  \        4      '       Ed    \        V P                  P                  \        4      '       d)   V P                  P                  P                  R V4       R# \        V P                  P                  \        4      '       Ed�   V P                  P                  P                  R V4       \        V P                  P                  \        4      '       dg   \        V P                  P                  P                  \        4      '       d3   V P                  P                  P                  P                  R V4       R# \        V P                  P                  \        4      '       dŸ   V P                  P                  P                  '       gw   \        V P                  P                  P                  ^ ,          \        4      '       d:   V P                  P                  P                  ^ ,          P                  R V4       R# R# R# R# R# R# R# rÁ
  )r«   r    r‘  rº  rµ  ró  r»  rà  rr  r  r®  )r  rô  s   &&rœ   Úassign_origin_noderÝ  n/  st  € ô �&œ)×$Ó$¬°F·K±KÄ×)LÓ)LÜ�f—k‘k×&Ñ&¬×.Ò.Ø�K‰K×Ñ×/Ñ/°¸qÖAÜ˜Ÿ™×(Ñ(¬&×1Ó1Ø�K‰K×Ñ×/Ñ/°¸qÔAÜ˜&Ÿ+™+×*Ñ*¬N×;Ò;Ä
Ø—‘× Ñ ×%Ñ%¤u÷Aò Að —‘× Ñ ×%Ñ%×8Ñ8¸ÈÖJô ˜6Ÿ;™;×+Ñ+¬[×9Ò9ØŸ™×(Ñ(×0×0Ð0ä˜fŸk™k×.Ñ.×5Ñ5°aÕ8¼&×AÒAØ—K‘K×$Ñ$×+Ñ+¨AÕ.×AÑAÀ-ÐQRÖSñ Bñ 1ñ :ñ 2ñ *MÑ$r›   )é   r   r¤   rñ  )r¥	  r   rÞ  r¤   rñ  rª   r®  rR  )TFNFN({  Ú__conditional_annotations__Ú
__future__r   rW  r‹  rT  r*  rP  Úloggingrf  ÚtextwraprÆ  Úcollections.abcr   r   r   r   r   r	   r
   Úenumr   r   Únumbersr   Útypingr   r   r   r   r   r   r   r   r   r   r   r   Útyping_extensionsr   r   r   r   r   r   r    Úunittest.mockr!   rÌ   r"   r#   r$   Útorch._export.serde.schemaÚ_exportÚserder¢  rî  Útorch._library.custom_opsrž  rý  rÙ  rg
  r–  Útorch._loggingrD  Útorch.fxÚtorch.utils._pytreeÚ_pytreer&  Útorch._dispatch.pythonr%   Útorch._dynamo.utilsr&   Útorch._export.serde.serializer'   Ú*torch._higher_order_ops.auto_functionalizer(   Útorch._inductorr)   rŠ  r+   Ú"torch._library.fake_class_registryr,   r-   Útorch._library.opaque_objectr.   r/   Útorch._native.ops.sumr0   Útorch._prims_commonr1   r2   r3   r4   r5   r6   Ú%torch.fx.experimental.symbolic_shapesr7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   Útorch.fx.noderB   Útorch.utils._ordered_setrD   Útorch.utils._python_dispatchrE   Útorch.utils._sympy.functionsrF   rG   rH   rI   rJ   rK   Útorch.utils._sympy.symbolrL   r<  rM   rN   Úcodegen.commonrO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   Ú	loop_bodyrZ   Úops_handlerr[   r\   r]   r^   Úruntime.benchmarkingr_   Úruntime.hintsr`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   Úvirtualizedry   rz   r{   r|   r}   Útorch.typesr~   Úcodegen.cutlass.templater   Úcodegen.wrapperr€   r9  r�   Úkernel.gemm_epiloguer‚   rƒ   r‘   r™   rZ  Ú__version__rý  rü  rí  r„   r…   r†   r‡   r¬   rˆ   rA  r‰   r+  r,  ra  rŠ   rŒ   Ú	getLoggerr•   r.  rK  rL  rÇ   r�   r¢   r®   rÈ  r±   r×   rã   rø   rÿ   r	  r
  r 
  r  r#  r)  r.  rM  rT  ra  rd  rv  r‡  rž  r¬  r¶  r½  r¡   r[  rµ  rB  rD  rl  rƒ  r½  r¿  r_  r  r  r6  rP  ru  r¨  rÿ  r  r=  rR  rV  r“  rb  re  r¸  rÉ   rù  r  r(  râ  r˜  rÓ  rõ  r$	  r5	  rH	  r[	  r_	  rS  r_  r•  r?  r[
  rp
  rt
  r~
  r�
  r»  r*  râ  r<  rh  rL  rÑ   rm  rà  r
  r  rã  r‘  r¸   rÅ   ÚPrimitiveInfoTyper¨  rà  ræ  rî  rð  r7  rI  rT  r`  r“  rá  r»  rÄ  rX  rô  rø  rú  r+  rL  r\  rä  r'  r”  r¡  r©  rª  rÎ  r÷  rZ  rÁ  r�  r¦  r®  rÅ  rÎ  ræ  rý  r  r-  rÊ   rË   rr  rƒ  rX  re  r.  rr  rÒ   r£  rM  rP  r¥
  r    rº  r‚  rŠ  rŒ  r±  r³  r¼  rí  rÐ   rµ  r©  rn  r„  rˆ  r‹  r¢  r´  r¾  rB  rC  rÝ  )rß  s   @rœ   Ú<module>r     s»  øðß "Ð "ã Û Û Û Û Û Û Û Û ß MÕ Mß :Ý Ý Ý ÷÷ ÷ ó ÷÷ ñ õ  ã ß 'Ñ 'ç 2Ó 2ß .Ð .ß ,Ð ,Û Û ß $Ð $Ý ;Ý (Ý ?Ý MÝ #Ý 2ß Rß QÝ 1÷÷ ÷÷ ÷ ñ õ Ý /Ý ?÷÷ õ +ç "÷õ ÷÷ õ  ß NÓ NÝ -ß :÷÷ ÷ ÷ ÷ ÷ ñ ÷2 *Ñ )÷ ÝBÝ&Ý'å9Ý5Ý$Ý7Þ%ð "(€O�YÓ'ðÛà×'Ò'€NØ€Jñ ˆtƒ_€ÙˆTƒ]€ÙˆTƒ]€ÙˆTƒ]€à˜D•j€ˆ)Ó  Ø˜E•k DÕ(€ˆ)Ó (àŸ*š*×/Ò/°%·*²*×2PÒ2PÕP€ˆiÓ Pô�) 5õ ð ×Ó˜Ó!€Ø	×	Ò	˜8Ÿ?š?°4Ô	8€Ø‡y‚y‡~‚~€ð'ðT  ØØØˆˆkÐ	ÕØØØØˆc�4˜˜[Ð(Õ)¨;¸À(ÐJÕKÈdÕRõðõ	€ˆió 	õ)ð ×Ó˜dÔ#÷ð ó $ðõ$!$õHõõõó !Ð Û$Ð ÷ð õ	÷
ð 
ð 
ß Uó 
Ø Uð 
÷ó 
ð÷
ð õDõ
>õ;õ*'õ7õ*õ2%GõP'õò;÷k,ñ k,ñ\ �UÔ÷að aó ðaðH ôW
ˆFó W
ó ðW
õt&ð ô%
�ó %
ó ð%
ðP ô
ˆió 
ó ð
ðF 
‰;�|Ó$Ø	‰;�yÓ!Ø
‰K˜
Ó#Ø	‰;�yÓ!Ø
‰K˜ÓØ	‰;�uÓØ	‰;�uÓØ‰{˜=Ó)ð	<Ð Ð8ó 	÷XNð XNðv ôO
�ó O
ó ðO
ðh )-Ù˜1“:÷ð. " 8¨D¥>°8¸Dµ>Ð"BÀHÐ"LÕM€ˆYÓ Mô8S˜9ô 8SôvnÐ'ô nôbs
Ð1ô s
ôld
Ð+õ d
ðN ôQ
ˆ5ó Q
ó ñQ
ðj ô	‘ó 	ó ñ	ð ôaˆ5ó aó ñaöHöö*	÷:ñ :özöð$ ô_
ˆvó _
ó ñ_
ðD ôb‘ó bó ñbðJ ô?‘(ó ?ó ñ?ðD ôH9‘(ó H9ó ñH9ðV ô!‘(ó !ó ñ!ðH ôb‰;ó bó ñbðJ	 ôS‘hó Só ñSðl ô,‘ó ,ó ñ,ô^|H‘õ |Hð~ ô�6ó ó ñð" ôK‰|ó Kó ñKð$ ôS‘|ó Só ñSöö(<÷7ò 7ð  ôw
‰Zó w
ó ñw
ôt	C‘&õ CôaH‘Võ aHôH$G‘fõ $GôN�Tõ ô%‘{õ %ðD ô‘ó ó ñô.]*¡õ ]*ñ@ �UÔôNˆV�]ó Nó ñNñb �UÔô&‘f˜ió &ó ñ&ô ‘&õ ô
‘Kõ ô
‘[õ 
ð& ô˜6ó ó ñð( ô˜Fó ó ñð  ×Ó˜dÔ#÷	ð 	ó $ñ	ñ �UÔô~4‘_ó ~4ó ñ~4ðB ×Ó˜dÔ#÷ð ó $ñô4˜Xõ 4ôm+‘_õ m+ô`?™>õ ?ðD ˜%•K¡$Õ&¨Õ,©t°C¸#µIÀÕ4EÉÕ4LÕ/MÕMÑ ÷Lò Lô^"™|õ "ð
 ,0Ñ ˜[Ó /ö	;ôQ,Ñ.õ Q,ôh5™Nõ 5ö0(™õ (ö<™Nõ ö@{%™Nõ {%÷|5ð 5ñ �UÔöT‘?ó Tó ñTön‘õ öZ‘9õ Zðz ×Òö;ó ñ;÷ð ð ×Ó˜dÔ#÷Aò Aó $ñAñ �UÔöH‘<ó Hó ñHñV" �UÔö#‘ló #ó ñ#öL
‘/õ 
ö(+"™õ +"ö\
‘Võ 
öB‘iõ ö@?‘Lõ ?öD'
¡õ '
öT
™-õ 
ö$>
‘\õ >
öBA™lõ AöH
,)™|õ ,)ö`/™,õ /öd¡<õ ö:BÑ5õ Bö(8Ñ-õ 8ö28Ñ-õ 8ö27)‘lõ 7)öt))‘|õ ))öX=3‘õ =3ö@1E¡õ 1Eöh51‘|õ 51öp-‘Lõ -ö8<;‘<õ <;ñ~ �UÔ÷ò ó ñö
}Ñ&õ }ñ@ �UÔö
‘.ó 
ó ñ
ö@ ™õ  ð2 ö™
ó ó ñöK
‘,õ K
ö\ 
™õ  
öF4™Kõ 4÷ 2ð 2öf™>õ fðV ×ÒöT�ó Tó ñTõn+‘
õ +öM%‘õ M%ñ` �UÔö'ˆvó 'ó ñ'÷Lð Lñ �UÔöX.‘\ó X.ó ñX.÷vð ñ �UÔöt ‰\ó t ó ñt ÷n"ð "ñ �UÔöW ‘ó W ó ñW öt
*‘nõ *öZ�6õ ð ö#=‘ló #=ó ñ#=ðL ö™ló ó ñð( ö‘\ó ó ñð ö™ó ó ñö"^™õ ^öB/Ñ)õ /ö>/Ñ(õ /ö>PÑ#õ P÷lð ÷ ð ÷ Tò TøðYv ô Ø€NØƒJðús   Èr8 ò8sós