L iBUddlmZddlZddlZddlZddlZddlZddlmZm Z m Z ddl m Z m Z ddlmZddlmZmZmZmZmZddlmZddlZddlmcmZddlmcmZddlmcmZddl mcm!Z!ddl"m#Z#ddl$m%Z%dd l&m'Z'dd l(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/dd l0m1Z1m2Z2m3Z3m4Z4dd l5m6Z6m7Z7dd l8m9Z9m:Z:m;Z;mZ>ddl?m@Z@ddlAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[ddl\m]Z]m^Z^m_Z_m`Z`ddlambZbddlcmdZdmeZemfZfmgZgmhZhmiZimjZjddlkmlZlmmZmer ddlnmoZoddlmpZpedZqGddemZre dddgZsiatdeud<iavdeud< d_d Zw d` dad"Zxdbdcd#Zyejddd$Z{ ded!dd% dfd&Z|dgd'Z}dhd(Z~did)Z djd*Z dkd+Zdld,Z dmd-Z dnd.Z dod/Z dod0Ze d12Gd3d4Ze d12Gd5d6Ze d12Gd7d8Ze d12Gd9d:Ze d12Gd;d<Ze3dpd=Zdqd>Zdrd?Ze d12Gd@dAZdsdBZdtdCZdudDZdvdEZ dwdFZ dxdGZ dydHZe3dzdIZd{dJZe4 d|dKZ d}dLZ d~dMZ ddNZe#j:dO ddPZ ddQZe#j:dO ddRZ ddSZ ddTZ ddUZ ddVZ ddWZ ddXZ ddYZ ddZZ dd[Zdd\Zdd]Zed^k(reyy)) annotationsN) defaultdict namedtuple OrderedDict) dataclassfield)Path)AnyCallableLiteral TYPE_CHECKINGTypeVar) assert_never)cpp) translate)Binding CppSignatureCppSignatureGroupDispatcherSignature NamedCTypeNativeSignatureSpecialArgName)method_with_native_functionnative_function_managerwith_native_function with_native_function_and_indices)gen_aoti_c_shim_files*gen_static_dispatch_backend_call_signature) gen_functionalization_definition"gen_functionalization_registration.gen_functionalization_view_inverse_declaration,gen_functionalization_view_meta_classes_decl,gen_functionalization_view_meta_classes_implGenCompositeViewCopyKernelgen_all_vmap_plumbing)Argument BackendIndexBackendMetadataBaseOperatorNameDEFAULT_KERNEL_NAMESPACEdispatch_device_map DispatchKeyFRAGMENT_NAMESPACESFunctionSchemais_cuda_dispatch_keyis_generic_dispatch_keyis_ufunc_dispatch_keyis_xpu_dispatch_keyLocationNativeFunctionNativeFunctionsGroupNativeFunctionsViewGroup OperatorName OptionalType SchemaKind SelfArgumentSTRUCTURED_DISPATCH_KEYSTensorOptionsArgumentsTypeVariantViewSchemaKind)add_generated_native_functionsgen_composite_functional_kernelgen_composite_out_kernelpre_group_native_functions)SelectiveBuilder) concatMapcontext FileManagermake_file_managermapMaybeNamespaceHelperTarget) YamlDumper YamlLoader)Sequence)OptionalTc eZdZdfd ZxZS) LineLoadercbt|||}|jjdz|d<|S)N)deep__line__)superconstruct_mapping start_markline)selfnoderUmapping __class__s R/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/torchgen/gen.pyrYzLineLoader.construct_mappings5'+Dt+<"oo22Q6 )F)__name__ __module__ __qualname__rY __classcell__)r_s@r`rSrSs rarS ParsedYamlnative_functionsbackend_indiceszdict[str, ParsedYaml]_GLOBAL_PARSE_NATIVE_YAML_CACHEzdict[str, set[str]]_GLOBAL_PARSE_TAGS_YAML_CACHEcv|jtfdtjDd|}|S)Nc38K|]\}}|r|ywN).0checkdevice dispatch_keys r` z1file_manager_from_dispatch_key..s% !E6& s)getnextr,items)rr device_fms default_fmfms` r`file_manager_from_dispatch_keyr{sB   %8%>%>%@      B IraFc  t|tsJg}tt}|D]}t|ts Jd|t|j dt sJ|t ||d|j d Jd|t fd5tj|||\}} |j|tj|| dddt|td} |s t|||jD].\} } t| ddt!| xs t#| | | | <0t%|| S#1swYGxYw) Nzexpected to be dict: rWfunczmissed 'func' in cddSNzin z: rn)funcslocsr`z*parse_native_yaml_struct..ss3%uUG4rac>ttjdddiS)NTFrruse_out_as_primaryexternal device_guardindex)r(r- Undefinedrnrar`rz*parse_native_yaml_struct..s" $..# raTFr) isinstancelistrdictruintr4rGr5 from_yamlappendr( grow_indexerror_check_native_functionsrArwr0r3rf)es valid_tags ignore_keyspathskip_native_fns_genrsbser}mindiceskvrrs @@r`parse_native_yaml_structrsy b$  !BALTARB  +!T"?&;A3$??"!%% +S14141tQz]+f  9$5aS"99 4 5 +$..q#z;OGD! IIdO  # #B * + + +!$/:  0G &r2.  1!#-a0J4G4J      b' ""; + +s &AE%%E/ ct|tsJt}|D]}t|jdtsJ|t ||d|jdt fd5|j}|jd}|jdd}|dk7sJ|j|ddd|S#1swYxYw)NrWtagcddSrrn)rtagssr`rz(parse_tags_yaml_struct..ss3%uTF3radescrt) rrsetrurr4rGcopypopadd) rrrre_inamerrrs @@r`parse_tags_yaml_structrs b$  5B  !%% +S14141tQz]+uuU| 3 4 &&(C775>D7762&D2: : FF4L     I  s 9A CC c|tvrLt|5}tj|t}t ||t|<dddt|St|S#1swYt|SxYw)NLoader)r)rjopenyamlloadrSr)rfrs r`parse_tags_yamlrsq 00 $Z X11Z0B2HRV2W )$ / X ) .. ( ..  X ) ..s 0AA/)r loaded_yamlc|tvrVt|}|0t|5}tj|t }dddn|}t ||||t|<t|S#1swY)xYw)Nr)rr)rirrrrrSr)rtags_yaml_pathrrrrrrs r`parse_native_yamlrs 22$^4   d 5qYYq4 5 5B0H    3 1 '- +4 00 5 5s A((A1c i}tt}|D]M}|||jj<||jjjj |O|D]y}|j |j |j }|8J|jjd|j d|j d|js8J|jjd|j d|j dttj}hd}|jjjD]n}|j|vst|jj|jf|vs@td|jd|jjdd |jvsgt|jjd k7st|jjd k7st|jjjd k7s|jjj}|j sJ|jjd t#|j$d|j&} t)|| dkDr[J|jjd|dy)Nz0 is marked as a structured_delegate pointing to z, but z is missing.zY is not marked as structured. Consider adding 'structured=True' to the delegated operator>z random_.fromfromuniform_r!_has_compatible_shallow_copy_typerzArgument name 'z' in function 'z' is a reserved Python keyword. inplace_viewresize_ resize_as_set_z is marked with tag: inplace_view, but it doesn't follow the naming convention for inplace ops - the codegen expects the base name to have a trailing underscore. Frzw is marked with tag: inplace_view. The codegen expects there to be a corresponding out-of-place view op with the name 'z/' and matching schema, but it didn't find one. )rrr}rrstructured_delegateru structuredrkeywordkwlist argumentsflat_allstrAssertionErrorrinplacer*base dunder_methodlen) rfunc_map base_func_mapr delegate_funcPYTHON_RESERVED_KEYWORDSEXCLUSION_LISTarg base_nameout_of_place_base_names r`rrs35HBMdBSM 2 !affkk&&'..q123 ,$LL)>)>?M , 66;;-O(()0E0E/FlT ,!++ 66;;-O(()0E0E/FGNO +$'w~~#6   66##,, Cxx33 $chh/~E()#((?166;;-Ono  aff $AFFKK I-AFFKK L0AFFKK$$%/ ((I$$ 66;;- qq $&6y'>'>& "}%;<=A 66;;- 77@kApr Aa3rac.|jdd}|jdd}|jdd}|jdd}|jd d }|jd d }|jd d}|jdd}d|dS)z1Convert a python string into a c++ string literal\z\\"z\"z\az\b z\f z\n z\v z\t)replacess r` cpp_stringrSs $A #uA $A $A $A $A $A $A qc8Oract|dk(rgS|Dcgc]}|jc}tjtjtj tj gzScc}w)Nr)rrrr-CompositeImplicitAutograd%CompositeImplicitAutogradNestedTensorCompositeExplicitAutograd&CompositeExplicitAutogradNonFunctional)backendsbackends r`static_dispatch_keysrms^ 8} 4<=$$=  1 1  = =  1 1  > > A   =sA*c6|j|j|r |jS|jrtj S|j rtjS|jrtjS|jrtjSyrm) r has_kernelrr&has_composite_explicit_autograd_kernelr-r5has_composite_explicit_autograd_non_functional_kernelr&has_composite_implicit_autograd_kernelr4has_composite_implicit_autograd_nested_tensor_kernelr)r backend_indexs r`get_static_dispatch_backendrys (M,D,DQ,G ))) 1 1444 @ @AAA 1 1444 ? ?@@@ rac| |jryg}|D]A}t||}||jd|jd|j dCdj |S)N#include r)manual_kernel_registrationrr root_namelowerjoin)rroutputrrrs r`static_dispatch_ops_headerrsx < < F21e<  # MM%akk]!L4F4F4H3IV  99V racFt|Dcgc]}d|d c}Scc}w)N#include )r)rrrs r`static_dispatch_extra_headersrs21:   ,|4  s c&dd}t|j}t|j}|D]3}|jjtj k(s+||}nt ||}djd|DS)Nc.g}|D]}|jdk(rktttj|j j |j|j|j}|j|}|j||S)N memory_format)nctyperdefaultargument) rrrr possibly_redundant_memory_formatrtyperrr)input_bindingsoutput_bindingsbindingspl_mem_format_bindings r`add_spl_memory_format_bindingz5translate_args..add_spl_memory_format_bindings)+% 0G||.)0%&GG++!#OO$--*& &&'=>&&w/ 0ra, c34K|]}|jywrmexprroas r`rsz!translate_args..s+QVV+)r  list[Binding]returnr)rrrrrrrr)sigcpp_sigr  src_bindings goal_bindingsrexprss r`translate_argsrs $ (L**,-M ::??nMM M8FL  lM 2E 99+U+ ++rac &t||}|j}t||}|j|}|r|jr |jnt }|j dd}d|d|jjd|d|d S)N::nativertreturn ::();) rrr get_kernel cpp_namespacer+rrrr) rrrrrrbackend_metadata kernel_nsnss r`%generate_static_dispatch_backend_callr(s 9a@G <<>D 3 (E$//2  0 > > && %   :r *B RD=55;;=>bawb QQrac Ptj|dd}|jr'|jj r |j }n |j }|J|j}t||}tjdd}|jr+d|dtjjd|d|d S|jr+d|dtj jd|d|d S|j"r+d|dtj$jd|d|d S|j&r+d|dtj(jd|d|d Sd |d d j+|Dcgc]}t-|j.c}d Scc}w) NFmethodfallback_bindingrrtrr r!r"z5TORCH_CHECK(false, "Static dispatch does not support z forrz ");)rfrom_native_functionsymintr} has_symintsymint_signature signaturerrr+rrr-rrrrrrrrrrrr) rrrhcpp_sigsrrrr'rs r`&generate_static_dispatch_fallback_callr3s !55 %%H zzaff'')++$$    <<>D 3 (E ! ) )*b 9B//B{DDJJLMRPTvUVW\V]]_`` @ @B{QQWWYZZ\]a\bbcdicjjlmm 1 1B{DDJJLMRPTvUVW\V]]_`` ? ?B{PPVVXYY[\`[aabchbiikllHO AC"" # ABC4K K As=F#c ht|dk(s |jry|Dcgc]3}|j|s|j|jt vr|5}}t|dk(rt |||dSt|dk(r t|||S|jDcgc]f}t|jts>t|jtr0|jjjr |jh}}dj!|}|j"jj$}g} g} || j'd|dk7r| j'd|d| j'dd j!| d | j'd g} |D]A} | j'd | jd | j'dt ||| d Ct|||} d}d|j!| d|j!| d| dScc}wcc}w)a  For a given `NativeFunction`, find out the corresponding backend and dispatch to it. If more than one backends exist, fallback to static dispatch by determining dispatch key from inputs. Arguments: sig: A CppSignature or DispatcherSignature for this native function we want to use. f: NativeFunction to generate static dispatch. backend_indices: All available backends. Return: C++ code to call backend-specific functions, e.g., "return at::cpu::add(self, other, scale);" rrtrVrz>DispatchKeySet(c10::computeDispatchKey(dtype, layout, device))z$c10::detail::multi_dispatch_key_set()zDispatchKeySet _dk_set = z | ;z=DispatchKey _dk = c10::highestPriorityBackendTypeId(_dk_set);zcase DispatchKey:::rz  z switch (_dk) { z default: z } )rrrrrrr<r(r3rrrr;r'ris_tensor_likerrr}tensor_optionsr)rrrhbkeysrnative_tensor_args tensor_args tensor_optsstmtssubexprs dispatch_coderfallback connectors r`static_dispatchrEs> ?q A$@$@!  <<? ! ! -"::  D  4yA~4S!T!WEE Ta5c1oNN ajj, / ajj( + JJOO * * , ))./K&&""11K EH L b>{m1MN LL.uzz(/C.DAHI LLPQM !3E4F4F3GqKL8aGH L  6c1oNHI^^E  &'( J  [ s 8H*%A+H/T)frozencFeZdZUded<eeZded<eddZy) RegisterSchemarEselector)default_factoryzdict[str, int] known_tagsc|jj|syddjdt|jDzdz}|dk(r"dt t |jdSd}||jvr-t|j}||j|<d |d |d }|dt t |jd |j|d S)N{rc3&K|] }d| yw)z at::Tag::Nrn)rors r`rsz*RegisterSchema.__call__..NsKS3%0Ks}z{}zm.def(z, {}); rtz const std::vector tags_z = ; z, tags_z); ) rIis_native_function_selectedrsortedrrrr}rKr)r\rr maybe_tagsidxs r`__call__zRegisterSchema.__call__Js}}88;TYYKF166NKKKcQ 4<Js166{34J? ? t &doo&C$'DOOD !;C5D6MJVJs166{$;#djdg|jDcgc]}|jc}z}d }n9dj|jDcgc]}|jc}}d}|} |d|} d|d| d|d} |s0t!|j"dkDrt%|||j"} |d |jd|j| | d| d z }|St'|j ycc}wcc}w)!Nz struct TORCH_API z { using schema = z; using ptr_schema = schema*; // See Note [static constexpr char* members for windows NVCC] static constexpr const char* name = "aten::z3"; static constexpr const char* overload_name = "z/"; static constexpr const char* schema_str = z ; static callF)ris_redispatching_fn redispatchTz; }; // aten::z. static C10_NOINLINE c10::TypedOperatorHandle create_zQ_typed_handle() { return c10::Dispatcher::singleton() .findSchemaOrThrow(z::name, z::overload_name) .typed(); } )FTrdispatchKeySetr z static auto op = create_z_typed_handle(); return op.r!r"r)rhr { z } )r from_schemar}runambiguous_namer\rL DECLARATIONr overload_namerrdefn DEFINITIONrrrr^rEr) r\rrrdefnsrardispatcher_exprs_str method_basedispatcher_call method_namefn_bodys r`rUzComputeOperators.__call__cs!--aff5vv{{++- ;;&,, ,0((*./0ffkk.>.>-?@1121J1J0KL--7AFF -D,EF ((E( : ;< (( $( ? @A  [[F-- - &&..2V3DTFKxv.V E(5 #&+/99)*cmmo-Naff-NN,(#/K+/99cmmo5Vaff5V+W("(K"-!%b 6 !F#q!5 6b< ,D@@AAE.Q0T0TG &&{0CDEF I3 >L  %=.O6Ws "I I Nrr5rrrbrcrdrXrrUrnrar`rZrZ^s" ::%77 R&!R&rarZceZdZeddZy)ComputeFunctionc tj|d|j}|jj }d}|j D]3}t j|j}t|j|j}dj|Dcgc]}|jc}} |jrd} nd} tj|jvrL|d|jd|j!d |jj"j%d | d z }|s|d | d |j!dd |jj"j%d | d z }6|Scc}w)NFr*rtrz c10::SymIntint64_trc inline  { return at::_ops::::call(z); }zZ namespace symint { template >> T)suppress_symint_suffixz ); } } )rr-manual_cpp_bindingr}r/ signaturesrrfrrrrr.r?functionvariantsdeclrrg) r\r sig_groupr/resultr target_sigrr exprs_str intlike_ts r`rUzComputeFunction.__call__s%:: ea.B.B VV&&( '') C,88@Jcmmoz/C/C/EFE 5"9a166"9:Izz) % 1::- &&  |ffkk2245WYKHGGPkR8848()*ffkk2245WYKH 3 B ;#:s)F NrVrbrcrdrrUrnrar`rurus (!(raruc4eZdZUded<ded<eddZy)ComputeTensorMethodr[r\r]r^c tj|jvry|jj rJ|jj j Jtj|d|j}|jtjur/d}|jD]}||jdz }|S|jtjurt!|jd}|jD]}t#j$|j}t'|j |j d}dj)|Dcgc]}|j*c}}|d|jd|j-d d |jj.j1d |d z }|Scc}w)NTr*rtz const; )r+rrcrxzTensor::)prefixz const { return at::_ops::rz); } )r?r+rr} is_out_fnrself_argrr-r|r\rLrhr}rrkrrrfrrrrjrrg) r\rrrrrrrrs r`rUzComputeTensorMethod.__call__s >> +66##%%%vv((444%:: dQ-A-A  ;;&,, ,F ++- 3SXXZL 22 3M ;;f// /  %'') C,88@Jcmmoz/C/C/EdSE 5"9a166"9:I  &&  #$%ffkk2245WYKH F  #:s'G NrVrsrnrar`rrs ::%77 "!"rarceZdZeddZy)ComputeRedispatchFunctionc tj|d|j}d}|jD]}t j |j }t|j|j}djdg|Dcgc]}|jc}z}|d|j d|jd d |j jjd |d z }|Scc}w) NFr*rtrrdrcrxT)raryz ::redispatch(r)rr-r|r}rrfr}rrrrrrrg) r\rrrrrrrrs r`rUz"ComputeRedispatchFunction.__call__s&:: ea.B.B '') C,88@Jcmmoz/C/C/EFE #3"47N17N"NOI  && T*+,ffkk2245]9+N F  8OsC> NrVrrnrar`rrs !rarcd|jjjd|jjjdS)Nz{"aten::z", "z"},)r}rrirs r`compute_aten_opr8s5 qvv{{''(QVV[[-F-F,Gt LLracb|jsyt|j5tj|}tj |}dj d|D}|jj}|d}d}|jr|jjnd}|rJg|jj|j}|D cgc] }|D]} |  } }} | D cgc]} | jj} } dj d| D} d| d} | D cgc]#} tj| | j%}} d j d |D}g}t| D]*\}} dj | d|d gz| |d zdz}d |d}||jd}|d| jd|d}d| jd}d| |d|d}g}|j!|dt| D]V\}} ||k(r |j!d| jd+|j!d| jd| jdX|j!ddj |}|j!d|d |d!|d"-dj |}dj d gt#| z}d#|d$}d%}d&| d'|d|d(}nd)}d)}d*|d+|d,|d-|d-|d.|d/ cdddScc} }wcc} wcc} w#1swYyxYw)0Nrc3<K|]}|jywrm)rrs r`rsz4compute_meta_function_declaration..Ds4!QVVX4szat::impl::MetaBasevoidc3(K|] }d|d yw)zbool z = falseNrn)roparams r`rsz4compute_meta_function_declaration..Vs8,1%wh'8sz template <>)bindsrPc3^K|]%}|jdd|j'yw)T strip_ref N)cpp_typer)roelems r`rsz4compute_meta_function_declaration..as33==4=01499+>3s+-truerVzprecompute_outr6z return ret;rz z { z z' } z'using meta_return_ty = precompute_out ;meta_return_tyz zG struct TORCH_API precompute_out { z; };rtzstruct TORCH_API structured_z : public rer8z meta(z); }; )rroutmetarmeta_argumentsrstructured_inherits precomputedrvaluesrupper argument_type enumeraterrr)grargsargs_str parent_class meta_returnrprecomputed_values replace_listrprecomputed_elementsprecomputed_template_parametersprecomputed_template_params_strprecompute_template_decl#precomputed_elements_with_cpp_typesprecomputed_elements_declsetter_methodsireturn_ty_templates return_ty elem_cpp_tyr1 assert_msg assert_stmtconstruction_stmtsjconstruction_blocksetter_methods_declmeta_return_template_paramsmeta_return_typedefprecomputed_decls r`!compute_meta_function_declarationr>s( <<  'vyy|((+994t44uu00  /L +,<?'# ..A-B!D A!DMM"N  )ktyyk;-wO  ! =9 ./Nq/Q.RR]^h]iikl &(""))YKu*=>()=>GAtAv*11D 92MN*11"499+YtyykC #))-8%)YY/A%B"%%K $ &+,-W2 f#'))N"; +/))3>??+ ' %LLgKhhj"k *K$)*+()*./0   #% ! !F*\N;Mz" avv$/37vvs7B3L%L&L%-!L$L%2(L F1L%L%%L.ct|jjj}|jds|j dry|jj j y|j|S)N_likenew_F)rr}rendswith startswithrr:rQ)rrIrs r`needs_backend_selectrs^ qvv{{ D }}W!8vv&&.  / / 22rac4eZdZUded<ded<eddZy)ComputeBackendSelectz/Literal[Target.DEFINITION, Target.REGISTRATION]r\rErIc Jt||jsytj|j}t |jd}|j Dcgc]B}t|jtr&|jjjr|D}}tj|j}|}|j}d} |jt j"ur|rH|jj j%sJdj'd|D} d| d| d} n,|jj j%rJd | d } d |jd |j)|d | d|jjj+ddj'd|Dd S|jt j,urd|jjd|dSt/|jycc}w)NTr.z.c10::computeDispatchKey(dtype, layout, device)rc34K|]}|jywrmrrs r`rsz0ComputeBackendSelect.__call__..s'K1'Krz-DispatchKeySet _dk_set = c10::DispatchKeySet(z() | c10::detail::multi_dispatch_key_set(z); DispatchKeySet _dk_mask = c10::DispatchKeySet(DispatchKeySet::FULL_AFTER, DispatchKey::BackendSelect); DispatchKeySet _dk = c10::impl::computeDispatchKeySet(_dk_set, _dk_mask);z)DispatchKeySet _dk = c10::DispatchKeySet(r"z // aten::z C10_ALWAYS_INLINE z { z return at::_ops::z::redispatch( _dk, c34K|]}|jywrmrrs r`rsz0ComputeBackendSelect.__call__..s7aff7rrzm.impl("aten::z ", TORCH_FN(z));)rrInativerr}rrrrr'rr9rrfrr\rLrkhas_tensor_argrrjrg REGISTRATIONr) r\rr native_sigrr=dispatcher_sigrdispatcher_exprsrrr> compute_dks r`rUzComputeBackendSelect.__call__s#At}}5{{166"$QVVD9  ))+ !**h/AJJOO4R4R4T   -88@)//1G ;;&++ + "vv''66888"ii'K8J'KK "..:^;cdocpqJM 66++::<<<? ~RP &&$ ,FFKK00234 II7&67 7 89  [[F// /%affkk],tfCJ J  %U s AH NrVrsrnrar`rrs" ;; 2&!2&rarcdt_dd}tjt|t j |dtdS)Ncy)NTrn)r\datas r`rzformat_yaml.. srac@|j|jSrm)represent_dictrw)dumperrs r`dict_representerz%format_yaml..dict_representers$$TZZ\22raFgeA)default_flow_styleDumperwidth)rr rr rr )rMignore_aliasesadd_representerrrdump)rrs r` format_yamlr s9 7J3{,<= 99TeJc RRrac|dk(ry|dk(ry t|S#t$r" t|cYS#t$r|cYcYSwxYwwxYw)NrTfalseF)r ValueErrorfloatrs r`pythonify_defaultrsUF{ g1v  8O H s'  A 0A AAAAct|trt|jSt |dk(ryt j |dddjS)NTensorz at::TensorF__placeholder__)mutablerr.)rr9 dynamic_typerrrargumenttype_typer)ts r`rr6sP!\"AFF## 1v   5 1% hjracdg}tj|vr|jdtj|vr|jd|S)Nr>r namespace)r?r+rr~)r method_ofs r`compute_method_of_yamlrCsGI~~!"8#% raci}tj|}g}tt|jj |D]\}\}}t |j|tj|djd}|jrc|j|d<|jjr:|j||jjj|j<|j|||fS)NFr)rrr field_name)r return_namesrzipr}returnsrr return_typerrrrrr)rname_to_field_namenamesrrrrrets r`compute_returns_yamlrNsT*,   Q EG!#affnne"<= 9At(0OOAe4==?   66 !C vv!CD66"166#3#3#7#7#:#?#?@s & &&racTt|jtr:ddd|j|jdd}|j |j |d<|St|jt rtt|jtrt|j||||Sy)Nzat::TensorOptionsFT) annotationr is_nullablerr kwarg_onlyr schema_orderkwarg_only_set out_arg_setr) rrr=rrrr;rr'compute_argument_yaml)cpp_ar r r rrs r`compute_cpp_argument_yamlrs%.."89/ JJJJ "  == $"]]C N ENNL 1 ENNH -$ NN%)#1    .rac |jrt|jndt|j|jj |j t j|ddjd}|j8tt j|j|jd|d<|j |vrd|d<|j |vr*d|d <d|d <|j |vr||j |d <|jj}|3|j't|jd k7r|j|d <|S)NrF)rr.)rrrrrrrTrrallocaterboolsize)rrrrrrrrrrr default_expr is_list_likerr)rr r r rrls r`r r s+,-<dn |j>fd|fd|jjjj@fd|fd|jBfd|jDfddd |jFfgScc}wcc}wcc}wcc}wcc} }w)!NFr*r T)r+cpp_no_default_argsfaithfulr.has_tensor_optionsrz (rr5c3PK|]}t|jt ywrm)rrr=rs r`rsz+compute_declaration_yaml.. s MqJqzz#9 : Ms$&r operator_namerircategory_overridert schema_stringaten::rschema_order_cpp_signatureschema_order_argumentsr)moder python_modulerris_factory_methodabstractr)with_gilF) deprecatedFhas_math_kernel)$rr}rflat_kwarg_onlyrrrr-r1rrr!r rrrr returns_typerrranyr?r+rrrrirrrr#r is_abstractrr)rrrrr r rcpp_argsrrschema_order_jit_argumentsr!rcpp_schema_order_types cpp_returnsr r$s r`compute_declaration_yamlr1s2"6q"9G '(ff&6&6&F&FGaffGNG#$66#3#3#7#78a1668K8!66 %%I"",,.H   " )#1   I "&aff&C&C&E!F,    )#1    ,    #$       ""166>>%@IIKK$/=499=S3T2UUV!W MH MM - NN!** ,  SXXaff% & c!&&++"2"23 4 c!&&++";";< = )1+G+G H#'(':':'F##B qvvh/ 0 ) $ )+E F %'= > 0< =  AOO$;b Q   ((00 1 "3 4  ' Q^^ ,  !  H H I/  mH8   sL(L 3L%3L*;L/c|jxs|jduxrX|jjtj k(xs+|jjtj k(Srm)rrr}kindr: functionalrrs r`"has_autogenerated_composite_kernelr5/sU LL =A11=   ...U!&&++-:CUCU2Urac (tj|j}tj|jjj }tj |j}djd|D}d|jt|jDchc]\}}|j|s|c}}tjhk7xrV|jDchc]\}}|j|s|c}}tjtjhk7t|jxs t|d}|d|d|dt!j"|dScc}}wcc}}w) Nrc3XK|]"}|jj$ywrm) no_defaultrrs r`rsz4compute_registration_declarations..<s=1,,.=s(*r)schemadispatchrrr!z); // r) dispatcherrr}r*rrrrrrwrr-rrhas_composite_kernelr5jsondumps) rrhrr*rrrr comment_datas r`!compute_registration_declarationsr@5sP ??166 "D**166>>:CCEL    'Dyy===H166(#*002 F41aall1oQ F556 7 .446Jtq!!,,q/J55AA q--V1STU1VW $L~QtfAhZvdjj6N5OP  GJs4F F =F F c| |Jdd}| t|}|tj|dd}|S|tj|}|Stj}|S)NzhBoth provided_op_registration_allowlist and op_selection_yaml_path can NOT be provided at the same time.TF)rrE&from_legacy_op_registration_allow_listfrom_yaml_pathget_nop_selector)"provided_op_registration_allowlistop_selection_yaml_pathop_registration_allowlistrIs r`get_custom_build_selectorrHVs +6 " .   26)5$'(J$K! ,#JJ %    O +#223IJ O$446 Orac dd}tt}|D]}|jj}|j}|t j k(r,|jj}|||vsJ||||<h|||vsJ|d||j||||<tt||jS)Ncdg}tj|vr||jtj}|jtjd}|jtj d}|j t||||j|j|S)N)view view_copy view_inplace) r@aliasingraliasing_inplacer:r4rr7extendr)drrKrMrLs r`maybe_create_view_groupzEget_grouped_by_view_native_functions..maybe_create_view_groupxsBD  " "a '55001D55!@!@$GLj33T:I LL('!-   QXXZ  raz already in )rQz1dict[ViewSchemaKind | SchemaKind, NativeFunction]rz/list[NativeFunction | NativeFunctionsViewGroup]) rrr}view_signatureview_schema_kindr@ non_aliasingr3r<rrFr)rgrRgrouped_by_viewsrr9 view_kindr3s r`$get_grouped_by_view_native_functionsrXus < 8. D4&&($%$6$6 33 366;;=D/77 77-. V $T *$4V$<< +\*:6*B*G*G*I)JK <34 V $Y /4"  13C3J3J3LM NNrac  dd}t|}tt|t|jS)Nctj|}|;td|jDrJt |jS|gS)Nc38K|]}d|jvyw) generatedN)rrors r`rszJget_grouped_native_functions..flatten_pre_group..sEQ;!&&0Es)r6 from_dictr+rr)rQrs r`flatten_pre_groupz7get_grouped_native_functions..flatten_pre_groupsM ! * *1 - 9E!((*EE EE # #3Jra)rQz dict[SchemaKind, NativeFunction]r/Sequence[NativeFunction | NativeFunctionsGroup])rDrrFr)rgr_pre_grouped_native_functionss r`get_grouped_native_functionsrbsL  +  8 $>>N#O #T*F*M*M*O%PQ ra)native_function_decl_genctt}|D]}t}t}|jD]\}}|j |} | r/| j } |j ||j | nt} t|dks Jd|d||| j||||S)NrVz6Codegen only supports one namespace per operator, got z from ) rrrrwr#r$rr+rrP) grouped_native_functionsrhrcns_grouped_kernelsrnative_function_namespaces dispatch_keysrr backend_idxr%rs r`get_ns_grouped_kernelsrjs0;4/@ %%(U" )8)>)>)@  %L+*55a8 ,:: !!,/*..y94 12a7 HIcHddjkxjyz 7 y ) 0 0(K8  " rac 0g}d}|jD]~\}}t|dd}ttj|}|j d|j d|j|d|jdj||S)Nrrt namespace_str entity_name max_level ) rwrKrrfromkeysrPprologuerepiloguesplit)rf declarationsnewlinerkernels ns_helperordered_kernelss r`8get_native_function_declarations_from_ns_grouped_kernelsr{s!LG0668  7## {33G<= o     E'N   rac6t|||}t|S)a Generate kernel declarations, in `NativeFunction(s).h`. :param grouped_native_functions: a sequence of `NativeFunction` or `NativeFunctionGroup`. :param backend_indices: kernel collections grouped by dispatch key. :param native_function_decl_gen: callable to generate kernel declaration for each `NativeFunction`. :return: a list of string, from the string with all declarations, grouped by namespaces, split by newline. rerhrc)rf)rjr{)rerhrcrfs r` get_native_function_declarationsr~s+ 0!9'!9 D- rac>|j|}|rwd|jvsiJdt|tr|jj n|j jj d|jd|jd|r |jStS)NrzThe kernel for function z with dispatch key z has a namespace z% and it's not ending with '::native'.) r#r$rr5r}rr4rrr+)rrir%s r`get_kernel_namespacer s#--a0:1A1O1O#O "*Q2O166;;UVUaUaUfUfUkUk"lm(556 ,::;;` b O +;&&@Xrac  g} tttttt} d} tj|t j |||d} tj|t j|||d} tj|t j|||d}|D]}t||jddj| |j| |t|tr |jn|jj}|| vrtt| <| |j||D]t!dk(rt#d| D]/}| |s d|d d | j%| |d z 1| j|j'd fd j)| | S)Nrrocmr.class_method_nameskip_dispatcher_op_registrationrrirrtr)rnz TORCH_LIBRARY_IMPL(rz , m) { z }zRegisterDispatchDefinitions.inicpjjrdndjdS)Nrt) ns_prologue ns_epiloguedispatch_anonymous_definitions"static_init_dispatch_registrationsdeferred_dispatch_registrationsdispatch_namespacedispatch_namespaced_definitions)rsrtr)anonymous_definitionsrrkernel_namespacens_definitionsryregistration_bodyrsr`rz1get_native_function_definitions..jsL#,#5#5#,#5#56K(77;=*79*6*<*<*>7EFV7W ra)rrrdestRegisterDispatchKeyrLNAMESPACED_DEFINITIONANONYMOUS_DEFINITIONrrrrPrr5rr4rrKrsubstitute_with_templateru)rzrerrrirIrr.rgen_dispatch_helpers definitions registrationsrwns_gen anonymous_genreg_genrrrrrryrs ` ` @@@@@r`get_native_function_definitionsrs` K+6t+T>T  M*:; ;.9$.?M* +&' 299 AJ ! (+  ~./ 0A 5 #2BC &'78 I !129= &;b/ \\- 01)<=>?"      ' '1   eGn!  > rac Xg}tt}d}tj|tj ||dd|} |D]G} t | |jd|j} || j| | I|jD]\} } t| dk(rt| dd } ttj| }|jd| jd|j!|d| j"d j%||S) NrF)rrrr.rrrrtrmrq)rrrrrLNAMESPACED_DECLARATIONrrrrPrwrrKrrrrsrrtru)rerrrirIrr.rvrfrwr}rrrxryrzs r`get_namespaced_declarationrsM!L/:4/@G  # #%% (- D& (1+FNN l((*  9%,, G  1668   7 w<1  ##q {33G<= o     E'N     rac Vtt}|D] }||jj|"d}g}d}|j D]Y\}}tt t ||} |dk(r| },|}d} |tvrdnd} |d| d|d| j| d z }[||fS) NrtatenrTORCH_LIBRARY_FRAGMENT TORCH_LIBRARYrr!z , m) { z };) rrrrrwrJrHr.r) rgschema_selectorns_native_functionsnative_functionschema_registrationsaten_schema_registrationscustom_namespacerrschema_registrations_bodytabtorch_library_macros r`(get_native_function_schema_registrationsrs .s!,.04:.s6(*,0$**8K, -  raz Operators.hc hdgttttjdS)Nz!#include r)Operators_includesOperators_declarationsr)non_method_native_functionsrsr`rz(gen_aggregated_headers..s9#F"G&*$**8K0 '  ra Functions.hcZtdgtttdS)Nz#include )rFunctions_includesFunctions_declarations)rrrJrurgrsr`rz(gen_aggregated_headers..s7-J#.$A"A&*#%$'  ra)rerhzNativeFunctions.hcdgdS)Nz%#include )NativeFunctions_includesNativeFunctions_declarationsrn)rvsr`rz(gen_aggregated_headers..%s)P(Q,8 rarFunctions_inl.h>DispatchKeyFunctions.hc tdSN)rrinline_headersrrr inl_headerssr`rz(gen_aggregated_headers..3s$' $5&1raFunctions_inl.hDispatchKeyFunctions_inl.hc PgjtddS)NT)rerrrirIrr.)!DispatchKeyFunctions_inl_includesr dispatch_namespaced_declarations)rr)rhrrrerrIsr`rz(gen_aggregated_headers..;s89;*6*<*<*>8R1I%1$3L$A!)!# 9 ra)writer?r+rr~r{write_with_template)rgrerrrIrhcpu_fmrxfunctions_keysrhrfnrzrvrrrrrs`````` ` @@@@@r`gen_aggregated_headersrsS  LL &2;;)F&#3J)J# LL  LL  LL 4!9'L LL & +L*f M > )+L>9IJK  " ". ,(   " ".0,  " =#s!DD D$D$c btt|D] } | jj| "tt} |D]"} | j| j| $j D]\|j ddfd|j ddfd| j g}|D cgc] } t| tr| jr| "c} tdkDr|j dd fd t||tj |j d d fddD]\|jdfd!| D] |vr jgj D]\| j g}tt!tj"|t$j&|| ddd|tdk(rgj|j dddfdt)||}dd|j ddfd|j ddfd~ |jd fd!ycc} w)"Nz_ops.hz Operator.hc ddttttjiS)Nrvrr) functionsrsr`rz*gen_per_operator_headers..ks5(".....~s#=.A$rar_ops.h>)static_dispatch_ops_headersoperator_includesfunction_definitions)rrJru)rrrsr`rz*gen_per_operator_headers..{sK/3" 0(;4&%H(,')!)rarz_meta.hzNativeMetaFunction.hc:dtttiS)Nmeta_function_declarationsr)structured_functionssr`rz*gen_per_operator_headers..s"0$ =?S3rar}z _native.hzNativeFunction.hc$r dddSgdS)Nrz_meta.h>)extra_includesnative_function_declarationsrn)rv is_structuredrsr`rz*gen_per_operator_headers..s) _declarations)rRr<)rcategoryfunctions_by_root_namesuffixs r`rz*gen_per_operator_headers..sY*I& &'='B'B'D E)*$xs;)*M*B )s9TFrrz _dispatch.hzDispatchKeyFunction.hcdS)N)rrrn)rvrsr`rz*gen_per_operator_headers..s*<8Drarrrrc tdSrrrsr`rz*gen_per_operator_headers..s #L 1"-rarrc VtDcgc] }d|dd c}gdScc}w)Nrrr)rrr)rR)rdispatch_namesrs r`rz*gen_per_operator_headers..sE&8!'~ 66*$q1C0DLQ657 6s&rcJtdjDgdS)Nc3RK|]\}}td|Drd|d!yw)c3TK|] }tj|jv"ywrm)r?r+r)rors r`rszGgen_per_operator_headers.....sIw~~4Is&(rrN)r+)rorrs r`rsz=gen_per_operator_headers....s3/#D)IyII&dV73/s%'r)rRrw)rsr`rz*gen_per_operator_headers..s-(./'='C'C'E/) -/  ra)rrrrrwrrurr6rrr~r#compute_native_function_declarationrrrFrrLrr{)rgrerrIrhrrxops_fmrrhrrgrouped_functions_by_root_namegroupgrouped_functionsrzrrvrrrrrrrrrrrs ` @@@@@@@@@@@@r`gen_per_operator_headersr Ls+ ?J$>O8r||,33B78 D#*;&t,33E:;2779I i""fFO   ""fBK   ,;>>tRH( "23    01A5   & && & 8%6+%)%M%M ""fI    AI V &  jO   "&< ~ - )//15;;= OD) > B B4 L ,,' 555 !#*.8=&  L< A%  ! !$ '  & &&,-[9' + <,L*f M' ~5EF  nK ( $   nO , (   y<| LL  e s%J,c v|rt|||| | | | |  nt||||| | | |  |jdfd|jdfd|jdfd|jd fd dfd }|jd |dfd }|jd|y)N) rgrerrIrhrrxrrhrr) rgrerrrIrhrrxrhrrz TensorBody.hc ttttjttttj dS)N)r\r^)tensor_method_declarationstensor_method_definitions)rrJrrLrhrkrsr`rzgen_headers..?s^*.'%118K% +*.'%008K% * razRedispatchFunctions.hcBdtttiS)Nfunction_redispatch_definitions)rrJrrgsr`rzgen_headers..Ws# -t246FG0 razRegistrationDeclarations.hcFdDcgc]}t|c}iScc}w)Nregistration_declarations)r@)rrhrgs r`rzgen_headers..`s/ ')*2!_E* *szVmapGeneratedPlumbing.hctSrmr%rsr`rzgen_headers..is+@AQ+Rrac Pt}t}D]}|jt|jjj|j|jjjj |j d|jjD|hdz}djt|Dcgc]}d|d c}djt|Dcgc]}d|d c}dScc}wcc}w)Nc34K|]}|jywrmr)rors r`rszAgen_headers..gen_aten_interned_strings..usPcPr> orandnotxorbitorcomplor_eqand_eqbitandnot_eqxor_eqz \ z_(aten, r5z_(attr, ) aten_symbols attr_symbols) rrrr}rrupdater!rrR)attrsrr}rrgs r`gen_aten_interned_stringsz.gen_headers..gen_aten_interned_stringsls%$ QD IIc$))..--. / IIdiinn)).. / LLPTYY-M-M-OP P  Q   $LL06u >8D6#>$LL06u >8D6#>   >?s  D D# zaten_interned_strings.hc<ddjtiS)Nenum_of_valid_tagsz, )rrR)rsr` gen_tags_enumz"gen_headers..gen_tags_enums$uzz&2D'EGGraz enum_tag.h)rdict[str, str])r rr)rgrrerrrIrhcore_fmrrxrrhrrper_operator_headersr&r)s`` ` ` r` gen_headersr-s$ -%= 3+!')  -%=(C 3+!')  MM 0 LL  LL$  LL!#R" H MM+-FGH MM, .rac  "#$%&'()*+,-.d}rd}| D]$%t%| | '|r d?#%& fd }nd?% fd }%#tt}D]H}t|tr |j n|j j }||j|Jt%j&%tjk7)t%r|nddtj#||)rtj#ngd} d@#%')fd }'j!d%d d d |%tj"k(rd nd |dhD]((j$j&r t)%s%(j j*j,j,+%tj"ur>'| usJ'j/d+d d%(fd| j/d+d d(+fd%tj0ur%d$rd$'j/d+dd$%(+fdt3d%d''t5|||||dAfd }| j7d |}|rt9j:}t=|!\",| j7d"",fd# dBd$}| j?d%|fd&d'tAid(hd)*| j7d+tB|j7d,tB|j7d-fd. dCd/* dD*fd0 }ttz} tEd1D!cic]}!|!j*j,|!c}!-tEd2D!cic]}!|!j*j,|!c}!.| jG-.fd3D| j?d4| ||d hd56| j7d7fd8| j7d9fd:| j7d;*fd<| j7d=fd>ycc}!wcc}!w)ENz#include #include #include #include z#include #include #include #include c*g}D]}d}j|rd}net|tr%tfd|j Drd}n0|j r$t jt jfvrd}|s|jd|jdt jk(r|jd|jdvs|jd|jddtt|S) NFTc3@K|]}j|ywrm)r)rorrs r`rsz=gen_source_files..operator_headers..s#E9; 004Esr _native.h>rrr) rrr6r+rrr-MetarrrrRr)headersr is_registeredrrrrrres r`operator_headersz*gen_source_files..operator_headerss1"A$)M$//2(, $A';<E?@{{}EB)- ,#((#JJ;+)- ( NN%8 Z#PQ$&MMN )z#include rr)r-rr)r3rrrs r`r5z*gen_source_files..operator_headerssI>?;#U#UUNN#@A>1NN_\4DL#QRrart)extra_cuda_headersexternal_backend_headersdispatch_headers ops_headersdispatch_helpersc 2dt|gd iS)Ndispatch_definitionsT) rzrerrrirIrr.rr)r)gnfrrrrzrrrIrs r`"register_dispatch_key_env_callablez.register_dispatch_key_env_callable s7'(G.1U!- -%4S)= )  raRegisterz.cppzRegisterDispatchKey.cppc|jSrmr)xs r`rz"gen_source_files..* s Q[[rarlrVr=)key_fn env_callable num_shardsbase_env sharded_keys UfuncCPU_z UfuncCPU.cppcvttjtjdS)N)meta_declarationnative_declarationnative_definitions)rrrcompute_ufunc_cpu)rhrrrsr`rz"gen_source_files..: s:,Ma,P.2.V.V|<//3.D.DQ.G raUfuncCPUKernel_zUfuncCPUKernel.cppc4tjdS)N)rrM)rcompute_ufunc_cpu_kernel)rrsr`rz"gen_source_files..E s $.2.K.KA.Nraz%#include z$#include UfuncCUDA_z.cuz UfuncCUDA.cuczttjtjdS)N)r cuda_headersrKrLrM)rrrcompute_ufunc_cuda)rhrTrrrrsr`rz"gen_source_files..Q s@ $(4,Ma,P.2.V.V|<//3.E.Ea.Hraz unrecognized z for ufunc)aoti_fm aoti_backendsrgrhrr7update_aoti_c_shimextend_aoti_c_shimc @Dcgc]}t|s|}}|Dcgc]}d|jdc}ttt t j |ttt t j|dScc}wcc}w)Nrr)r:!backend_select_method_definitions%backend_select_function_registrations)rrrrJrrLrkr)r relevant_fnsrgrIs r`gen_backend_selectz,gen_source_files..gen_backend_selectl s) -A"h-OB  GS@B%bll^7;26():):HE|2 6:()<). s).*,*.%'  &  rac|jSrmrB)rs r`key_funcz"gen_source_files..key_func s||raz Operators.cppcld|jdgttj|gdS)Nrrr)r5r)rrZrLrkrs r`rz"gen_source_files.. sE#6r||nC!H I %%4G! rar>rr5r)rDrErGrFrHz Functions.cppzTensorMethods.cppzATenOpList.cppc:dtttiS)Naten_ops)rrJrrsr`rz"gen_source_files.. s Xo7GHI racPt|tryd|jjdd|jjdg}|j7|d|jjdd|jjdgz }|St|t rd|j jdd|j jdd|jjdd|jjdg}|j7|d|jjdd|jjdgz }|j7|d|jjdd|jjdgz }|Sd|jdd|jdgS)Nrr1r) rr7rKrrLr6r4rrr)rr3s r`gen_op_headersz(gen_source_files..gen_op_headers s a1 2&aff&6&6%7zB%aff&6&6%7w?G{{&)!++*?*?)@ K)!++*?*?)@HN / 0%all&<&<%=ZH%all&<&<%=WE%aeeoo%6jA%aeeoo%6g> G yy$)!))*=*=)>jI)!))*=*=)>gFyy$)!))*=*=)>jI)!))*=*=)>gFN&akk]*=%akk]': rach|t|t|tjdS)N)r:func_definitionsfunc_registrations)rr r-r)rrhrgrIs r`functionalization_env_callablez8gen_source_files..functionalization_env_callable sD*!, @!#E E EF#  rac4t|jSrmrrrs r`rz"gen_source_files.. sT!++-%8rac4t|jSrmrmrns r`rz"gen_source_files.. sD4Grac3K|]6}|jjvr|jjvr|8ywrm)r}r)rorstructured_mapview_maps r`rsz#gen_source_files.. s8 66;;n ,H1L sr:rirjfunc_add_back_views_definitions!func_add_back_views_registrations)rDrErFrHzFunctionalInverses.hc8dttfdiS)Nview_inverse_declarationsct|Srm)r!rrIs r`rz4gen_source_files....$ sL !ra)rrJrI view_groupssr`rz"gen_source_files..! s& ' *  razViewMetaClasses.hc8dttfdiS)Nview_meta_declarationsct|Srm)r"rxs r`rz4gen_source_files....2 J8UVWrarrFrysr`rz"gen_source_files../ s" $dW' razViewMetaClasses.cppc`ttfdttdS)Nct|Srm)r#rxs r`rz4gen_source_files....> r~ra)view_meta_implementations op_headersr)rgrIrzsr`rz"gen_source_files..; s1)-W* yEF razCompositeViewCopyKernels.cppc Dcgc]I}djd|j |jgn|j|jgDKc}Dcgc];}djd|j|j|j fD=c}zt tttjt ttt ttdScc}wcc}w)Nrc3VK|]!}d|jd|jd#yw)r_ops.h> #include ...Z s:   *!++7*+,++j B s')c3vK|]1}|-d|jvrd|jd|jd3yw)Nr\rrr1)rrr]s r`rsz5gen_source_files....g sH}AFF)B *!++7**+++jBs79)r:#CompositeViewCopyKernel_Definitions(GeneratedCompositeFunctional_Definitions!GeneratedCompositeOut_Definitions) rrLrKrrr4rrJr$r-rrBrC)rrhrrzs r`rz"gen_source_files..X s%  %&KK$7affakk=R   *5   iiALLA  .48.''NN   49=3/9 26,/2Q.   s AC?AD)r list[str])r>%NativeFunction | NativeFunctionsGrouprdict[str, list[str]])rr)r@NativeFunction | NativeFunctionsGroup | NativeFunctionsViewGrouprr)rrrr)rrrr)$r{rrrr5rr4rrrr-rr0rgen_registration_headersgen_registration_helperswrite_sharded_with_templateCPUrufunc_inner_loopr2r}rrCUDArrrrErDr write_shardedrrrFrP)/rgrerrzrIrrhrVr+ cpu_vec_fmrrxrhrrforce_schema_registrationr,rrXrWrYr7r5ns_grouped_native_functionsgrouped_native_functionrregister_dispatch_key_base_envr?r^rrark all_groupsrrrrTrrrrzrrrgrrrqrrs/``````` `` ` @@@@@@@@@@@@@r`gen_source_filesrs0&  $ &b +L*f M & ,& ,T ( 5 &1$&7#'? S #5~F(11,77AA  ( 2 9 9:Q R  S!.446 KMM M  $L1#5(* $ = =3T!,-(--m<* &" 6  !  " &&|nD ) % $(;(KOO;q301 ' -+ OA55))1F|1T<<$$))..D{.V|#|&&vT*" ..%dV40(!1!11F #IL&& c*" %}\N*%MNNW+ OZ EbH#)'$?---  ( LL,.@AO *;;= 1)? ! LL   L     ,-J#.  '4 LL$' MM%t, MM % K% %N K  $ ()D- 8:UV:   Q:N !**G U4 Q4H!  '3   LL   LL   LL  : LL&. 1g:4s P>Qc0|jdfdy)NzDeclarations.yamlcRtDcgc] }t|c}Scc}wrm)rr1)rrgs r`rz'gen_declarations_yaml.. s! BRSQ5a8STSs$)r)rrgs `r`gen_declarations_yamlr s LLTracPttjjS)z If you're depending on torchgen out-of-tree, you can use the root to figure out the path to native_functions.yaml )r __file__parentresolvernrar`get_torchgen_rootr s > ( ( **ractjd}|jdddd|jdd d |jd d d|jdd d|jddddd|jdddd|jdd d|jdd d|jdd d |jd!d d"|jd#d$d%d&'|jd(d)d* |jd+d,d%d-'|jd.d/d%d0'|jd1d2d d3|jd4d5d d6|jd7td%gd8gd8d9:|jd;d d<|jd=d d>|j }t |j |j}tjj|jd?}tjj|jd@}dAdBl m }tjtj tj"tj$tj&tj(tj*tj,h}tjtj dh}t/}tj0tj2tj4h} |j6s |j8r1|j;| |j=tj0n)|j;| |D cgc] } | | vs|  c} |dd|j>s |j8r?|j=tj@|j=tj@nQ|j=tj@tj@|vr ||jCtj@=|jDsQ|j=tj,tj,|vr ||jCtj,=|jFr1|D cgc]&} tI| st| |jFvr| (}} tK|||} tL|} | jN| jP}} tS| }|Dcgc]}tU|tVs|}}tY| }|Dcgc]}tU|tZr|}}|j\dC}t_|jadDdDE|j\dF}t_|jadDdDE|jb}t_|jadDdDEte||G}te|H}te|H}te|H}te||G}te||G}dI|i}|j>rte|H|dJ<g}|jfrk|jfDcgc]}|tjh|}}|jfD]-}tjh|} | |vs|j=| /dK|jjvrtmdjidL| dM|dN|dO|dP|dQ|dR|dS|dT|dU|dV|dW|dX|dY|dZ|jnd[|jpd\|jrd]|jtd^|j8d_|d`|jvda|jjvr.ty| | ||||||||||||jn|jrbdc|jjvr t{| |d|j|rt_|j|j}!|!j}"|!j}#|def|dff|dgf|dhfg|jD$%cgc] \}$}%|%|$difc}%}$zD]7\}&}'|'|#z}(|!j|'|"zz })|&j|(t|)9yycc} wcc} wcc}wcc}wcc}wcc}%}$w)kNzGenerate ATen source files) descriptionz-sz --source-pathz!path to source directory for ATenz aten/src/ATen)helprz-oz--output-dependenciesz:output a list of dependencies into the given file and exit)rz --dry-run store_truez5run without writing any files (still updates outputs))actionrz--per-operator-headersz2generate separate headers per operator in ATen/opsz-dz --install-dirz --install_dirzoutput directoryzbuild/aten/src/ATenz--aoti-install-dirz--aoti_install_dirz%output directory for AOTInductor shimz(torch/csrc/inductor/aoti_torch/generatedz--rocmz=reinterpret CUDA as ROCm/HIP and adjust filepaths accordinglyz--mpsz'Generate MPS registration code when setz--xpuz'Generate XPU registration code when setz--mtiaz(Generate MTIA registration code when setz--op-registration-whitelistz--op_registration_whitelist*zfilter op registrations by the whitelist (if set); each item is `namespace`::`operator name` without overload name; e.g.: aten::empty aten::conv2d ...)nargsrz--op-selection-yaml-pathz--op_selection_yaml_pathaDProvide a path to the operator selection (for custom build) YAML that contains the information about the set of selected operators and their categories (training, ...). Each operator is either a full operator name with overload or just a bare operator name. The operator names also contain the namespace prefix (e.g. aten::)z--backend-whitelistz--backend_whitelistzRfilter dispatch backend by the whitelist (if set), e.g.: CPU CUDA QuantizedCPU ...z--static-dispatch-backendz--static_dispatch_backendz?generate static dispatch code for the specific backend (if set)z!--skip-dispatcher-op-registrationz!--skip_dispatcher_op_registrationz0Avoid registering operators into the dispatcher.z--force-schema-registrationz--force_schema_registrationz}force it to generate schema-only registrations for all ops, includingthose that are not listed on --op-registration-whitelistz --generate)r3sourcesdeclarations_yamlzGenerate only a subset of files)rrchoicesrrz--update-aoti-c-shimzUpdate AOTInductor C shim after adding an entry to inductor_fallback_ops in torchgen/aoti/fallback_ops.py. WARNING: Do not use this unless you are sure what you are doing!!!z--extend-aoti-c-shimaThis Flag indicates the generation of c shims for out-of-tree ATen ops,which is an extension to the In-tree ATen op c shims. This flag needs to be combined with---source-path=--aoti-install-dir=/extend default is torch/csrc/inductor/aoti_torch/generated/extendWARNING: Do not use this unless you are sure what you are doing!!!znative/native_functions.yamlznative/tags.yamlr)rhz/coreT)parentsexist_okz/ops)options install_dir)rcudaxpurrgrerrzrIrrhrVr+rrrxrhrrrr,rrXrWrYr3)rgrrerrrIrhr+rrxrrhrrr,r)rgrrtcpu_vec_core_ops_rrn)EargparseArgumentParser add_argumentr parse_argsrHop_registration_whitelistrFosrr source_pathtorchgen.modelrhr-rrrrrrr2MTIArMPS SparseMPS SparseCsrMPSmpsrXr$rrXPUrmtiabackend_whitelistr1rrjrgrhrbrr6rXr7rr mkdiraoti_install_dirrIstatic_dispatch_backendparsegeneraterrrr,rrYr-routput_dependenciesrrstemrwr write_outputs)*parserrrInative_yaml_pathrrhrrWrMPS_KEYSr parsed_yamlrrgrhrerr!native_functions_with_view_groupsrzcore_install_dirops_install_dirrr+rrcuda_fmrrVrxrkeydp_key depfile_path depfile_name depfile_stemrq device_fmrzrvarnamers* r`mainr s5  $ $1M NF   0     I   D    A    %   4:    L   6   6   7 %%-  ""M *  ## N   ++ ?   %%C   ;; .  M  M !G())&&H ww||G$7$79WXWW\\'"5"57IJN, --99--:: N  M%K!6!6 8P8PQH{{g00h'+//*8$'4J!8IAJ a{{g00;??++//* ( ??m +m11+//BC << (()   } ,m11+2B2BCD  # &q)SVw7P7P-P   $$4nkRK.~>J$$##& < 5.0&&66  K--c2 3  22 +C &&s+F^+""6* + G$$$ - %= )D $    !4  ,   "  " ( *  '.&G&G! "")!=!=# $-4,S,S% & '99' (() * '99+ 0G$$$-!%=(C 3+!')!(!=!= $g.../?O""G778@@B #(( #(( RL  $ g  V   AK@P@P@R S+<69iF81 & S T 1JB |+G&&&<*?@D   Wc$i 0 1 #GK$ # H D Ts0# a-a +a6a  a !aa.a__main__)rrr-rxdict[str, FileManager]ryrHrrH)NF) robjectrset[str]rset[DispatchKey] | Nonerrrrrrf)r)rrrrrr)rrrrrm) rrrrrrrrrz object | Nonerrf)rSequence[NativeFunction]rNone)rrrr)rr]rzlist[DispatchKey])rr5rr(rzDispatchKey | None)rr5rr]rrW)rr]rr)r"CppSignature | DispatcherSignaturerrrr)rrrr5rr(rr)rrrr5rhr]rrrr)rr6rrW)rr5rIrErr)rrrr)rrrr)rr>rr)rz set[Variant]rr)rr5rz+tuple[list[dict[str, str]], dict[str, str]]) rrr rr rr rrr*rr) rr'r rr rr rrr*rr)rr5rr)rr5rr)rr5rhdict[DispatchKey, BackendIndex]rr)rEzlist[str] | NonerFrWrrE)rgrrz3Sequence[NativeFunction | NativeFunctionsViewGroup])rgrrr`)rer`rhrrcJCallable[[NativeFunctionsGroup | NativeFunction, BackendIndex], list[str]]rr)rfrrr)rer`rhrrcrrr)rrrir(rr)rzrHrer`rrr-rir(rIrErrr.rrrrrrr)rer`rrr-rir(rIrErrr.rrr)rgrrrErztuple[list[str], str])rgrrer`rSequence[NativeFunctionsGroup]rr]rIrErhrrrHrxrrset[DispatchKey]rhSequence[DispatchKey]rrrr)rgrrer`rr]rIrErhrrrHrxrrrHrrrhrrrrr) rgrrrrer`rrrr]rIrErhrr+rHrrHrxrrrHrhrrrrrr,rrr),rgrrer`rrrzz"Sequence[NativeFunctionsViewGroup]rIrErr]rhrrVrHr+rHrrHrrHrxrrhrrrrrrrr,rrrrXrrWzset[Optional[DispatchKey]]rYrrr)rrHrgrrr)rr )rr) __future__rr functoolsr=rr collectionsrrr dataclassesrrpathlibr typingr r r r rtyping_extensionsrrtorchgen.api.dispatcherapir;torchgen.api.metartorchgen.api.nativertorchgen.api.structuredr torchgen.destr torchgen.apirtorchgen.api.translatertorchgen.api.typesrrrrrrrtorchgen.contextrrrrtorchgen.gen_aoti_c_shimrr#torchgen.gen_functionalization_typerr r!r"r#r$torchgen.gen_vmap_plumbingr&rr'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@#torchgen.native_function_generationrArBrCrD!torchgen.selective_build.selectorrEtorchgen.utilsrFrGrHrIrJrKrLtorchgen.yaml_utilsrMrNcollections.abcrOrPrQrSrfrirXrjr{rrcacherrrrrrrrrr(r3rErHrZrurrrrrrrrrrrrr r1r5r@rHrXrbrrjr{r~rrrrrr r-rrrrrbrnrar`rs "  <<(AA* ,, $$,,, =8 ?7( CLB '9;L&M N :<!6;5727& ,,0 % -#-#-#)-#  -#  -#  -#`" //,01 !&!% 1 11)1  1  11@9x 4  &2(  &8    , + ,  ,  ,FR +RR R R$K +KK(K K:F +FF(F FX $```0 $W&W&W&x $***^ $'''Z $<MM yx3 $:&:&:&H S& 0 ?'?'0?'F       '    @!!! !  ! ' ! !HUUr "(G"@(8&>,O.,O8,O^.48 00 M5 :,@ 00 M5 4  / >J   __N_ _  _  _ _ _&*___H,M,, ,  ,  , ,,`!=.!=&!= !=Hv.vNv"@ v , v  v5v v'v%v)v v vr.N,    5  ' %)  DG/.G/G/N G/ "@ G/ , G/G/5G/G/ G/'G/ G/)G/%G/ G/ !G/" #G/To.oNo"@ o 4 o  o,o5oooo o'o)o%o !o" $#o$%o&&*'o()o*.+o,-o. /od +C +z1z  zFra