L i UddlmZddlZddlZddlZddlmZddlmZmZddl m Z m Z m Z ddl mZddlmZmZe rddlmZmZed Gd d ZGd deZdZdj1ZgdZdgeDcgc]}d|z c}zZddhZGddeZGddeZdgdZeD]4Z eD]-Z!e"ee e!zreZ#e$e#e%de e!de#6ejLejNejPejRejThZ+ejNejPhZ,ejPejZej\ej^ejNejLejRej`ejbejdejfejhejjejlejnejpejrejtejvejxejzej|ej~ejejejejejejejTgZFdhdZGdhdZHdhdZIdhd ZJdhd!ZKeHd"eId#iZLGd$d%eZMiZNd&eOd'<eeMjeMjeMjeMjeMjgeNd(<eeMjeMjgeNd)<eeMjeMjgeNd*<eNd(eNd)zeNd+<eNd+eNd*zeNd,<eNd)eNd*zeNd-<Gd.d/eZYGd0d1eZZGd2d3eZ[ed Gd4d5Z\Gd6d7eZ]ed Gd8d9Z^ed Gd:d;Z_ed Gd<d=Z`ed Gd>d?Zaed Gd@dAZbed GdBdCZced GdDdEZdGdFdGeZeed GdHdIedZfed GdJdKedZged GdLdMedZhed GdNdOedZied GdPdQZjed GdRdSZked GdTdUZled GdVdWZmed GdXdYZngdZZoed Gd[d\Zped Gd]d^Zq did_Zred Gd`daZsdjdbZtdkdcZudlddZved GdedfZwycc}w)m) annotationsN) dataclass)autoEnum)CallableOptional TYPE_CHECKING) assert_never)NamespaceHelper OrderedSet)IteratorSequenceT)frozenc*eZdZUded<ded<ddZy)Locationstrfileintlinec8|jd|jS)N:)rrselfs T/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/torchgen/model.py__str__zLocation.__str__1s))Adii[))Nreturnr)__name__ __module__ __qualname____annotations__rrrrr,s I I*rrc(eZdZeZeZy)VariantN)rr r!rfunctionmethodr#rrr%r%6svH VFrr%z at::nativezVCPU CUDA HIP XLA MTIA MPS IPU XPU HPU VE Lazy Meta PrivateUse1 PrivateUse2 PrivateUse3) QuantizedSparse SparseCsr NestedTensorAutogradAutogradNestedTensorr- quantizedquantized_decomposedceZdZdZeZeZeZeZeZ eZ eZ eZ eZ eZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZ eZ!eZ"eZ#eZ$eZ%eZ&eZ'eZ(eZ)eZ*eZ+eZ,eZ-eZ.eZ/eZ0eZ1eZ2eZ3eZ4eZ5eZ6eZ7eZ8eZ9eZ:eZ;eZ<eZ=eZ>eZ?eZ@eZAeZBeZCeZDeZEeZFeZGeZHeZIeZJeZKeZLeZMeZNeZOeZPeZQeZReZSeZTeZUeZVeZWeZXeZYeZZeZ[eZ\eZ]eZ^eZ_eZ`eZaeZbeZceZdeZeeZfeZgeZheZieZjeZkeZleZmeZneZoeZpeZqeZreZseZteZueZveZweZxeZyeZzeZ{eZ|eZ}eZ~eZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZddZddZeddZy) DispatchKeyrc|jSNnamers rrzDispatchKey.__str__ yyrc4t|jSr4)rlowerrs rr9zDispatchKey.lowers4y  rc|tjjD]\}}||k(s |cStd|)Nzunknown dispatch key )r2 __members__itemsAssertionErrorvaluekvs rparsezDispatchKey.parsesE++113 DAqEz 4UG<==rNr)r?rrr2)rr r! UndefinedCatchAllrFPGAMAIAVulkanMetalMKLDNNOpenGLOpenCLIDEEPCustomRNGKeyId MkldnnCPUr*r+r,DensePythonTLSSnapshot PreDispatchPythonDispatcherPythonFuncTorchDynamicLayerBackMode ZeroTensor ConjugateNegative BackendSelectNamed AutogradOtherAutogradFunctionalityr.TracerAutocast AutocastCPU AutocastCUDABatchedVmapModeFuncTorchGradWrapperFuncTorchBatchedBatchedNestedTensorFuncTorchVmapModeFuncTorchDynamicLayerFrontMode FunctionalizeTESTING_ONLY_GenericWrapperTESTING_ONLY_GenericModeADInplaceOrViewr-CompositeImplicitAutograd%CompositeImplicitAutogradNestedTensorCompositeExplicitAutograd&CompositeExplicitAutogradNonFunctionalFuncTorchBatchedDecompositionCPUCUDAHIPXLAMTIAMPSIPUXPUHPUVELazyMeta PrivateUse1 PrivateUse2 PrivateUse3 QuantizedCPU QuantizedCUDA QuantizedHIP QuantizedXLA QuantizedMTIA QuantizedMPS QuantizedIPU QuantizedXPU QuantizedHPU QuantizedVE QuantizedLazy QuantizedMetaQuantizedPrivateUse1QuantizedPrivateUse2QuantizedPrivateUse3 SparseCPU SparseCUDA SparseHIP SparseXLA SparseMTIA SparseMPS SparseIPU SparseXPU SparseHPUSparseVE SparseLazy SparseMetaSparsePrivateUse1SparsePrivateUse2SparsePrivateUse3 SparseCsrCPU SparseCsrCUDA SparseCsrHIP SparseCsrXLA SparseCsrMTIA SparseCsrMPS SparseCsrIPU SparseCsrXPU SparseCsrHPU SparseCsrVE SparseCsrLazy SparseCsrMetaSparseCsrPrivateUse1SparseCsrPrivateUse2SparseCsrPrivateUse3NestedTensorCPUNestedTensorCUDANestedTensorHIPNestedTensorXLANestedTensorMTIANestedTensorMPSNestedTensorIPUNestedTensorXPUNestedTensorHPUNestedTensorVENestedTensorLazyNestedTensorMetaNestedTensorPrivateUse1NestedTensorPrivateUse2NestedTensorPrivateUse3 AutogradCPU AutogradCUDA AutogradHIP AutogradXLA AutogradMTIA AutogradMPS AutogradIPU AutogradXPU AutogradHPU AutogradVE AutogradLazy AutogradMetaAutogradPrivateUse1AutogradPrivateUse2AutogradPrivateUse3rr9 staticmethodrBr#rrr2r2TsIH 6D 6D VF FE VF VF VF FEVNI VFI6L FE&Kv VF$(F!JIvHFM FEFM F6 VFvH&K6LfGvH6v&%)V"FM"&&#vfOvH $,0F) $-1V*$(F! &C 6D &C &C 6D &C &C &C &C B 6D 6D&K&K&K6LFM6L6LFM6L6L6L6L&KFMFM666IJIIJIIIIvHJJ6LFM6L6LFM6L6L6L6L&KFMFM666fOvfOfOvfOfOfOfOVNvv"f"f"f&K6L&K&K6L&K&K&K&KJ6L6L&&&!>>rr2c6eZdZeZeZeZy)_TorchDispatchModeKeyN)rr r!rFAKEPROXY FUNCTIONALr#rrrrs 6D FEJrrc|g}tD] |jfdtD"dj|S)Nc3.K|] }d|dyw)z z = auto()Nr#).0bcfks r z.codegen_per_backend_entries..sGb4tB4y)G )FUNCTIONALITY_KEYSextendBACKEND_COMPONENTSjoin)rrs @rcodegen_per_backend_entriesrs:A H G4FGGH 99Q<rzMissing zL from DispatchKey enum. Here is the autogenerated list we expect to have: c|tjtjtjtjhvSr4)r2rmrnrkrldks ris_generic_dispatch_keyr=s8 --::--99  rc|tjtjtjtjtj tj hvSr4)r2rqrrrrrrs ris_cuda_dispatch_keyrGsJ !!!!$$   rc|tjtjtjtjtj tj hvSr4)r2rwrrrrrrs ris_xpu_dispatch_keyrSsH     ##  rc|tvSr4)STRUCTURED_DISPATCH_KEYSrs ris_structured_dispatch_keyr`s ) ))rc|tvSr4)UFUNC_DISPATCH_KEYSrs ris_ufunc_dispatch_keyrds $ $$rcudaxpucFeZdZeZeZeZeZeZeZ eZ eZ eZ eZ eZeZeZeZeZeZeZeZddZeddZeddZed dZy) ScalarTypec|jSr4r5rs rrzScalarType.__str__r7rcbtjjD]\}}||k(s |cSyr4)rr;r<r>s r maybe_parsezScalarType.maybe_parses5**002 DAqEz rcHtj|}| Jd||S)Nzunknown dtype )rr)r?mb_rs rrBzScalarType.parses/%%e,9>%!99 rct}|jdD]G}|tvr|jt|$|j t j |I|S)N, )r split DTYPE_CLASSESupdateaddrrB)valuesdtypesr?s r parse_setzScalarType.parse_setsX)3\\$' 4E % mE23 :++E23  4  rNr)r?rrzScalarType | None)r?rrr)rrrOrderedSet[ScalarType])rr r!rByteCharShortIntLongHalfFloatDouble ComplexHalf ComplexFloat ComplexDoubleBoolBFloat16 Float8_e5m2Float8_e5m2fnuz Float8_e4m3fnFloat8_e4m3fnuzFloat8_e8m0fnurrrrBrr#rrrrms 6D 6D FE &C 6D 6D FE VF&K6LFM 6DvH&KfOFMfOVN  rrz!dict[str, OrderedSet[ScalarType]]rIntegralFloatingComplexAll AllAndComplexFloatingAndComplexceZdZeZeZeZeZeZeZ eZ ddZ e ddZ y)UfuncKeyc|jSr4r5rs rrzUfuncKey.__str__r7rc|tjjD]\}}||k(s |cStd|)Nzunknown ufunc key )rr;r<r=r>s rrBzUfuncKey.parsesE((..0 DAqEz 1%9::rNr)r?rrr)rr r!r CUDAFunctorCUDAFunctorOnOtherCUDAFunctorOnSelf CPUScalar CPUVector ScalarOnlyGenericrrrBr#rrrrsR&KIIJfG;;rrceZdZdZdZy)DeviceCheckTyperN)rr r!NoCheck ExactSamer#rrr#r#s GIrr#c6eZdZeZeZeZy)ViewSchemaKindN)rr r!raliasingaliasing_inplace non_aliasingr#rrr(r(svHv6Lrr(ceZdZUded<ded<ded<ded<ded <d ed <d ed <d ed<ded<ded<ded<ded<ded<ded<ded<d ed<ded<ded<ded<ded <ded!<ded"<ded#<ded$<e d. d/d&Zd0d'Zd0d(Zed1d)Z ed1d*Z ed2d+Z ed3d,Z ed1d-Z y%)4NativeFunctionr namespaceFunctionSchemafuncbool!use_const_ref_for_mutable_tensors device_guardr# device_check str | None python_modulecategory_overridez set[Variant]variantsmanual_kernel_registrationmanual_cpp_bindingrloczlist[OperatorName]autogenzdict[UfuncKey, UfuncInnerLoop]ufunc_inner_loop structuredzOperatorName | Nonestructured_delegatestructured_inheritszPrecompute | None precomputedset[str]cpp_no_default_args is_abstract&has_composite_implicit_autograd_kernel4has_composite_implicit_autograd_nested_tensor_kernel&has_composite_explicit_autograd_kernel5has_composite_explicit_autograd_non_functional_kerneltagsNc|j}|jd}t|ts Jd|t j |d}|j d}tj|j}|jdg} t| tsJt| } |jdd } t| tsJ| r|jjrJd |jd d } t| tsJt} | jd D]Y}|d k(r | j!t"j$(|dk(r | j!t"j&Mt)d||jdd }t|ts Jd||jdd }t|ts Jd||jdd}t|ts Jd||jdd}|t|ts Jd|||t*j,vs Jd||t*j.}n t*|}|jdd }t|ts Jd||jdd}|t|ts Jd|| d|vsJdd}|t0j|}|jdd}|t|ts Jd|| d|vsJd|jdd}|t|ts Jd||t"j&| vsJd|jd d}|t|ts Jd||jd!d}||dusJ|rt2j|nd}|jd"g}t|tr|g}t|tsJ|dk(rd#|vr|j5d#t}|D]5}t7|d$kDsJ||vr|j!|)t)d%|d$d&lm}|jd'd} | t| t<sJ|i}!d$}"| |rJd(d }#| j?D]\}$}|$d)k(r t|$ts Jd*|$d+| t|ts Jd,|d+| |$jd-D]}%t@j|%jC}&|"dz }"|r|&|vr2|&tDvsJd.|&d/|d0t j |d12}|j d3}'tG|j|xr tI|&|'d4z5|!|&<|&t@jJus||jM|k(sd}#"|"dk(r |#rJd6|s)|!jOt@jJhk7s|!t@jJjQs|"dk7sJd7|jM|d8|!t@jJd9|s|t|jLjL}(|(jSd:sA|(jUd;s0|jjVr%|jjYs Jd<|(d=tG|jM|d tZ>|!t@jJ<|!D)cgc]P})|)t@j\k(s9|)t@j^k(s&|)t@jJk(s|)t@j`k(r|)R}*})t7|*dks9t7|*d?k(r$t@j^|*vrt@j`|*vsJd@|jdAdB}+t|+tsJ|+dBk(rgn1|+jd D,cgc]},t0j|,c},}-|jdCi}.i}/t|.tr6tbj|.tdjf|/tdjf<nt|.t<r|.j?D]m\}%}0|%d)k(r t|%ts JdD|%t|0ts JdEtdj|%}1tbj|0|1|/|1<ont)dF|.|/rP|sJdGd$dl4m5cm6}2tnD]5}&|&|!vs JdH|&tG|2jq||&dtZ5|!|&<7|rd}3ny|!jOt@jJhk7xrU|!jOt@j`hk7xr1|!jOt@jJt@j`hk7}3t@jJ|!v}4t@j`|!v}5t@j\|!v}6t@j^|!v}7|!j?D%cic]\}%}|%|jL|i}8}%}|jd)d|r JdI||trD]}9|9|!vrJdJ|9dKtudSid|d| d | d|d|d|d!|dA|-dC|/d|d|d|d |d|d|dL|d| dM|3dN|4dO|5dP|6dQ|7d"|dR||8fScc})wcc},wcc}}%w)Tzp Parse a NativeFunction from a dictionary as directly parsed from native_functions.yaml r0z not a str: r$)namespaced_entity max_levelaten)defaultrCr2Fz4see https://github.com/pytorch/pytorch/issues/145522r8r&rr'zillegal variant r9z not a bool: r:r3Tr4Nzillegal device_check: r>r?::zbnamespace is not supported in structured delegate, using the same namespace as the native functionr@zbnamespace is not supported in structured inherits, using the same namespace as the native functionr6z&functions in modules cannot be methodsr7rArIpt2_compliant_tagrz illegal tag )cppdispatchzncannot specify both manual_kernel_registration and dispatch; with manual registration, dispatch has no effect!__line__zillegal dispatch key 'z' in zillegal dispatch value ',z Dispatch key z of kernel z! is not a supported dispatch key.)rLatz::native)kernelr> cpp_namespacezSunnecessary dispatch table for this function; just delete the dispatch key entirelyzQunexpected name for singleton CompositeImplicitAutograd dispatch entry: expected z but got zR. Rename your implementation to the expected name, then delete the dispatch tablenew__likez expected z to have a CompositeExplicitAutograd dispatch entry, but there was no dispatch table. Factory functions should not have implicit dispatch as they should not be decomposed for __torch_dispatch__)r>rXaHcannot specify more than one of CompositeExplicitAutograd, CompositeExplicitAutogradNonFunctional, or CompositeImplicitAutograd on a single kernel; each strictly subsumes the other. If you wanted to provide an explicit autograd implementation, specify CompositeExplicitAutograd; otherwise specify CompositeImplicitAutograd onlyr<r(r=z#ufunc_inner_loop key is not a str: z%ufunc_inner_loop value is not a str: z"ufunc_inner_loop not str or dict: zufunc must be structuredz2ufunc should not have explicit dispatch entry for zleftover entries: z+if structured_delegate, then must not have z* in dispatch dictionary (it is delegated!)r;rDrErFrGrHr.r#);copypop isinstancerr from_namespaced_entityget_cpp_namespacer/rB entity_namelistsetr1 argumentsoutrrr%r&r'r=r#r;r& OperatorName Precomputeappendlen torchgen.apirQdictr<r2strip dispatch_keysBackendMetadatarrkr6keyssupports_symint startswithendswithtensor_optionshas_tensor_argDEFAULT_KERNEL_NAMESPACErmrnrlUfuncInnerLooprr!torchgen.api.ufuncapiufuncrschema_kernel_namerr-):eir; valid_tags ignore_keysefuncsnamespace_helperr.r0cpp_no_default_args_listrCr2 variants_sr8rAr9r:r3device_check_sr4r>structured_delegate_sr?r@r6r7precomputed_dictrAtags_inprItrQ raw_dispatchrRnum_dispatch_keys%redundant_composite_implicit_autogradksr@ dispatch_keykernel_namespacer6dcomposites_in_dispatch autogen_strxr<raw_ufunc_inner_loopr=vo ufunc_keyryrDrErFrGrHbackend_metadatakeys: r from_yamlzNativeFunction.from_yaml^s  GGIf %%<UG'<<%*AA#q %66v6F ##$4$@$@A#$55)>#C 2D999!":;,-EE /- );TBBB ,~~)) F )UU:z2 *c***!$!!$' =AJ W--.h W^^,$'7s%;<<  =&'UU+G%O"4d; 56 7 ;UU#7?,d3X|DVCW5XX3uu^T2 ,-Ll^/LL-~t4%NC)H .) * H  "n8S8S&S 5 #N#3 4 5 S  !*44L*>:LUU</ *d+H|J<-HH+ !&;T B$, !31  1 ./ 0 1 %, >( J >;C..:JK$!QA 1~-KK j$.*1#..u  */ (*A#G))*    2S " &   %8   %8  (   "2 ,F $6 , #4 * *  ! "%8# $(% &8^' (Fz) *8^+ ,G|- ./ 0$1 4 7  k" >JNLs+Ak3k8 k=cP|jrJd|jsJdy)NzMThis function is structured, but there was no valid functional variant of it.zThis function delegates to another structured out function, but no valid function was found (the delegate may not exist, or it has the wrong type)r>r?rs rvalidate_unstructuredz$NativeFunction.validate_unstructureds;??  1 "''  e 'rc|jjjr%|jtj hk(sJd|j rE|jjtjk(sJd|jsJd|jrE|jjtjk7sJd|jsJd|j r|jrJd|jjDchc]}|j|j}}tj|j |}t#|dk(s Jd||j$|j sJdt'|jjj)d r$|j*t,j.k(sJd d t'|jjvsd t'|jjvs0t1d |jjj2DrLdt'|jjvr+t'|jjjdvs$|jjj5r3d|j6vs$Jt'|jjyycc}w)NzNative functions with out arguments MUST be declared with only function variant; e.g., variants: function; otherwise you will tickle a Python argument binding bug (which usually manifests itself as the result variable being undefined.)zYPut structured field on the out= variant of a function; did you mean structured_delegate?z:device_guard: False is not respected by structured kernelszQstructured_delegate field not allowed on out= functions; did you mean structured?z?Cannot have both structured and structured_delegate on functionrzInvalid cpp_no_default_args: z4structured_inherits must also imply structured: True_foreachzsforeach kernels fall back to slow path when tensor are on different devices, device_check not allowed to be enabledranddropoutc38K|]}d|jvyw)rNr5rargs rrz/NativeFunction.__post_init__..s25 SXX-sbackward)_cudnn_init_dropout_statenondeterministic_seeded)r0rdrer8r%r&r>kind SchemaKindr3r?schema_order_argumentsrNr6rc differencerCrir@rrqr4r#r%anyflat_allhas_generator_argrI)radefaulted_arguments invalid_argss r __post_init__zNativeFunction.__post_init__s 99   " "==W%5%5$66 [ 6 ??99>>#z~~5 K 5$$ L $  # #99>>#z~~5 > 5$$ L $ OO(@(@ M A!II<<> !))BWAFF  ~~d&>&>@ST < A%U)F|n'UU%  # # /?? F ? tyy~~  ) )* 5$$(?(?? 9 ? c$))..) )TYY^^!449=9L9L9U9U c$))..&99 ++,4QQyy""446, 9 N3tyy~~;N N97= s #L5Lc|jxs|jxs |jxs|jxr |jSr4)rErGrHrFrs rhas_composite_kernelz#NativeFunction.has_composite_kernel"sO  7 7 J:: JII  7 7 JII  rc|jj}t|dkDxrtd|D}d|jvxrFt |jj dk7xr"t |jj dk7}td|jjD}|xs|xs|S)Nrc3jK|]+}|jduxr|jj -ywr4 annotationis_writerrs rrz,NativeFunction.is_view_op..0s35 GHALL $ BQ\\-B-B)B B5 s13 inplace_viewresize_ resize_as_c3lK|],}|jduxrd|jjv.yw)N*)ralias_set_after)rinps rrz,NativeFunction.is_view_op..9s8  NN$ & P3#..2P2P+P P s24)r0returnsrirrIrr6r)rretsis_non_mutating_viewis_inplace_viewis_wildcard_views r is_view_opzNativeFunction.is_view_op-syy  "4y1} 5 LP5 2  dii ' 4DIINN#y0 4DIINN#|3   yy779  $JJ:JJrc|jrJ|jjjjr d|jvsJt j S|jrt jSt jS)Nr) rr0r6inplacerIr(r*r)r+rs rview_schema_kindzNativeFunction.view_schema_kind?s\ ??tyy~~22::!TYY. ..!22 2 ??!** *!.. .rcV|jjjjSr4)r0r6basers r root_namezNativeFunction.root_nameIsyy~~""'''rc:|jxs|jduSr4rrs rpart_of_structured_groupz'NativeFunction.part_of_structured_groupMsF$":":$"FFrr4) r{zdict[str, object]r;rr|rBr}zset[DispatchKey] | NonerzMtuple[NativeFunction, dict[DispatchKey, dict[OperatorName, BackendMetadata]]]rNonerr1)rr(r)rr r!r"rrrrpropertyrrrrrr#rrr-r-s} N (,+"!"! !%$  M 54-, $##""!-10:>>,00;?? N 04 o o o o - o W o o b  &=O~  KK"//((GGrr-cReZdZeZeZeZeZeZy)rN) rr r!r functionalrremutablescratchr#rrrrRs%JfG &CfGfGrrceZdZUded<ded<ded<ded<eddZddZdd Zdd Zedd Z e dd Z y )NativeFunctionsGroupr-rNativeFunction | Nonerrrec.|jjSr4)rer>rs rr>zNativeFunctionsGroup.structuredgsxx"""rc  |jjj}|jD]}||jjk7r)t d|d|jj|j |j k7sct d|jjjd|jj|jjjtjk(sJ|jjjtjk(sJ|jj|jjk(sJ|jf|jjjtjk(sJ|jj|jjk(sJ|j|jjjtjk(sJ|jj|jjk(sJ|jjjjjsJ|j r |jjs|jj rJ|jj"|jjjk(s_J|jjjd|jj"d|jjj|j9|jj"|jjjk(sJt%|jDcgc]0}d|j&vst)|jj2c}}dj+d |D}t-}|jD]$}|j/d |j0D&dj+d t%|D}t3|d k(r?t3|d kDr1t5d |d|dt)jj||k7rt5d |d|d|dycc}w)Nz_NativeFunctionsGroup constructed from two NativeFunctions that don't have matching signatures:  != zMNativeFunctionsGroup constructed from structured and unstructured functions:  and z delegates to z but its actual delegate is generatedrc32K|]}t|ywr4rrrs rrz5NativeFunctionsGroup.__post_init__..s%Dc!f%Dc32K|]}t|ywr4r)rops rrz5NativeFunctionsGroup.__post_init__..s)Fb#b')Frc32K|]}t|ywr4rrs rrz5NativeFunctionsGroup.__post_init__..s/ CF/ rrz,The codegen expects to be able to generate 'zv'. In order to generate them however, we expect them to be called out explicitly in the yaml. Please add an 'autogen: z' line to the entry for z*'. To do so, it expects a line: 'autogen: z'. Instead, it found 'autogen: ')rr0 signature functionsr=r>rrer6rrr.rrfunctional_overloadrErFr?sortedrIrrrcrr<ri RuntimeError)rtest_sigf generated_fnsgenerated_fns_strexpected_generated_fnsexpected_generated_fns_strs rrz"NativeFunctionsGroup.__post_init__ls&#'??#7#7#A#A#C! A166++--$<,>>>> << #<<$$))+z/A/AA AA<<))T__-F-FF FF << #<<$$))+z/A/AA AA<<))T__-F-FF FF??'',,11EE EE ??HHCCUU V??66$((--:L:LL ??'',,-^DOO<_<_;`a..2hhmm.@.@-AC L||'||77488==;M;MMMM'+~~'7 Q!;!&&;PS  Q !II%Dm%DD+.5! GA " ) ))FAII)F F G%)YY/ "#9:/ & " % &! +M0BQ0F>?P>QR,,=+>>VWZ[\[a[a[f[fWgVhj  &): :>?P>QR;;L:MN00J/K1N  ; Rs S!ScJ|jjjSr4)rer0rrs rrzNativeFunctionsGroup.signaturesxx}}&&((rc#K|j|j|j|j|j|jyywr4)rrerrrs rrzNativeFunctionsGroup.functionssFoohh << #,,  << #,,  $sAAc.|jjSr4)rrrs rrzNativeFunctionsGroup.root_names(((rcr|sJt|dk(ryt|}|jtjd}|jtj d}|jtj d}|jtjd}|rJ|J|yt||||S)Nr$)rrrre) rirkr]rrrrrer)rrrrres r from_dictzNativeFunctionsGroup.from_dictsq q6Q; GUU:00$7 %% **D1%% **D1eeJNND) u%%% ;#!   rNrrrr/)rIterator[NativeFunction]r)rz dict[SchemaKind, NativeFunction]rzNativeFunctionsGroup | None) rr r!r"rr>rrrrrrr#rrrr`sd "" ""  ##?B)))  rrc4eZdZUded<ded<ded<ddZy) rnrrWr1r>rXcd|jvS)N_symint)rWrs rrpzBackendMetadata.supports_symintsDKK''rNr)rr r!r"rpr#rrrnrns K (rrnc>eZdZUded<ded<ded<ed dZy) rvrr6rsupported_dtypesrrc|jdd\}}|ddk(sJ|ddk(sJt}|ddjdD]}|tj|z}t |||S) N r$r()r)r6rr)rr rrrv)r?rr6supported_dtypes_strrr@s rrBzUfuncInnerLoop.parses%*[[a%8""#A&#---#B'3...3=<%a+11$7 8A  4 4Q 7 7  8(8I  rN)r?rrrrrv)rr r!r"rrBr#rrrvrvs' I,,    rrvceZdZUded<ded<ded<ded<ded<e dd Zdd Zdd Z dd Zdd Z y) BackendIndexr2rr1use_out_as_primaryr3externalz#dict[OperatorName, BackendMetadata]indexc|jD]9\}}|jD]!\}}|||vs Jd|d|||||<#;y)Nzduplicate operator z for dispatch key )r<) parent_index child_indexr@rAop_namemetadatas r grow_indexzBackendIndex.grow_indexst  %%' 4DAq%&WWY 4!l1o5)'2DQCH5,4 Q(  4 4rcJ|jr |jS|jSr4)rrer)rgs rprimaryzBackendIndex.primary#s  " "55L<< rc,|j|}|duSr4) get_kernel)rrms r has_kernelzBackendIndex.has_kernel)s OOA }rct|tr|}n-t|tr|j|}n t |j j |jvry|j|j j Sr4)r^r-rrr r0r6r)rrrs rrzBackendIndex.get_kernel-s` a (A / 0 QA O 66;;djj (zz!&&++&&rcL|jrt|jdSy)NNativeFunctions)rrrrs rnative_function_class_namez'BackendIndex.native_function_class_name:s' ==$++,-_= = rN)r6dict[DispatchKey, dict[OperatorName, BackendMetadata]]r rrr)rrrr-)r%NativeFunction | NativeFunctionsGrouprr1)rrrzBackendMetadata | None)rr5) rr r!r"rr rrrrr#rrrrssN .. 4L 4K 4  4 4  '6 '  'rrceZdZUded<ded<ded<eddZddZejd Z e dd Z dd Z dd Z dd ZddZddZddZdddd d dZd!dZd"dZeddZddZd#dZy)$r/rfr6 Argumentsrdtuple[Return, ...]rc\ddtfd|jjDS)NcH|jy|jjSNFr)rs rrz+FunctionSchema.is_mutable..is_writes~~%>>** *rc3.K|] }|ywr4r#)rrrs rrz,FunctionSchema.is_mutable..s@18A;@r)rArgumentrr1)rrdr)rrs @r is_mutablezFunctionSchema.is_mutables% +@(?(?@@@rctj|jj|jj|jj Sr4) itertoolschainrdflat_positionalflat_kwarg_onlyrers rrz%FunctionSchema.schema_order_argumentss: NN * * NN * * NN    rz3(?P[^\(]+)\((?P.*)\) -> (?P.*)cRtjj|}t|dk(s Jd||d\}}}tj |}t j |}t|}t|||}t||k(sJt|d||S)Nr$zInvalid function schema: rr6rdrr) r/decl_refindallrirfrBr parse_returnsr) r0declsopsargs return_declr6rdrrs rrBzFunctionSchema.parses&&..t45zQB";D6 BB!&qT;!!#&OOD)  ,  7 K1v~4#a&dV44~rc:td|jDS)Nc3dK|](}|j|jjr|*ywr4rrs rrz5FunctionSchema.returns_are_aliased..s. ||'ALL,A,A  s.0)rrrs rreturns_are_aliasedz"FunctionSchema.returns_are_aliaseds  \\   rcJt|jj|jD]%\}|jjk(r Jd|jj D]3t fd|jDs"Jdt|t|jj|jjDcgc]}|jdk(s|c}z}|jDcgc]&}|j|jjr|(}}|jDcgc]&}|j|jjs|(}}t|dk(s!t|dk(sJdt||D]t fd|DrJd|jjrt d |jjDr t|jdk(sJd net|jjDcgc]}|jjd s|!c}t|jk(sJd |jjjr|jj}|r6|j jr |j jjsJ|j j"t%t&j(k(rJt|jd k(r0|jdj|j jk(sJt|jdk(sJ|jj*4|j-t.j0k(sJdt||j3r5|j-t.j0k(sJdt|yycc}wcc}wcc}wcc}w)NzsOut arguments must have matching return Tensor; furthermore, the ith-argument needs to correspond to the ith returnc3PK|]}j|jk(ywr4rrrrs rrz/FunctionSchema.__post_init__..sNA1<<1<<7N#&z^If you have a schema with mutable positional args, we expect them to not be returned. schema: rrzYNativeFunctions must have either only mutable returns, or only immutable returns. Found: c3PK|]}j|jk(ywr4r6)rrrets rrz/FunctionSchema.__post_init__..sPCs~~7Pr8zAll mutable returns must be aliased either to a keyword argument, or to "self". Did you forget to mark an out argument as keyword-only?c3hK|]*}|jttjk7,ywr4)typeBaseTypeBaseTyTensorrrs rrz/FunctionSchema.__post_init__..s"Q166Xfmm44Q02z3out= ops that accept tensor lists as out arguments _scratch_zMMust return as many arguments as there are out arguments, or no return at allr$zFound an operator that is not functional or out variant, but has tensor options arguments.This is not allowed- tensor options arguments are only allowed for factory functions.schema: zFound an operator that is not functional, but its overload contains the string 'functional'.This is a special keyword in the codegen, please use a different overload name.schema: )ziprdrerrpost_self_positional_mutablerrrbr&r6rrirqrself_argargumentr<r=r>r?rsrrris_functional_fn)rr out_and_selfr:mutable_returnsimmutable_returnsself_ars ` @rrzFunctionSchema.__post_init__sDNN.. = HC>>S^^3 I 3 << ANNN pqtuyqzp{| N DNN../>>993 SXX=OC3  || ~~)cnn.E.E   || ~~%S^^-D-D   ?#q(C0A,Ba,G ghklphqgr s G# CP<PP J P  >>   Qdnn>P>PQQ4<<(A-I-c$(>>#5#5"xx22;? & 'd' 99>> ! !^^,,FOO..OO..77 8##x '>> %* Q22foo6P6PPQ 4<<(A--- >> ( ( 499;*"7"77 t9+' 7  "99;*"7"77 t9+' 7 #W3   BsP,P+P>+P5$P c2d|jjvS)Nrr6 overload_namers rrGzFunctionSchema.is_functional_fnstyy6666rc@t|jjSr4)r1rdrers r is_out_fnzFunctionSchema.is_out_fns6DNN&&''rcHt|jj}t|jjDcgc] }|jj ds|"c}}|jjj }t d|jjD}|r|rJ|rtj S|r|sJdtjS|r|rJdtjS|rtjStjScc}w)a  What kind of schema is this? A functional schema is one that returns a newly allocated output; an inplace schema modifies the self argument inplace; an out schema writes the result into an explicitly provided out argument. rBc3hK|]*}|jduxr|jj,ywr4rr@s rrz&FunctionSchema.kind..:s3  LL $ >)>)> > rAzFinvariant: all scratch operators are expected to be out= operators toozjWe should not categorize a scratch op as an out variant. Check if the order of if statements are expected!) r1rdrer6rqrrpost_self_positionalrrrr)ris_outr is_scratch is_inplacer"s rrzFunctionSchema.kind.sdnn(() NN.. SS#((2E2Ek2RS S YY^^++  ^^88  z** %% %  X 6%% % ! | >>> ! %% %(( (= Ts DDcg}|jD]}|jjDcgc])}|j|j|jk(r|+}}t |dk(r|j dkt |dk(r|j |dj djd|D}td|j d|d|Scc}w)Nrr$rc34K|]}|jywr4r5r@s rrz6FunctionSchema.aliased_return_names..hs)GQ!&&)GszFound a return (z)that aliases multiple inputs (r) rrdrrrirhr6rr=)routsrr aliased_args aliased_namess raliased_return_namesz#FunctionSchema.aliased_return_names[s!# A00<<+  0LL < A% D!\"a' LO001 $ )G,)G G $&qvvh.Mm_\]^  s.CF) strip_defaultstrip_view_copy_namekeep_return_namesc dfd }jjj}|rG|jdr|jdd}n#|jdr|jdd}t fdt j jj!jjjgngjjjjD}t t|j}||z}jj|} tjd k(r.t j#t| jd d } t%t't)|d jjj* d| |S)a Certain schemas are 'related', in that they are simply inplace/out/functional versions of the same function. This method factors these schemas into the "core" functional signature which is equal across all versions. Here is what normalization happens to the schema to convert it to a signature: - The overload name is stripped (name is retained, since it expresses semantic content about what the function does) - Inplace is set False - Out arguments are stripped - Mutable post_self_positional args are converted to returns - Mutability annotations are stripped (this is sound because you cannot overload on mutability annotation) - Return names are stripped since they are not overloadable and some variants have return names but some not - TensorOptions are dropped because out= variants of factory functions don't include them (and we want to be able to pair up factory functions with their out variants) Finally, we want to be able to pair up related "view" and their corresponding "view_copy" operators. We do this by optionally stripping the trailing "_copy" from the base name. Example of a mutable op before and after: f.func (Mutable operator): _fused_moving_avg_obs_fq_helper(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor(a!) running_min, Tensor(b!) running_max, Tensor(c!) scale, Tensor(d!) zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False) -> (Tensor output, Tensor mask) # noqa: B950 f.func (Corresponding functional operator): _fused_moving_avg_obs_fq_helper.functional(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor running_min, Tensor running_max, Tensor scale, Tensor zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False) -> (Tensor output, Tensor mask, Tensor running_min_out, Tensor running_max_out, Tensor scale_out, Tensor zero_point_out) # noqa: B950 f.func.signature() output: _fused_moving_avg_obs_fq_helper(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor running_min, Tensor running_max, Tensor scale, Tensor zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False) -> (Tensor, Tensor, Tensor, Tensor, Tensor, Tensor) # noqa: B950 cPtr |jnd|jdS)Nr6r<r)Returnr6r<)rr_s rstrip_ret_annotationz6FunctionSchema.signature..strip_ret_annotations%0QVVdVV r_copyr(_scatterscatterinversec3K|]mj_jjrItfdjDs+t rj dndj doyw)Nc3PK|]}j|jk(ywr4r6r7s rrz5FunctionSchema.signature...sK  4Kr8_outrb)rrrrrcr6r<)rrr_rs @rrz+FunctionSchema.signature..sk, ||' %%KdllKK% (9xt_tVV   , sA3A7r]z bernoulli.pzfloat pz float p=0.5Frr dunder_methodrMr))rrcrrc)r6rrrreplacetupler$r%rdrErFrerSmaprrrrrBr/rfBaseOperatorNamern) rr]r^r_rd base_namereturns_from_mutable_inputsoriginal_returnsrargs_sigs ` ` rrzFunctionSchema.signaturensxX IINN'' !!'*%--gr: ##J/%--iC ',, __ ~~..:^^,,556""33 , ' #0!%94<>++-+H tyy>] * s8}'<'"> !   rc&|jdS)NTr^)rrs rview_signaturezFunctionSchema.view_signatures~~4~88rcFt||j|jS)Nr))r/rdr)rr6s r with_namezFunctionSchema.with_names nnLL  rc|jtjtjtjfvSr4)rrrrerrs rmodifies_argumentsz!FunctionSchema.modifies_argumentss*yy{z11:>>:CUCUVVVrc6|jjSr4)rdhas_symint_argrs r has_symintzFunctionSchema.has_symints~~,,..rct|j}t|jdk(rt|jd}n/ddj t t|jzdz}|j d|d|S)Nr$rrrrz) -> )rrdrirrrqr6)rall_arguments_strrs rrzFunctionSchema.__str__st/ t||  !$,,q/*GDIIc#t||&<==CG))A/0gY??rNr)rzIterator[Argument])r0rrr/r)rr)rzlist[str | None])r]r1r^r1r_r1rr/r)r6rfrr/r)rr r!r"rr"rrecompiler*rrBr3rrGrPrr\rryr{r}rrr#rrr/r/ys   AA bjjOPG   `D7(:')Z,$%*"' g g # g  g  g R9 WW/@rr/cFeZdZUded<ded<ded<ed dZd dZy) Annotationztuple[str, ...] alias_setr1rrc^tjd|}| Jd||jd|jdr|jdndz}t|j d}|jddk(}|rt |dkDr Jd |d |jd r)t|jd j dnd }t |dkDrt |dkDr Jd |d t |||}t||k(s J|d||S)Nz2^([a-z])(\|[a-z])*(!?)( -> (\*|[a-z](\|[a-z])*))?$zunrecognized alias annotation r$r[r(|rU!z,alias set larger than 1 is not mutable, got z instead.r#zSbefore alias set and after alias set cannot be larger than 1 at the same time, got )rrrr)rmatchgrouprprrirr)annr before_aliasrr after_setrs rrBzAnnotation.parses8 HHJC P}D >seDD}wwqz1771:QWWQZ2F ,,,S12 771:$Y!!3 :3%y I 456GGAJE!''!***3/0B  %)c)nq.@ abeaffo p A (I 1v}-4uo-}rcdj|j}|jr|d}dj|j}|r|d|}|S)Nrr -> )rrrr)rrrs rrzAnnotation.__str__$sTHHT^^, ==$+QI((4#7#78 $+T/):;IrN)rrrrr)rr r!r"rrBrr#rrrrs-N$$  DrrcheZdZed dZed dZd dZd dZddZddZ ddZ ddZ dd Z y )Typecdtj|}t||k(s J|d||S)Nr)r_parser)rrs rrBz Type.parse6s3 KKN1v{)qcaSM){rc>tjd|}|-ttj |j dStjd|}|\|j dt |j dnd}ttj |j d|Stjd|}|t|j dS tt|S#t$r}td||d}~wwxYw)Nz^(.+)\?$r$z^(.+)\[([0-9]+)?\]$r[)elemsizez-^__torch__\.torch\.classes\.([a-zA-Z0-9_.]+)$zunrecognized type ) rr OptionalTyperrBrrListTypeCustomClassTyper=r>KeyErrorr)rrrr~s rrz Type._parse<s HH[! $ = 1771: 67 7 HH+Q / =&'ggaj&<3qwwqz?$DAGGAJ!7dC C HHEq I ="1771:. . @F1I& & @!3A378a ? @s-C?? DDDctr4NotImplementedErrorrs rrz Type.__str__O!!rctr4rrbase_tys ris_base_ty_likezType.is_base_ty_likeWrrc@|jtjSr4)rr>r?rs ris_tensor_likezType.is_tensor_likeZ##FMM22rc@|jtjSr4)rr> Generatorrs ris_generator_likezType.is_generator_like]s##F$4$455rc@|jtjSr4)rr>SymIntrs ris_symint_likezType.is_symint_like`rrctr4rrs r is_nullablezType.is_nullablecrrctr4rrs r is_list_likezType.is_list_likefrrN)rrrrrrr>rr1rrzListType | None) rr r!rrBrrrrrrrrr#rrrr4sM @@$""363""rrc$eZdZeZeZeZeZeZeZ eZ eZ eZ eZ eZeZeZeZeZeZeZeZeZeZy)r>N)rr r!rrrr?rDimname DimVectorfloatrr1LayoutDevice DeviceIndexScalar MemoryFormatQSchemeStorageStreamrSymBool GraphModuler#rrr>r>ksIJ VF &CfGI FE &C 6D VF VF&K VF6LfGfG VF VFfG&Krr>c@eZdZUded<d dZd dZd dZd dZd dZy) r=r>r6c0|jjSr4r5rs rrzBaseType.__str__s))..!"rc |j|k(Sr4r5rs rrzBaseType.is_base_ty_likesyyG##rcyrr#rs rrzBaseType.is_nullablercyr4r#rs rrzBaseType.is_list_likerc<|jtjk(Sr4)r6r>rrs rrzBaseType.is_symint_likesyyFMM))rNrrrr) rr r!r"rrrrrr#rrr=r=s L#$*rr=c@eZdZUded<d dZd dZd dZd dZd dZy) rrrc |jdS)N?)rrs rrzOptionalType.__str__s))Arc8|jj|Sr4rrrs rrzOptionalType.is_base_ty_likeyy((11rc6|jjSr4rrrs rrzOptionalType.is_symint_likeyy''))rcy)NTr#rs rrzOptionalType.is_nullablerrc6|jjSr4)rrrs rrzOptionalType.is_list_likesyy%%''rNrrrr rr r!r"rrrrrr#rrrrs J2*(rrc@eZdZUded<d dZd dZd dZd dZd dZy) rr class_namec d|jS)zK Return the class name will prefix __torch__.torch.classes z__torch__.torch.classes.)rrs rrzCustomClassType.__str__s*$//):;;rcyrr#rs rrzCustomClassType.is_base_ty_likerrcyrr#rs rrzCustomClassType.is_symint_likerrcy)z8 Assume a custom class is not nullable. Fr#rs rrzCustomClassType.is_nullablesrcyr4r#rs rrzCustomClassType.is_list_likerrNrrrrrr#rrrrs O<  rrcJeZdZUded<ded<d dZd dZd dZd dZdd Zy )rrrz int | Nonerc\|jr |jnd}|jd|dS)Nr([])rr)rrs rrzListType.__str__s,!%$))))AdV1%%rc8|jj|Sr4rrs rrzListType.is_base_ty_likerrc6|jjSr4rrs rrzListType.is_symint_likerrc6|jjSr4)rrrs rrzListType.is_nullablesyy$$&&rc|Sr4r#rs rrzListType.is_list_likes rNrrrrrr#rrrrs& J &2*'rrcteZdZUded<ded<ded<ded<edd Zedd Zedd Zdd Z y )r!rr6rr<r5rNAnnotation | Nonerc|jSr4r6rs r alias_infozArgument.alias_info rcjd|vs Jd|dd|vrP|jddk(s Jd|d|jd\}}|jdd\}}|d|}n|jdd\}}|}d}tjd|}|rS|j dd vsJd d |j dz}t j|j d}n|}d}tj|} t|| || } t| |k(sJt| d || S)Nrzillegal argument 'r=r$z&illegal argument with default value: 'Tensor\((.+)\)(.*)r[r(rz[],unrecognized alias analysis form with Tensorr?r6r<rNrr) countrrsplitrrrrrBrr!r) rtype_and_annot_and_namerNtype_and_annotr6name_and_defaultrtype_srr<rs rrBzArgument.parseskcz6/uA66z #:99S>Q& W*PQTPUUV(W W&/2yy~ , #W#:#A#A#q#I ND"&q 2 /2zz#q/A ,N,#DG.? ;;q>& >>  >  A.F#))%++a.9J#FJzz&! !   1v}2QSE22}rcN|jduxr|jjSr4rrs rrzArgument.is_write, d*Gt/G/GGrc|j}|jr&|dvsJ|jdd|jd}|j|Sd}|jrd|j}|d|j|S)Nr?zTensor?zTensor[]r?Tensor(rr(rr)r<rror6rN)rr< mb_defaults rrzArgument.__str__0s)) ??<< <<<<GDOO3DA*FGD 99 KJ|| / V1TYYK |4 4rNrr)rrrr!rr rr r!r"rrrrBrrr#rrr!r!s^ I J *"! $$LHH 5rr!cjeZdZUded<ded<ded<ed dZed dZedd Zdd Z y )rcr5r6rr<rrc|jSr4r6rs rrzReturn.alias_infoDrrcd|vr|jdd\}}n|}d}tjd|}|rS|jddvsJdd|jdz}tj |jd}n|}d}t j |}t|||}t||k(sJt|d ||S) Nrr$rr[rrr?rbr) rrrrrrBrrcr)rrr6rrrr<rs rrBz Return.parseHs #:#&::c1#5 ND ND.? ;;q>& >>  >  A.F#))%++a.9J#FJzz&! !  1v}2QSE22}rcN|jduxr|jjSr4rrs rrzReturn.is_writegrrc|j}|jr&|dvsJ|jdd|jd}|j|S|d|jS)Nrr?rrr)r<rror6)rr<s rrzReturn.__str__kse)) ??<< <<<<GDOO3DA*FGD 99 KV1TYYK( (rNr)rrrrcrrrr#rrrcrc>sT  J!! <HH)rrcceZdZUded<y) SelfArgumentr!rFN)rr r!r"r#rrrrwsrrc>eZdZUded<ded<ded<ded<ddZy) TensorOptionsArgumentsr!dtypelayoutdevice pin_memoryc^|j|j|j|jgSr4rr r r rs rallzTensorOptionsArguments.alls! DKKdooFFrNrzSequence[Argument])rr r!r"rr#rrrrs O  GrrcleZdZUded<ded<ded<ded<ded<ded <ded <ed"d Zed"d Zed"d Zed"dZed"dZ e d#dZ ed$dZ ed%dZ ed#dZ d&dZd'dZd'dZd'dZddd(dZd)dZd*dZed+dZed,dZd-dZd.d Zy!)/rztuple[Argument, ...]pre_self_positionalzSelfArgument | NonerErSpre_tensor_options_kwarg_onlyzTensorOptionsArguments | Nonerspost_tensor_options_kwarg_onlyrecvg}|j|j|j|j|Sr4)rr&r'rr:s r flat_non_outzArguments.flat_non_outs0  4''( 4''( rcg}|j|j|j%|j|jj|j|j |Sr4)rrrErhrFrSrs rr&zArguments.flat_positionalsP  4++, == $ JJt}}-- . 4,,- rcZ|jDcgc]}|js|c}Scc}wr4)rSrrrs rrDz&Arguments.post_self_positional_mutables"44Ca CCCs((cg}|j|j|j)|j|jj|j|j|Sr4)rrrsrrrs rr'zArguments.flat_kwarg_onlysW  4556    * JJt**..0 1 4667 rcg}|j|j|j|j|j|j|Sr4)rr&r'rers rrzArguments.flat_alls@  4''( 4''( 488 rcvg}|j|j|j|j|Sr4)r positional kwarg_onlyrs rnon_outzArguments.non_outs0GI 4??# 4??# rcg}|j|j|j|j|j|j|j|Sr4)rrrErhrSrs rrzArguments.positionalsJ-/ 4++, == $ JJt}} % 4,,- rcg}|j|j|j|j|j|j|j|Sr4)rrrsrhrrs rrzArguments.kwarg_onlysN79 4556    * JJt** + 4667 rcg}|j|j|j|j|j|j|Sr4)rrrrers rrz Arguments.alls<FH 4??# 4??# 488 rc|jDcgc]0}|j"|jjr |j2c}Scc}wr4)rrrr6rs rmutable_arg_nameszArguments.mutable_arg_namessB]] ||'ALL,A,A FF   s5Ac:td|jDS)Nc3PK|]}|jj ywr4)r<rr@s rrz+Arguments.has_tensor_arg..Fq166((*F$&rrrs rrtzArguments.has_tensor_argFD4E4EFFFrc:td|jDS)Nc3PK|]}|jj ywr4)r<rr@s rrz+Arguments.has_symint_arg..r'r(r)rs rrzArguments.has_symint_argr*rc:td|jDS)Nc3PK|]}|jj ywr4)r<rr@s rrz.Arguments.has_generator_arg..sI!166++-Ir(r)rs rrzArguments.has_generator_argsIt7H7HIIIrFrlc dfd }ttt||j|j%t ||jj ndtt||jtt||jtt||jzdddS)Ncrt|j|js|jdSddS)Nr)r!r6r<rN)rr]s rstrip_arg_annotationz1Arguments.signature..strip_arg_annotations=VVVV)6   =A  rr#rrErSrrsrre)rr!rr!) rrprqrrErrFrSrr)rr]r1s ` rrzArguments.signatures  %($*B*BC! ==,1$--2H2HIJ!&($*C*CD" +0($*L*LM+C,d.Q.QRS+T  +-/  rc |jJtj|ttj|jjdS)Nr6)rE)rE dataclassesrorrFrs rremove_self_annotationz Arguments.remove_self_annotation sJ}}((("" !##DMM$:$:tL  rcvt|jdk(sJtj|t |S)Nr)re)rirer4rorp)rrYs r with_out_argszArguments.with_out_args( s5488}!!!"" d   rc(g}g}g}|}|jdD]r}|s|dk(r||usJd|}tj|}|j"|jjr ||urn ||ur |}n||usJ|j |t|||fS)Nrrz:invalid syntax: kwarg-only specifier * can only occur once)rr!rBrrrh)r/rrre arguments_accrpargs r _preparsezArguments._preparse/ s%' %'  " ::d# 'Ccz$ 2P2!+ >>#&D*t/G/G J."j0$'M$C///   &/ '2:s**rc tj|\}}}d}t|D]\}}|jdk(s|}n||d|}t ||}||dzd} ng}d}|} g} d} g} | } dd}|dt j d|dt j d|d t j d |d t j d g}d }|t|kr|t|t|z krftdt||||t|zDr;| | usJt||||dz||dz||dz} |t|z }| } | j|||dz }|t|krtt||t| t| | t| t|S)z. Input: 'int x, int y, int z' Nrr$cfdS)NcX|jk(xr|jtfvSr4)r6r<r)rr6tys rz/Arguments.parse..pred..y s'QVVt^P2|B?O:P0Prr#)r6r?s``rpredzArguments.parse..predx s P Prrrr rr rr r1rc32K|]\}}||ywr4r#)rprs rrz"Arguments.parse.. s 1aDrr[rUr r2)r6rr?rrzCallable[[Argument], bool]) rr; enumerater6rrrBrirrCrrhrp)r/rrreself_ixirrrErSrrsrkwarg_only_accrA predicatess rrBzArguments.parseS s"'0&9&9$&?# Jj) DAqvv   ",Xg"6 #Jw$78H#-gkm#< "$ H#- 9;%8<9;&6 Q $**\2 3 4::h/ 0 4::h/ 0 tzz&1 2   #j/!C Oc*o55 #J 1q3z??R0S T*-JJJJ%;(m)!a%0)!a%0#-a!e#4 &N Z(A%CN  ! !*Q- 0 FA)#j/!, %&9 :!&';!<*/0M*N)+01O+Pc   rcpg}|jtt|j|js |j r|j d|jtt|j|jtt|j dj|S)Nrr)rrqrr&r'rerhr)r all_argumentss rrzArguments.__str__ s#% Sd&:&:;<   488   %Sd&:&:;<Sdhh/0yy''rc|j|jrJ|j|jrJ|jDcgc]&}|j|jj r|(}}t |dk(sJdycc}w)NrzOmutable pre_self_positional arguments are not currently supported in the schema)rErrsrrrri)rrmutable_pre_self_positionalss rrzArguments.__post_init__ s == // //    &:: :: --( ||'ALL,A,A ( $( /0A5 ] 5 ( s+BNr)rz:Sequence[Argument | SelfArgument | TensorOptionsArguments])rz!Sequence[Argument | SelfArgument])rz+Sequence[Argument | TensorOptionsArguments]rz list[str]r)r]r1rr)rr)rYlist[Argument]rr)r/rrz5tuple[list[Argument], list[Argument], list[Argument]])r/rrrrr)rr r!r"rrr&rDr'rrrrrr$rtrrrr5r7rr;rBrrr#rrrrsP .-!!..#7711%98   DD C GGJ27# J  !+!+FM M ^( rr) rsubmuldivmodpowlshiftrshiftandxororcbeZdZUded<ded<ded<dZded<dZd ed <ed d Zdd Zy)rrrrr1rrnFrNz Optional[str]r.c^ |dk7sJ|jdrJdtjd|}|r|jdnd}|r|jdn|}tjd|}|?d}|jd t fd t Drd} dd n"d } d d k7sJd }| d dk(rd} dd  nd }d} j|rd} dt |  |s|rJd }t ||||} t| |k(sJt| d|| S)Nr(rkzs_out suffix is reserved and not permitted for operator names; did you mean to specify an out overload name instead?z^(?:(.*)::)?(.*)$r$r[z ^__([^_]+)__$Tc3.K|] }d|k(yw)rFNr#)rnrs rrz)BaseOperatorName.parse.. sGq4Qqc7?GrFrrFr_ _functional)rrrnrr.r) rrrrrrAUGMENTED_ASSIGNMENT_NAMESrirrr) rrr. op_without_nsrrnrfunctional_suffixrrrs @rrBzBaseOperatorName.parse srRxx;;v&  D &-r2&+EKKN */ AR HH%} 5 = M771:DG,FGGABx Aw#~%~!M DBx3CRy* ==* +"& 130112D%W 44"'  ' 3  1v|0AxtB400|rc|jr|jdnd}|jr$|jrdnd}|d||jdS|jrdn|jrdnd}||j|S)NrOr(rF__r]r^)r.rnrrr)rnamespace_prefixrFs rrzBaseOperatorName.__str__1 s48NNdnn-R0   ||A&'r!TYYKr: :<<++# '' {1#6 6r)rrrrrr) rr r!r"rr.rrBrr#rrrrrr sC I M(!&% $I}#66p 7rrrcTeZdZUded<ded<ed dZd dZd dZd dZdd Z y )rfrrr6rrNcd|vr|jdd\}}n|}d}ttj||}t ||k(sJt |d||S)N.r$r(rMr)rrfrrrBr)r r6rNrs rrBzOperatorName.parseH sk '>")--Q"7 D-DM .44T:- X1v :SVHD ":: rcj|jr|jd|jS|jS)NrgrNr6rs rrzOperatorName.__str__S 3   ii[$"4"4!56 6ii[ !rcj|jr|jd|jS|jS)Nr]rirs runambiguous_namezOperatorName.unambiguous_name^ rjrctt|jjd|jj|j SNFrmrM)rfrrr6rrnrNrs rremove_inplacezOperatorName.remove_inplaced s=!YY^^"ii55 ,,   rctt|jjd|jj|Srn)rfrrr6rrn)roverloads r with_overloadzOperatorName.with_overloadn s7!YY^^"ii55 #   rN)r rrrfr)rrf)rqrrrf) rr r!r"rrBrrlrorrr#rrrfrfC s4 ""   rrfc|jjtjuxr/|j | xr|j |jSr4)r0rrrr)rrbs r"gets_generated_out_inplace_wrapperruy sI  Z222 ' Q  ' LL &rcfeZdZUded<ded<ded<d dZdddd Zedd Zedd Zy )NativeFunctionsViewGroupr-viewr view_copy view_inplacec|jjsJ|j]t|jrAJt |jj j dt|jd|jj j j jjdsJ|jj j|jj jdk(sJd|jjvsPJt |jj j t |jjfd|jK|jj j|jj jk(sJ|jjr}|jq|jjs[Jt |jj j dt |jj j d |jjr|jr|jjs[Jt |jj j dt |jj j d yyy) Nz appears to be a new operator that aliases its inputs. The codegen expects you to add a corresponding operator to native_functions.yaml: z3. See Note [view_copy NativeFunctions] for details.)rerfTrxryz appears to be a view_copy operator. The codegen expects view_copy operators to be annotated with the 'view_copy' tag in native_functions.yaml. See Note [view_copy NativeFunction] for details.rz] must either both have CompositeImplicitAutograd kernels, or both not have composite kernels.zi must either both have CompositeImplicitAutogradNestedTensor kernels, or both not have composite kernels.)rxrrygets_generated_view_copyrr0r6get_view_copy_namerrrrrIrzrErFrs rrz&NativeFunctionsViewGroup.__post_init__ syy#### >> !/ : tyy~~**+,-&tyy145EE :>>&&++0055>>?TU UU99>>++-1D1D1N1N%)2O2 $.."5"55 t~~**//0#diinn2EEFGDD 5    (99>>++-1B1B1G1G1Q1Q1SS SS 99 ; ;  ,((OO499>>../0c$:K:K:P:P:U:U6V5WXhhO 99 I I  ,((]]499>>../0c$:K:K:P:P:U:U6V5WXtt]- JrT) include_copyc#K|j|j|j|j|r|jyyywr4)rxrzry)rr~s rrz"NativeFunctionsViewGroup.functions sEii    (## # >> %,.. +7 %sAA c.|jjSr4)rxrrs rrz"NativeFunctionsViewGroup.root_name syy"""rc.|jjSr4)rxrErs r compositez"NativeFunctionsViewGroup.composite syy???rNr)r~r1rrrr) rr r!r"rrrrrr#rrrwrw sP %$''!F15!##@@rrwc|jsy|jryd|jvry|jjjj j dryy)NFr_inverseT)rrErIr0r6rrr)rs rr|r| sS << //  vv{{%%j1 rcdg}t|jj|vr t|sJ|jjjjd}t t |d|jjjj|jjj}|S)NnarrowreFrmrM) rr0r6r|rrfrrrnrN)r-list_of_ops_with_explicit_view_copy_operatorsrsview_copy_names rr}r} s6>J1 166;;LL'***66;;##(()/I! E9I9I9W9W ffkk// N rcz|dk(ry|ddk(r |ddk(r|dd}td|jd DS) z$ Input: '()' Output: [] z()r#rrrrr$c3FK|]}tj|ywr4)rcrBrs rrz parse_returns.. sFsc"Fs!r)rpr)r0s rr,r, sN d1~RC!7!!B' Fk.?.?.EF FFrcDeZdZUded<ded<ed dZd dZd dZy) rgzdict[str, list[Argument]]rorNrcNt|tsJg}d|dvrI|djd}|Dcgc]%}tj |j '}}|dd}i}|D]}t|t sJd|vsJd|jd\}}d|vs Jd|d|jd}|Dcgc]%}tj |j '} }| ||<t||} | j|k(sJd | Scc}wcc}w) NrrrTzLprecomputed parameters without replacement are allowed only in the last linerzillegal kernel param name 'z' in precomputed parameters')rorzr.to_list() != src) r^rbrr!rBrlrrgto_list) srcadd_argsadd_listr6roraw_replace_itemr with_list_raw with_listwith_list_argsrs rrBzPrecompute.parse sR#t$$$ R 2w}}S)HAIJtzz|4JHJcr(C # * .4 44-- 5 - "2!7!7!? Cc> -cU2NO >&++C0IGPQthnnTZZ\:QNQ)GCL * wH 5yy{c!7#77!+K Rs *D*D"c|jD]+}|jj|jk7r+J|jj D]2}|D]+}|jj|jk7r+J4yr4)rr6upperror)rrr/s rrzPrecompute.__post_init__8 sz ,A66<<>QVV+ ++ ,LL'') 0D 0vv||~/// 0 0rcg}|jjD]3\}}djd|D}|j|d|5|S)Nrc32K|]}t|ywr4r)rparams rrz%Precompute.to_list..D s$PESZ$Prr)ror<rrh)r replace_list kernel_paramreplacement_params replacementss rrzPrecompute.to_listA sa 04 0B0B0D E ,L,99$P=O$PPL   <.\N C D ErN)robjectrrgrrM)rr r!r"rrBrrr#rrrgrg s-'& ""H0rrgr)rr2rr1)rr-rrrtrrr1)rr-rr1)rr-rrf)r0rrr)x __future__rr4r$rrenumrrtypingrrr typing_extensionsr torchgen.utilsr r collections.abcr rrr%rurrr AUTOGRAD_KEYSFRAGMENT_NAMESPACESr2rrrrhasattrrprintrrurqrprwrtrrrrrNrrrrrrrrrkrlrmrnrrrrr{rrrrrUrmrrrrrdispatch_device_maprrr"rrrrrrrrr rr#r(r-rrrnrvrr/rrr>r=rrrr!rcrrrr_rrrfrurwr|r}r,rg) components0rrs" !44*62: $***d (nssu((,>,(J, #$:; _>$_>DD  B {BG,+-A !H2$rd"pqrpst  OOOOOO #''9OOOOOO))55))66    A! L*% ,V5H%P,,^46 05&  j' (8(8*:K:K'LM j%j667 i%Z0=3LL e!.u!5 i8P!P o* i 88"#;t;4d T$ $f Gf Gf GR $q q q h $(((, $   6 $888` $t@t@t@~  $111t $2"2"2"lT. $*t**( $(4((( $d@ $t* $W5W5W5t $4)4)4)p $ $GGG $r r r p * $e7e7e7T $2 2 2 j.3? * $;@;@;@|.0 G $;;;CV,s V