� ��g@��� �UddlZddlZddlZddlmZddlmZmZddlmZm Z m Z m Z m Z m Z mZmZmZddlmZmZmZed���Gd�d ����ZGd �d e��Zd Zd ���Zgd�Zdgd�eD��zZddhZGd�de��ZGd�de��Zdefd�Z eD]>Z!eD]9Z"e#ee!e"z��s(e ��Z$e%e$��e&de!�e"�de$������:�?ej'ej(ej)hZ*ej(ej)hZ+ej)ej,ej-ej.ej(ej'ej/ej0ej1ej2ej3ej4ej5ej6ej7ej8ej9ej:ej;ej<ej=ej>gZ?dede@fd�ZAdede@fd�ZBdede@fd�ZCdede@fd�ZDGd �d!e��ZEiZFe eeeEfeGd"<eeEjHeEjIeEjJeEjKeEjLg��eFd#<eeEjMeEjNg��eFd$<eeEjOeEjPg��eFd%<eFd#eFd$zeFd&<eFd&eFd%zeFd'<eFd$eFd%zeFd(<Gd)�d*e��ZQGd+�d,e��ZRGd-�d.e��ZSed���Gd/�d0����ZTGd1�d2e��ZUed���Gd3�d4����ZVed���Gd5�d6����ZWed���Gd7�d8����ZXed���Gd9�d:����ZYed���Gd;�d<����ZZed���Gd=�d>����Z[ed���Gd?�d@����Z\GdA�dBe��Z]ed���GdC�dDe\����Z^ed���GdE�dFe\����Z_ed���GdG�dHe\����Z`ed���GdI�dJe\����Zaed���GdK�dL����Zbed���GdM�dN����Zced���GdO�dP����Zded���GdQ�dR����Zeed���GdS�dT����ZfgdU�Zged���GdV�dW����Zhed���GdX�dY����ZidZeTd[eVd\eYde@fd]�Zjed���Gd^�d_����ZkdZeTde@fd`�ZldZeTddYfda�Zmdbedeecdcffdd�Zned���Gde�df����ZodS)g�N)� dataclass)�auto�Enum) �Callable�Dict�Iterator�List�Optional�Sequence�Set�Tuple�Union)� assert_never�NamespaceHelper� OrderedSetT)�frozenc�0�eZdZUeed<eed<defd�ZdS)�Location�file�line�returnc�$�|j�d|j��S)N�:)rr��selfs �^/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/torchgen/model.py�__str__zLocation.__str__*s���)�)�)�d�i�)�)�)�N)�__name__� __module__� __qualname__�str�__annotations__�intr�rrrr%sC������� �I�I�I� �I�I�I�*��*�*�*�*�*�*rrc�6�eZdZe��Ze��ZdS)�VariantN)rr r!r�function�methodr%rrr'r'/s$�������t�v�v�H� �T�V�V�F�F�Frr'z at::nativezVCPU CUDA HIP XLA MTIA MPS IPU XPU HPU VE Lazy Meta PrivateUse1 PrivateUse2 PrivateUse3)�� Quantized�Sparse� SparseCsr� NestedTensor�Autograd�AutogradNestedTensorc��g|]}d|z��S)r/r%)�.0� components r� <listcomp>r4Ds*��,�,�,�(�J���,�,�,r� quantized�quantized_decomposedc� �eZdZdZeZe��Ze��Ze��Ze��Z e��Z e��Z e��Z e��Z e��Ze��Ze��Ze��Ze��Ze��Ze��Ze��Ze��Ze��Ze��Ze��Ze��Ze��Ze��Ze��Ze��Ze��Ze��Z e��Z!e��Z"e��Z#e��Z$e��Z%e��Z&e��Z'e��Z(e��Z)e��Z*e��Z+e��Z,e��Z-e��Z.e��Z/e��Z0e��Z1e��Z2e��Z3e��Z4e��Z5e��Z6e��Z7e��Z8e��Z9e��Z:e��Z;e��Z<e��Z=e��Z>e��Z?e��Z@e��ZAe��ZBe��ZCe��ZDe��ZEe��ZFe��ZGe��ZHe��ZIe��ZJe��ZKe��ZLe��ZMe��ZNe��ZOe��ZPe��ZQe��ZRe��ZSe��ZTe��ZUe��ZVe��ZWe��ZXe��ZYe��ZZe��Z[e��Z\e��Z]e��Z^e��Z_e��Z`e��Zae��Zbe��Zce��Zde��Zee��Zfe��Zge��Zhe��Zie��Zje��Zke��Zle��Zme��Zne��Zoe��Zpe��Zqe��Zre��Zse��Zte��Zue��Zve��Zwe��Zxe��Zye��Zze��Z{e��Z|e��Z}e��Z~e��Ze��Z�e��Z�e��Z�e��Z�e��Z�e��Z�e��Z�e��Z�e��Z�e��Z�e��Z�e��Z�e��Z�e��Z�e��Z�e��Z�de�fd�Z�de�fd�Z�e�de�ddfd���Z�dS)� DispatchKeyrrc��|jS�N��namers rrzDispatchKey.__str__�� ���y�rc�D�t|�����Sr:)r"�lowerrs rr?zDispatchKey.lower�s���4�y�y��� � � r�valuec��tj���D]\}}||kr|cS�td|�����)Nzunknown dispatch key )r8� __members__�items�AssertionError�r@�k�vs r�parsezDispatchKey.parse�sR���+�1�1�3�3� � �D�A�q��E�z�z�������<�U�<�<�=�=�=rN)�rr r!� Undefined�CatchAllr�FPGA�MAIA�Vulkan�Metal�MKLDNN�OpenGL�OpenCL�IDEEP�CustomRNGKeyId� MkldnnCPUr,r-r.�Dense�PythonTLSSnapshot� PreDispatch�PythonDispatcher�Python�FuncTorchDynamicLayerBackMode� ZeroTensor� Conjugate�Negative� BackendSelect�Named� AutogradOther�AutogradFunctionalityr0�Tracer�Autocast� AutocastCPU� AutocastCUDA�Batched�VmapMode�FuncTorchGradWrapper�FuncTorchBatched�BatchedNestedTensor�FuncTorchVmapMode�FuncTorchDynamicLayerFrontMode� Functionalize�TESTING_ONLY_GenericWrapper�TESTING_ONLY_GenericMode�ADInplaceOrViewr/�CompositeImplicitAutograd�%CompositeImplicitAutogradNestedTensor�CompositeExplicitAutograd�&CompositeExplicitAutogradNonFunctional�FuncTorchBatchedDecomposition�CPU�CUDA�HIP�XLA�MTIA�MPS�IPU�XPU�HPU�VE�Lazy�Meta� PrivateUse1� PrivateUse2� PrivateUse3� QuantizedCPU� QuantizedCUDA� QuantizedHIP� QuantizedXLA� QuantizedMTIA� QuantizedMPS� QuantizedIPU� QuantizedXPU� QuantizedHPU� QuantizedVE� QuantizedLazy� QuantizedMeta�QuantizedPrivateUse1�QuantizedPrivateUse2�QuantizedPrivateUse3� SparseCPU� SparseCUDA� SparseHIP� SparseXLA� SparseMTIA� SparseMPS� SparseIPU� SparseXPU� SparseHPU�SparseVE� SparseLazy� SparseMeta�SparsePrivateUse1�SparsePrivateUse2�SparsePrivateUse3� SparseCsrCPU� SparseCsrCUDA� SparseCsrHIP� SparseCsrXLA� SparseCsrMTIA� SparseCsrMPS� SparseCsrIPU� SparseCsrXPU� SparseCsrHPU� SparseCsrVE� SparseCsrLazy� SparseCsrMeta�SparseCsrPrivateUse1�SparseCsrPrivateUse2�SparseCsrPrivateUse3�NestedTensorCPU�NestedTensorCUDA�NestedTensorHIP�NestedTensorXLA�NestedTensorMTIA�NestedTensorMPS�NestedTensorIPU�NestedTensorXPU�NestedTensorHPU�NestedTensorVE�NestedTensorLazy�NestedTensorMeta�NestedTensorPrivateUse1�NestedTensorPrivateUse2�NestedTensorPrivateUse3� AutogradCPU� AutogradCUDA� AutogradHIP� AutogradXLA� AutogradMTIA� AutogradMPS� AutogradIPU� AutogradXPU� AutogradHPU� AutogradVE� AutogradLazy� AutogradMeta�AutogradPrivateUse1�AutogradPrivateUse2�AutogradPrivateUse3r"rr?� staticmethodrHr%rrr8r8Ms��������I��H� �4�6�6�D� �4�6�6�D� �T�V�V�F� �D�F�F�E� �T�V�V�F� �T�V�V�F� �T�V�V�F� �D�F�F�E��T�V�V�N�����I� �T�V�V�F�����I��4�6�6�L� �D�F�F�E�������$�&�&�K��t�v�v�� �T�V�V�F�$(�D�F�F�!�����J�����I��t�v�v�H��D�F�F�M� �D�F�F�E��D�F�F�M� �D�F�F���4�6�6�� �T�V�V�F��t�v�v�H��$�&�&�K��4�6�6�L��d�f�f�G��t�v�v�H��4�6�6���t�v�v���$�&�&�������%)�T�V�V�"��D�F�F�M�"&�$�&�&��#�t�v�v���d�f�f�O��t�v�v�H� $�����,0�D�F�F�)� $�����-1�T�V�V�*�$(�D�F�F�!� �$�&�&�C� �4�6�6�D� �$�&�&�C� �$�&�&�C� �4�6�6�D� �$�&�&�C� �$�&�&�C� �$�&�&�C� �$�&�&�C� ����B� �4�6�6�D� �4�6�6�D��$�&�&�K��$�&�&�K��$�&�&�K��4�6�6�L��D�F�F�M��4�6�6�L��4�6�6�L��D�F�F�M��4�6�6�L��4�6�6�L��4�6�6�L��4�6�6�L��$�&�&�K��D�F�F�M��D�F�F�M��4�6�6���4�6�6���4�6�6������I�����J�����I�����I�����J�����I�����I�����I�����I��t�v�v�H�����J�����J�����������������4�6�6�L��D�F�F�M��4�6�6�L��4�6�6�L��D�F�F�M��4�6�6�L��4�6�6�L��4�6�6�L��4�6�6�L��$�&�&�K��D�F�F�M��D�F�F�M��4�6�6���4�6�6���4�6�6���d�f�f�O��t�v�v���d�f�f�O��d�f�f�O��t�v�v���d�f�f�O��d�f�f�O��d�f�f�O��d�f�f�O��T�V�V�N��t�v�v���t�v�v��"�d�f�f��"�d�f�f��"�d�f�f���$�&�&�K��4�6�6�L��$�&�&�K��$�&�&�K��4�6�6�L��$�&�&�K��$�&�&�K��$�&�&�K��$�&�&�K�����J��4�6�6�L��4�6�6�L��$�&�&���$�&�&���$�&�&��������!�s�!�!�!�!��>�S�>�]�>�>�>��\�>�>�>rr8c�J�eZdZe��Ze��Ze��ZdS)�_TorchDispatchModeKeyN)rr r!r�FAKE�PROXY� FUNCTIONALr%rrr�r��s/������ �4�6�6�D� �D�F�F�E�����J�J�Jrr�rc��g}tD]'}tD]}|�d|�|�d�����(d�|��S)Nz z = auto()� )�FUNCTIONALITY_KEYS�BACKEND_COMPONENTS�append�join)�r�fk�bcs r�codegen_per_backend_entriesr��s`�� �A� �/�/��$� /� /�B� �H�H�-�B�-��-�-�-� .� .� .� .� /� �9�9�Q�<�<�rzMissing zL from DispatchKey enum. Here is the autogenerated list we expect to have: �dkc�b�|tjtjtjtjhvSr:�r8rsrtrqrr�r�s r�is_generic_dispatch_keyr�)s,�� ��-��:��-��9� � �rc��|tjtjtjtjtjtjhvSr:)r8rwr�r�r�r�r�r�s r�is_cuda_dispatch_keyr�3s8�� ����!����!��$�� � � �rc��|tvSr:)�STRUCTURED_DISPATCH_KEYSr�s r�is_structured_dispatch_keyr�@s�� �)� )�)rc��|tvSr:)�UFUNC_DISPATCH_KEYSr�s r�is_ufunc_dispatch_keyr�Ds�� �$� $�$rc���eZdZe��Ze��Ze��Ze��Ze��Ze��Z e��Z e��Z e��Z e��Z e��Ze��Ze��Ze��Ze��Ze��Ze��Zdefd�Zedededfd���Zededdfd���Zedededfd���ZdS) � ScalarTyperc��|jSr:r;rs rrzScalarType.__str__]r=rr@c�b�tj���D]\}}||kr|cS�dSr:)r�rBrCrEs r� maybe_parsezScalarType.maybe_parse`s@���*�0�0�2�2� � �D�A�q��E�z�z�������trc�X�t�|��}|� Jd|�����|S)Nzunknown dtype )r�r�)r@�mb_rs rrHzScalarType.parsegs7���%�%�e�,�,�����!9�%�!9�!9����� r�valuesc��t��}|�d��D]Y}|tvr!|�t|���,|�t �|�����Z|S)N�, )r�split� DTYPE_CLASSES�update�addr�rH)r��dtypesr@s r� parse_setzScalarType.parse_setmss��)3�����\�\�$�'�'� 4� 4�E�� �%�%�� � �m�E�2�3�3�3�3�� � �:�+�+�E�2�2�3�3�3�3�� rN)rr r!r�Byte�Char�Short�Int�Long�Half�Float�Double� ComplexHalf� ComplexFloat� ComplexDouble�Bool�BFloat16� Float8_e5m2�Float8_e5m2fnuz� Float8_e4m3fn�Float8_e4m3fnuzr"rr�r r�rHrr�r%rrr�r�Js~������ �4�6�6�D� �4�6�6�D� �D�F�F�E� �$�&�&�C� �4�6�6�D� �4�6�6�D� �D�F�F�E� �T�V�V�F��$�&�&�K��4�6�6�L��D�F�F�M� �4�6�6�D��t�v�v�H��$�&�&�K��d�f�f�O��D�F�F�M��d�f�f�O���������3��8�L�#9�����\�� ��S��\�����\�� ��#��*�\�":�����\���rr�r��Integral�Floating�Complex�All� AllAndComplex�FloatingAndComplexc���eZdZe��Ze��Ze��Ze��Ze��Ze��Z e��Z de fd�Z e de ddfd���ZdS)�UfuncKeyrc��|jSr:r;rs rrzUfuncKey.__str__�r=rr@c��tj���D]\}}||kr|cS�td|�����)Nzunknown ufunc key )rrBrCrDrEs rrHzUfuncKey.parse�sR���(�.�.�0�0� � �D�A�q��E�z�z�������9�%�9�9�:�:�:rN)rr r!r� CUDAFunctor�CUDAFunctorOnOther�CUDAFunctorOnSelf� CPUScalar� CPUVector� ScalarOnly�Genericr"rr�rHr%rrrr�s��������$�&�&�K���������������I�����I�����J��d�f�f�G��������;�S�;�Z�;�;�;��\�;�;�;rrc��eZdZdZdZdS)�DeviceCheckTyper�N)rr r!�NoCheck� ExactSamer%rrr r �s�������G��I�I�Irr c�J�eZdZe��Ze��Ze��ZdS)�ViewSchemaKindN)rr r!r�aliasing�aliasing_inplace� non_aliasingr%rrr%r%�s0�������t�v�v�H��t�v�v���4�6�6�L�L�Lrr%c��eZdZUeed<ded<eed<eed<eed<eeed<eeed<ee ed <eed <eed <d ed <e ded<e e dfed<eed<eded<eeed<eded<eeed<eed<eed<eed<eed<eed<eeed<e d,de eefd d d eed!eeed"ede ee d#fff d$���Zd-d%�Zd-d&�Zed"efd'���Zed"efd(���Zed"efd)���Zed"efd*���Zed"efd+���ZdS).�NativeFunction� namespace�FunctionSchema�func�!use_const_ref_for_mutable_tensors� device_guard� device_check� python_module�category_override�variants�manual_kernel_registration�manual_cpp_bindingr�loc� OperatorName�autogen�UfuncInnerLoop�ufunc_inner_loop� structured�structured_delegate�structured_inherits� Precompute� precomputed�cpp_no_default_args� is_abstract�&has_composite_implicit_autograd_kernel�4has_composite_implicit_autograd_nested_tensor_kernel�&has_composite_explicit_autograd_kernel�5has_composite_explicit_autograd_non_functional_kernel�tagsN�ei� valid_tags� ignore_keysr)r7�BackendMetadatac��7�|���}|�d��}t|t��s Jd|�����t j|d���}|�d���}t�|j ���7|�dg��}t|t��sJ�t|��} |�dd ��} t| t��sJ�|�d d ��} t| t��sJ�t��} | � d ��D]_} | d kr | �tj���(| d kr | �tj���Nt%d| �����|�dd ��}t|t��s Jd|�����|�dd ��}t|t��s Jd|�����|�dd��}t|t��s Jd|�����|�dd��}|�"t|t��s Jd|�����|�|t&jvs Jd|�����|� t&j}n t&|}|�dd ��}t|t��s Jd|�����|�dd��}|�"t|t��s Jd|�����|�d|vs Jd���d}|�t,�|��}|�dd��}|�"t|t��s Jd|�����|�d|vs Jd���|�dd��}|�"t|t��s Jd|�����|�tj| vs Jd���|�dd��}|�"t|t��s Jd|�����|�d d��}|�|dusJ�|rt.�|��nd}|�d!g��}t|t��r|g}t|t��sJ�|dkrd"|vr|�d"��t��}|D]B}t3|��d#ksJ�||vr|�|���1t%d$|�����d#d%lm}|�d&d��}|�t|t8��s J|���i} d#}!|���|r Jd'���d }"|���D�]B\}#} |#d(kr� t|#t��sJd)|#�d*|�����t| t��sJd+| �d*|�����|#� d,��D]�}$t<�|$�����}%|!dz }!|r|%|vr�:|%t@vsJd-|%�d.| �d/����t j| d0�1��}|�d2���}&tC|j |otE|%��|&d3z�4��| |%<|%t<j#ur| |�$�7��krd}"�֐�D|!dkr |"r Jd5���|s�| �%��t<j#hks^| t<j#�&��s:|!dks4Jd6|�$�7���d7| t<j#�d8����n�|s�|��t�7j$j$��}'|'�'d9��s:|'�(d:��s%�7j)j*r'�7j)�+��sJd;|'�d<����tC|�$�7��d tX�=��| t<j#<d>�| D��}(t3|(��dks9t3|(��d?krt<j-|(vrt<j.|(vs Jd@���|�dAdB��})t|)t��sJ�|)dBkrgndC�|)� d ��D��}*|�dDi��}+i},t|+t��r3t^�|+t`j1��|,t`j1<n�t|+t8��r�|+���D]�\}$}-|$d(kr� t|$t��s JdE|$�����t|-t��s JdF| �����t`�|$��}.t^�|-|.��|,|.<��nt%dG|+�����|,r^|s JdH���d#dl2m3cm4}/tjD]A}%|%| vs JdI|%�����tC|/�6�7|%��dtX�4��| |%<�B|rd}0nt| �%��t<j#hkoP| �%��t<j.hko-| �%��t<j#t<j.hk}0t<j#| v}1t<j.| v}2t<j7| v}3t<j-| v}4�7fdJ�| ���D��}5|�d(d��|r JdK|�����|�tpD]}6|6| vsJdL|6�dM�����tsdUid�7�d| �d | �d|�d|�d|�d |�dA|*�dD|,�d|�d|�d|�d|�d|�d|�dN|�d| �dO|0�dP|1�dQ|2�dR|3�dS|4�d!|�dT|��|5fS)Vzp Parse a NativeFunction from a dictionary as directly parsed from native_functions.yaml r-z not a str: r!)�namespaced_entity� max_level�aten)�defaultr@r.Fr3r(r�r)zillegal variant r4z not a bool: r5r/Tr0Nzillegal device_check: r;r<z::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 functionr1z&functions in modules cannot be methodsr2r?rF�pt2_compliant_tagrz illegal tag )�cpp�dispatchzncannot 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.�)rM�atz::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 table�new_�_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;rXc��g|]D}|tjks0|tjks |tjks|tjk�B|��ESr%r�)r2�ds rr4z,NativeFunction.from_yaml.<locals>.<listcomp>s]��" �" �" ���K�9�9�9��K�F�F�F��K�9�9�9��K�E�E�E� � F�E�Er�aHcannot 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 onlyr8r*c�B�g|]}t�|����Sr%)r7rH�r2�xs rr4z,NativeFunction.from_yaml.<locals>.<listcomp>5s&��I�I�I�A�,�$�$�Q�'�'�I�I�Irr: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 c�*��i|]\}}|�j|i��Sr%r;)r2rFrGr-s �r� <dictcomp>z,NativeFunction.from_yaml.<locals>.<dictcomp>|s%���K�K�K�$�!�Q�A�� �1�~�K�K�Krzleftover entries: z+if structured_delegate, then must not have z* in dispatch dictionary (it is delegated!)r6rArBrCrDrEr+r%):�copy�pop� isinstancer"r�from_namespaced_entity�get_cpp_namespacer,rH� entity_name�list�set�boolr�r�r'r(r)rDr rBr#r7r>r��len� torchgen.apirQ�dictrCr8�strip� dispatch_keysrJr�rqr<�keys�supports_symint� startswith�endswith� arguments�tensor_options�has_tensor_arg�DEFAULT_KERNEL_NAMESPACErtrrr9rr�torchgen.api.ufunc�api�ufuncr��schema_kernel_namersr�r*)8rGr6rHrI�e�funcs�namespace_helperr+�cpp_no_default_args_listr@r.� variants_sr3rGr4r5r/�device_check_sr0r;�structured_delegate_sr<r=r1r2�precomputed_dictr?�tags_inprF�trQ� raw_dispatchrR�num_dispatch_keys�%redundant_composite_implicit_autograd�ksrF� dispatch_key�kernel_namespacer<�composites_in_dispatch� autogen_strr8�raw_ufunc_inner_loopr:�vo� ufunc_keyr{rArBrCrDrE�backend_metadata�keyr-s8 @r� from_yamlzNativeFunction.from_yaml:s���� �G�G�I�I�����f� � ���%��%�%�<�<�'<�U�'<�'<�<�<�%�*�A�#�q� � � ��%�6�6�v�6�F�F� ��#�#�$4�$@�A�A��#$�5�5�)>��#C�#C� ��2�D�9�9�9�9�9�!�":�;�;��,-�E�E� /��- �- �)��;�T�B�B�B�B�B��U�U�:�z�2�2� ��*�c�*�*�*�*�*�!$�����!�!�$�'�'� =� =�A��J���� � �W�-�.�.�.�.��h���� � �W�^�,�,�,�,�$�%;��%;�%;�<�<�<�%&�U�U�+G��%O�%O�"�� &�� � � 7� 7� 6�4� 6� 6� 7� 7� ��U�U�#7��?�?���,�d�3�3�X�X�5X�DV�5X�5X�X�X�3��u�u�^�T�2�2� ��,��-�-�L�L�/L�l�/L�/L�L�L�-����~�t�4�4���%�� �C�* �* �%�%� )�� )� )�&�%� � � "�n��8S�&S�&S�&S� 4�N� 4� 4�'T�&S� S� � !�*�4�L�L�*�>�:�L��U�U�<��/�/� ��*�d�+�+�H�H�-H�J�-H�-H�H�H�+� !���&;�T� B� B��$�,� � !�3�1 �1 �,�,� 0�.� 0� 0�-�,� �%�,��<Q�0Q�0Q�0Q� ?�1R�0Q�Q�7;�� � ,�".�"4�"4�5J�"K�"K� ��e�e�$9�4�@�@��"�*�j� ��/ �/ �*�*� .�,� .� .�+�*� �#�*�d�:M�.M�.M�.M� ?�/N�.M�M� ���o�t�4�4� ��$� � �3�) �) �$�$� (�� (� (�%�$� � � !�W�^�8�%C�%C�%C� 3�&D�%C� C��E�E�"5�t�<�<�� �(�J� �s�- �- �(�(� ,�*� ,� ,�)�(� ��5�5���5�5���'�:��+=�+=�+=�=�<L�V�j�&�&�'7�8�8�8�RV� ��5�5���$�$�� �h�� $� $� "� �z�H��(�D�)�)�)�)�)� �� � �#6�*�#D�#D� �O�O�/� 0� 0� 0������ 9� 9�A��z�?�?�Q�&�&�&�&��J������� � � � �$�%7�A�%7�%7�8�8�8�$�$�$�$�$�$��u�u�Z��.�.� ��#�z�,��'E�'E�#�#�q�#�#�E�79��!"�� � #�1� � �?� � �1�5:� 1�%�+�+�-�-�& E�& E���A���#�#��!�����D�D�C�B�C�C�\�C�C�D�D��"��s���E�E�D�a�D�D�l�D�D�E�E�����#���E�E�A�#.�#4�#4�Q�W�W�Y�Y�#?�#?�L�%��*�%�"�!�|�{�'B�'B� �'�=�8�8�8�;� �;�;��;�;�;�9�8�8� (7�'M��Q�(�(�(�$�(8�'I�'I�RV�'I�'W�'W�$�.=�/�;�#-�$E�6�|�D�D�'7�*�'D� .�.�.�H�\�*�%� �(M�M�M�����$���/�/�@D�=��;E�F"�Q�&�&�+P�&�&��'�&��$� ��=�=�?�?�{�'L�&M�M�M��K�A�B�R�R�T�T�N�$��)�)�)�7�dg�dl�dl�mq�dr�dr�7�7�#�K�$I�J�7�7�7�*�)�*��� � 3� ;��t�y�~�&�&�D�����'�'� ��=�=��)�)� � �N�1� � !�N�9�9�;�;� � �)�D�)�)�)� � ��?N�������5�@X�?�?�?�H�[�:� ;�" �" ��" �" �" ���)�*�*�a�/�/� �&� '� '�1� ,� ,��B�-�.�.��A�)�*�*�*� r� *�*�  �"�e�e�I�r�*�*� ��+�s�+�+�+�+�+��b� � � �B�I�I��1B�1B�4�1H�1H�I�I�I� � !�u�u�%7��<�<���� �*�C� 0� 0� �1?�1E�1E�$�h�&6�2�2� �X�-� .� .��,�d� 3� 3� �-�3�3�5�5� R� R���2�� �?�?��!�!�S�)�)�T�T�+T�QR�+T�+T�T�T�)�!�"�c�*�*�W�W�,W�TU�,W�,W�W�W�*�$�N�N�1�-�-� �.<�.B�.B�2�y�.Q�.Q� ��+�+�  R�!�K�5I�K�K��� � � �� 9� 9�9� 9� 9�:� /� .� .� .� .� .� .� .� .� 3� � � � ��0�0�0�V� �V�V�1�0�0�)8� �3�3�D�,�G�G�#�":�*�*�*���&�&� � ��K�K�� � ���K�$I�#J�J���M�M�O�O��E�F�G���M�M�O�O��9��E��� � � 1�X� =� /� � =�� I� =� � 1�X� =� /� � >�(� J� >�L�K�K�K�(�.�.�:J�:J�K�K�K�� ���j�$�����.�.�.�1�.�.�.�.�u� � *�/� � ���(�*�*�*�)�#�)�)�)�+�*�*�*� � � � ��T� �2S�2S� �"�� �&�:�  � %8�$7�  � %8�$7�  �(�K� � �� �"2�!1� �,F�+E� �$6�#5� �,�m� �#4�"3� �*�\� �*�\� � �C�! �"%8�$7�# �$(�K�% �&8^�7]�' �(Fz�Ey�) �*8^�7]�+ �,G|�F{�- �.�T�/ �0$�)�1 �4 �7 � rc�J�|jr Jd���|js Jd���dS)NzMThis function is structured, but there was no valid functional variant of it.z�This 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 r�validate_unstructuredz$NativeFunction.validate_unstructured�sT���?� � � 1� � �"��'� � � e� � �'� � rc��|jjjr |jtjhks Jd���|jrB|j���tjks Jd���|j s Jd���|j rB|j���tjks Jd���|j s Jd���|jr|j r Jd���d�|j� ��D��}t� |j|��}t|��dks Jd|�����|j�|js Jd ���t#|jj���d ��r|jt*jks Jd ���d t#|jj��vs�d t#|jj��vs(t/d�|jjjD����r;dt#|jj��vr t#|jjj��dvs|jj���r,d|jvs!Jt#|jj�����dSdS)Nz�Native 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 functionc�*�h|]}|j� |j��Sr:)rOr<�r2�as r� <setcomp>z/NativeFunction.__post_init__.<locals>.<setcomp>�s(�� � � ��!�)�BW�A�F�BW�BW�BWrrzInvalid 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 enabled�rand�dropoutc3�(K�|] }d|jvV��dS)r�Nr;�r2�args r� <genexpr>z/NativeFunction.__post_init__.<locals>.<genexpr>�s:������25� �S�X�-������r�backward)�_cudnn_init_dropout_state�nondeterministic_seeded)r-ru�outr3r'r(r;�kind� SchemaKindr/r<�schema_order_argumentsrj� differencer@rlr=r"r<rsr0r r"�any�flat_all�has_generator_argrF)r�defaulted_arguments� invalid_argss r� __post_init__zNativeFunction.__post_init__�s��� �9� � "� ��=�W�%5�$6�6�6�6�[�7�6�6� �?� L��9�>�>�#�#�z�~�5�5�5�K�6�5�5� �!� L� L�K� L� L�!� � #� L��9�>�>�#�#�z�~�5�5�5�>�6�5�5� �!� L� L�K� L� L�!� �O� M� $� 8� M� M� L� M� M� � � � �I�<�<�>�>� � � ���~�~�d�&>�@S�T�T� ��<� � �A�%�%�%�'U�|�'U�'U�%�%�%� � #� /��� F� F�E� F� F�� �t�y�~� � � )� )�*� 5� 5� ��$��(?�?�?�?�9�@�?�?� �c�$�)�.�)�)� )� )���T�Y�^�!4�!4�4�4����9=��9L�9U������5� �c�$�)�.�&9�&9�9�9��� ��+�,�,�4Q�Q�Q��y�"�4�4�6�6�R�-�� �9�9�9�3�t�y�~�;N�;N�9�9�9�9�9� R�Qrc�H�|jp |jp|jp |jo|jSr:)rBrDrErCrs r�has_composite_kernelz#NativeFunction.has_composite_kernel�s@�� � 7� J��:� J��I� � � 7� J��I�  rc�d�|jj}t|��dkotd�|D����}d|jvo9t |jj��dkot |jj��dk}td�|j���D����}|p|p|S)Nrc3�BK�|]}|jduo |jj V��dSr:�� annotation�is_write�r2r�s rr�z,NativeFunction.is_view_op.<locals>.<genexpr> sG����5 �5 �GH�A�L�� $� B�Q�\�-B�)B�5 �5 �5 �5 �5 �5 r� inplace_view�resize_� resize_as_c3�DK�|]}|jduo d|jjvV��dS)N�*)r��alias_set_after)r2�inps rr�z,NativeFunction.is_view_op.<locals>.<genexpr>sL���� � �� �N�$� &� P�3�#�.�2P�+P� � � � � � r)r-�returnsrlr�rFr"r<r�)r�rets�is_non_mutating_view�is_inplace_view�is_wildcard_views r� is_view_opzNativeFunction.is_view_ops����y� ��"�4�y�y�1�}� ��5 �5 �LP�5 �5 �5 �2 �2 �� �d�i� '� 4��D�I�N�#�#�y�0� 4��D�I�N�#�#�|�3� � � � ��y�7�7�9�9� � � � � ��$�J��J�:J�Jrc��|jr-|jjjjrd|jvsJ�t jS|jr t jSt jS)Nr�) r�r-r<�inplacerFr%r'r&r(rs r�view_schema_kindzNativeFunction.view_schema_kindsU�� �?� 3�t�y�~�2�:� 3�!�T�Y�.�.�.�.�!�2� 2� �?� /�!�*� *�!�.� .rc�.�|jjjjSr:)r-r<�basers r� root_namezNativeFunction.root_name"s���y�~�"�'�'rc�"�|jp|jduSr:r�rs r�part_of_structured_groupz'NativeFunction.part_of_structured_group&s����F�$�":�$�"F�Frr:�rN)rr r!r"r#rkr r r r'r rrr��objectr8r r�r�r��propertyr�r�r%r�r�r�r%rrr*r*�s������� �N�N�N� ����(,�+�+�+�����"�!�!�!��C�=� � � � ��}�$�$�$��'�l���� !%�$�$�$� ���� �O�O�O��.� !�!�!�!��8�%5�5�6�6�6�6�����"�.�1�1�1�1� "�#��&�&�&��,�'�'�'�'��S��!�!�!�����-1�0�0�0�:>�>�>�>�,0�0�0�0�;?�?�?�?� �c�(�N�N�N�� 37� l �l � ��f�� �l � �l ���H�l ��c�+�.�/� l � ��$�{�D�1R�,S�S�T�T� � l �l �l ��\�l �\  �  �  �  �&=O�=O�=O�=O�~� �d� � � ��X� ��K�D�K�K�K��X�K�"�/�.�/�/�/��X�/��(�3�(�(�(��X�(��G�$�G�G�G��X�G�G�Grr*c�r�eZdZe��Ze��Ze��Ze��Ze��ZdS)r�N) rr r!r� functionalr�r��mutable�scratchr%rrr�r�+sE����������J��d�f�f�G� �$�&�&�C��d�f�f�G��d�f�f�G�G�Grr�c���eZdZUeed<eeed<eeed<eed<edefd���Zdd�Z dd �Z de efd �Z ede fd ���Zed eeefdedfd���ZdS)�NativeFunctionsGroupr�r�r�r�rc��|jjSr:)r�r;rs rr;zNativeFunctionsGroup.structured@s���x�"�"rNc ��|jj���}|���D]�}||j���kr,t d|�d|j��������|j|jkr.t d|jjj�d|jj�������|jj� ��tjksJ�|jj� ��tjksJ�|jj |jj ksJ�|j �J|j j� ��tj ksJ�|j j |jj ksJ�|j �g|j j� ��tj ksJ�|j j |jj ksJ�|jjjjjsJ�|jr�|jjs |jjrJ�|jj|jjjks:J|jjj�d|jj�d|jjj�����|j �!|j j|jjjksJ�t%d�|���D����}d�d �|D����}t)��}|���D]&}|�d �|jD�����'d�d �t%|��D����}t/|��d krBt/|��d kr/t1d |�d|�dt3|jj�������||krt1d |�d|�d|�d����dS)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 c�R�g|]$}d|jv� t|jj����%S)� generated)rFr"r-r<)r2�fs rr4z6NativeFunctionsGroup.__post_init__.<locals>.<listcomp>ps0�� Q� Q� Q�!�;�!�&�;P�;P�S���� � �;P�;P�;Prr�c3�4K�|]}t|��V��dSr:�r"r_s rr�z5NativeFunctionsGroup.__post_init__.<locals>.<genexpr>rs(����%D�%D��c�!�f�f�%D�%D�%D�%D�%D�%Drc3�4K�|]}t|��V��dSr:r�)r2�ops rr�z5NativeFunctionsGroup.__post_init__.<locals>.<genexpr>us(����)F�)F�b�#�b�'�'�)F�)F�)F�)F�)F�)Frc3�4K�|]}t|��V��dSr:r�r_s rr�z5NativeFunctionsGroup.__post_init__.<locals>.<genexpr>vs9����/ �/ ��C��F�F�/ �/ �/ �/ �/ �/ 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: �')r�r-� signature� functionsrDr;r�r�r<r�r�r+r�r��functional_overloadrBrCr<�sortedr�rjr�r8rl� RuntimeErrorr")r�test_sigr�� generated_fns�generated_fns_str�expected_generated_fns�expected_generated_fns_strs rr�z"NativeFunctionsGroup.__post_init__Esf��#'�?�#7�#A�#A�#C�#C�����!�!� � �A��1�6�+�+�-�-�-�-�$�_�<D�_�_�JK�&�JZ�JZ�J\�J\�_�_���� ��!�"<�<�<�$�I�"&�(�-�"4�I�I�;<�6�;�I�I����=� ��#�(�(�*�*�j�.C�C�C�C�C��x�}�!�!�#�#�z�~�5�5�5�5���(�D�H�,>�>�>�>�>� �<� #��<�$�)�)�+�+�z�/A�A�A�A�A��<�)�T�_�-F�F�F�F�F� �<� #��<�$�)�)�+�+�z�/A�A�A�A�A��<�)�T�_�-F�F�F�F�F��?�'�,�1�E� E� E�E� �?� N��H�C� ���U� � �V��?�6�$�(�-�:L�L�L�L��?�'�,�C�C�D�O�<_�C�C�.2�h�m�.@�C�C�M�L�L��|�'��|�7�4�8�=�;M�M�M�M�M�� Q� Q�t�~�~�'7�'7� Q� Q� Q� � � �!�I�I�%D�%D�m�%D�%D�%D�D�D��+.�5�5�����!�!� G� G�A� "� )� )�)F�)F�A�I�)F�)F�)F� F� F� F� F�%)�Y�Y�/ �/ �"�#9�:�:�/ �/ �/ �& �& �"� �%� &� &�!� +� +��M�0B�0B�Q�0F�0F��j�?P�j�j�,=�j�j�WZ�[\�[a�[f�Wg�Wg�j�j��� � &�):� :� :��N�?P�N�N�;L�N�N�0J�N�N�N��� � ;� :rr,c�>�|jj���Sr:)r�r-r�rs rr�zNativeFunctionsGroup.signature�s���x�}�&�&�(�(�(rc#�rK�|jV�|jV�|j� |jV�|j� |jV�dSdSr:)r�r�r�r�rs rr�zNativeFunctionsGroup.functions�sY�����o�����h���� �<� #��,� � � � �<� #��,� � � � � � $� #rc��|jjSr:)r�r�rs rr�zNativeFunctionsGroup.root_name�s ����(�(rr\c��|sJ�t|��dkrdSt|��}|�tjd��}|�tjd��}|�tjd��}|�tjd��}|rJ�|�J�|�dSt||||���S)Nr!)r�r�r�r�) rlrnrdr�r�r�r�r�r�)r\r�r�r�r�s r� from_dictzNativeFunctionsGroup.from_dict�s������q� �q�6�6�Q�;�;��4� ��G�G���U�U�:�0�$�7�7� ��%�%� �*�D�1�1���%�%� �*�D�1�1���e�e�J�N�D�)�)��� � �u��%�%�%� �;��4�#�!����  � � � rr��rr,)rr r!r*r#r r�rkr;r�r�rr�r"r�r�rr�r�r%rrr�r�9s%����������� �n� %�%�%�%� �n� %�%�%�%� ���� �#�D�#�#�#��X�#�?�?�?�?�B)�)�)�)��8�N�3������)�3�)�)�)��X�)�� � � �N�*� +� � �(� )� � � ��\� � � rr�c�:�eZdZUeed<eed<eed<defd�ZdS)rJrWr;rXrc��d|jvS)N�_symint)rWrs rrrzBackendMetadata.supports_symint�s���D�K�'�'rN)rr r!r"r#rkrrr%rrrJrJ�sX������� �K�K�K� ��������(��(�(�(�(�(�(rrJc�^�eZdZUeed<eeed<eed<edededdfd���Z dS)r9r<�supported_dtypesr�r@rc�&�|�dd��\}}|ddksJ�|ddksJ�t��}|dd��d��D]}|t�|��z}� t |||���S) N� r!r�(������)r�)r<r�r�)r�rr�r�r9)r@r�r<�supported_dtypes_strr�rFs rrHzUfuncInnerLoop.parse�s���%*�[�[��a�%8�%8�"��"�#�A�&�#�-�-�-�-�#�B�'�3�.�.�.�.�3=�<�<��%�a��d�+�1�1�$�7�7� 8� 8�A� � � 4� 4�Q� 7� 7� 7� � ���(8�I� � � � rN) rr r!r"r#rr�rr�rHr%rrr9r9�sr������� �I�I�I� ��,�,�,�,������  �S�  �X�  �2B�  �  �  ��\�  �  �  rr9c �*�eZdZUeed<eed<eed<eed<edefed<edeeedeffdeeedeffd d fd ���Z d e d e fd �Z d e e e fd efd�Zd e e e fd eefd�Zd eefd�Zd S)� BackendIndexr��use_out_as_primaryr/�externalr7�index� parent_index� child_indexrNc��|���D]D\}}|���D]*\}}|||vsJd|�d|�����||||<�+�EdS)Nzduplicate operator z for dispatch key )rC)rrrFrG�op_name�metadatas r� grow_indexzBackendIndex.grow_index�s���  �%�%�'�'� 4� 4�D�A�q�%&�W�W�Y�Y� 4� 4�!����<��?�2�2�2�G��G�G�A�G�G�3�2�2�+3� �Q���(�(�  4� 4� 4r�gc�,�|jr|jS|jSr:)rr�r�)rr s r�primaryzBackendIndex.primary�s�� � "� ��5�L��<� rc�4�|�|��}|duSr:)� get_kernel)rr �ms r� has_kernelzBackendIndex.has_kernels�� �O�O�A� � ����}�rc���t|t��r|}n:t|t��r|�|��}nt |��|jj|jvrdS|j|jjSr:)rer*r�r rr-r<r)rr r�s rrzBackendIndex.get_kernelss�� �a�� (� (� ��A�A� ��/� 0� 0� �� � �Q���A�A� ��O�O�O� �6�;�d�j� (� (��4��z�!�&�+�&�&rc�B�|jrt|j���d�SdS)N�NativeFunctions)rr"r�rs r�native_function_class_namez'BackendIndex.native_function_class_names-�� �=� ��$�+�,�,�=�=�=� =� �4r)rr r!r8r#rkrrJr�r r�r*r rrr rr"rr%rrrr�s`��������������������N�N�N� ���/� 0�0�0�0�� 4��;��^�_�-L�(M�M�N� 4��+�t�N�O�,K�'L�L�M� 4� � 4� 4� 4��\� 4� �-� �.� � � � � �E�.�2F�"F�G��D����� '��~�';�;�<� '� �/� "� '� '� '� '��H�S�M������rrc �p�eZdZUded<ded<eded<edefd���Zded fd �Z e j d ��Z e d eddfd ���Zdefd�Zd d�Zdefd�Zdefd�Zdefd�Zdeeefd�Zdddd�dedededdfd�Zd!d�Zd"d�Zedefd���Zdefd�Zdefd�ZdS)#r,r7r<� Argumentsru)�Return.r�rc�h��dddtfd��t�fd�|jjD����S)Nr��Argumentrc�,�|j�dS|jjS�NFr�)r�s rr�z+FunctionSchema.is_mutable.<locals>.is_write`s���~�%��u��>�*� *rc3�.�K�|]}�|��V��dSr:r%)r2r�r�s �rr�z,FunctionSchema.is_mutable.<locals>.<genexpr>gs+�����@�@�1�8�8�A�;�;�@�@�@�@�@�@r)rkr�rur�)rr�s @r� is_mutablezFunctionSchema.is_mutable^sO��� +�*� +�� +� +� +� +��@�@�@�@���(?�@�@�@�@�@�@rrc�j�tj|jj|jj|jj��Sr:)� itertools�chainru�flat_positional�flat_kwarg_onlyr�rs rr�z%FunctionSchema.schema_order_argumentsis.���� �N� *� �N� *� �N� � � � rz3(?P<name>[^\(]+)\((?P<args>.*)\) -> (?P<returns>.*)r-c��tj�|��}t|��dks Jd|�����|d\}}}t�|��}t �|��}t|��}t|||���}t|��|ksJt|���d|�����|S)Nr!zInvalid function schema: r�r<rur�r�) r,�decl_re�findallrlr7rHr� parse_returnsr") r-�decls�ops�args� return_declr<rur�r�s rrHzFunctionSchema.parsers����&�.�.�t�4�4���5�z�z�Q���� B�D� B� B����!&�q����T�;��!�!�#�&�&���O�O�D�)�)� �� �,�,�� �� �7� K� K� K���1�v�v��~�~�~�#�a�&�&�4�4�d�4�4�~�~�~��rc�>�td�|jD����S)Nc3�@K�|]}|j� |jj�|V��dSr:r�r�s rr�z5FunctionSchema.returns_are_aliased.<locals>.<genexpr>�s@���� � ���|�'�A�L�,A�'� �'�'�'�'� � r)r�r�rs r�returns_are_aliasedz"FunctionSchema.returns_are_aliaseds2��� � ��\� � � � � � rNc�d���t|jj|j��D]\}�|j�jks Jd���� |jjD]<�t �fd�|jD����rJdt|��������=t|jj��d�|jj D��z}d�|jD��}d�|jD��}t|��dks-t|��dksJdt|�������|D]'�t �fd �|D����s Jd ����(|jjr�t d �|jjD����r#t|j��dks Jd ���nCtd �|jjD����t|j��ks Jd���|j j j r�|jj }|r|jjr|jjjsJ�|jjt#t$j��kr;t|j��dkr |jdj|jjksJ�nt|j��dksJ�|jj�<|���t,jksJdt|�������|���r<|���t,jksJdt|�������dSdS)NzsOut arguments must have matching return Tensor; furthermore, the ith-argument needs to correspond to the ith returnc3�8�K�|]}�j|jkV��dSr:�r��r2r�r�s �rr�z/FunctionSchema.__post_init__.<locals>.<genexpr>�s=�������12�� �� �,������rz^If you have a schema with mutable positional args, we expect them to not be returned. schema: c�(�g|]}|jdk� |��Srr;r�s rr4z0FunctionSchema.__post_init__.<locals>.<listcomp>�s+��3 �3 �3 ��S�X��=O�=O�C�=O�=O�=Orc�8�g|]}|j� |jj�|��Sr:r��r2�rets rr4z0FunctionSchema.__post_init__.<locals>.<listcomp>�s4�� � � ���~�)�c�n�.E�)� �)�)�)rc�8�g|]}|j� |jj�|��Sr:r�r6s rr4z0FunctionSchema.__post_init__.<locals>.<listcomp>�s4�� � � ���~�%�S�^�-D�%� �%�%�%rrzYNativeFunctions must have either only mutable returns, or only immutable returns. Found: c3�8�K�|]}�j|jkV��dSr:r2)r2r�r7s �rr�z/FunctionSchema.__post_init__.<locals>.<genexpr>�s,�����P�P�C�s�~���7�P�P�P�P�P�Prz�All mutable returns must be aliased either to a keyword argument, or to "self". Did you forget to mark an out argument as keyword-only?c3�ZK�|]&}|jttj��kV��'dSr:)�type�BaseType�BaseTy�Tensorr�s rr�z/FunctionSchema.__post_init__.<locals>.<genexpr>�s3����Q�Q��1�6�X�f�m�4�4�4�Q�Q�Q�Q�Q�Qrz3out= ops that accept tensor lists as out arguments c�F�g|]}|j�d���|��S�� _scratch_�r<rsr�s rr4z0FunctionSchema.__post_init__.<locals>.<listcomp>�s>������"�x�2�2�;�?�?�����rzMMust return as many arguments as there are out arguments, or no return at allr!z�Found 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: z�Found 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: )�ziprur�r�r��post_self_positional_mutabler�r"rir"rlr<r��self_arg�argumentr�r;r<r=r>rvr�r�r��is_functional_fn)rr�� out_and_self�mutable_returns�immutable_returns�self_ar�r7s @@rr�zFunctionSchema.__post_init__�s�����D�N�.�� �=�=� � �H�C���>�S�^�3�3�3�I�4�3�3�3� ��<� |� |�A������6:�l������ |� |�{�ps�tx�py�py�{�{� |� |�� |��D�N�.�/�/�3 �3 ��>�9�3 �3 �3 � � � � ��|� � � ��  � ��|� � � �� �� � �A� %� %��->�)?�)?�1�)D�)D�)D� r�gj�ko�gp�gp� r� r�*E�)D� D�"� � �C��P�P�P�P�<�P�P�P�P�P� � �J� � �P� � �>� � c� �Q�Q�d�n�>P�Q�Q�Q�Q�Q� c��� �%�%��*�*�*�H�+�*�*�b����#'�>�#5������ ��L��� ���c���� �9�>� !� .��^�,�F�� ��O�.� ��O�.�7� � �8���#�x�� �'>�'>�>�>��� �%�%��*�*�� �Q��2�f�o�6P�P�P�P�Q�P� �4�<�(�(�A�-�-�-�-� �>� (� 4��9�9�;�;�*�"7�7�7�7�'��t�9�9�'�'�8�7�7� � � � "� "� ��9�9�;�;�*�"7�7�7�7�'��t�9�9�'�'�8�7�7� � �7�7rc��d|jjvS)Nr��r<� overload_namers rrGzFunctionSchema.is_functional_fn�s���t�y�6�6�6rc�4�t|jj��Sr:)rkrur�rs r� is_out_fnzFunctionSchema.is_out_fn�s��6�D�N�&�'�'�'rc��t|jj��}td�|jjD����}|jjj}t d�|jjD����}|r|rJ�|r tjS|r|s Jd���tjS|r|r Jd���tjS|r tj Stj S)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. c�F�g|]}|j�d���|��Sr@rBr�s rr4z'FunctionSchema.kind.<locals>.<listcomp>s-�� S� S� S�S�#�(�2E�2E�k�2R�2R� S�S� S� S� Src3�@K�|]}|jduo |jjV��dSr:r�r�s rr�z&FunctionSchema.kind.<locals>.<genexpr>sG���� � �� �L�� $� >���)>� � � � � � rzFinvariant: 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!) rkrur�r<r�r��post_self_positionalr�r�r�r�)r�is_out� is_scratch� is_inplacers rr�zFunctionSchema.kind s���d�n�(�)�)��� S� S�D�N�.� S� S� S� � � ��Y�^�+� �� � ��^�8� � � � � � ��*�z�*�*�*� � )��%� %� � )�� X� X�W� X� X���%� %� � )�� |� |�{� |� |���>� !� � )��%� %��(� (rc�|��g}|jD]���fd�|jjD��}t|��dkr|�d���Ct|��dkr!|�|dj���wd�d�|D����}td�j�d|�d����|S) Nc�B��g|]}|j� |j�jk�|��Sr:r2)r2r�r�s �rr4z7FunctionSchema.aliased_return_names.<locals>.<listcomp>9s9��������<�+�� �� �0L�0L��0L�0L�0Lrrr!r�c3�$K�|] }|jV�� dSr:r;r�s rr�z6FunctionSchema.aliased_return_names.<locals>.<genexpr>Cs$����)G�)G�Q�!�&�)G�)G�)G�)G�)G�)GrzFound a return (z)that aliases multiple inputs (r�)r�rur�rlr�r<r�rD)r�outs� aliased_args� aliased_namesr�s @r�aliased_return_namesz#FunctionSchema.aliased_return_names6s����$&���� � �A�������0����L� �<� � �A�%�%�� � �D�!�!�!�!��\�"�"�a�'�'�� � �L��O�0�1�1�1�1� $� � �)G�)G�,�)G�)G�)G� G� G� �$�^�q�v�^�^�m�^�^�^����� rF)� strip_default�strip_view_copy_name�keep_return_namesr_r`rac �p���dtdtf�fd� }�jjj}|rW|�d��r|�dd��}n+|�d��r|�dd��}t ��fd �t j�jj ��jj j gng�jj �jj ��D����}t t|�j����}||z}�j�|� ��} t!�j��d kr;t"�t!| ���d 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 r�rc�D��t�r|jnd|jd���S)N�r<r;r�)rr<r;)r�ras �r�strip_ret_annotationz6FunctionSchema.signature.<locals>.strip_ret_annotationus0����0�:�Q�V�V�d��V����� r�_copyr*�_scatter�scatter�inversec3����K�|]Z��j� �jj�t�fd��jD�����5t �r �j�d�nd�jd���V��[dS)Nc3�8�K�|]}�j|jkV��dSr:r2r3s �rr�z5FunctionSchema.signature.<locals>.<genexpr>.<genexpr>�s,�����K�K��� �� �4�K�K�K�K�K�Kr�_outrd)r�r�r�r�rr<r;)r2r�rars @��rr�z+FunctionSchema.signature.<locals>.<genexpr>�s�������, �, ���|�'�� �%�(��K�K�K�K�d�l�K�K�K�K�K�(� �(9�C���_�_�_�_�t��V�� � � �(�'�'�'�%, �, rN�r_z bernoulli.pzfloat pz float p=0.5F�r�r�� dunder_methodrMr%)rr<r�rt�replace�tupler r!rurErFr�rT�mapr�r�r"rrHr,r7�BaseOperatorNamero) rr_r`rare� base_name�returns_from_mutable_inputs�original_returnsr��args_sigs ` ` rr�zFunctionSchema.signatureIs�����X �F� �v� � � � � � ��I�N�'� � � D��!�!�'�*�*� D�%�-�-�g�r�:�:� � ��#�#�J�/�/� D�%�-�-�i��C�C� �',�, �, �, �, �, ��_��>�*�6���(�1�2�2����"���3���, �, �, �' �' �#�,!��%9�4�<�!H�!H�I�I��"�%@�@���>�+�+�-�+�H�H�� �t�y�>�>�]� *� *� ���s�8�}�}�'<�'<�Y� �'V�'V�W�W�H���%�"�!�"&�)�.�">���� !� �����  �  �  � rc�.�|�d���S)NT�r`)r�rs r�view_signaturezFunctionSchema.view_signature�s���~�~�4�~�8�8�8rc�:�t||j|j���S)Nr%)r,rur�)rr<s r� with_namezFunctionSchema.with_name�s&�����n��L� � � � rc�p�|���tjtjtjfvSr:)r�r�r�r�r�rs r�modifies_argumentsz!FunctionSchema.modifies_arguments�s$���y�y�{�{�z�1�:�>�:�CU�V�V�Vrc�4�|j���Sr:)ru�has_symint_argrs r� has_symintzFunctionSchema.has_symint�s���~�,�,�.�.�.rc��t|j��}t|j��dkrt|jd��}n3dd�t t|j����zdz}|j�d|�d|��S)Nr!rr�r�r�z) -> )r"rurlr�r�rrr<)r�all_arguments_strr�s rrzFunctionSchema.__str__�s������/�/�� �t�|� � �� !� !��$�,�q�/�*�*�G�G��D�I�I�c�#�t�|�&<�&<�=�=�=��C�G��)�?�?�/�?�?�g�?�?�?rr�r�)r<r7rr,)rr r!r#r r�rkrrr��re�compiler&r�r"rHr/r�rGrPr�r�r r r^r�rzr|r~r�rr%rrr,r,Tse������� ���������=� !�!�!�!� �A�D�A�A�A��X�A� ���(<� � � � ��b�j�O�P�P�G�� �C� �,� � � ��\� � �T� � � � �`�`�`�`�D7�$�7�7�7�7�(�4�(�(�(�(�:')�j�')�')�')�')�Z�d�8�C�=�&9�����,$�%*�"'� e �e �e ��e �#� e �  � e � � e �e �e �e �N9�9�9�9� � � � ��W�D�W�W�W��X�W�/�D�/�/�/�/�@��@�@�@�@�@�@rr,c�z�eZdZUeedfed<eed<eedfed<ededdfd���Zdefd�Z d S) � Annotation.� alias_setr�r��annrc��tjd|��}|� Jd|�����|�d��|�d��r|�d��ndz}t|�d����}|�d��dk}|r!t |��dkrJd |�d ����|�d ��r5t|�d ���d����n t��}t |��dkr!t |��dkrJd |�d ����t |||� ��}t|��|ksJ|�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.�zSbefore alias set and after alias set cannot be larger than 1 at the same time, got )r�r�r�r�)r��match�grouprqr�rlr�r")r�r� before_aliasr�r�� after_setr�s rrHzAnnotation.parse�s��� �H�J�C� P� P���}�}�D�s�D�D�}�}�}��w�w�q�z�z�1�7�7�1�:�:�%E�Q�W�W�Q�Z�Z�Z�2�F� ��,�,�,�S�1�1�2�2� ��7�7�1�:�:��$�� � I��Y���!�+�+�+� H�#� H� H� H�,�+� �56�G�G�A�J�J�K�E�!�'�'�!�*�*�*�*�3�/�/�0�0�0�E�G�G� � � � � �� !� !�c�)�n�n�q�&8�&8�&8� o�ad� o� o� o�'9�&8� � ��(�I� � � ���1�v�v��}�}�}��o�o��o�o�}�}�}��rc��d�|j��}|jr|�d�}d�|j��}|r|�d�|��}|S)Nr�r�� -> )r�r�r�r�)rr�r�s rrzAnnotation.__str__�sb���H�H�T�^�,�,� � �=� (�$����I��(�(�4�#7�8�8�� � @�$�?�f�?�o�?�?�I��rN) rr r!r r"r#rkr�rHrr%rrr�r��s���������S�#�X������N�N�N��3��8�_�$�$�$�� �3� �<� � � ��\� �D�������rr�c��eZdZededdfd���Zededdfd���Zdefd�Zdddefd�Z defd �Z defd �Z defd �Z defd �Z ded fd�ZdS)�Typer�rc�~�t�|��}t|��|ksJ|�d|�����|S)Nr�)r��_parser")r�r�s rrHz Type.parses9�� �K�K��N�N���1�v�v��{�{�{�q�M�M�a�M�M�{�{�{��rc��tjd|��}|�:tt�|�d������Stjd|��}|�u|�d���"t |�d����nd}tt�|�d����|���Stjd|��}|�"t|�d����S tt|��S#t$r}td|����|�d}~wwxYw)Nz^(.+)\?$r!z^(.+)\[([0-9]+)?\]$r])�elem�sizez-^__torch__\.torch\.classes\.([a-zA-Z0-9_.]+)$zunrecognized type ) r�r�� OptionalTyper�rHr�r$�ListType�CustomClassTyper<r=�KeyErrorr�)r�rr�r}s rr�z Type._parses)�� �H�[�!� $� $�� �=��� � �1�7�7�1�:�:� 6� 6�7�7� 7� �H�+�Q� /� /�� �=�&'�g�g�a�j�j�&<�3�q�w�w�q�z�z�?�?�?�$�D�����A�G�G�A�J�J�!7�!7�d�C�C�C� C� �H�E�q� I� I�� �=�"�1�7�7�1�:�:�.�.� .� @��F�1�I�&�&� &��� @� @� @��7�A�7�7�8�8�a� ?����� @���s�D2�2 E�<E�Ec��t�r:��NotImplementedErrorrs rrz Type.__str__(���!�!r�base_tyr=c��t�r:r��rr�s r�is_base_ty_likezType.is_base_ty_like0r�rc�@�|�tj��Sr:)r�r=r>rs r�is_tensor_likezType.is_tensor_like3����#�#�F�M�2�2�2rc�@�|�tj��Sr:)r�r=� Generatorrs r�is_generator_likezType.is_generator_like6s���#�#�F�$4�5�5�5rc�@�|�tj��Sr:)r�r=�SymIntrs r�is_symint_likezType.is_symint_like9r�rc��t�r:r�rs r� is_nullablezType.is_nullable<r�rr�c��t�r:r�rs r� is_list_likezType.is_list_like?r�rN)rr r!r�r"rHr�rrkr�r�r�r�r�r r�r%rrr�r� s=���������������\�� �@�#�@�&�@�@�@��\�@�$"��"�"�"�"�"�x�"�D�"�"�"�"�3��3�3�3�3�6�4�6�6�6�6�3��3�3�3�3�"�T�"�"�"�"�"�h�z�2�"�"�"�"�"�"rr�c��eZdZe��Ze��Ze��Ze��Ze��Ze��Z e��Z e��Z e��Z e��Z e��Ze��Ze��Ze��Ze��Ze��Ze��Ze��Ze��ZdS)r=N)rr r!rr�r�r>r$�Dimname� DimVector�floatr"rk�Layout�Device� DeviceIndex�Scalar� MemoryFormat�QScheme�Storage�Streamr��ConstQuantizerPtrr%rrr=r=Ds�����������I�����J� �T�V�V�F� �$�&�&�C��d�f�f�G�����I� �D�F�F�E� �$�&�&�C� �4�6�6�D� �T�V�V�F� �T�V�V�F��$�&�&�K� �T�V�V�F��4�6�6�L��d�f�f�G��d�f�f�G� �T�V�V�F� �T�V�V�F�������rr=c�f�eZdZUeed<defd�Zdedefd�Zdefd�Z de dfd�Z defd �Z d S) r<r<rc��|jj�Sr:r;rs rrzBaseType.__str__^s���)�.�"�"rr�c��|j|kSr:r;r�s rr�zBaseType.is_base_ty_likeas���y�G�#�#rc��dSrr%rs rr�zBaseType.is_nullabled����urr�c��dSr:r%rs rr�zBaseType.is_list_likeg����trc�,�|jtjkSr:)r<r=r�rs rr�zBaseType.is_symint_likejs���y�F�M�)�)rN) rr r!r=r#r"rrkr�r�r r�r�r%rrr<r<Zs�������� �L�L�L�#��#�#�#�#�$�v�$�$�$�$�$�$��T������h�z�2�����*��*�*�*�*�*�*rr<c�f�eZdZUeed<defd�Zdedefd�Z defd�Z defd�Z de dfd �Z d S) r�r�rc��|j�d�S)N�?)r�rs rrzOptionalType.__str__ss���)����rr�c�6�|j�|��Sr:�r�r�r�s rr�zOptionalType.is_base_ty_likev����y�(�(��1�1�1rc�4�|j���Sr:�r�r�rs rr�zOptionalType.is_symint_likey����y�'�'�)�)�)rc��dS)NTr%rs rr�zOptionalType.is_nullable|r�rr�c�4�|j���Sr:)r�r�rs rr�zOptionalType.is_list_likes���y�%�%�'�'�'rN)rr r!r�r#r"rr=rkr�r�r�r r�r%rrr�r�os�������� �J�J�J�������2�v�2�$�2�2�2�2�*��*�*�*�*��T�����(�h�z�2�(�(�(�(�(�(rr�c�f�eZdZUeed<defd�Zdedefd�Zdefd�Z defd�Z de dfd �Z d S) r�� class_namerc��d|j��S)zK Return the class name will prefix __torch__.torch.classes z__torch__.torch.classes.)r�rs rrzCustomClassType.__str__�s��<�$�/�;�;�;rr�c��dSrr%r�s rr�zCustomClassType.is_base_ty_like�r�rc��dSrr%rs rr�zCustomClassType.is_symint_like�r�rc��dS)z8 Assume a custom class is not nullable. Fr%rs rr�zCustomClassType.is_nullable�s ���urr�c��dSr:r%rs rr�zCustomClassType.is_list_like�r�rN) rr r!r"r#rr=rkr�r�r�r r�r%rrr�r��s���������O�O�O�<��<�<�<�<� �v��$������������T����� �h�z�2������rr�c�|�eZdZUeed<eeed<defd�Zde de fd�Z de fd�Z de fd�Z dedfd �Zd S) r�r�r�rc�>�|jr|j�nd}|j�d|�d�S)Nr*�[�])r�r�)rr�s rrzListType.__str__�s/��!%��2�$�)�~�~����)�%�%�d�%�%�%�%rr�c�6�|j�|��Sr:r�r�s rr�zListType.is_base_ty_like�r�rc�4�|j���Sr:r�rs rr�zListType.is_symint_like�r�rc�4�|j���Sr:)r�r�rs rr�zListType.is_nullable�s���y�$�$�&�&�&rc��|Sr:r%rs rr�zListType.is_list_like�s��� rN)rr r!r�r#r r$r"rr=rkr�r�r�r�r%rrr�r��s�������� �J�J�J� �3�-����&��&�&�&�&�2�v�2�$�2�2�2�2�*��*�*�*�*�'�T�'�'�'�'��h�z�2������rr�c���eZdZUeed<eed<eeed<eeed<edeefd���Z e deddfd���Z ede fd ���Z defd �Zd S) rr<r;rOr�rc��|jSr:r2rs r� alias_infozArgument.alias_info�� ����rr�c��d|vsJd|�d����|�dd��\}}d|vr@|�d��dksJd|�d����|�d��\}}n|}d}tjd|��}|rg|�d��d vs Jd ���d |�d��z}t �|�d����}n|}d}t�|��}t||||� ��} t| ��|ksJt| ���d |�����| S)Nr�zillegal argument 'r�r!�=z&illegal argument with default value: '�Tensor\((.+)\)(.*)r]�r*r�z[]�,unrecognized alias analysis form with Tensorr>�r<r;rOr�r�) �rsplit�countr�r�r�r�r�rHr�rr") r��type_and_annot�name_and_defaultr<rOr��type_sr�r;r�s rrHzArgument.parse�s����c�z�z�z�6��6�6�6�z�z�z�+.�:�:�c�1�+=�+=�(��(� �"� "� "� �&�&�s�+�+�q�0�0�0�K�8H�K�K�K�1�0�0�,�2�2�3�7�7�M�D�'�'�#�D��G���.��?�?�� � ��;�;�q�>�>�&����>� ��� �� � �A���.�F�#�)�)�%�+�+�a�.�.�9�9�J�J�#�F��J��z�z�&�!�!�� ����!�  � � �� �1�v�v��}�}�}��Q���2�2�S�2�2�}�}�}��rc�,�|jduo |jjSr:r�rs rr�zArgument.is_write�����d�*�G�t��/G�Grc��|j�}|jr%|dvsJ�|�dd|j�d���}|j�|Sd}|jr d|j��}|�d|j�|��S)N�r>zTensor?zTensor[]r>�Tensor(r�r*r�r�)r;r�rpr<rO)rr;� mb_defaults rrzArgument.__str__s����)�~�� �?� H��<�<�<�<�<��<�<��*F�D�O�*F�*F�*F�G�G�D� �9� ��K��J��|� 0�/���/�/� ��4�4�T�Y�4� �4�4� 4rN)rr r!r"r#r�r r�r�r�r�rHrkr�rr%rrrr�s�������� �I�I�I� �J�J�J� �c�]����*��$�$�$�$� ��H�Z�0�����X���$�3�$�:�$�$�$��\�$�L�H�$�H�H�H��X�H� 5�� 5� 5� 5� 5� 5� 5rrc��eZdZUeeed<eed<eeed<edeefd���Z e deddfd���Z ede fd���Z defd �Zd S) rr<r;r�rc��|jSr:r2rs rr�zReturn.alias_infor�rr�c��d|vr|�dd��\}}n|}d}tjd|��}|rg|�d��dvs Jd���d|�d��z}t�|�d����}n|}d}t �|��}t|||���}t|��|ksJt|���d |�����|S) Nr�r!r�r]r�r�r>rdr�) r�r�r�r�r�rHr�rr")r�r�r<r�r�r�r;r�s rrHz Return.parse s!�� �#�:�:�#&�:�:�c�1�#5�#5� �N�D�D� �N��D���.��?�?�� � ��;�;�q�>�>�&����>� ��� �� � �A���.�F�#�)�)�%�+�+�a�.�.�9�9�J�J�#�F��J��z�z�&�!�!�� ���!� � � �� �1�v�v��}�}�}��Q���2�2�S�2�2�}�}�}��rc�,�|jduo |jjSr:r�rs rr�zReturn.is_write?r�rc��|j�}|jr%|dvsJ�|�dd|j�d���}|j�|S|�d|j��S)Nr�r>r�r�r�)r;r�rpr<)rr;s rrzReturn.__str__Csl���)�~�� �?� H��<�<�<�<�<��<�<��*F�D�O�*F�*F�*F�G�G�D� �9� ��K��(�(�T�Y�(�(� (rN)rr r!r r"r#r�r�r�r�r�rHrkr�rr%rrrrs�������� �3�-���� �J�J�J���$�$�$�$� ��H�Z�0�����X����3��8�����\��<�H�$�H�H�H��X�H�)��)�)�)�)�)�)rrc��eZdZUeed<dS)� SelfArgumentrFN)rr r!rr#r%rrr�r�Os������������rr�c�P�eZdZUeed<eed<eed<eed<deefd�ZdS)�TensorOptionsArguments�dtype�layout�device� pin_memoryrc�6�|j|j|j|jgSr:�rrrrrs r�allzTensorOptionsArguments.all^s��� �D�K���d�o�F�FrN)rr r!rr#r rr%rrrrWsj������� �O�O�O� ���� ��������G�X�h�'�G�G�G�G�G�Grrc �j�eZdZUeedfed<eeed<eedfed<eedfed<eeed<eedfed<eedfed<e d e efd ���Z e d e efd ���Z e d e efd ���Z e d e efd ���Ze d e efd���Ze d e eeeeffd���Ze d e eeeffd���Ze d e eeeffd���Ze d e eeeeffd���Zd eefd�Zd efd�Zd efd�Zd efd�Zdd�ded dfd�Zd$d�Zdeed dfd�Zeded eeeeeeeffd���Z eded dfd ���Z!d efd!�Z"d%d#�Z#d"S)&r.�pre_self_positionalrErT�pre_tensor_options_kwarg_onlyrv�post_tensor_options_kwarg_onlyr�rc�r�g}|�|j��|�|j��|Sr:)�extendr"r#�rr7s r� flat_non_outzArguments.flat_non_outys6�� �� � � �4�'�(�(�(� � � �4�'�(�(�(�� rc��g}|�|j��|j�|�|jj��|�|j��|Sr:)r r rEr�rFrTrs rr"zArguments.flat_positional�sU�� �� � � �4�+�,�,�,� �=� $� �J�J�t�}�-� .� .� .� � � �4�,�-�-�-�� rc�$�d�|jD��S)Nc� �g|] }|j� |�� Sr%)r�r�s rr4z:Arguments.post_self_positional_mutable.<locals>.<listcomp>�s��C�C�C�a�� �C��C�C�Cr)rTrs rrDz&Arguments.post_self_positional_mutable�s��C�C�4�4�C�C�C�Crc���g}|�|j��|j�,|�|j�����|�|j��|Sr:)r r rvrr rs rr#zArguments.flat_kwarg_only�s`�� �� � � �4�5�6�6�6� � � *� �J�J�t�*�.�.�0�0� 1� 1� 1� � � �4�6�7�7�7�� rc��g}|�|j��|�|j��|�|j��|Sr:)r r"r#r�rs rr�zArguments.flat_all�sJ�� �� � � �4�'�(�(�(� � � �4�'�(�(�(� � � �4�8����� rc�r�g}|�|j��|�|j��|Sr:)r � positional� kwarg_onlyrs r�non_outzArguments.non_out�s8��LN�� � � �4�?�#�#�#� � � �4�?�#�#�#�� rc��g}|�|j��|j�|�|j��|�|j��|Sr:)r r rEr�rTrs rrzArguments.positional�sR��35�� � � �4�+�,�,�,� �=� $� �J�J�t�}� %� %� %� � � �4�,�-�-�-�� rc��g}|�|j��|j�|�|j��|�|j��|Sr:)r r rvr�r rs rrzArguments.kwarg_only�sT��=?�� � � �4�5�6�6�6� � � *� �J�J�t�*� +� +� +� � � �4�6�7�7�7�� rc��g}|�|j��|�|j��|�|j��|Sr:)r rrr�rs rrz Arguments.all�sH��KM�� � � �4�?�#�#�#� � � �4�?�#�#�#� � � �4�8����� rc�$�d�|jD��S)Nc�B�g|]}|j� |jj�|j��Sr:)r�r�r<r�s rr4z/Arguments.mutable_arg_names.<locals>.<listcomp>�s6�� � � ���|�'�A�L�,A�'� �F�'�'�'r)r�rs r�mutable_arg_nameszArguments.mutable_arg_names�s%�� � ��]� � � � rc�>�td�|jD����S)Nc3�HK�|]}|j���V��dSr:)r;r�r�s rr�z+Arguments.has_tensor_arg.<locals>.<genexpr>��0����F�F�q�1�6�(�(�*�*�F�F�F�F�F�Fr�r�rrs rrwzArguments.has_tensor_arg��"���F�F�D�4E�F�F�F�F�F�Frc�>�td�|jD����S)Nc3�HK�|]}|j���V��dSr:)r;r�r�s rr�z+Arguments.has_symint_arg.<locals>.<genexpr>�r!rr"rs rr�zArguments.has_symint_arg�r#rc�>�td�|jD����S)Nc3�HK�|]}|j���V��dSr:)r;r�r�s rr�z.Arguments.has_generator_arg.<locals>.<genexpr>�s0����I�I�!�1�6�+�+�-�-�I�I�I�I�I�Irr"rs rr�zArguments.has_generator_arg�s"���I�I�t�7H�I�I�I�I�I�IrFrmr_c ����dtdtf�fd� }ttt||j����|j�"t ||jj����ndtt||j����tt||j ����tt||j ����zdt��d���S)Nr�rc�P��t|j|j�s|jndd���S)Nr�)rr<r;rO)r�r_s �r�strip_arg_annotationz1Arguments.signature.<locals>.strip_arg_annotation�s5�����V��V�)6�@�� � �D�� ��� rr%�r rErTr rvr r�) rrrqrrr rEr�rFrTr r )rr_r*s ` rr�zArguments.signature�s��� �H� �� � � � � � �� %��(�$�*B�C�C�!�!��}�(�"�"6�"6�t�}�7M�"N�"N�O�O�O��!&��(�$�*C�D�D�"�"� +0��(�$�*L�M�M�+�+��C�,�d�.Q�R�R�S�S�+T�  �+0�7�7��+ � � � rc ��|j�J�tj|ttj|jjd��������S)Nr2)rE)rE� dataclassesrpr�rFrs r�remove_self_annotationz Arguments.remove_self_annotation�sR���}�(�(�(��"� �!��#�D�M�$:�t�L�L�L��� � � � rr[c�|�t|j��dksJ�tj|t |�����S)Nr)r�)rlr�r-rprq)rr[s r� with_out_argszArguments.with_out_args�sA���4�8�}�}��!�!�!�!��"� ��d� � � � � � rr+c�(�g}g}g}|}|�d��D]p}|s�|dkr||us Jd���|}�t�|��}|j�|jjr ||urn ||ur|}n||usJ�|�|���q|||fS)Nr�r�z:invalid syntax: kwarg-only specifier * can only occur once)r�rrHr�r�r�)r+rrr�� arguments_accr��pargs r� _preparsezArguments._preparse s���%'� �%'� � ��"� ��:�:�d�#�#� '� '�C�� ���c�z�z�!�Z�/�/�/�O�0�/�/� *� ���>�>�#�&�&�D���*�t��/G�*� �J�.�.��"�j�0�0�$'�M��$�C�/�/�/�/� � � �� &� &� &� &��:�s�*�*rc ��t�|��\}}}d}t|��D]\}}|jdkr|}n�|�-|d|�}t ||��}||dzd�} ng}d}|} g} d} g} | } dt dt dttgtffd�}|dt � d ����|d t � d ����|d t � d ����|dt � d����g}d}|t|��kr�|t|��t|��z kr�td�t||||t|��z���D����rO| | usJ�t||||dz||dz||dz���} |t|��z }| } ��| �||��|dz }|t|��k��tt!|��|t!| ��t!| ��| t!| ��t!|�����S)z. Input: 'int x, int y, int z' Nrr!r<�tyrc������fd�S)Nc�J��|j�ko|j�t���fvSr:)r<r;r�)r�r<r6s ��r�<lambda>z/Arguments.parse.<locals>.pred.<locals>.<lambda>O s&���Q�V�t�^�P���2�|�B�?O�?O�:P�0P�rr%)r<r6s``r�predzArguments.parse.<locals>.predN s����P�P�P�P�P� Prrr�rr�rr�rrkrc3�2K�|]\}}||��V��dSr:r%)r2�pr�s rr�z"Arguments.parse.<locals>.<genexpr>] sB��������1��A�a�D�D������rr]rUrr+)rr4� enumerater<r�r"r�rrrkrHrlrrCrr�rq)r+rrr��self_ix�ir�r rErTr rvr �kwarg_only_accr:� predicatess rrHzArguments.parse) s���'0�&9�&9�$�&?�&?�#� �J�����j�)�)� � �D�A�q��v�������� � � �",�X�g�X�"6� �#�J�w�$7�8�8�H�#-�g��k�m�m�#<� � �"$� ��H�#-� �9;�%�;?��9;�&�6�� Q�s� Q�� Q��8�*�d�2B�)C� Q� Q� Q� Q� �D��$�*�*�\�2�2� 3� 3� �D��4�:�:�h�/�/� 0� 0� �D��4�:�:�h�/�/� 0� 0� �D��t�z�z�&�1�1� 2� 2�  � � ���#�j�/�/�!�!��C� �O�O�c�*�o�o�5�5�5���� #�J� �1�q�3�z�?�?�?R�;R�0S� T� T�������*�-J�J�J�J�J�%;�(��m�)�!�a�%�0�)�!�a�%�0�#-�a�!�e�#4� &�&�&�N� ��Z���(�A�%C�N�� � !� !�*�Q�-� 0� 0� 0� ��F�A�)�#�j�/�/�!�!�,� %�&9� :� :��!&�';�!<�!<�*/�0M�*N�*N�)�+0�1O�+P�+P��c� � � � � � rc��g}|�tt|j����|js|jr|�d��|�tt|j����|�tt|j����d�|��S)Nr�r�)r rrr"r"r#r�r�r�)r� all_argumentss rrzArguments.__str__y s���#%� ����S��d�&:�;�;�<�<�<� � � &�4�8� &� � � �� %� %� %����S��d�&:�;�;�<�<�<����S��d�h�/�/�0�0�0��y�y��'�'�'rNc��|j� |jrJ�|j� |jrJ�d�|jD��}t |��dks Jd���dS)Nc�8�g|]}|j� |jj�|��Sr:r�r�s rr4z+Arguments.__post_init__.<locals>.<listcomp>� s4��( �( �( ���|�'�A�L�,A�'� �'�'�'rrzOmutable pre_self_positional arguments are not currently supported in the schema)rEr rvr rl)r�mutable_pre_self_positionalss rr�zArguments.__post_init__� s��� �=� ��/� /� /�/� � � &��:� :� :�:�( �( ��-�( �( �( �$� �,� -� -�� 2� 2� 2� \� 3� 2� 2� 2� 2r)rrr�)$rr r!r rr#r r�rr�r rr"rDr#r�rrrrrr r"rrkrwr�r�r�r.r0r�r4rHrr�r%rrrrbs������� �x��}�-�-�-�-��|�$�$�$�$���#� �.�.�.�.�#(��3��#7�7�7�7��3�4�4�4�4�%*�(�C�-�$8�8�8�8� �x��}� ���� ��h�x�0�����X�� ���(�!3�����X���D�h�x�.@�D�D�D��X�D����(�!3�����X����(�8�,�����X���� �%��,�0F�F�G� H�����X����H�U�8�\�+A�%B�C�����X����H�U�8�5K�+K�%L�M�����X����X�e�H�l�<R�$R�S�T�����X�� �4��9� � � � �G��G�G�G�G�G��G�G�G�G�J�4�J�J�J�J�27�! �! �! �$�! �;�! �! �! �! �F � � � � �$�x�.� �[� � � � ��!+��!+��d�8�n�d�8�n�d�8�n�&T� U�!+�!+�!+��\�!+�F�M �C�M �K�M �M �M ��\�M �^(��(�(�(�(�]�]�]�]�]�]rr) r��sub�mul�div�mod�pow�lshift�rshift�and�xor�orc�h�eZdZUeed<eed<eed<dZeed<ededdfd���Zdefd �Z d S) rsr�r�roFr�r�rc�d��|dksJ�|�d��r Jd���tjd|��}|�Ud}|�d���t �fd�t D����r d}�dd��n0d}�d d ksJ�nd}|��d d kr d}�dd ��nd}d }��|��r!d}�dt |�� ��|s|rJ�nd}t�|||���}t|��|ksJt|���d|�����|S)Nr*rlzs_out suffix is reserved and not permitted for operator names; did you mean to specify an out overload name instead?z ^__([^_]+)__$Tr!c3�*�K�|] }�d|��kV��dS)r?Nr%)r2�nr�s �rr�z)BaseOperatorName.parse.<locals>.<genexpr>� s-�����G�G�q�4�7�q�7�7�?�G�G�G�G�G�GrFrr?r��_� _functional)r�r�ror�r�) rtr�r�r�r��AUGMENTED_ASSIGNMENT_NAMESrlrsr")r�rror��functional_suffixr�r�r�s @rrHzBaseOperatorName.parse� s�����R�x�x�x�x��;�;�v�&�&� � � D� � �&� �H�%�r� *� *�� �=� �M��7�7�1�:�:�D��G�G�G�G�,F�G�G�G�G�G� &����A�B�B�x����� �A�w�#�~�~�~�~�~�!�M��D��B�x�3������C�R�C�y�����*�� �=�=�*� +� +� (�"&� ��1�3�0�1�1�1�1�2�D�%� 4�W� 4� 4�4� 4�"'� � ���'� 3�  � � �� �1�v�v��|�|�|��A���0�0�B�0�0�|�|�|��rc�~�|jr|jrdnd}d|�|j�d�S|jrdn |jrdnd}|j�|��S)Nr?r*�__rUrV)ror�r�r�)rr?s rrzBaseOperatorName.__str__� ss�� � � %��|�+����A�(��(�4�9�(�(�(� (��<�����+��]�]�� ��i�$��$�$� $rN) rr r!r"r#rkr�r�rHrr%rrrsrs� s�������� �I�I�I� �M�M�M�����(!&���%�%�%��/�#�/�,�/�/�/��\�/�b %�� %� %� %� %� %� %rrsc�t�eZdZUeed<eed<ededdfd���Zdefd�Zdefd�Z d d�Z d eddfd �Z d S) r7r<rNrrc���d|vr|�dd��\}}n|}d}tt�|��|���}t |��|ksJt |���d|�����|S)N�.r!r*rMr�)r�r7rsrHr")rr<rNr�s rrHzOperatorName.parse s��� �'�>�>�")�-�-��Q�"7�"7� �D�-�-��D��M� �.�4�4�T�:�:�-� X� X� X���1�v�v�� � � �S��V�V�":�":��":�":� � � ��rc�B�|jr|j�d|j��S|j�S)Nr]�rNr<rs rrzOperatorName.__str__ �0�� � � "��i�6�6�$�"4�6�6� 6��i�>� !rc�B�|jr|j�d|j��S|j�S)NrUr_rs r�unambiguous_namezOperatorName.unambiguous_name& r`rc�v�tt|jjd|jj���|j���S�NFrnrM)r7rsr<r�rorNrs r�remove_inplacezOperatorName.remove_inplace, sE���!��Y�^��"�i�5���� �,�  � � � r�overloadc�l�tt|jjd|jj���|���Srd)r7rsr<r�ro)rrfs r� with_overloadzOperatorName.with_overload6 sB���!��Y�^��"�i�5���� #�  � � � rN)rr7) rr r!rsr#r"r�rHrrbrerhr%rrr7r7 s�������� ����������s��~�����\��"��"�"�"�"�"�#�"�"�"�"�  � � � � �c� �n� � � � � � rr7r�r �bc��|j���tjuo/|�|�� o|�|j��Sr:)r-r�r�r�r)r�r ris r�"gets_generated_out_inplace_wrapperrkA sI�� �� � � � �Z�2�2� '�� � �Q��� � '� �L�L��� &� &�rc��eZdZUeed<eeed<eeed<d d�Zdd�d edeefd �Z e de fd ���Z e defd ���Z dS)�NativeFunctionsViewGroup�view� view_copy� view_inplacerNc��|jjsJ�|j�St|j��r>Jt |jjj���dt|j���d����n�|jjjjj� d��sJ�|jj� ��|jj� d���ksJ�d|jj vsBJt |jjj��t |jj ��f�d����|j �@|jj� ��|j j� ��ksJ�|jj r[|j �T|j j sHJt |jjj���dt |j jj���d ����|jjr[|j �V|j jsLJt |jjj���dt |j jj���d ����dSdSdS) 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.)rfrgTryroz� 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.r�z] 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.)rnr�ro�gets_generated_view_copyr"r-r<�get_view_copy_namer�rtr�rFrprBrCrs rr�z&NativeFunctionsViewGroup.__post_init__` s����y�#�#�#�#� �>� !�/�� �:�:� � ��t�y�~�*�+�+�E�E�&�t�y�1�1�E�E�E� � �:� ��>�&�+�0�5�>�>�?T�U�U� U� U�U��9�>�+�+�-�-���1D�1N�1N�%)�2O�2�2������$�.�"5�5�5�5��t�~�*�/�0�0�#�d�i�n�2E�2E�F�D�D�D�6�5�5� � � (��9�>�+�+�-�-��1B�1G�1Q�1Q�1S�1S�S�S�S�S� �9� ;� �� �,��(�O����4�9�>�.�/�/�h�h�c�$�:K�:P�:U�6V�6V�h�h�h���O� �9� I� �� �,��%�Z����4�9�>�.�/�/�t�t�c�$�:K�:P�:U�6V�6V�t�t�t���Z� � �,�,��rT)� include_copyrtc#�hK�|jV�|j� |jV�|j� |r |jV�dSdSdSr:)rnrpro)rrts rr�z"NativeFunctionsViewGroup.functions� sX�����i���� � � (��#� #� #� #� �>� %�,� %��.� � � � � � &� %� %� %rc��|jjSr:)rnr�rs rr�z"NativeFunctionsViewGroup.root_name� s ���y�"�"rc��|jjSr:)rnrBrs r� compositez"NativeFunctionsViewGroup.composite� s���y�?�?rr�)rr r!r*r#r r�rkrr�r�r"r�rxr%rrrmrmV s�������� ������'�'�'�'��>�*�*�*�*�#�#�#�#�J15�!�!�!��!��.�9Q�!�!�!�!��#�3�#�#�#��X�#��@�4�@�@�@��X�@�@�@rrmc��|jsdS|jrdSd|jvrdS|jjjj�d��rdSdS)NFr��_inverseT)r�rBrFr-r<r�rt)r�s rrrrr� sa�� �<���u� �/���u�������u�  �v�{���%�%�j�1�1���u� �4rc��dg}t|jj��|vrt|��sJ�|jjjj�d�}t t |d|jjjj���|jjj���}|S)N�narrowrfFrnrM) r"r-r<rrr�r7rsrorN)r��-list_of_ops_with_explicit_view_copy_operatorsrt�view_copy_names rrsrs� s���6>�J�1� �1�6�;���L�L�L�'��*�*�*�*�*��6�;�#�(�/�/�/�I�!� ��E����9I�9W� � � ��f�k�/� ���N� �rr,.c��|dkrdS|ddkr|ddkr |dd�}td�|�d ��D����S) z$ Input: '()' Output: [] z()r%rr�r�r�r!c3�JK�|]}t�|��V��dSr:)rrHr�s rr�z parse_returns.<locals>.<genexpr>� s.����F�F�s����c�"�"�F�F�F�F�F�Frr�)rqr�)r,s rr(r(� sj�� �d����r��1�~�����R��C�!7�!7�!�!�B�$�'� � �F�F�k�.?�.?��.E�.E�F�F�F� F� F�Frc��eZdZUeeeefed<eeed<ede ddfd���Z d d�Z deefd�Z dS) r>rpr��srcrc� �t|t��sJ�g}d|dvr1|d�d��}d�|D��}|dd�}i}|D]w}t|t��sJ�d|vs Jd���|�d��\}}d|vsJd|�d����|�d��}d �|D��}|||<�xt ||� ��} | ���|ks Jd ���| S) Nr�r�rTc�f�g|].}t�|�������/Sr%�rrHro�r2r<s rr4z$Precompute.parse.<locals>.<listcomp>� s,��J�J�J�����t�z�z�|�|�4�4�J�J�JrzLprecomputed parameters without replacement are allowed only in the last liner�zillegal kernel param name 'z' in precomputed parameters'c�f�g|].}t�|�������/Sr%r�r�s rr4z$Precompute.parse.<locals>.<listcomp>� s,��Q�Q�Q�t�h�n�n�T�Z�Z�\�\�:�:�Q�Q�Qr)rpr�zr.to_list() != src)rerir�r"r>�to_list) r��add_args�add_listrp�raw_replace_itemr�� with_list_raw� with_list�with_list_argsr�s rrHzPrecompute.parse� sT���#�t�$�$�$�$�$��� ��R�� � ��2�w�}�}�S�)�)�H�J�J��J�J�J�H��c�r�c�(�C��� #� *� *� ��.��4�4� 4� 4�4��-�-�-�-�5�.�-�-� "2�!7�!7��!?�!?� �C���3����N�S�N�N�N����%�+�+�C�0�0�I�Q�Q�y�Q�Q�Q�N�)�G�C�L�L� �w�H� 5� 5� 5���y�y�{�{�c�!�!�!�#7�!�!�!��rNc���|jD]&}|j���|jksJ��'|j���D]+}|D]&}|j���|jksJ��'�,dSr:)r�r<�upperrpr�)rr�r+s rr�zPrecompute.__post_init__ s����� ,� ,�A��6�<�<�>�>�Q�V�+�+�+�+�+��L�'�'�)�)� 0� 0�D�� 0� 0���v�|�|�~�~���/�/�/�/�/� 0� 0� 0rc��g}|j���D]>\}}d�d�|D����}|�|�d|�����?|S)Nr�c3�4K�|]}t|��V��dSr:r�)r2�params rr�z%Precompute.to_list.<locals>.<genexpr> s(����$P�$P�E�S��Z�Z�$P�$P�$P�$P�$P�$Prr�)rprCr�r�)r� replace_list� kernel_param�replacement_params� replacementss rr�zPrecompute.to_list sx��� �04� �0B�0B�0D�0D� E� E� ,�L�,��9�9�$P�$P�=O�$P�$P�$P�P�P�L� � � �<� C� C�\� C� C� D� D� D� D��rr�) rr r!rr"r rr#r�r�rHr�r�r%rrr>r>� s���������#�t�H�~�%� &�&�&�&� �h������"�6�"�l�"�"�"��\�"�H0�0�0�0���c�������rr>)pr-r r�r�enumrr�typingrrrr r r r r r�torchgen.utilsrrrrr'rxr�r�r�� AUTOGRAD_KEYS�FRAGMENT_NAMESPACESr8r�r"r�r�r��hasattrr��printr�r{rwrvr�r�r�r�rTr�r�r�r�rqrrrsrtr�r�r�r�r�r�r�r[rprkr�r�r�r�r�r�r#r�r�rrr�rrrrrr r%r*r�r�rJr9rr,r�r�r=r<r�r�r�rrr�rrrWrsr7rkrmrrrsr(r>r%rr�<module>r�sI ����������� � � � �!�!�!�!�!�!���������X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�X�D�D�D�D�D�D�D�D�D�D�8 ��$����*�*�*�*�*�*�*���*������d���� (��n�s�s�u�u������(�(�,�,�,>�,�,�,�� �#�$:�;�� _>�_>�_>�_>�_>�$�_>�_>�_>�D�����D���� �S����� ���B� �����w�{�B��G�,�,� �+�+�-�-�A� �E�!�H�H�H��,�t�2�t�r�t�t�qr�t�t��� � ��(�O�[�-=�{��O��"�'���9���O����������O����������)��5��)��6���� ���������� ���1� �<� ��������[��T�����*�;�*�4�*�*�*�*�%�k�%�d�%�%�%�%� +�+�+�+�+��+�+�+�\46� �t�C��J�/�/�0�5�5�5�&�J����������� ��� �j��'�J� �(8�*�:K�'L�M�M� �j��%�:���j�6�7��� �i��%�Z�0�=��3L�L� �e��!.�u�!5� �i�8P�!P� �o���*�� �i� 8�8��"�#�;�;�;�;�;�t�;�;�;�4�����d���� �����T����$ ��$����c G�c G�c G�c G�c G�c G�c G���c G�L��������� ��$����s �s �s �s �s �s �s ���s �l ��$����(�(�(�(�(�(�(���(�, ��$���� � � � � � � ��� �6 ��$����8�8�8�8�8�8�8���8�` ��$����r@�r@�r@�r@�r@�r@�r@���r@�z  ��$����1�1�1�1�1�1�1���1�t ��$����2"�2"�2"�2"�2"�2"�2"���2"�l�����T����, ��$����*�*�*�*�*�t�*�*���*�( ��$����(�(�(�(�(�4�(�(���(�( ��$���������d������@ ��$���������t������* ��$����W5�W5�W5�W5�W5�W5�W5���W5�t ��$����4)�4)�4)�4)�4)�4)�4)���4)�p ��$�������������� ��$����G�G�G�G�G�G�G���G� ��$����p]�p]�p]�p]�p]�p]�p]���p]�l � � ��* ��$����W%�W%�W%�W%�W%�W%�W%���W%�x ��$����2 �2 �2 �2 �2 �2 �2 ���2 �j���.��3?�� �����* ��$����=@�=@�=@�=@�=@�=@�=@���=@�@���4�����.�.��^�����0 G�s� G�u�V�S�[�'9� G� G� G� G� ��$����;�;�;�;�;�;�;���;�;�;r
Memory