L i$hddlmZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZmZmZmZmZmZmZmZmZmZdd lmZerdd lmZdd Zdd Zdd ZddZddZ ddZ! d dZ" d!dZ#d"dZ$d#dZ%d$dZ&d%dZ'd$dZ(edGddZ)d&dZ*y)') annotationsN) dataclass) TYPE_CHECKING) translate)DispatcherSignature)method_with_native_function) ArgumentBaseTyBaseTypeFunctionSchemaListTypeNativeFunction OptionalTypeReturn SchemaKindType)mapMaybe)Sequencec`t|txr|jtjk(SN) isinstancer namer Tensortyps `/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/torchgen/gen_vmap_plumbing.py is_tensorrs! c8 $ BV]])BBcPt|txrt|jSr)rrrelemrs ris_optional_tensorr!!s c< ( @Ysxx-@@rcPt|txrt|jSr)rr rr rs ris_tensor_listr#%s c8 $ <388)< z#_value; std::optional z_bdim; if (z) { std::tie(r%z_bdim) = unwrapTensorAtLevel(z .value(), z); }r(r)r-s runwrap_optional_tensorr2/sh&! 6" xv%B4& S`Rab  F ??6 " ( ( ..rc |Dcgc]}|j}}|Dcgc]}|j}}t||Dcgc]\}}t|s|}}}t||Dcgc]\}}t |s|}}}g} |D]} | t | |z } |D]} | t | |z } dj| } g} |D])}||vs||vr| |d|dgz } | j|+| | fScc}wcc}wcc}}wcc}}w)Nr(_value_bdim) rtypeziprr!r0r2joinappend)flat_argumentsr.a arg_names arg_typesrrtensorsoptional_tensorsunwrapstensor opt_tensor unwrap_codeunwrapped_arg_listargs r gen_unwrapsrF9sJ"00A0I0!/0A0I0%(I%>Q T)C.tQGQ!)Y7d;Mc;RG8=778'E )*mDDE))G$K+ '>S$44 cU&>cU%="A A   % %c * + * **-10Qs"C:C?DD,D D cg}|jj}|D]?}|jjs|j d|j d|dAt j|}djdt|j|jD}ddj|d|jj jd|d S) Nz!isBatchedAtLevel(r&)c34K|]}|jywr)expr).0es r z4gen_case_where_all_bdims_are_none..`s  szif (z && z) { return at::_ops::z::call(); }) argumentsflat_allr6is_tensor_liker9rr from_schemar8rfuncunambiguous_name) outer_sigschemar. conditions flat_argsrEsigtranslated_argss r!gen_case_where_all_bdims_are_noner[UsJ  ))IMxx&&( .sxxj=/KLM  ) )& 1Cii !)"5"5"7I O [[HHMM2245W_(z ), std::get<z), rHzmakeBatchedVector(std::get.sJ1qvv$$&J$&)anyrOrP)rVs r!accepts_at_least_one_tensor_inputrls J0@0@0I0IJ JJrcN|jduxr|jjSr) annotationis_write)arguments ris_mutated_argrqs$   d * Kx/B/B/K/KKrc \|j}tj|}|j}|j t j k(sJt|jjdsyt|jjDcgc]}t|s|c}dk(syt|dk(rytd|Dsyt|syd}t|jj|\}}t|||}d|j|j j#dzd|d t%j&|d d t%j&|d d d j)|d|jjdj d Scc}w)Nrr]c3tK|]0}t|jxst|j2ywr)rr6r#rKres rrMz,gen_vmap_inplace_plumbing..s*R3y">nSXX&>>Rs68 cur_level:template _generated_plumbingrz { c10::impl::ExcludeDispatchKeyGuard guard(DispatchKey::FuncTorchBatched); auto maybe_layer = maybeCurrentDynamicLayer(); vmap_check_escaped(maybe_layer, "gen_vmap_inplace_plumbing"); int64_t  = maybe_layer->layerId();  r( batch_rule(r&z ); return z; })rSrrRrakindrinplacerqrOrPr`allrlrFr[declrrTr*indentr8) native_functionrVrYrarEr.r@rDbdims_all_none_cases rgen_vmap_inplace_plumbingrs  ! !F  ) )& 1CnnG ;;=J.. .. . &**33A6 7 v//88PN3.>.G.G"WG ;CWv{{++-0EEFGH  / $d+,- $ !ii*+ ,-    # #A & + + ,-  !Qs F)"F)c |j}tj|}d}t|jj |\}}t |||}d|j|jjdzd|dtj|ddtj|dd d j|d S) Nrurvrwrxz { c10::impl::ExcludeDispatchKeyGuard guard(DispatchKey::FuncTorchBatched); auto maybe_layer = maybeCurrentDynamicLayer(); vmap_check_escaped(maybe_layer, "gen_vmap_plumbing_no_returns"); int64_t ryrzr(r{r&rN) rSrrRrFrOrPr[rrrTr*rr8)rrVrYr.r@rDrs rgen_vmap_plumbing_no_returnsrs  ! !F  ) )& 1CM"-f.>.>.G.G"WG ;CWv{{++-0EEFGH  / $d+,- $ !ii*+ ,-  rc<|j}tj|}|j}t |syt |dk(r t |Sddg}td|Ds|jj|vryd|jvry|jtjk(r t|S|jtjk7ryd}d}t!|j"j$|\}}t'|||} t)|||} d|j+|jjd z d |d t-j.| d dt-j.|d d|ddj1|d| dS)Nr#_scaled_dot_product_flash_attention#_scaled_dot_product_cudnn_attentionc3PK|]}|jj ywrrirts rrMz$gen_vmap_plumbing..s=c'')=rj inplace_viewresultsrurvrwrxz { c10::impl::ExcludeDispatchKeyGuard guard(DispatchKey::FuncTorchBatched); auto maybe_layer = maybeCurrentDynamicLayer(); vmap_check_escaped(maybe_layer, "gen_vmap_plumbing"); int64_t ryrzr(z auto z = batch_rule(r&z); z })rSrrRrarlr`rr~rrTtagsr|rr}r functionalrFrOrPr[rfrr*rr8) rrVrYrareturn_symint_overridesrbr.r@rDrrds rgen_vmap_plumbingrs  ! !F  ) )& 1CnnG -V 4 7|q+O<<-- =W= = KK ( ( *2I I--- {{} ***(99{{} ---KM"-f.>.>.G.G"WG ;CW!'=+FOv{{++-0EEFGH  / $d+,- $ !}N499-?#@"AB  rT)frozenceZdZeddZy)ComputeBatchRulePlumbingct|}|Sr)r)selffr/s r__call__z!ComputeBatchRulePlumbing.__call__s"1% rN)rrreturn str | None)__name__ __module__ __qualname__rrrrrrs !rrcfdjttt|}d|dS)Nr(z| #pragma once #include #include namespace at { namespace functorch { z }} // namespace at::functorch )r8listrr)native_functionsbodys rgen_all_vmap_plumbingrs< 99T(#;#=?OPQ RD  r)rrrbool)rstrr.rrz list[str])r:zSequence[Argument]r.rrztuple[str, list[str]])rUrrVr r.rrr)raztuple[Return, ...]r.rrbrrr)rVr rr)rpr rr)rrrr)rrrr)rzSequence[NativeFunction]rr)+ __future__rr* dataclassesrtypingrtorchgen.api.translatertorchgen.api.typesrtorchgen.contextrtorchgen.modelr r r r r rrrrrtorchgen.utilsrcollections.abcrrr!r#r0r2rFr[rfrlrqrrrrrrrrrs"! ,28   $(CA=/ /+&+7:++8",:KN( 03BE4KL)X*0f $ r