
    %h|             $       ~   d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZ d dl	m
Z
mZ d dlmZmZmZmZmZmZmZmZmZmZmZ d dlZd dlmc mZ d dlmc mZ d dlmc mZ d dl mc m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1m2Z2m3Z3m4Z4 d d	l5m6Z6m7Z7m8Z8m9Z9 d d
l:m;Z; d dl<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZT d dlUmVZVmWZWmXZXmYZY d dlZm[Z[ d dl\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZd d dlemfZfmgZg  ed          Zh G d deg          Zii aji ak edddg          Zl	 	 	 ddemdeen         deeeB                  dendeodelfdZpddemdendeen         fdZq ejr        d           dendeen         fd!            Zs	 dddd"dend#endeeeB                  deod$eem         delfd%Ztd&eeI         ddfd'Zud(endenfd)Zvd*ee>         deeB         fd+Zwd,eId-e>deeB         fd.Zxd,eId-ee>         deen         fd/Zyd*ee>         deen         fd0Zzd1ee*e,f         d2e*denfd3Z{d1ee*e,f         d,eId-e>denfd4Z|d1ee*e,f         d,eIdee>         denfd5Z}d1ee*e,f         d,eIdee>         denfd6Z~ e
d78           G d9 d:                      Z e
d78           G d; d<                      Z e
d78           G d= d>                      Z e
d78           G d? d@                      Z e
d78           G dA dB                      Ze3d,eIdenfdC            ZdDeJdeen         fdEZd,eIdFe[deofdGZ e
d78           G dH dI                      ZdJemdenfdKZd(endemfdLZdMeRdenfdNZdOeeS         deen         fdPZd,eIdeeeenenf                  eenenf         f         fdQZdRe)dSeodTeen         dUeen         dVeenenf         demfdWZdXe=dSeodTeen         dUeen         dVeenenf         demfdYZe3d,eIdemfdZ            Zd,eIdeofd[Ze4d,eIdeeBe>f         denfd\            Zd]eeen                  d^een         de[fd_ZdeeI         deeeIeKf                  fd`ZdeeI         deeeIeJf                  fdaZe#j        dbdceeeIeJf                  deeBe>f         ddeeeJeIf         e>geen         f         deeneen         f         fdeZdfeeneen         f         deen         fdgZe#j        dbdceeeIeJf                  deeBe>f         ddeeeJeIf         e>geen         f         deen         fdhZd,eeIeJf         die>denfdjZdke`dceeeIeJf                  dleBdie>dFe[dmeodneodoeodpeodeen         fdqZdceeeIeJf                  dleBdie>dFe[dmeodneodeen         fdrZdeeI         dse[deeen         enf         fdtZdeeI         dceeeIeJf                  dueeJ         dvee>         dFe[deeBe>f         dwe`dxe`dyeeB         dzeeB         dmeoddfd{ZdeeI         dceeeIeJf                  dvee>         dFe[deeBe>f         dwe`dxe`d|e`dyeeB         dzeeB         dmeoddfd}ZdeeI         deen         dceeeIeJf                  dueeJ         dvee>         dFe[deeBe>f         d~e`dwe`dxe`d|e`dzeeB         dyeeB         dmeodeoddf dZdeeI         dceeeIeJf                  dueeJ         deeK         dFe[dvee>         deeBe>f         d~e`dwe`de`dxe`dzeeB         dyeeB         dmeodeodeodoeoddf$dZdwe`deeI         ddfdZdej        fdZddZedk    r e             dS dS )    N)defaultdict
namedtupleOrderedDict)	dataclassfield)AnyCallableDictListLiteralOptionalSequenceSetTupleTypeVarUnion)cpp)	translate)BindingCppSignatureCppSignatureGroupDispatcherSignature
NamedCTypeNativeSignatureSpecialArgName)method_with_native_functionnative_function_managerwith_native_function with_native_function_and_indices) gen_functionalization_definition"gen_functionalization_registration.gen_functionalization_view_inverse_declarationGenCompositeViewCopyKernelgen_all_vmap_plumbing)ArgumentBackendIndexBackendMetadataBaseOperatorNameDEFAULT_KERNEL_NAMESPACEDispatchKeyFRAGMENT_NAMESPACESFunctionSchemais_cuda_dispatch_keyis_generic_dispatch_keyis_ufunc_dispatch_keyLocationNativeFunctionNativeFunctionsGroupNativeFunctionsViewGroupOperatorNameOptionalType
SchemaKindSelfArgumentSTRUCTURED_DISPATCH_KEYSTensorOptionsArgumentsTypeVariantViewSchemaKind)add_generated_native_functionsgen_composite_functional_kernelgen_composite_out_kernelpre_group_native_functions)SelectiveBuilder)assert_never	concatMapcontextFileManagermake_file_managermapMaybeNamespaceHelperTarget)
YamlDumper
YamlLoaderTc                         e Zd Zd fd	Z xZS )
LineLoaderFc                 r    t                                          ||          }|j        j        dz   |d<   |S )N)deep   __line__)superconstruct_mapping
start_markline)selfnoderQ   mapping	__class__s       L/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/torchgen/gen.pyrU   zLineLoader.construct_mapping   s8    ''++Dt+<<"o2Q6
    )F)__name__
__module____qualname__rU   __classcell__)r[   s   @r\   rO   rO      s=                 r]   rO   
ParsedYamlnative_functionsbackend_indices<stdin>Fes
valid_tagsignore_keyspathskip_native_fns_genreturnc           	          t          | t                    sJ g }t          t                    }| D ]}t          |                    d          t
                    s
J |            t          ||d                   |                    d          t          fd          5  t          j	        |||          \  }}	|
                    |           t          j        ||	           d d d            n# 1 swxY w Y   t          |           t          d           }
|st          ||           |                                D ])\  }}t          |ddt!          |          |          |
|<   *t#          ||
          S )NrS   funcc                      d d  S Nzin z:
   )funcslocs   r\   <lambda>z*parse_native_yaml_struct.<locals>.<lambda>   s    4344U44 r]   c                  >    t          t          j        dddi           S )NTFdispatch_keyuse_out_as_primaryexternaldevice_guardindex)r'   r+   	Undefinedrp   r]   r\   rs   z*parse_native_yaml_struct.<locals>.<lambda>   s)    $.# 
 
 
 r]   TFru   )
isinstancelistr   dictgetintr1   rE   r2   	from_yamlappendr'   
grow_indexerror_check_native_functionsr>   itemsr.   rb   )rf   rg   rh   ri   rj   rsbserm   mindiceskvrq   rr   s                @@r\   parse_native_yaml_structr      s    b$!BALTARARB + +!%%
++S11441441tQz]++f4444455 	+ 	+$.q#z;OOGD!IIdOOO#B***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ !$$$/:	
 	

0 
0G  /&r2...

 	
 	
1!#-a00
 
 


 b'"""s   $AC55C9	<C9	c                 &   t          | t                    sJ t                      }| D ]}t          |                    d          t                    s
J |            t          ||d                   |                    d          t          fd          5  |                                }|                    d          }|                    dd          }|dk    sJ |	                    |           d d d            n# 1 swxY w Y   |S )NrS   tagc                      d  d S ro   rp   )rr   tagss   r\   rs   z(parse_tags_yaml_struct.<locals>.<lambda>   s    3333T33 r]   desc )
r|   r}   setr   r   r1   rE   copypopadd)	rf   ri   r   r   e_inamer   rr   r   s	          @@r\   parse_tags_yaml_structr      sA   b$55B 
 
!%%
++S11441441tQz]++uuU||3333344 	 	&&((C775>>D7762&&D2::::FF4LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Is   ADD		D		)maxsizec                     | t           vr[t          |           5 }t          j        |t                    }t          ||           t           | <   d d d            n# 1 swxY w Y   t           |          S )NLoader)ri   )_GLOBAL_PARSE_TAGS_YAML_CACHEopenyamlloadrO   r   )ri   frf   s      r\   parse_tags_yamlr      s     000$ZZ 	X11Z000B2HRV2W2W2W)$/	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X )..s   5AA!A)rj   loaded_yamltags_yaml_pathr   c                   | t           vrrt          |          }|Ct          |           5 }t          j        |t
                    }d d d            n# 1 swxY w Y   n|}t          |||| |          t           | <   t           |          S )Nr   )ri   rj   )_GLOBAL_PARSE_NATIVE_YAML_CACHEr   r   r   r   rO   r   )ri   r   rh   rj   r   rg   r   rf   s           r\   parse_native_yamlr      s     222$^44
 d 5qYq4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 B0H 31
 1
 1
'- +400s   AAArq   c                    i }t          t                    }| D ];}|||j        j        <   ||j        j        j                                     |           <| D ]}|j        ;||j                 }|j        s'J |j        j         d|j         d|j         d            d|j        v rt          |j        j                  dk    rt          |j        j                  dk    r|j        j        j        }|j        j        j	        }|j
        sJ |j        j         d            t          |j        d|j                  }t          ||                   d	k    sJ |j        j         d
| d            d S )Nz0 is marked as a structured_delegate pointing to z, but zY is not marked as structured. Consider adding 'structured=True' to the delegated operatorinplace_viewresize_
resize_as_z is marked with tag: inplace_view, but it doesn't follow the naming convention for inplace ops - the codegen expects the base name to have a trailing underscore. Fr   zw is marked with tag: inplace_view. The codegen expects there to be a corresponding out-of-place view op with the name 'z/' and matching schema, but it didn't find one. )r   r}   rm   r   r   structured_delegate
structuredr   stroverload_nameinplacer)   basedunder_methodlen)rq   func_mapbase_func_mapr   delegate_func	base_namer   out_of_place_base_names           r\   r   r      s   35HBMdBSBSM 2 2 !afk&'..q1111   ,$Q%:;M +  6; O O(O O010EO O O + af$$AFK  I--AFK  L00(IFK5M$  6; q q q $ &6y'>& &" }%;<==AAA6; r r7@r r r BAA7 r]   sc                 n   |                      dd          } |                      dd          } |                      dd          } |                      dd          } |                      d	d
          } |                      dd          } |                      dd          } |                      dd          } d|  dS )z1Convert a python string into a c++ string literal\z\\"z\"z\az\bz\f
z\nz\v	z\t)replacer   s    r\   
cpp_stringr   %  s    			$A			#uA			$A			$A			$A			$A			$A			$Aq888Or]   backendsc                     t          |           dk    rg S d | D             t          j        t          j        t          j        t          j        gz   S )Nr   c                     g | ]	}|j         
S rp   )rv   ).0backends     r\   
<listcomp>z(static_dispatch_keys.<locals>.<listcomp>C  s    ===$===r]   )r   r+   CompositeImplicitAutograd%CompositeImplicitAutogradNestedTensorCompositeExplicitAutograd&CompositeExplicitAutogradNonFunctionalr   s    r\   static_dispatch_keysr   ?  sQ    
8}}	==H===1=1>	A
 
 	
r]   r   backend_indexc                     | j         |                    |           r|j        S | j        rt          j        S | j        rt          j        S | j        rt          j	        S | j
        rt          j        S d S N)r   
has_kernelrv   &has_composite_explicit_autograd_kernelr+   r   5has_composite_explicit_autograd_non_functional_kernelr   &has_composite_implicit_autograd_kernelr   4has_composite_implicit_autograd_nested_tensor_kernelr   )r   r   s     r\   get_static_dispatch_backendr   K  s     	(M,D,DQ,G,G(
 ))	
	1 A44	
	@ AAA	
	1 A44	
	? A@@4r]   c                     || j         rd S g }|D ]G}t          | |          }|3|                    d| j         d|                                 d           Hd                    |          S )N#include <ATen/ops/__dispatch.h>r   )manual_kernel_registrationr   r   	root_namelowerjoin)r   r   outputrz   rv   s        r\   static_dispatch_ops_headerr   _  s      <tF  21e<<#MMVakVVL4F4F4H4HVVV   99Vr]   c                 4    d t          |           D             S )Nc                     g | ]}d | d	S )#include <ATen/Functions.h>rp   )r   rv   s     r\   r   z1static_dispatch_extra_headers.<locals>.<listcomp>p  s3        	5,444  r]   )r   r   s    r\   static_dispatch_extra_headersr   o  s+     0::   r]   sigcpp_sigc                    dt           t                   dt           t                   fd}t          |                                           }t          |                                          }|D ])}|j        j        t          j        k    r ||          } n*t          ||          }d	                    d |D                       S )Ninput_bindingsrk   c                    g }| D ]|}|j         dk    rZt          t          t          j        |j        j                  |j         |j        |j                  }|	                    |           g|	                    |           }|S )Nmemory_format)nctyper   defaultargument)
r   r   r   r    possibly_redundant_memory_formatr   typer   r   r   )r   output_bindingsbindingspl_mem_format_bindings       r\   add_spl_memory_format_bindingz5translate_args.<locals>.add_spl_memory_format_binding~  s    )+% 	0 	0G|..)0%&G+  !#O$-* * *&  &&'=>>>>&&w////r]   , c              3   $   K   | ]}|j         V  d S r   exprr   as     r\   	<genexpr>z!translate_args.<locals>.<genexpr>  s$      ++QV++++++r]   )
r   r   r}   	argumentsr   r   r   r   r   r   )r   r   r   src_bindingsgoal_bindingsargexprss          r\   translate_argsr  y  s    
d7m W    $ ((L**,,--M   :?nMMM88FFLE N lM22E99++U++++++r]   c           	         t          j        |dd          }| j        r!|j                                        r|j        }n|j        }|J |                                }t          | |          }|	                    |          }|r|j
        r|j
        nt          }|                    dd          }	d|	 d|j                                         d| d| d	S )	NFmethodfallback_binding::nativer   return ::();)r   from_native_functionsymintrm   
has_symintsymint_signature	signaturer   r  
get_kernelcpp_namespacer*   r   rv   r   )
r   r   r   cpp_sigsr   r   r  backend_metadata	kernel_nsnss
             r\   %generate_static_dispatch_backend_callr    s   
 !5	%%  H z %af'')) %+$<<>>D3((E$//22 	& 0 >	&&&% 
 
		:r	*	*BQRQQ=5;;==QQQQQQQQr]   c           	         t          j        |dd          }| j        r!|j                                        r|j        }n|j        }|J |                                }t          | |          }t          j
        dd          }|j        r+d| dt          j                                         d| d| d	S |j        r+d| dt          j                                         d| d| d	S |j        r+d| dt          j                                         d| d| d	S |j        r+d| dt          j                                         d| d| d	S d	| d
d                    d |D                        dS )NFr	  r  r   r  r  r  r  z5TORCH_CHECK(false, "Static dispatch does not support z forr   c                 6    g | ]}t          |j                  S rp   )r   rv   )r   rz   s     r\   r   z:generate_static_dispatch_fallback_call.<locals>.<listcomp>  s#    @@@uC"##@@@r]   z ");)r   r  r  rm   r  r  r  r   r  r*   r   r   r+   r   r   r   r   r   r   r   r   r   )r   r   rd   r  r   r   r  r  s           r\   &generate_static_dispatch_fallback_callr    s   
 !5	%%  H z %af'')) %+$<<>>D3((E	!	)*b	9	9B/ 
J```{DJJLL``PT``W\````	
	@ Jmmm{QWWYYmm]ammdimmmm	
	1 J```{DJJLL``PT``W\````	
	? Jlll{PVVXXll\`llchllllJ J J@@@@@AAJ J J 	Jr]   c           	         t          |          dk    sj        rdS fd|D             }t          |          dk    rt          | |d                   S t          |          dk    rt          | |          S d |                                 D             }d                    |          }j        j        j        }g }g }||                    d           |dk    r|                    d	| d
           |                    dd                    |           d           |                    d           g }	|D ]H}
|	                    d|
j	         d           |	                    dt          | |
           d           It          | |          }d}d|                    |           d|                    |	           d| dS )a  
    For a given `NativeFunction`, find out the corresponding backend and dispatch to it. If more than one
    backends exsit, fallback to static dispatch by determining dispatch key from inputs.
    Arguments:
        sig: A CppSignature or DispatcherSignature for this native function we want to use.
        f: NativeFunction to generate static dispatch.
        backend_indices: All available backends.
    Return:
        C++ code to call backend-specific functions, e.g., "return at::cpu::add(self, other, scale);"
    r   r   c                 h    g | ].}|                               sj        |j        t          v ,|/S r   )r   r   rv   r9   )r   br   s     r\   r   z#static_dispatch.<locals>.<listcomp>  sP       <<??
 !-"::: 	

 ;::r]   rR   c                     g | ][}t          |j        t                    s8t          |j        t                    6|j        j                                        T|j        \S rp   )r|   r   r8   r&   r   is_tensor_liker   r   s     r\   r   z#static_dispatch.<locals>.<listcomp>  sl       aj,// aj(++	
 JO**,,	  r]   r   Nz>DispatchKeySet(c10::computeDispatchKey(dtype, layout, device))z$c10::detail::multi_dispatch_key_set()zDispatchKeySet _dk_set = z | ;z=DispatchKey _dk = c10::highestPriorityBackendTypeId(_dk_set);zcase DispatchKey:::r   z
		
    z
    switch (_dk) {
        z
        default:
            z
    }
    )
r   r   r  r  r  r   rm   tensor_optionsr   rv   )r   r   rd   keysnative_tensor_argstensor_argstensor_optsstmtssubexprsdispatch_coderz   fallback	connectors    `           r\   static_dispatchr3    sG    ?q  A$@ r      D 4yyA~~4S!T!WEEE	Ta5c1oNNN    )).//K&"1KEHL	
 	
 	
 bM{MMMNNN	LLHuzz(/C/CHHHIII	LLPQQQM 
 
KE4FKKKLLLL8aGGLLL	
 	
 	
 	
 6c1oNNHI^^E  
	&	& 
    r]   T)frozenc                   x    e Zd ZU eed<    ee          Zee	e
f         ed<   ededee	         fd            ZdS )RegisterSchemaselector)default_factory
known_tagsr   rk   c                    | j                             |          sd S dd                    d t          |j                  D                       z   dz   }|dk    r%dt          t          |j                             dS d}|| j        vr't          | j                  }|| j        |<   d	| d
| d}| dt          t          |j                             d| j        |          dS )N{r   c              3       K   | ]	}d | V  
dS )z	at::Tag::Nrp   )r   r   s     r\   r  z*RegisterSchema.__call__.<locals>.<genexpr>'  s+      KKS0300KKKKKKr]   }z{}zm.def(z, {});
r   z const std::vector<at::Tag> tags_z = ;
z, tags_z);
)
r7  is_native_function_selectedr   sortedr   r   r   rm   r9  r   )rX   r   r   
maybe_tagsidxs        r\   __call__zRegisterSchema.__call__#  s    }88;; 	4TYYKKF16NNKKKKKKcQ4<<?Js16{{33????
t&&do&&C$'DOD!MCMMDMMMJ__Js16{{$;$;__DOTXDY____r]   N)r^   r_   r`   rB   __annotations__r   r~   r9  r
   r   r   r   r2   r   rC  rp   r]   r\   r6  r6    s         !&t!<!<!<JS#X<<< `. `Xc] ` ` ` ! ` ` `r]   r6  c                   t    e Zd ZU eej        ej        f         ed<   ee	         ed<   e
dedefd            ZdS )ComputeOperatorstargetstatic_dispatch_backend_indicesr   rk   c                    t          j        |j                  }|j        j                                        }| j        t          j        u rd| d|                                 d|j        j        j         d|j        j        j	         dt          t          |j                             d|                    dd	           d
|                    dd	           dS | j        t          j        u rLd| d|j        j        j         d| d|j        j        j	         d| dt          t          |j                             d|j         d| d| d| d| d| d}dD ]}|r8d                    dgd |                                D             z             }d}n3d                    d |                                D                       }d}|}| d| }	d | d!| d"| d#}
|s/t!          | j                  d$k    rt%          ||| j        %          }
|d&|j         d'|                    |	|	           d(|
 d)z  }|S t'          | j                   d S )*Nz
struct TORCH_API z {
  using schema = z;
  using ptr_schema = schema*;
  // See Note [static constexpr char* members for windows NVCC]
  STATIC_CONSTEXPR_STR_INL_EXCEPT_WIN_CUDA(name, "aten::z>")
  STATIC_CONSTEXPR_STR_INL_EXCEPT_WIN_CUDA(overload_name, "z:")
  STATIC_CONSTEXPR_STR_INL_EXCEPT_WIN_CUDA(schema_str, z)
  static callF)r   is_redispatching_fnz;
  static 
redispatchTz;
};z+
STATIC_CONST_STR_OUT_OF_LINE_FOR_WIN_CUDA(z, name, "aten::z-")
STATIC_CONST_STR_OUT_OF_LINE_FOR_WIN_CUDA(z, overload_name, "z, schema_str, z)

// aten::z.
static C10_NOINLINE c10::TypedOperatorHandle<z::schema> create_zQ_typed_handle() {
  return c10::Dispatcher::singleton()
      .findSchemaOrThrow(z::name, z::overload_name)
      .typed<z::schema>();
}
)FTr   dispatchKeySetc                     g | ]	}|j         
S rp   r   r   s     r\   r   z-ComputeOperators.__call__.<locals>.<listcomp>u  s    -N-N-Naf-N-N-Nr]   c                     g | ]	}|j         
S rp   rO  r   s     r\   r   z-ComputeOperators.__call__.<locals>.<listcomp>y  s    5V5V5Vaf5V5V5Vr]   r  z
    static auto op = create_z_typed_handle();
    return op.r  r  r   )rd   

// aten::r    {
    z
}
)r   from_schemarm   r   unambiguous_namerG  rJ   DECLARATIONr   r   r   r   defn
DEFINITIONr   r  r   rH  r3  rC   )rX   r   r   r   defnsrK  dispatcher_exprs_strmethod_basedispatcher_callmethod_namefn_bodys              r\   rC  zComputeOperators.__call__<  se   !-af55v{++--;&,,,0

 
((**
 

 :;9I
 
 =>FK<U
 
 9C3qv;;8O8O
 
 ((E(
:
:
 
 (($(
?
?
 
 
 
 [F---+/ @A@P +/ CD6;C\  ,0  @J#af++?V?V 
 &  /3  FJ    )-    E (5  #& )+/99)*-N-Ncmmoo-N-N-NN, ,( #/KK+/995V5Vcmmoo5V5V5V+W+W("(K"-!%6666<!< << <!5< < <
 ,D@AAAEE .Q0T  G  
& {0CDD      L%%%%%r]   N)r^   r_   r`   r   rJ   rU  rW  rD  r   r'   r   r2   r   rC  rp   r]   r\   rF  rF  7  sx         F&(99::::%),%7777 V&. V&S V& V& V& ! V& V& V&r]   rF  c                   :    e Zd Zededee         fd            ZdS )ComputeFunctionr   rk   c                    t          j        |d|j                  }|j                                        }d}|                                D ]}t          j        |j                  }t          |	                                |	                                          }d
                    d |D                       }|j        rd}	nd}	t          j        |j        v rE|d|j         d	|                                 d
|j        j                                         d| d	z  }|rB|d|	 d|                    d           d
|j        j                                         d| d	z  }|S )NFr	  r   r   c                     g | ]	}|j         
S rp   r   r   r   s     r\   r   z,ComputeFunction.__call__.<locals>.<listcomp>      "9"9"9a16"9"9"9r]   zc10::SymIntint64_trQ  
inline  {
    return at::_ops::::call(z);
}zX
namespace symint {
  template <typename T, typename = std::enable_if_t<std::is_same<T, z>::value>>
  T)suppress_symint_suffixz	);
  }
}
)r   r  manual_cpp_bindingrm   r  
signaturesr   rS  r   r  r   r  r<   functionvariantsdeclr   rT  )
rX   r   	sig_groupr  resultr   
target_sigr  	exprs_str	intlike_ts
             r\   rC  zComputeFunction.__call__  s   %:ea.B
 
 
	 V&&((
''))  	  	C,8@@Jcmmooz/C/C/E/EFFE		"9"95"9"9"9::Iz &)		%	1:-- 
& 

  fk2244  >G      EN  8848((  fk2244	  >G	    r]   Nr^   r_   r`   r   r2   r   r   rC  rp   r]   r\   r_  r_    sE         (. (Xc] ( ( ( ! ( ( (r]   r_  c                       e Zd ZU eej        ej        f         ed<   ee	         ed<   e
dedee         fd            ZdS )ComputeTensorMethodrG  rH  r   rk   c                 >   t           j        |j        vrd S |j                                        rJ |j        j        j        J t          j        |d|j	                  }| j
        t          j        u r5d}|                                D ]}||                                 dz  }|S | j
        t          j        urt!          | j
                   d}|                                D ]}t#          j        |j                  }t'          |                                |                                d          }d                    d |D                       }|d|j         d	|                    d
           d|j        j                                         d| d	z  }|S )NTr	  r   z const;
)r
  r   c                     g | ]	}|j         
S rp   r   rb  s     r\   r   z0ComputeTensorMethod.__call__.<locals>.<listcomp>  rc  r]   rQ  re  zTensor::)prefixz const {
    return at::_ops::rg  );
}
)r<   r
  rl  rm   	is_out_fnr  self_argr   r  ri  rG  rJ   rU  rj  rm  rW  rC   r   rS  r   r   rV  r   rT  rX   r   rn  ro  r   rp  r  rq  s           r\   rC  zComputeTensorMethod.__call__  s   >++46##%%%%%v(444%:dQ-A
 
 
	 ;&,,,F ++-- 3 3SXXZZ2222M;f///%%%'')) 
	 
	C,8@@Jcmmooz/C/C/E/EdSSSE		"9"95"9"9"9::I 
& 
##  fk2244  >G   FF r]   N)r^   r_   r`   r   rJ   rU  rW  rD  r   r'   r   r2   r   r   rC  rp   r]   r\   ru  ru    st         F&(99::::%),%7777 ". "Xc] " " " ! " " "r]   ru  c                   :    e Zd Zededee         fd            ZdS )ComputeRedispatchFunctionr   rk   c                    t          j        |d|j                  }d}|                                D ]}t	          j        |j                  }t          |                                |                                          }d	                    dgd |D             z             }|d|j         d|
                    d	
           d|j        j                                         d| d	z  }|S )NFr	  r   r   rM  c                     g | ]	}|j         
S rp   r   r   s     r\   r   z6ComputeRedispatchFunction.__call__.<locals>.<listcomp>  s    7N7N7N17N7N7Nr]   rQ  re  T)rK  rf  z::redispatch(ry  )r   r  ri  rj  r   rS  rm   r   r  r   rm  r   rT  r|  s           r\   rC  z"ComputeRedispatchFunction.__call__  s    &:ea.B
 
 
	 '')) 
	 
	C,8@@Jcmmooz/C/C/E/EFFE		#3"47N7N7N7N7N"NOOI 
& T**  fk2244  DM   FF r]   Nrs  rp   r]   r\   r~  r~    sE         . Xc]    !   r]   r~  c                 P    d| j         j        j         d| j         j        j         dS )Nz{"aten::z", "z"},)rm   r   r   r   s    r\   compute_aten_opr    s)    Lqv{'LLQV[-FLLLLr]   gc                    | j         sd S t          | j                  5  t          j        |           }t          j        |           }d                    d |D                       }| j        j        }|d}d}| j         r| j        j        nd }|r7g |j	        
                                |j        }d |D             }d |D             }	d                    d |	D                       }
d|
 d	}d
 |D             }d                    d |D                       }g }t          |          D ]J\  }}d                    |	d |         dgz   |	|dz   d          z             }d| d	}||                             d          }| d|j         d| d}d||         j         d}d|	|          d| d}g }|                    | d           t          |          D ]P\  }}||k    r|                    d|j         d           *|                    d|j         d|j         d           Q|                    d           d                     |          }|                    d!| d"| d#| d$           Ld                     |          }d                    dgt          |	          z            }d%| d&}d'}d(| d)| d!| d*}nd+}d+}d,| d-| d.| d/| d/| d0| d1cd d d            S # 1 swxY w Y   d S )2Nr   c              3   >   K   | ]}|                                 V  d S r   )rm  r   s     r\   r  z4compute_meta_function_declaration.<locals>.<genexpr>!  s*      44!QVVXX444444r]   zat::impl::MetaBasevoidc                     g | ]	}|D ]}|
S rp   rp   )r   replace_listelems      r\   r   z5compute_meta_function_declaration.<locals>.<listcomp>-  s9     $ $ $%$ $@D$ $ $ $r]   c                 @    g | ]}|j                                         S rp   )r   upperr   r  s     r\   r   z5compute_meta_function_declaration.<locals>.<listcomp>0  s1     / / /&*	!!/ / /r]   c              3   "   K   | ]
}d | dV  dS )zbool z = falseNrp   )r   params     r\   r  z4compute_meta_function_declaration.<locals>.<genexpr>3  s?       8 8,1''''8 8 8 8 8 8r]   z
template <>c                 D    g | ]}t          j        ||j                   S ))binds)r   argument_typer   r  s     r\   r   z5compute_meta_function_declaration.<locals>.<listcomp>9  s:     3 3 3 (TY???3 3 3r]   r>  c              3   V   K   | ]$}|                     d            d|j         V  %dS )T	strip_ref N)cpp_typer   r  s     r\   r  z4compute_meta_function_declaration.<locals>.<genexpr>>  sT       3 3 ==4=00>>49>>3 3 3 3 3 3r]   truerR   zprecompute_out<Tr  z set_r  z value)r   z already set"zstatic_assert(z == false, r  z ret;zret.z	 = value;z	 = this->r&  zreturn ret;r   z
                    z {
                        z
                        z'
                    }
                z'using meta_return_ty = precompute_out <z>;meta_return_tyz
                zG
                struct TORCH_API precompute_out {
                    z;
            };r   zstruct TORCH_API structured_z
 : public rR  r(  z meta(z);
};
)r   r   outmetar   meta_argumentsr   structured_inheritsprecomputedr   valuesr   	enumerater  r   r   )r  r   argsargs_strparent_classmeta_returnr  precomputed_valuesprecomputed_elementsprecomputed_template_parametersprecomputed_template_params_strprecompute_template_decl#precomputed_elements_with_cpp_typesprecomputed_elements_declsetter_methodsir  return_ty_templates	return_tyelem_cpp_tyr  
assert_msgassert_stmtconstruction_stmtsjconstruction_blocksetter_methods_declmeta_return_template_paramsmeta_return_typedefprecomputed_decls                                 r\   !compute_meta_function_declarationr    s   < t	 	'	' v vy||(++9944t44444u0/L+,<Aae''T d	" "R;#6#=#=#?#?!Q!Q$ $);$ $ $ / /.B/ / /+ /3ii 8 85T8 8 8 / /+ (W4S'V'V'V$3 303 3 3/
 ).

 3 3?3 3 3 ) )%  N$%9:: 2 24 '+ii3BQB7h5a!egg>?' '#
 E.ADDD	A!DMM" N    )OOtyOO;OOO	 M!5a!8!=LLL
l/Nq/Qll^hlll &(""))Y*=*=*=>>>()=>>  GAtAvv*112M2M2M2MNNNN*11C49CCtyCCC    #))-888%)YY/A%B%B"%% $  ,      #'))N";"; +/))3>???+ +'
 #lLg"k"k"k*K )    )    /	      #%!! -9     	  !	  av v v v v v v v v v v v v v v v v vs   KK,,K03K0r7  c                     t          | j        j        j                  }|                    d          s|                    d          rdS | j        j        j        dS |                    |           S )N_likenew_F)r   rm   r   endswith
startswithr  r)  r?  )r   r7  r   s      r\   needs_backend_selectr    si    qv{  D}}W !8!8 uv&.u//222r]   c                   t    e Zd ZU eej        ej        f         ed<   eed<   e	de
dee         fd            ZdS )ComputeBackendSelectrG  r7  r   rk   c                 r   t          || j                  sd S t          j        |j                  }t          |j        d          }d |                                D             }t          j        |j                  }|}|	                                }d}| j
        t          j        u r|rI|j        j                                        sJ d                    d |D                       }	d| d|	 d	}
n&|j        j                                        rJ d
| d}
d|j         d|                    |           d|
 d|j        j                                         dd                    d |D                        dS | j
        t          j        u rd|j        j         d| dS t%          | j
                   d S )NTr  c                     g | ]<}t          |j        t                    |j        j                                        :|=S rp   )r|   r   r&   r   r$  r   s     r\   r   z1ComputeBackendSelect.__call__.<locals>.<listcomp>  sT     
 
 
!*h//
 56JO4R4R4T4T

 
 
r]   z.c10::computeDispatchKey(dtype, layout, device)r   c              3   $   K   | ]}|j         V  d S r   rO  r   s     r\   r  z0ComputeBackendSelect.__call__.<locals>.<genexpr>  s$      'K'K1'K'K'K'K'K'Kr]   z-DispatchKeySet _dk_set = c10::DispatchKeySet(z() | c10::detail::multi_dispatch_key_set(z);
DispatchKeySet _dk_mask = c10::DispatchKeySet(DispatchKeySet::FULL_AFTER, DispatchKey::BackendSelect);
DispatchKeySet _dk = c10::impl::computeDispatchKeySet(_dk_set, _dk_mask);z)DispatchKeySet _dk = c10::DispatchKeySet(r  z	// aten::z
C10_ALWAYS_INLINE
z {
  z
  return at::_ops::z::redispatch(
      _dk, c              3   $   K   | ]}|j         V  d S r   r   r   s     r\   r  z0ComputeBackendSelect.__call__.<locals>.<genexpr>  s$      77af777777r]   ry  zm.impl("aten::z", TORCH_FN(z));)r  r7  nativer   rm   r   r  r   rS  r  rG  rJ   rW  has_tensor_argr   rV  rT  REGISTRATIONrC   )rX   r   r   
native_sigr+  dispatcher_sigr   dispatcher_exprsrv   r,  
compute_dks              r\   rC  zComputeBackendSelect.__call__  s*   #At}55 	4{16""$QVD999

 
))++
 
 
 -8@@ )//11G;&+++
 " v'6688888"ii'K'K8J'K'K'KKKM.:M MdoM M M


 6+::<<<<<PPPP 
&  $  	 
 FK0022  II77&677777    [F///JafkJJtJJJJ%%%%%r]   N)r^   r_   r`   r   rJ   rW  r  rD  rB   r   r2   r   r   rC  rp   r]   r\   r  r    sq         F%v'::;;;;  2&. 2&Xc] 2& 2& 2& ! 2& 2& 2&r]   r  datac                     d t           _        dt          dt          dt          fd}t          j        t          |           t          j        | dt           d          S )	Nc                     dS )NTrp   )rX   r  s     r\   rs   zformat_yaml.<locals>.<lambda>  s    4 r]   dumperr  rk   c                 P    |                      |                                          S r   )represent_dictr   )r  r  s     r\   dict_representerz%format_yaml.<locals>.dict_representer  s    $$TZZ\\222r]   Fg    eA)default_flow_styleDumperwidth)rK   ignore_aliasesr   add_representerr   r   dump)r  r  s     r\   format_yamlr    sg     7 7J3 3C 3C 3 3 3 3 {,<=== 9TeJcRRRRr]   c                     | dk    rdS | dk    rdS 	 t          |           S # t          $ r' 	 t          |           cY S # t          $ r | cY cY S w xY ww xY w)Nr  TfalseF)r   
ValueErrorfloatr   s    r\   pythonify_defaultr    s    F{{t	
gu1vv   	88OOO 	 	 	HHHHH	s)   ! 
A=AA	AAAtc                     t          | t                    rt          | j                  S t	          |           dk    rdS t          j        | ddd                                          S )NTensorz
at::TensorF__placeholder__)mutabler  r  )r|   r6   dynamic_typer  r   r   argumenttype_typer  )r  s    r\   r  r    si    !\"" $AF### 1vv| 	5 1%  hjjr]   rl  c                     dg}t           j        | v r|                    d           t           j        | v r|                    d           |S )Nr;   r  	namespace)r<   r
  r   rk  )rl  	method_ofs     r\   compute_method_of_yamlr     sT     I~!!"""8##%%%r]   c                    i }t          j        |           }g }t          t          | j        j        |                    D ]\  }\  }}t          |j                  |t          j        |d          	                                d}|j
        rG|j
        |d<   | j                                        r$|j
        || j        j        j        |         j
        <   |                    |           ||fS )NFr  )r  r   r   
field_name)r   return_namesr  ziprm   returnsr  r   return_typer  r   rz  r  r  r   )r   name_to_field_namenamesr  r  rr   rets           r\   compute_returns_yamlr  +  s    T *, QEG!#afne"<"<==  9At(00OAe444==??	
 
 6 	J !Cv!! JCD6"16#3#7#:#?@s&&&r]   cpp_aschema_orderkwarg_only_setout_arg_setr  c                <   t          | j        t                    r&d dd| j        | j        dd}| j        
| j        |d<   |S t          | j        t                    rt                      t          | j        t                    rt          | j        ||||          S d S )Nzat::TensorOptionsFT)
annotationr  is_nullabler   r   
kwarg_onlyr   r  r  r  r  )
r|   r   r:   r   r   r   r8   AssertionErrorr&   compute_argument_yaml)r  r  r  r  r  r  s         r\   compute_cpp_argument_yamlr  n  s     %."899 
/ JJ"
 "
 =$"]C	N
	ENL	1	1 	
	ENH	-	- 
$N%)#1
 
 
 	

 
r]   r   c          	      b   | j         rt          | j                   nd t          | j                  | j                                        | j        t          j        | dd                                          d}| j	        1t          t          j        | j	        | j        d                    |d<   | j        |v rd|d<   | j        |v r#d|d	<   d|d
<   | j        |v r|| j                 |d<   | j                                        }|)|j        "t          |j                  dk    r
|j        |d<   |S )Nr  F)r  r  )r  r  r  r   r   r  r   Tr   r   allocater  boolsize)r  r   r  r   r  r   r   r  r  r   r  default_expris_list_liker  r  )r   r  r  r  r  r  ls          r\   r  r    s>    ,-<Ac!,'''T$QV,,v))++!!+<UKKKTTVV C 	y*QYu===
 
I 	v LvHJ6''' 216 :C 	
A}+AFv0E0EfFJr]   c                 r   t          |           \  }d | j        j        j        D             d | j        j        j        D             t          j        | dd          }|j                                        }fd|D             }t          | j        	                                          }fd|D             }d |D             }t          j        | j        j        d                                          }| d	d
                    |           d}	t          d |D                       ot           j        | j        v}
t'          dt          j        | j                  fdt+          | j        j        j                  fdt+          | j        j        j                  fd| j        fd| j        | j        ndfdd| j         fd|fd|	fd|fdt3          | j                  fdd| j        dn| j        fd|fd| j        j        j        j        fd|
fd| j        fd| j        fd d!d"| j        fg          S )#Nc                     h | ]	}|j         
S rp   rO  r   s     r\   	<setcomp>z+compute_declaration_yaml.<locals>.<setcomp>  s    GGGafGGGr]   c                     h | ]	}|j         
S rp   rO  r   s     r\   r  z+compute_declaration_yaml.<locals>.<setcomp>  s    888a16888r]   Fr	  c           	      8    g | ]}t          |d           S )Fr  )r  )r   r  r  r  r  s     r\   r   z,compute_declaration_yaml.<locals>.<listcomp>  sI     	 	 	  	")#1	
 	
 	
	 	 	r]   c           	      8    g | ]}t          |d           S )Tr  )r  )r   r   r  r  r  s     r\   r   z,compute_declaration_yaml.<locals>.<listcomp>  sI     	 	 	  	)#1	
 	
 	
	 	 	r]   c           
      n    g | ]2}t          j        |d t                      d d d           D ]	}|j        
3S )F)r
  cpp_no_default_argsfaithfulr  has_tensor_options)r   r   r   r   )r   r   r  s      r\   r   z,compute_declaration_yaml.<locals>.<listcomp>  sj         #$
 
 
	   	
   r]   r  z (r   r%  c              3   J   K   | ]}t          |j        t                    V  d S r   )r|   r   r:   r   s     r\   r  z+compute_declaration_yaml.<locals>.<genexpr>  s/      MMqJqz#9::MMMMMMr]   r   operator_namer   r   category_overrider   schema_stringaten::r  schema_order_cpp_signatureschema_order_argumentsr  )moder  python_moduler  r   is_factory_methodabstractry   )with_gilF)
deprecatedFhas_math_kernel)r  rm   r  flat_kwarg_onlyr  r   r  r  r}   r  r   returns_typer  r  r   anyr<   r
  rl  r   r   r   r   r   r  r  r  r   is_abstractry   r   )r   r  rn  cpp_argsr  schema_order_jit_argumentsr  cpp_schema_order_typescpp_returnsr  r  r  r  r  s              @@@r\   compute_declaration_yamlr,    s   "6q"9"9G HGaf&6&FGGGN8816#3#7888K!6	%%  I ",,..H	 	 	 	 	 	 	 	 	I "&af&C&C&E&E!F!F	 	 	 	 	 	 ,	 	 	  ,   "16>%@@@IIKKK$/!W!W499=S3T3T!W!W!W 	MMHMMMMM 	-N!*, 
 SXaf%%&c!&+"2334c!&+";<<=)1+GH#'(':'F##B /qv//0)$)+EF%'=>0<<=AO$;bbQ (01 "34'Q^,! HI/	
  r]   c                     | j         s	| j        d uoM| j                                        t          j        k    p&| j                                        t          j        k    S r   )r   r   rm   kindr7   
functionalr   r  s    r\   "has_autogenerated_composite_kernelr0    sJ    L=A1= 	..U!&++--:CU2Ur]   c           	          t          j         j                  }t          j         j        j                                                  }t          j         j                  }d                    d |D                       }d j         t           fd|	                                D             t          j        hk    o9 fd|	                                D             t          j        t          j        hk              t           j        pt                               d}| d| d| d	t          j        |           d
S )Nr   c              3   b   K   | ]*}|                                                                 V  +d S r   )
no_defaultdecl_registration_declarationsr   s     r\   r  z4compute_registration_declarations.<locals>.<genexpr>  s6      WWQFFHHWWWWWWr]   r  c                 D    h | ]\  }}|                               |S rp   r   r   r   r   r   s      r\   r  z4compute_registration_declarations.<locals>.<setcomp>   s,    FFF41aall1ooFQFFFr]   c                 D    h | ]\  }}|                               |S rp   r6  r7  s      r\   r  z4compute_registration_declarations.<locals>.<setcomp>"  s,    JJJtq!!,,q//JJJJr]   )schemadispatchr   r  r  z); // r   )
dispatcherr   rm   r%  r  "cpp_type_registration_declarationsr  r   r   r   r+   r   r   has_composite_kernelr0  jsondumps)r   rd   r   r%  r  r  comment_datas   `      r\   !compute_registration_declarationsrA    sn    ?16""D*	 ((**  ''DyyWWRVWWWWWH#16##FFFF?0022FFF567 JJJJ4466JJJ5A
 
 q-V1STU1V1VWW$ $L   t  h  dj6N6N    r]   "provided_op_registration_allowlistop_selection_yaml_pathc                     | |
J d            d }| t          |           }|t          j        |dd          }n*|t          j        |          }nt          j                    }|S )NzhBoth provided_op_registration_allowlist and op_selection_yaml_path can NOT be provided at the same time.TF)r   rB   &from_legacy_op_registration_allow_listfrom_yaml_pathget_nop_selector)rB  rC  op_registration_allowlistr7  s       r\   get_custom_build_selectorrI  5  s    
 	+6"..	 /. 59)5$'(J$K$K! ,#J%
 

 
 	+#23IJJ#466Or]   c                 (   dt           t          t          t          f         t          f         dt
          t          t          t          f                  fd}t          t                    }| D ]z}|j	        
                                }|j        }|t          j        k    r1|j	                                        }|||         vsJ |||         |<   c|||         vsJ |||         |<   {t          t          ||                                                    S )Ndrk   c                    g }t           j        | v r|                     t           j                  }|                     t           j        d           }|                     t          j        d           }|                    t          |||                     |                                 D ]}|                    |           |S )N)view	view_copyview_inplace)	r=   aliasingr   aliasing_inplacer7   r/  r   r4   r  )rK  rq   rM  rO  rN  rm   s         r\   maybe_create_view_groupzEget_grouped_by_view_native_functions.<locals>.maybe_create_view_groupW  s     HJ"a''55011D55!@$GGLj3T::ILL('!-     HHJJ 	 	DLLr]   )r
   r   r=   r7   r2   r   r4   r   r~   rm   view_signatureview_schema_kindnon_aliasingr.  r}   rD   r  )rc   rR  grouped_by_viewsr   r9  	view_kindr.  s          r\   $get_grouped_by_view_native_functionsrX  T  s!   nj01>AB	eN$<<=	>   0 	D   4 4&&(($%$6	
 3336;;==D/77777-.V$T**$4V$<<<<<23V$Y//	13C3J3J3L3LMMNNNr]   c           	         dt           t          t          f         dt          t          t          t
          f                  fd}t          |           }t          t          |t          |	                                                              S )NrK  rk   c                     t          j        |           }|Nt          d |                                 D                       rJ t	          |                                           S |gS )Nc              3   (   K   | ]}d |j         v V  dS )	generatedN)r   r   r   s     r\   r  zJget_grouped_native_functions.<locals>.flatten_pre_group.<locals>.<genexpr>  s)      EEQ;!&0EEEEEEr]   )r3   	from_dictr&  r  r}   )rK  r  s     r\   flatten_pre_groupz7get_grouped_native_functions.<locals>.flatten_pre_group  sc     !*1--9 EE!((**EEEEEEEE

###3Jr]   )
r
   r7   r2   r   r   r3   rA   r}   rD   r  )rc   r_  pre_grouped_native_functionss      r\   get_grouped_native_functionsra    s    

N*+
	%(<<=	>
 
 
 
 $>>N#O#O #T*F*M*M*O*O%P%PQQ  r]   )native_function_decl_gengrouped_native_functionsrb  c                    t          t                    }| D ]}t                      }t                      }|                                D ]\  }}|                    |          }	|	r2|	j        }
|                    |           |                    |
           nt          }
t          |          dk    sJ d| d|             ||
         	                     |||                     |S )NrR   z6Codegen only supports one namespace per operator, got z from )
r   r}   r   r   r  r  r   r*   r   extend)rc  rd   rb  ns_grouped_kernelsr   native_function_namespacesdispatch_keysrv   backend_idxr  r  s              r\   get_ns_grouped_kernelsrj    s    0;4/@/@%  %(UU")8)>)>)@)@ 	 	%L+*55a88 5,:	!!,///*..y99994	.//1444yHbyyjwyy 544y)00((K88   	 r]   rf  c           
      F   g }d}|                                  D ]\  }}t          |dd          }t          t          j        |                    }|                    d|j         d|                    |           d|j         d	                    |                     |S )Nr   r      namespace_strentity_name	max_level	
        )
r   rI   r}   r   fromkeysre  prologuer   epiloguesplit)rf  declarationsnewliner  kernels	ns_helperordered_kernelss          r\   8get_native_function_declarations_from_ns_grouped_kernelsr{    s     !LG06688 
 
	7##
 
 
	 {3G<<==
 o     E 	
 	
 	
 	
 r]   c                 F    t          | ||          }t          |          S )a  
    Generate kernel declarations, in `NativeFunction(s).h`.
    :param grouped_native_functions: a sequence of `NativeFunction` or `NativeFunctionGroup`.
    :param backend_indices: kernel collections grouped by dispatch key.
    :param native_function_decl_gen: callable to generate kernel declaration for each `NativeFunction`.
    :return: a list of string, from the string with all declarations, grouped by namespaces, split by newline.
    rc  rd   rb  )rf  )rj  r{  )rc  rd   rb  rf  s       r\    get_native_function_declarationsr~    s?      0!9'!9  
 D-   r]   ri  c                     |                     |           }|rWd|j        v sNJ dt          | t                    r| j        j        n| j        j        j         d|j         d|j         d            |r|j        nt          S )Nr  zThe kernel for function z with dispatch key z has a namespace z% and it's not ending with '::native'.)	r  r  r|   r2   rm   r   r/  rv   r*   )r   ri  r  s      r\   get_kernel_namespacer    s     #--a00 :1A1O#O#O#O	b*Q2O2O#k16;;UVUaUfUk 	b 	b(5	b 	b,:	b 	b 	b $P#OO +;X&&@Xr]   fmrv   rocmr  skip_dispatcher_op_registrationgen_dispatch_helpersc        	            g }	t          t                    t          t                    t          t                    }
d}t          j        t
          j        |||d           }t          j        t
          j        |||d           }t          j        t
          j        |||d           }|D ]}t          |          
                    dd                                        ||                                                   ||                     t          |t                    r|j        n|j        j        }||
         vrt          t                    |
<   |
         |                              ||                     D ]t!                             dk    rt#                    d|
         D ]?}|
         |         sd| d	 d
|                    |
         |                    dz  @|	                    |                     df	d                              |                     |	S )Nr   r  r  class_method_namer  r   ri  r  r   r   )rn  z
TORCH_LIBRARY_IMPL(r   z, m) {
    
};zRegisterDispatchDefinitions.inic            	         	 j         j        rt          j                  ng           rdnd                                         dS )Nr   )ns_prologuens_epiloguedispatch_helpersdispatch_anonymous_definitions"static_init_dispatch_registrationsdeferred_dispatch_registrationsdispatch_namespacedispatch_namespaced_definitions)rs  rt  destgen_registration_helpersr   )	anonymous_definitionsri  rv   r  kernel_namespacens_definitionsry  registration_bodyr  s	   r\   rs   z1get_native_function_definitions.<locals>.<lambda>J  sm    #,#5#,#5+)(Ek(R(R(R6K(7 7;+""*79*6*<*<*>*>7EFV7W  r]   )r   r}   r~   r  RegisterDispatchKeyrJ   NAMESPACED_DEFINITIONANONYMOUS_DEFINITIONr  r  r   re  r|   r2   r  r/  r   rI   r   substitute_with_templateru  )r  rc  rv   ri  r7  r  r  r  r  definitionsregistrationsrw  ns_genanonymous_genreg_genr   r  r  r  r  ry  r  s     ``   ``        @@@@@r\   get_native_function_definitionsr    s*     K+6t+<+<N2=d2C2C5@5F5FMG%$(G  F ,#(G  M &(G  G & 
 
/!MMMUU
 
 	'(//F1II	
 	
 	
 	./66M!	
 	
 	
 &a88TAKKal>T 	 M*:;;;.9$.?.?M*+&'	299GAJJ	
 	
 	
 	
 +  
  
~./00A55#2BCCC	&'78 	 	I !129=  "" "!-" "\\- 01)<==" " "  	''1            $ eGnn'	
 	
 	
 	
, r]   c           
         g }t          t                    }d}t          j        |t          j        ||d d|          }	| D ]]}
t          |
|                              d|                                          }||         	                     |	|
                     ^|
                                D ]\  }}t          |          dk    rt          |dd	          }t          t          j        |                    }|	                    d|j         d|                    |           d|j         d
                    |                     |S )Nr   F)r  r  r  r  r  r  r   r      rm  rq  )r   r}   r  r  rJ   NAMESPACED_DECLARATIONr  r   r   re  r   r   rI   r   rr  rs  r   rt  ru  )rc  rv   ri  r7  r  r  rv  rf  rw  rm   r   r  rx  ry  rz  s                  r\   get_namespaced_declarationr  b  s    !L/:4/@/@G#%(-  D & 
 
(1+FFFNNl((**
 
	 	9%,,DGG	
 	
 	
 	
 16688 
 
	7w<<1##q
 
 
	 {3G<<==
 o     E 	
 	
 	
 	
 r]   schema_selectorc           
         t          t                    }| D ]"}||j                                     |           #d}g }d }|                                D ]k\  }}t          t          t          |          |                    }	|dk    r|	}8|}d}
|t          v rdnd}|d| d| d|
                    |	           d	z  }l||fS )
Nr   atenr   TORCH_LIBRARY_FRAGMENTTORCH_LIBRARYr   r  z	, m) {
  r  )	r   r}   r  r   r   rH   r6  r,   r   )rc   r  ns_native_functionsnative_functionschema_registrationsaten_schema_registrationscustom_namespacer  rq   schema_registrations_bodytabtorch_library_macros               r\   (get_native_function_schema_registrationsr    s5   
 <Gt;L;L+ O OO56==oNNNN "/5577  	5$(^O44e<<%
 %
!
 (A%%(C
  333 )($  
 ! %% %'% %88%&&% % %    &';<<r]   structured_native_functionsstatic_dispatch_idxcpu_fmcuda_fmfunctions_keysrh  c           
      8   
 |                     dfd           d  D             fd D             |                     dfd           |                     dfd           |                     d	 fd
           t                    |                     dfd           |	D ]_t                    r|n|}|v rEd d|                     d	dfd           |                     dd
fd           ~`d S )NzNativeMetaFunctions.hc                  N    g t          t          t                               dS )N)NativeMetaFunctions_includes NativeMetaFunctions_declarationsr}   rH   r  )r  s   r\   rs   z(gen_aggregated_headers.<locals>.<lambda>  s.    ,.04:<WXX1 1
 
 r]   c                 8    g | ]}t           j        |j        v |S rp   r<   r
  rl  r   fns     r\   r   z*gen_aggregated_headers.<locals>.<listcomp>  s-       2;)F)F)F)F)Fr]   c                     g | ]}|v|	S rp   rp   )r   r  method_native_functionss     r\   r   z*gen_aggregated_headers.<locals>.<listcomp>  s+     # # #3J)J)J)J)J)Jr]   MethodOperators.hc            	      v    g t          t          t          t          j                                       dS )NrH  MethodOperators_includesMethodOperators_declarationsr}   rH   rF  rJ   rU  )r  r  s   r\   rs   z(gen_aggregated_headers.<locals>.<lambda>  sL    (*,0$*8K   , - -
 
 r]   zOperators.hc            	      x    dgt          t          t          t          j                                       dS )Nz!#include <ATen/MethodOperators.h>r  )Operators_includesOperators_declarationsr  )non_method_native_functionsr  s   r\   rs   z(gen_aggregated_headers.<locals>.<lambda>  sO    #F"G&*$*8K   0 ' '
 
 r]   Functions.hc                  z    t                    dgt          t          t                                           dS )Nz#include <ATen/Operators.h>)r   Functions_includesFunctions_declarations)r   r}   rH   r_  rc   r  s   r\   rs   z(gen_aggregated_headers.<locals>.<lambda>  sN    -J#. . $A"A&*#%%$ ' '
 
 r]   )rc  rd   zNativeFunctions.hc                      dg dS )Nz%#include <ATen/NativeMetaFunctions.h>)NativeFunctions_includesNativeFunctions_declarationsrp   )rv  s   r\   rs   z(gen_aggregated_headers.<locals>.<lambda>
  s    )P(Q,8
 
 r]   r   Functions_inl.h>DispatchKeyFunctions.hc                  (    t                     dS N)rv   inline_headersr   rv   inl_headerss   r\   rs   z(gen_aggregated_headers.<locals>.<lambda>  s    $'$5$5&1  r]   Functions_inl.hDispatchKeyFunctions_inl.hc            
      f    g                                  t                    d          dS )NT)rc  rv   ri  r7  r  r  )!DispatchKeyFunctions_inl_includesr   dispatch_namespaced_declarations)r   r  )rd   rv   rc  r  r7  s   r\   rs   z(gen_aggregated_headers.<locals>.<lambda>   sJ    9;*6*<*<*>*>8R1I%1$3L$A!)!#9 9 9  r]   )writer~  r.   write_with_template)rc   rc  r  r  r7  rd   r  r  r  rh  r  r  rv  rv   r  r  r  s   ``````    ` @@@@@r\   gen_aggregated_headersr    sP     LL	
 	
 	
 	
   %  # # # #%# # # LL	
 	
 	
 	
 	
   LL	
 	
 	
 	
 	
   LL	
 	
 	
 	
 	
   4!9'  L LL	
 	
 	
 	
   &  ,\::FWW>))JLJJJK"",,,(       ""000,         " B= r]   ops_fmc                    t          t                    | D ]"}|j                                     |           #t          t                    }|D ]$}|j        |                             |           %                                D ]\  |                     ddfd           |                     ddfd           |                    g           }d |D             t                    dk    r|                     d	d
fd           t          ||t          j
                  |                     ddfd           dD ]#\  |                     dfd           $|	D ]4|vr                                g                                 D ]\  |                    g           }t          t          t          j        |         t          j        ||
dd d          |                    t                    dk    ru                               |                     d ddfd           t#                    r|n|}d d|                     ddfd           |                     ddfd            ~6|                    d!fd"           d S )#Nz_ops.hz
Operator.hc            	      t    dt          t          t          t          j                                       iS )Nrv  r  r  )	functionsr  s   r\   rs   z*gen_per_operator_headers.<locals>.<lambda>P  sF    (".<O   " ! !
 r]   z.hz
Function.hc                      t          t          fd                     d dt          t          t                                           dS )Nc                 &    t          |           S )N)r   )r   r  r  s    r\   rs   z<gen_per_operator_headers.<locals>.<lambda>.<locals>.<lambda>c  s    #=.A$ $ $ r]   r   _ops.h>)static_dispatch_ops_headersoperator_includesfunction_definitions)r}   rH   r_  )r  r   r  s   r\   rs   z*gen_per_operator_headers.<locals>.<lambda>`  sy    /3    "	 0 0 &I4%H%H%H(,'))! ) )  r]   c                 J    g | ] }t          |t                    |j        |!S rp   )r|   r3   r   r  s     r\   r   z,gen_per_operator_headers.<locals>.<listcomp>t  sE      
  
  
"233 
 9; 
 
  
  
r]   r   z_meta.hzNativeMetaFunction.hc                  L    dt          t          t                               iS )Nmeta_function_declarationsr  )structured_functionss   r\   rs   z*gen_per_operator_headers.<locals>.<lambda>  s,    0$ =?S 3 3 r]   r}  z	_native.hzNativeFunction.hc                      rd dng  dS )Nr   z_meta.h>)extra_includesnative_function_declarationsrp   )rv  is_structuredr   s   r\   rs   z*gen_per_operator_headers.<locals>.<lambda>  s+    <IQ8$8888r0<	  r]   ))	Functionsr   )	Operators_ops)NativeMetaFunctions_meta)NativeFunctions_nativec                  r      dfdt                                                    D               dg iS )N	_includesc                      g | ]
}d |  dS )r   .h>rp   )r   r   suffixs     r\   r   z>gen_per_operator_headers.<locals>.<lambda>.<locals>.<listcomp>  s9     ) ) ) <$;;;;) ) )r]   _declarations)r@  r*  )categoryfunctions_by_root_namer  s   r\   rs   z*gen_per_operator_headers.<locals>.<lambda>  sa    &&& ) ) ) ) &'='B'B'D'D E E) ) ) ***B r]   TFr  r   z_dispatch.hzDispatchKeyFunction.hc                       dS )N)r  r  rp   )rv  r  s   r\   rs   z*gen_per_operator_headers.<locals>.<lambda>  s    *<8D  r]   r   r  r  r  c                  (    t                     dS r  r  r  s   r\   rs   z*gen_per_operator_headers.<locals>.<lambda>  s     #L 1 1"-  r]   r  r  c                  B    fdt                     D             g dS )Nc                 "    g | ]}d | d dS )r   r   r   rp   )r   r   r  s     r\   r   z>gen_per_operator_headers.<locals>.<lambda>.<locals>.<listcomp>  s>     6 6 6 R$QQ1CQQQ6 6 6r]   )r  r  r  )r@  )dispatch_namesr  s   r\   rs   z*gen_per_operator_headers.<locals>.<lambda>  sE    &86 6 6 6 &~ 6 66 6 6 57  r]   r  c                  `    t          d                                  D                       g dS )Nc              3   Z   K   | ]&\  }}t          d  |D                       d| dV  'dS )c              3   <   K   | ]}t           j        |j        v V  d S r   r  r  s     r\   r  zGgen_per_operator_headers.<locals>.<lambda>.<locals>.<genexpr>.<genexpr>  s+      IIw~4IIIIIIr]   r   r  N)r&  )r   r   r  s      r\   r  z=gen_per_operator_headers.<locals>.<lambda>.<locals>.<genexpr>  sb       / /#D)IIyIIIII/3d333/ / / / / /r]   r  )r@  r   )r	  s   r\   rs   z*gen_per_operator_headers.<locals>.<lambda>  sI    (. / /'='C'C'E'E/ / / ) )
 -/
 
 r]   )r   r}   r   r   r   r  r   r   r~  r  #compute_native_function_declarationr  r   rD   r  rJ   r  r.   )rc   rc  r  r7  rd   r  r  r  r  rh  r  r  grouped_functions_by_root_namegroupgrouped_functionsr  r  rv  rv   r  r  r  r	  r  r  r   r  r  s     `             @@@@@@@@@@@@r\   gen_per_operator_headersr  1  s     ?J$>O>O 8 8r|,33B7777 	D # * ; ;&t,33E::::17799 I
 I
i""OOO
 
 
 
 
	
 	
 	
  	""KKK     	
 	
 	
, ;>>tRHH 
  
' 
  
  

 011A5 	&&   &   
 
 
 8%6+%)%M
 
 

 	""     		
 		
 		
 		
 
 
& 	OOO     		
 		
 		
 		
 & < <~--)//115;;== 	 	OD) > B B4 L L,'55 !#*.8=   &  L <  A%%!!$'''&&99,999'        -\::FWWFFFF
((($    	
 	
 	
 	,,,(    	
 	
 	
 B
LL	
 	
 	
 	

 
 
 
 
r]   core_fmper_operator_headersc                     |rt           ||||	|
|||           nt           |||||	|||           |                    d fd           |                    d fd           |                    d fd           |                    d	 fd
           dt          t          t          f         f fd}|                    d|           dt          t          t          f         ffd}|                    d|           d S )N)rc   rc  r  r7  rd   r  r  r  rh  r  r  )rc   rc  r  r  r7  rd   r  r  rh  r  r  zTensorBody.hc            	          t          t          t          t          j                                       t          t          t          t          j                                       dS )N)rG  rH  )tensor_method_declarationstensor_method_definitions)r}   rH   ru  rJ   rU  rW  r  s   r\   rs   zgen_headers.<locals>.<lambda>$  s    *.'%18K   % + + *.'%08K   % * *
 
 r]   zRedispatchFunctions.hc                  Z    dt          t          t                                           iS )Nfunction_redispatch_definitions)r}   rH   r~  rc   s   r\   rs   zgen_headers.<locals>.<lambda><  s.    -t2446FGG0 0
 r]   zRegistrationDeclarations.hc                  $    d fdD             iS )Nregistration_declarationsc                 0    g | ]}t          |          S rp   )rA  )r   r   rd   s     r\   r   z1gen_headers.<locals>.<lambda>.<locals>.<listcomp>F  s3     * * * 2!_EE* * *r]   rp   )rd   rc   s   r\   rs   zgen_headers.<locals>.<lambda>E  s3    ' * * * *)* * *
 r]   zVmapGeneratedPlumbing.hc                  "    t                     S r   r$   r  s   r\   rs   zgen_headers.<locals>.<lambda>N  s    +@AQ+R+R r]   rk   c                  &   t                      } t                      }D ]}|                    t          |j        j        j                             |                    |j        j        j        j                   |j                                        D ]}|                     |j                   |h dz  }d                    d t          |          D                       d                    d t          |           D                       dS )N>   orandnotxorbitorcomplor_eqand_eqbitandnot_eqxor_eqz \
c                     g | ]}d | d	S )z_(aten, r%  rp   r   r   s     r\   r   zBgen_headers.<locals>.gen_aten_interned_strings.<locals>.<listcomp>o  $    >>>#D###>>>r]   c                     g | ]}d | d	S )z_(attr, r%  rp   r1  s     r\   r   zBgen_headers.<locals>.gen_aten_interned_strings.<locals>.<listcomp>r  r2  r]   )aten_symbolsattr_symbols)	r   r   r   rm   r   r   r  r   r@  )attrsr  rm   r  rc   s       r\   gen_aten_interned_stringsz.gen_headers.<locals>.gen_aten_interned_stringsQ  s   $ 	$ 	$DIIc$).-../// IIdin).///y7799 $ $		#(####$
 	 
 
 
 	
 $LL>>u>>>  $LL>>u>>> 	
 
 	
r]   zaten_interned_strings.hc                  L    dd                     t                               iS )Nenum_of_valid_tagsz,
)r   r@  )rg   s   r\   gen_tags_enumz"gen_headers.<locals>.gen_tags_enumx  s"    $uzz&2D2D'E'EGGr]   z
enum_tag.h)r  r  r  r
   r   )rc   rg   rc  r  r  r7  rd   r  r  r  r  rh  r  r  r  r7  r:  s   ``  ` `          r\   gen_headersr;    s   $  
 -%= 3+')	
 	
 	
 	
 	
 	-%=(C 3+')	
 	
 	
 	
 MM	
 	
 	
 	
 	
  0 LL	
 	
 	
 	
   LL$	
 	
 	
 	
 	
   LL!#R#R#R#R  #
tCH~ #
 #
 #
 #
 #
 #
J MM+-FGGGH4S> H H H H H H MM,.....r]   view_groups
cpu_vec_fmforce_schema_registrationc                     !"#$%&'( d$rd$|D ]"t          "          r|
n|}rdt          t                   f"#fd'ndt          t                   f"fd'"         t          t                    }D ]E}t          |t                    r|j        n|j        j        }||         	                    |           Ft          "          
                                #"t          j        k    }t          |"d|	  	        !|                    d" d	d
!"$'fd           D ]ъ%%j        j        rt#          "          s%j        j        j        j        &"t          j        u rF||u sJ |                    d& d	d"%fd           |	                    d& d	d%&fd           "t          j        u r)d rd |                    d& dd "%&fd           t-          d" d          ~dt.          t          t          t                   f         f fd}|                    d|           }|rt3          j                    }t7           |          \  (|                    d(fd           dt8          t          t:          t<          f         dt          fd }|                    d! |fd"d#tA                    id$h d%&           |                    d'd(            |                    d)d*            |                    d+ fd,           d-t8          t          t:          t<          f         dt.          t          t          t                   f         ffd.}t	                    t	                    z   }d/ tC          d0           D             }d1 tC          d2           D             } D ]3}|j        j        |vr#|j        j        |vr|	                    |           4|                    d3|||d4h d56           |                    d7fd8           |                    d9fd:           d S );Nz#include <c10/cuda/CUDAGuard.h>
#include <ATen/cuda/ATenCUDAGeneral.h>
#include <ATen/cuda/CUDADevice.h>
#include <ATen/cuda/CUDAContext.h>z#include <ATen/hip/impl/HIPGuardImplMasqueradingAsCUDA.h>
#include <ATen/hip/ATenHIPGeneral.h>
#include <ATen/hip/HIPDevice.h>
#include <ATen/hip/HIPContext.h>rk   c                  6   g } D ]}d}                     |          rd}nht          |t                    r0t          fd|                                D                       rd}n#|j        rt          j        t          j        fv rd}|s| 	                    d|j
         d           t          j        k    r| 	                    d|j
         d           v r!| 	                    d|j
         d d           t          t          |                     S )	NFTc              3   B   K   | ]}                     |          V  d S r   r6  )r   r  r   s     r\   r  z=gen_source_files.<locals>.operator_headers.<locals>.<genexpr>  sJ       E E9;0044E E E E E Er]   r   
_native.h>r  r   r   )r   r|   r3   r&  r  r   r+   Metar   r   r   r@  r   )headersr  is_registeredr   rv   r  r  rc  s      r\   operator_headersz*gen_source_files.<locals>.operator_headers  s   1 " "A$)M$//22 -(, $A';<< - E E E E?@{{}}E E E B B - )-  -,#(#J; + + )-( ! NN#P#P#P#PQQQ$&MN N  'MQ['M'M'MNNN#~55`!+``@R```   c'll+++r]   c                      dg} t           j        k    r|                     d           v r|                     dd           | S )Nz!#include <ATen/NativeFunctions.h>z#include <ATen/Functions.h>r   r   )r+   r   r   )rD  rv   r  s    r\   rF  z*gen_source_files.<locals>.operator_headers  sZ    >?;#UUUNN#@AAA>11NN#Q\#Q#Q#QRRRr]   T)	r  rc  rv   ri  r7  r  r  r  r  Registerz.cppzRegisterDispatchKey.cppc                  p    t                    rnddt          j                                ddS )Nr   )extra_cuda_headersexternal_backend_headersdispatch_headersops_headersr  dispatch_definitions)r.   r  gen_registration_headers)r   rN  rv   rJ  rF  r  r  s   r\   rs   z"gen_source_files.<locals>.<lambda>  sW    '55'&8&8,.$($A!#7% %  0/11$&(<  r]   	UfuncCPU_zUfuncCPU.cppc                      t                    t          j                            t          j                  dS )N)meta_declarationnative_declarationnative_definitions)r  r  r  compute_ufunc_cpu)rd   rv   r  s   r\   rs   z"gen_source_files.<locals>.<lambda>	  sD    ,Ma,P,P.2.V|</ / /3.DQ.G.G  r]   UfuncCPUKernel_zUfuncCPUKernel.cppc                  2    t          j                   dS )N)r   rT  )r  compute_ufunc_cpu_kernel)r  r   s   r\   rs   z"gen_source_files.<locals>.<lambda>	  s      $.2.KA.N.N  r]   z%#include <ATen/native/cuda/Loops.cuh>z$#include <ATen/native/hip/Loops.cuh>
UfuncCUDA_z.cuzUfuncCUDA.cuc                      t                    t          j                            t          j                  dS )N)r   cuda_headersrR  rS  rT  )r  r  r  compute_ufunc_cuda)rd   r[  rv   r  r   s   r\   rs   z"gen_source_files.<locals>.<lambda>#	  sJ     $(4,Ma,P,P.2.V|</ / /3.Ea.H.H  r]   zunrecognized z
 for ufuncc            
         fdD             } d | D             t          t          t          t          j                  |                     t          t          t          t          j                  |                     dS )Nc                 4    g | ]}t          |          |S rp   )r  )r   r  r7  s     r\   r   z@gen_source_files.<locals>.gen_backend_select.<locals>.<listcomp>4	  s9     
 
 
-A"h-O-O

 
 
r]   c                 $    g | ]}d |j          dS )r   r  r   r  s     r\   r   z@gen_source_files.<locals>.gen_backend_select.<locals>.<listcomp>8	  s3       @B;bl;;;  r]   )rM  !backend_select_method_definitions%backend_select_function_registrations)r}   rH   r  rJ   rW  r  )relevant_fnsrc   r7  s    r\   gen_backend_selectz,gen_source_files.<locals>.gen_backend_select3	  s    
 
 
 
)
 
 
 FR   26():HEE| 2 2
 6:()<hGG 6 6
 
 	
r]   zRegisterBackendSelect.cpp)rc   r  zRegisterSchema.cppc                      rg n rg ndS )N)r  r  rp   )r  r  r  s   r\   rs   z"gen_source_files.<locals>.<lambda>U	  s-    .*+*.%&BB%
 
 r]   r  c                     | j         S r   r`  )r  s    r\   key_funcz"gen_source_files.<locals>.key_func_	  s     |r]   zOperators.cppc                 h    d| j          dg t          t          j                  |           gdS )Nr   r  r  )rF  r  )r   rF  rJ   rW  r  s    r\   rs   z"gen_source_files.<locals>.<lambda>h	  sV    !Hr|!H!H!H I %4G    !
 !
 r]   r      >   r  rF  r   )key_fnenv_callablebase_env
num_shardssharded_keyszFunctions.cppc                      i S r   rp   rp   r]   r\   rs   z"gen_source_files.<locals>.<lambda>~	  s    " r]   zTensorMethods.cppc                      i S r   rp   rp   r]   r\   rs   z"gen_source_files.<locals>.<lambda>	  s    r r]   zATenOpList.cppc                  L    dt          t          t                               iS )Naten_ops)r}   rH   r  r  s   r\   rs   z"gen_source_files.<locals>.<lambda>	  s"    Xo7GHHII
 r]   r  c                     dt           t          t          t          f         dt          t
                   fd} ||           t          |           t          | t          j	                           dS )Nr  rk   c                 B   t          | t                    rLd| j        j         dd| j        j         dg}| j        #|d| j        j         dd| j        j         dgz  }|S t          | t
                    rd| j        j         dd| j        j         dd| j        j         dd| j        j         dg}| j        #|d| j        j         dd| j        j         dgz  }| j	        #|d| j	        j         dd| j	        j         dgz  }|S d| j         dd| j         dgS )Nr   rB  r  )
r|   r4   rM  r   rN  r3   r/  r  r   r  )r  rD  s     r\   gen_op_headerszPgen_source_files.<locals>.functionalization_env_callable.<locals>.gen_op_headers	  s    !566 " G!&*:FFFC!&*:CCC ;*Oak.COOOLak.CLLL  G A344 L!,*@LLLI!,*@IIIE!%/EEEB!%/BBB	 9(Mai.AMMMJai.AJJJ  G 9(Mai.AMMMJai.AJJJ  G  B!+AAA>!+>>> r]   )rM  func_definitionsfunc_registrations)
r   r2   r3   r4   r   r   r    r!   r+   r   )r  ru  rd   r7  s     r\   functionalization_env_callablez8gen_source_files.<locals>.functionalization_env_callable	  s    %	^%9;SST%	#Y%	 %	 %	 %	P *>!,, @! ! #E EF# #
 
 	
r]   c                 (    i | ]}|j         j        |S rp   rm   r   r]  s     r\   
<dictcomp>z$gen_source_files.<locals>.<dictcomp>	  s.     : : : 	
Q: : :r]   c                 D    t          |                                           S r   r}   r  r  s    r\   rs   z"gen_source_files.<locals>.<lambda>	  s    T!++--%8%8 r]   c                 (    i | ]}|j         j        |S rp   rz  r]  s     r\   r{  z$gen_source_files.<locals>.<dictcomp>	  s+     4 4 4Q4 4 4r]   c                 D    t          |                                           S r   r}  r~  s    r\   rs   z"gen_source_files.<locals>.<lambda>	  s    D4G4G r]   zRegisterFunctionalization.cpprl  >   rM  rv  rw  func_add_back_views_definitions!func_add_back_views_registrations)rj  rk  rm  rn  zFunctionalInverses.hc                  H    dt          t           fd                    iS )Nview_inverse_declarationsc                 $    t          |           S r   )r"   )r  r7  s    r\   rs   z4gen_source_files.<locals>.<lambda>.<locals>.<lambda>	  s    L !  r]   )r}   rH   )r7  r<  s   r\   rs   z"gen_source_files.<locals>.<lambda>	  s?    '     	 * *	
 r]   zCompositeViewCopyKernels.cppc            	      0   d D             d D             z   t          t          t           t          j                                               t          t          t
                              t          t          t                              dS )Nc                     g | ]<}d                      d |j        |j        gn|j        |j        gD                       =S )r   c              3   <   K   | ]}d |j          d|j          dV  dS )r   z_ops.h>
#include <ATen/ops/rB  Nr`  r]  s     r\   r  z@gen_source_files.<locals>.<lambda>.<locals>.<listcomp>.<genexpr>
  sb       	 	 B!+ B B +,+	B B B	 	 	 	 	 	r]   )r   rN  rM  r   r  s     r\   r   z6gen_source_files.<locals>.<lambda>.<locals>.<listcomp>
  sn         		 	 	 %&K$7afak=R	 	 	 	 	  r]   c                 p    g | ]3}d                      d |j        |j        |j        fD                       4S )r   c              3   B   K   | ]}|d|j         vd|j         dV  d S )Nr\  r   r  )r   r   r]  s     r\   r  z@gen_source_files.<locals>.<lambda>.<locals>.<listcomp>.<genexpr>
  sL        }AF)B)B ?!+>>>)B)B)B)B r]   )r   r   r  r/  r  s     r\   r   z6gen_source_files.<locals>.<lambda>.<locals>.<listcomp>
  sa         		  iALA      r]   )rM  #CompositeViewCopyKernel_Definitions(GeneratedCompositeFunctional_Definitions!GeneratedCompositeOut_Definitions)r}   rH   r#   r+   r   r?   r@   )rd   r  r<  s   r\   rs   z"gen_source_files.<locals>.<lambda>
  s      %    5  * 48.''N 
   	4 	4 9=3/ 9 9 26,/ 2 2M,
 ,
 r]   )"r.   r   r   r   r}   r|   r2   r  r/  r   r   r+   r   r  r  r  ufunc_inner_loopr0   rm   r   CPUCUDAr  r
   r  rB   rG  r  r   r3   r4   write_shardedr   rD   ))rc   rc  r  r<  r7  r  rd   r  r  r=  r  rh  r  r  r>  r  r  r  ns_grouped_native_functionsgrouped_native_functionr  r  rd  r  rg  rx  
all_groupsstructured_mapview_mapr   r  r   r[  rN  rv   r  rJ  r  r   rF  r  s)   ```````     `` ``             @@@@@@@@@@@r\   gen_source_filesr  ~  s   (&
  $$ & R R,\::FWW 2	&,d3i &, &, &, &, &, &, &, &, &, &, &,Td3i        (5&1$&7&7#'? 	S 	S# 5~FFB'11,7A 
 (	299:QRRRR ..4466
 KMM 	  ?%=%%,K!5
 
 
 
 
 
 	)|)))%         	
 	
 	
" - +	O +	OA5) 1F|1T1T <$).D{..V||||&&****"     
 
 
 ..0d000(        !111F J#IL&&****"           %%M\%M%M%MNNNB
S$s)^ 4 
 
 
 
 
 
 
( LL,.@AAAO  >*;==
 	1)?	 	 	! LL	
 	
 	
 	
 	
 	

 
 
."68PPQ	   
 
 
 
 
 ,-J#. .

 
 
 
'    4 LL**---MM%zz222MM	
 	
 	
 	
  5
!57OOP5
	c49n	5
 5
 5
 5
 5
 5
 5
r 	())D- - 	 : :88:UVV: : :N4 4 )*G*G U U4 4 4H  ! !6;n,,H1L1La   
'3
 
 
     LL		
 		
 		
 		
 		
  < LL&,	
 ,	
 ,	
 ,	
 ,	
 ,	
/ / / / /r]   c                 :    |                      dfd           d S )NzDeclarations.yamlc                  6    t          d  D                       S )Nc                 ,    g | ]}t          |          S rp   )r,  r]  s     r\   r   z;gen_declarations_yaml.<locals>.<lambda>.<locals>.<listcomp>9
  s!    SSSQ5a88SSSr]   )r  r  s   r\   rs   z'gen_declarations_yaml.<locals>.<lambda>9
  s    SSBRSSSTT r]   )r  )r  rc   s    `r\   gen_declarations_yamlr  4
  s4     LLTTTT    r]   c                  b    t          j        t                    j                                        S )z
    If you're depending on torchgen out-of-tree, you can use the root to figure
    out the path to native_functions.yaml
    )pathlibPath__file__parentresolverp   r]   r\   get_torchgen_rootr  =
  s#    
 <!!(00222r]   c                      t          j        d          } |                     dddd           |                     dd	d
           |                     ddd           |                     ddd           |                     ddddd           |                     ddd           |                     ddd           |                     dddd           |                     d d!d"           |                     d#d$dd%           |                     d&d'dd(           |                     d)d*dd+           |                     d,d-dd.           |                     d/t          dg d0g d0d12           |                                  t           j         j                  }t          j	        
                     j        d3          }t          j	        
                     j        d4          }d5d6lm} t                      } j        sM|                    t"          j                   t"          j        |v r ||                    t"          j                  = t)          |||          }t*          |         }|j        |j        c}t1          |          }	d7 |	D             }
t3          |          }d8 |D             } j         d9}t7          j        |                              d:d:;            j         d<}t7          j        |                              d:d:;           t=           |=          }t=           >          }t=           >          }t=           >          }t=           |=          }t"          j        t"          j         t"          j!        t"          j"        t"          j#        t"          j$        t"          j%        h} j        r|                    t"          j                    j&        r fd?|D             }g } j'        rJfd@ j'        D             } j'        D ]/}t#          j(        |          }||vr|                    |           0dA j)        v rQtU          d\i dB|dC|	dD|
dE|dF|dG|dHdI|dJ|dK|dL|dM|dN|dO j+        dP j,        dQ j-        dR j.         dS j)        v r(t_          |||	|
|||||||| j+         j-        T           dU j)        v rta          ||V            j1        rt7          j         j1                  2                                }|j3        }|j4        }|dWf|dXf|dYf|dZf|d[ffD ]<\  }}||z   }|j5        ||z   z  }|6                    |t          |                     ;d S d S )]NzGenerate ATen source files)descriptionz-sz--source-pathz!path to source directory for ATenzaten/src/ATen)helpr   z-oz--output-dependenciesz:output a list of dependencies into the given file and exit)r  z	--dry-run
store_truez5run without writing any files (still updates outputs))actionr  z--per-operator-headersz2generate separate headers per operator in ATen/opsz-dz--install-dirz--install_dirzoutput directoryzbuild/aten/src/ATenz--rocmz=reinterpret CUDA as ROCm/HIP and adjust filepaths accordinglyz--mpsz'Generate MPS registration code when setz--op-registration-whitelistz--op_registration_whitelist*zfilter op registrations by the whitelist (if set); each item is `namespace`::`operator name` without overload name; e.g.: aten::empty aten::conv2d ...)nargsr  z--op-selection-yaml-pathz--op_selection_yaml_pathaD  Provide a path to the operator selection (for custom build) YAML that contains the information about the set of selected operators and their categories (training, ...). Each operator is either a full operator name with overload or just a bare operator name. The operator names also contain the namespace prefix (e.g. aten::)z--backend-whitelistz--backend_whitelistzRfilter dispatch backend by the whitelist (if set), e.g.: CPU CUDA QuantizedCPU ...z--static-dispatch-backendz--static_dispatch_backendz?generate static dispatch code for the specific backend (if set)z!--skip-dispatcher-op-registrationz!--skip_dispatcher_op_registrationz0Avoid registering operators into the dispatcher.z--force-schema-registrationz--force_schema_registrationz}force it to generate schema-only registrations for all ops, includingthose that are not listed on --op-registration-whitelistz
--generate)rD  sourcesdeclarations_yamlzGenerate only a subset of files)r   r  choicesr   r  znative/native_functions.yamlznative/tags.yamlr   )rh  c                 <    g | ]}t          |t                    |S rp   )r|   r3   r  s     r\   r   zmain.<locals>.<listcomp>
  s8     # # #z!=Q/R/R#	# # #r]   c                 <    g | ]}t          |t                    |S rp   )r|   r4   r  s     r\   r   zmain.<locals>.<listcomp>
  s9       a122	  r]   z/coreT)parentsexist_okz/ops)optionsinstall_dir)r  c                 ^    g | ])}t          |          st          |          j        v '|*S rp   )r/   r   backend_whitelist)r   r   r  s     r\   r   zmain.<locals>.<listcomp>
  sI     
 
 
&q))
 .1VVw7P-P-P -P-P-Pr]   c                 D    g | ]}t          j        |                   S rp   )r+   parse)r   keyrd   s     r\   r   zmain.<locals>.<listcomp>
  s9     
 
 
 K-c223
 
 
r]   r  rc   rc  r  r<  r7  r  rd   r  r  r=  r  rh  r  r  r>  r  r  rD  )rc   rg   rc  r  r  r7  rd   r  r  r  r  rh  r  r  r  r  )rc   r  r   cpu_vec_core_cuda_ops_rp   )7argparseArgumentParseradd_argumentr   
parse_argsrI  op_registration_whitelistrC  osri   r   source_pathtorchgen.modelrh  r   mpsr   r+   MPSrz   r   r   rc   rd   ra  rX  r  r  r  mkdirrG   r  r  r   r   r   r   rC  r  static_dispatch_backendr  generater  r  r>  r  r  r;  r  output_dependenciesr  r   stemr  write_outputs)!parserr7  native_yaml_pathr   rh  rh   parsed_yamlrg   rc   rc  r  !native_functions_with_view_groupsr<  core_install_dirops_install_dirr  r  r=  r  r  r  r  r  dp_keydepfile_pathdepfile_namedepfile_stemr  rx  varnameri   rd   r  s!                                  @@r\   mainr  E
  s   $1MNNNF
0	     I    
 D    
  A    
 %     L    
 6     %%-	     ""M     *	     ##N	     ++?	     %%C	     ;;;;;;.     !!G()& H
 w||G$79WXXW\\'"57IJJN,,,,,, %%K; D(((?m++m11+/BBC#$4nkRRK.~>J$# &o
  <<LMM# #+# # # )M) )% 2  K  "-444L!""(((EEE ,222OL!!''t'DDD=MNNNGw///F"7333J000GwOLLLF
 	-9-:N { ,;?+++  

 
 
 
"
 
 
 /1& +
 
 
 
6
 
 
 2 	+ 	+C &s++F^++""6***G$$$ 	
 	
 	
--	
%=%=	
 )D(C	
 $		

 X	
 !4 3	
 ,O	
 G	
 6	
 "z	
 G	
 (-	
 *>	
 	
 '.&G&G	
  ")!=!=!	
" -4,S,S#	
 	
( G$$$-!%=(C 3+')!(!=	
 	
 	
 	
$ g.../?OOOO" 1|G$?@@HHJJ#(#( RL$ggV
 		1 		1JB |+G&&<*?@DWc$ii00001 1
		1 		1r]   __main__)Nre   F)re   r   )rk   N)r  	functoolsr>  r  r  collectionsr   r   r   dataclassesr   r   typingr   r	   r
   r   r   r   r   r   r   r   r   r   torchgen.api.dispatcherapir;  torchgen.api.metar  torchgen.api.nativer  torchgen.api.structuredr   torchgen.destr  torchgen.apir   torchgen.api.translater   torchgen.api.typesr   r   r   r   r   r   r   torchgen.contextr   r   r   r   #torchgen.gen_functionalization_typer    r!   r"   r#   torchgen.gen_vmap_plumbingr%   r  r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   #torchgen.native_function_generationr>   r?   r@   rA   !torchgen.selective_build.selectorrB   torchgen.utilsrC   rD   rE   rF   rG   rH   rI   rJ   torchgen.yaml_utilsrK   rL   rM   rO   r   r   rb   objectr   r  r   r   	lru_cacher   r   r   r   r   r   r   r   r  r  r  r3  r6  rF  r_  ru  r~  r  r  r  r  r  r  r  r  r  r  r  r,  r0  rA  rI  rX  ra  r  rj  r{  r~  r  r  r  r  r  r  r;  r  r  r  r  r  r^   rp   r]   r\   <module>r     s\         				  < < < < < < < < < < ( ( ( ( ( ( ( (                           , , , , , , , , ,                   $ $ $ $ $ $ $ $ $ , , , , , , , , ,             , , , , , ,                                        = < < < < <                                                   4            ? > > > > >	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 7 6 6 6 6 6 6 6GCLLB        #%  "  Z'9;L&MNN
 /3 %+# +#+#C+# #k*++# 	+#
 +# +# +# +# +#\ v S S    " T"""/# /#c( / / / #"/ /31
 !&$(1 1 1
11 #k*+1
 1 &!1 1 1 1 1@$(@ $T $ $ $ $N
# 
# 
 
 
 
4	
4#5 	
${:K 	
 	
 	
 	
&2k   (&*<&8c]    D,> 49     ,	|00	1 , , 	 ,  ,  ,  ,FR	|00	1RR  R 		R R R R2J	|00	1JJ ,'J 		J J J J:F	|00	1FF ,'F 		F F F FX $` ` ` ` ` ` ` `0 $[& [& [& [& [& [& [& [&@ $* * * * * * * *^ $' ' ' ' ' ' ' 'Z $       < M~ M# M M M M
y)= y(3- y y y yx3N 36F 34 3 3 3 3 $:& :& :& :& :& :& :& :&HSf S S S S S&     0
D 
S 
 
 
 
S\ d3i    ?'?'
4S#Xc3h/0?' ?' ?' ?'F

 
 H	

 S
 S#X
 
 
 
 
@!! ! H	!
 S! S#X! ! ! ! !H U U6 U U U Ur. T     "(,[,-F(G   "!D(0c(;$SM    >+O~.+OeN$<<=>+O +O +O +O\~.eN$889:   8 	0  &u^=Q-Q'RS +|34 '	#^3	4lCT#YN	 
#tCy.   :S$s)^, 
#Y   D 	0  &u^=Q-Q'RS +|34 '	#^3	4lCT#YN	 
#Y   4
 44
5DP    bb 'u^=Q-Q'RSb 	b
 b b b b &*b b 
#Yb b b bN.&u^=Q-Q'RS. . 	.
 . . . 
#Y. . . .d!=~.!= &!= 49c>	!= != != !=Hv~.v 'u^=Q-Q'RSv "**>!?	v
 l+v v +|34v v v $v K(v v 
v v v vr~. 'u^=Q-Q'RS l+	
  +|34    $ K(  
   DH/~.H/ CH/ 'u^=Q-Q'RS	H/
 "**>!?H/ l+H/ H/ +|34H/ H/ H/ H/ H/ K(H/ $H/ H/  !H/" 
#H/ H/ H/ H/Vs~.s 'u^=Q-Q'RSs "**>!?	s
 23s s l+s +|34s s s s s K(s $s s   $!s" #s$ &*%s& 
's s s sl+3N+C	   37< 3 3 3 3v1 v1 v1 v1r zDFFFFF r]   