
    OgEt                       d dl mZ d dlZd dlmZ d dlmZ d dlmc m	Z	 d dl
mZ d dlmZmZmZ d dl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mZmZm Z m!Z!m"Z"m#Z# d d	l$m%Z% erd d
l&m'Z' ddgZ(ddgZ)g dZ*dgZ+	 	 	 	 ddZ,ddZ-ddZ.ddZ/	 	 	 	 d dZ0ddZ1	 	 	 	 	 	 d!dZ2	 	 	 	 	 	 d"dZ3d#dZ4d$dZ5ed%d       Z6ed%d       Z7y)&    )annotationsN)defaultdict)TYPE_CHECKING)	translate)BindingDispatcherSignatureExpr)with_native_function)
AnnotationArgumentBackendIndexBackendMetadataBaseOperatorNameBaseTyBaseTypeDEFAULT_KERNEL_NAMESPACEDeviceCheckTypeDispatchKeyFunctionSchemaNativeFunctionNativeFunctionsGroupOperatorNameReturn
SchemaKindVariant)	concatMap)Sequencez'adaptive_avg_pool3d_backward.grad_inputz _slow_conv2d_backward.grad_input_cummax_helper_cummin_helper)$_assert_asyncz_assert_async.msg_assert_tensor_metadata_cslt_sparse_mm_search_assert_scalar_dimI_dimV_has_same_storage_numel_linalg_check_errors_local_scalar_dense%_nested_tensor_from_mask_left_aligned_nnz_use_cudnn_ctc_lossz_use_cudnn_ctc_loss.Tensor#_validate_compressed_sparse_indicesallclose	dense_dimequalis_coalesced	is_pinnedis_same_size	is_set_toq_per_channel_axisq_scaleq_zero_pointqschemerecord_stream
sparse_dimsym_constrain_rangesym_constrain_range_for_size_nested_tensor_storage_offsets'_chunk_grad_outputs_efficient_attention_fused_sdp_choice_print_sink_tokens_nested_get_ragged_idx
polygamma_c                    t        t              }| D ]Z  }||j                  j                            }|j                  j	                         |vsJ |||j                  j	                         <   \ |S N)r   dictfunc	signaturekind)native_functionspre_grouped_native_functionsfds       j/var/www/html/suriana-translation/venv/lib/python3.12/site-packages/torchgen/native_function_generation.pypre_group_native_functionsrN   n   sm    
 	D !  ()9)9);<vv{{}A%%%!&&++- ('    c                    | sdS |  dS )Nout_out )overload_names    rM   &get_expected_out_variant_overload_namerU   |   s    %5Am_D+AArO   c                :   | j                         t        j                  k(  sJ | j                  j                  J t        | j                  j                         j                  t        | j                  j                              | j                  j                         j                  t        d| j                  j                  j                  j                  d | j                  j                  j                  j                         g      | j"                        S )NrQ   nametypedefault
annotationrX   	argumentsreturns)rH   r   inplacer]   self_argr   rX   remove_inplacewith_overloadrU   rT   remove_self_annotationwith_out_argsr   argumentrY   r[   r^   )rF   s    rM   self_to_out_signaturerf      s    99;*,,,,,>>""...
 YY%%'5524993J3JK
 ..779GG0099>> #~~66??JJ		
  rO   c                L   | j                         t        j                  k(  sJ t        |       \  }}t	        | j
                  j                  t        | j
                  j                              | j                  j                         j                  |      t        |            S Nr\   )rH   r   
functionalgenerate_out_args_from_schemar   rX   rb   rU   rT   r]   rG   rd   tuplerF   new_returnsnew_out_argss      rM   functional_to_out_signaturero      s    99;*///// =d CK
 YY$$24993J3JK
 ..**,::
 k" rO   c           
     f   t        d | j                  D              rJ | j                  D cg c]  }|j                  j                         s|! }}t	        |      dkD  sJ t        d | j                  j                        }t        j                  D cg c]	  }||vs| }}t        d | j                  D              }g }g }t        | j                        D ]  \  }	}|j                  j                         rt        t	        | j                        dk(  rdnd|	 |j                  d t        j                  ||	    d            }
|j                  |
       |st!        d |
j                  |
j"                  	      }|j                  |       |j                  |        ||fS c c}w c c}w )
Nc              3  h   K   | ]*  }|j                   d uxr |j                   j                   , y wrD   )r[   is_write.0rs     rM   	<genexpr>z0generate_out_args_from_schema.<locals>.<genexpr>   s0      ?@D :Q\\%:%::   02r   c                J    | j                   g S | j                   j                  S rD   )r[   	alias_set)as    rM   <lambda>z/generate_out_args_from_schema.<locals>.<lambda>   s    ," !,,2H2H rO   c              3  h   K   | ]*  }|j                   t        t        j                        k(   , y wrD   )rY   r   r   Tensorrs   s     rM   rv   z0generate_out_args_from_schema.<locals>.<genexpr>   s"     WQqvv&--)@@Wrw      rQ   !rW   )rX   rY   r[   )anyr^   rY   is_tensor_likelenr   r]   flat_allstringascii_lowercaseall	enumerater   r   parseappendr   r[   )rF   ru   tensorlike_retsused_annotationsxvalid_annotationsall_rets_are_tensorsrn   rm   inew_outnew_rets               rM   rj   rj      s   
  DHLL    #',,JQ!&&2G2G2IqJOJ!### H %+$:$:XqaGW>WXXW$,,WW#%L !#K$,,' "166  "!$,,/14UCs)VV%++/@/C.DA,FG	G (# !GLLW=O=O ""7+q!#"$ $$E K Ys   F)F)	F. F.c                L   | j                         t        j                  k(  sJ t        |       \  }}t	        | j
                  j                         j                  t        | j
                  j                              | j                  j                  |      t        |            S rh   )rH   r   mutablerj   r   rX   ra   rb   rU   rT   r]   rd   rk   rl   s      rM   mutable_to_out_signaturer      s    99;*,,,,, !>d CKYY%%'5524993J3JK
 ....|<k" rO   c                   ddl m} |t        j                  k(  r| j                  j                         t        j                  k7  sJ | j                  j                  d      j                  t        t        | j                  j                  j                  j                  d| j                  j                  j                  j                  | j                  j                         t        j                  k(        | j                  j                  j                              }n|t        j                  k(  r| j                  j                         t        j                   k(  rt#        | j                        }n| j                  j                         t        j                  k(  rt%        | j                        }nW| j                  j                         t        j                  k(  rt'        | j                        }nt)        d      t)        d	      |j                         t        j                  k(  r|j                  j+                         n|j                  |      }| j                  j-                         r|d
z  }t.        j0                  |j                  t3        |dt4              ii}dht7        | j8                  h dz        z  }t;        d&i d|d| j<                  dt>        j@                  hdddd dd dd dg di dddddd dd dddtB        jD                  d| jF                  dt7               d| jH                  d dd!dd"dd#dd$|d%| jJ                  |fS )'Nr   )cppT)keep_return_namesF)baser_   dunder_methodfunctional_overload)rX   rT   z^We only bother generating out= functions from either inplace or mutable or functional variantszDWe currently only generate either functional or out= NativeFunctions_symint)kernel
structuredcpp_namespace	generated>   	view_copypt2_compliant_tagnondeterministic_seededrF   !use_const_ref_for_mutable_tensorsvariantsr   structured_delegatestructured_inheritsprecomputedautogenufunc_inner_loopmanual_kernel_registrationmanual_cpp_bindingpython_modulecategory_overridedevice_guarddevice_checkloccpp_no_default_argsis_abstract&has_composite_implicit_autograd_kernel4has_composite_implicit_autograd_nested_tensor_kernel&has_composite_explicit_autograd_kernel5has_composite_explicit_autograd_non_functional_kerneltags	namespacerS   )&torchgen.apir   r   ri   rF   rH   rG   	with_namer   r   rX   r   r   r   rT   rQ   r_   rf   r   ro   AssertionErrorunambiguous_name
has_symintr   CompositeExplicitAutogradr   r   setr   r   r   r   functionr   NoCheckr   r   r   )rK   kr   rF   kernel_namebackend_metadatar   s          rM   generate_functionr     s4    !J!!!vv{{}
 5 5555 vv$7AA%))..!"#&&++"2"2"@"@()9K9K(K  ffkk77	
 
jnn	 66;;=J...(0DVV[[]j000+AFF3DVV[[]j333.qvv6D p  R
 	
 99;*..( 			""$XXd^ 
 	vvy --II" 60
 =3	NN D
 	 	
	
./.Q.Q	
 &&'		

 	
 !%	
 !%	
 	
 	
  	
 (-	
  %	
 	
 #	
 	
  )00!	
" #	
$ !$%	
& '	
( 49)	
* BG+	
, 48-	
. CH/	
4 5	
6 kk7	
: 	= rO   c                l   t        |       }|j                         D ]  }t        j                  |v }t        j                  |v }t        j
                  |v }t        j                  |v }t        d |j                         D              }|s|s|s|sut        d |j                         D              }	t        d |j                         D              }
t        d |j                         D              }|	s|
s|r|s|rt        |j                               dk(  rjt        |t        j                     j                  j                        t        vr2t        dt        |t        j                     j                               f|r8t        |t        j                     j                  j                        t        v r|r|t        j
                     n<|r|t        j                     n'|r|t        j                     n|t        j                     }|j                  j!                         t        j                  k(  xs& t        d |j                  j"                  D              }t        d |j$                  D              }| xr |xr |}|sn|slt        |j                  j                        t&        vrGt        |j                  j                        t(        vr"t        d	t        |j                         d
      |rWt+        |t        j                        \  }}||t        j                  <   t-        j.                  ||       | j1                  |       |r9|s|s?t+        |t        j                        \  }}||t        j                  <   t-        j.                  ||       | j1                  |        y )Nc              3  8   K   | ]  }d |j                   v   yw)coreN)r   )rt   variants     rM   rv   z1add_generated_native_functions.<locals>.<genexpr>  s     Gf,Gs   c              3  4   K   | ]  }|j                     y wrD   )r   rt   rK   s     rM   rv   z1add_generated_native_functions.<locals>.<genexpr>  s     FaQ11F   c              3     K   | ]>  }|j                   xr, t        |j                  j                  j                        d k7   @ yw)set_N)
is_view_opstrrF   rX   r   s     rM   rv   z1add_generated_native_functions.<locals>.<genexpr>  s9      EF@QVV[[%5%5!6&!@@s   AAc              3  4   K   | ]  }|j                     y wrD   )r   r   s     rM   rv   z1add_generated_native_functions.<locals>.<genexpr>  s      )=>88)r   r~   zEFound an out= operator that we could not find any other variants of: c              3  P   K   | ]  }|j                   j                            y wrD   )rY   r   rs   s     rM   rv   z1add_generated_native_functions.<locals>.<genexpr>  s$      M,-%%'Ms   $&c              3  6   K   | ]  }d t        |      v   yw)rQ   N)r   )rt   op_names     rM   rv   z1add_generated_native_functions.<locals>.<genexpr>  s     QgES\1Qs   zBFound an operator that we could not generate an out= variant for: z.
This type of operators don't have tensor-like return, making it difficult to generate a proper out= variant. If
out= variant is not needed, please add the function name into FUNCTIONAL_OPS_THAT_CANNOT_GET_AN_OUT_VARIANT list.)rN   valuesr   ri   r_   r   rQ   r   r   r   r   rF   rX   &OUT_OPS_THAT_DONT_GET_GROUPED_PROPERLYr   *INPLACE_OPS_THAT_DONT_GET_GROUPED_PROPERLYrH   r^   r   *MUTABLE_OPS_THAT_CANNOT_GET_AN_OUT_VARIANT-FUNCTIONAL_OPS_THAT_CANNOT_GET_AN_OUT_VARIANTr   r   
grow_indexr   )rsindicesrJ   rL   has_functionalhas_inplacehas_mutablehas_outis_core
are_manualhas_view_opsare_composite_implicitbase_fnbase_fn_valid	needs_outgets_out_variantfnmetadatas                     rM   add_generated_native_functionsr     sH    $>b#A )002 q#..!3 ((A- ((A-..A%GAHHJGG +NF188:FFJ  JK((* L &) )BC((*) &" \-CG3qxxz?a/ *..)..334AB )_`cdefpftftdudzdz`{_|}  
 *,,-22778=>   *$$%  z))*  z~~&z,,- " $LL--/:3E3EE  M181E1EM JM QQQI#*{J}J=))*EFGLL--.HI )^_bcjcoco_p^q rr u   0*..IH$&*..!'':		"
 "w2B0*:O:OPH+-*''('':		"cqrO   c                    t        |       t        |      k(  sJ t        |       dk(  ryt        |       dk(  r	d|d    dS dt        j                  |       j                          ddj	                  |       dS )	Nr    r~   zreturn ;(, );)r   
dispatcherreturns_typecpp_typejoin)retsnamess     rM   
return_strr     sy    t9E
"""
4yA~	Taq
!$$006??AB!DIIeDTCUUWXXrO   c                    | j                         }g }t        | j                        dkD  }t        |      D ]$  \  }}|	|j	                  |r	d| d| dn|       & |S )Nr~   	std::get<>())aliased_return_namesr   r^   r   r   )rF   out_varaliased_retsnon_aliased_namesis_out_var_a_tupler   ru   s          rM   gather_nonaliased_inner_retsr    ss    ,,.LT\\*Q.,' 19$$/A)A3b	+w
 rO   c                   d| j                   j                  vry | j                  %d| j                  j                  vr| j                  }nY| j                  %d| j                  j                  vr| j                  }n(t	        t        | j                   j                              t        | j                   j                        }t        |j                        }g }g }g }t        t        j                  | j                   j                        t        j                  |j                              D ]  \  }}|j                  |j                  j                  r|j                  d|j                   d|j                   d       |j                  t        |j                   dt        j                   ||j                                     |j                  |j                   d       |j                  t        j"                  |              dj%                  t'        ||j)                               D 	cg c]  }	|	j*                   c}	      }
d	}t-        |j                  j.                        d
kD  rd| dnd}t1        |j                  |      }t3        | j                   j                  j.                  ||z         }dj%                  |      }d|j5                  |j                         | j6                  j                  j9                         rdndz          d| d| d|j                  j                  j;                          d|
 d| dS c c}	w )Nr   zauto z_clone = clone_arg(r   _clone)binds)exprrY   r   outputr   z = r   
r   rX   z {
  
  z
at::_ops::::call();
  
}
)ri   r   r_   r   r   r   rF   r   zipr   jit_argumentsr[   rr   r   rX   r	   argument_typere   r   r   r]   r  r   r^   r  r   defnrQ   r   r   )gtarget_fsig
target_sigcontextclone_mutable_inputscloned_return_namesa_curra_tgteexprsout_namemaybe_assigninner_return_namesret_strclone_mutable_inputs_strs                   rM   gen_composite_functional_kernelr"    s    !,,+++yyAIINN!B99	
	;aiinn#D99 S!2!2344
all//
0C$X]]3J$&G   !2!23  / 8 'E,<,<,E,E ''}$7}BG NN"KK=/#11&L  &&&++f'=>NN:..v67#8$ IIy*:N:N:P'QR!qvvRSEH,/0E0E,F,JU8*C(PRL5hmmXN	!!#58K#KG  $yy)=>sxxz!%%***?*?*AYrJK L M .
8==-->>@A P
) 	  Ss   6Mc                   d| j                   j                  vry t        | j                   j                        }t        | j                  j                        }dj                  t        |j                         |j                               D cg c]  }|j                   c}      }g }d}t        | j                   j                  j                  j                         D ]n  \  }}t        | j                  j                  j                        dk(  r|nd| d| d}	|j                  d|j                   d|	 d	|j                   d|	 d
	       p g }
t        | j                   j                  j                               D ]a  \  }}||
j                  |       t        | j                  j                  j                        dk(  r|nd| d| d}	|
j                  |	       c dj                  |      }d|j                  | j                   j                  j                  j!                         | j                   j                  j#                         rdndz          d| d| j                  j                  j                  j!                          d| d| dt%        | j                   j                  j                  |
       dS c c}w )Nr   r   
tmp_outputr~   r   r   r   z  resize_out_helper(z);
  copy_arg(r   r  r   r   r	  z
 {
  auto z = at::_ops::r  r  r
  r  )rQ   r   r   rF   ri   r   r   r]   r  r   r   r^   r   rX   r   r  r   r   r   )r  r  r  r  r  	copy_outsr  r   out_argfunctional_return_namer   ret_namecopy_outs_strs                rM   gen_composite_out_kernelr*  T  s    !%%**$ aeejj
)C$Q\\%6%67JII"3==?J4H4H4JKLALE IH

 4 4 8 89 


7 1<<$$,,-2 QCr(1- 	
 	\\N"%;$< =LL>2329	


 D !!@!@!BC 	08KK! q||((001Q6  2hZq1 #
 KK./	0 IIi(Mquuzz//1!%%**BWBWBYY_abc d ezq||0055FFHIQVPW X/ aeejj  $'( )	 G 	Ms   K)rI   zSequence[NativeFunction]returnz6dict[FunctionSchema, dict[SchemaKind, NativeFunction]])rT   
str | Noner+  r   )rF   r   r+  r   )rF   r   r+  z#tuple[list[Return], list[Argument]])rK   r   r   r   r+  zMtuple[NativeFunction, dict[DispatchKey, dict[OperatorName, BackendMetadata]]])r   zlist[NativeFunction]r   z6dict[DispatchKey, dict[OperatorName, BackendMetadata]]r+  None)r   ztuple[Return, ...]r   	list[str]r+  r   )rF   r   r   r   r+  r.  )r  r   r+  r,  )8
__future__r   r   collectionsr   typingr   torchgen.api.dispatcherapir   torchgen.api.translater   torchgen.api.typesr   r   r	   torchgen.contextr
   torchgen.modelr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   torchgen.utilsr   collections.abcr   r   r   r   r   rN   rU   rf   ro   rj   r   r   r   r   r  r"  r*  rS   rO   rM   <module>r:     s=   "  #   , , , A A 1    & % ( . '* & 	. *%1 -Z . *
(.
(;
(BB*+%
+%(+%fFcc$cRc\yyCy 
yxY	 9 9| 6 6rO   