
    קg5                        d dl Z d dlZd dlZd dlZd dlmZmZ d dlZd dlZd dl	Zd dl
mZ d dlmZ d dlmZmZmZmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ ej        j         Z!g d	Z"i Z#g Z$ej%        j&        j'        Z'd
 Z(d Z) e(e'j*        j+        e'j*        j,        e'j-        j+        e'j-        j,        e'j.        j+        e'j.        j,        e'j/        j+        e'j/        j,        e'j0        j+        e'j0        j,        e'j1        j+        e'j1        j,        e'j1        j2        e'j1        j3        e'j4        j+        e'j4        j,        e'j5        j+        e'j5        j,        e'j6        j+        e'j6        j,        e'j7        j+        e'j7        j,        e'j8        j+        e'j8        j,        e'j9        j+        e'j9        j,                  Z: e(e'j;        j+        e'j<        j+        e'j<        j,        e'j=        j+        e'j>        j?        e'j>        j@        e'jA        j+        e'jB        j+        e'jB        j,        e'jC        j+        e'jC        j,                  ZDe'jE        fZFd ZG e jH        d          defd            ZIdeeegeJf         ef         fdZK eKe#jL                  d             ZM eKeI           eKg e:          d                         ZN eKe'jA        j+                  d             ZO eKe'j>        j@                   eKe'j>        j?                  d                         ZPd ZQ eKeQ          d             ZR eKe'jS        j+                  d             ZS eKe'jT        j+                  d             ZT eKd           d             ZU	 d>dZV eKe'jW        j+                  	 d>d            ZX eKe'jY        j+                  	 d>d            ZY eKe'jZ        j[                  d?d             Z\ eKej&        j'        j]        j+                   eKej&        j'        j^        j+                  d!                         Z_ eKej&        j'        j`        j+                  d"             Z` eKej&        j'        ja        j+                  d#             Za eKd$           d%             Zbd& Zcd' Zd e(d(d)d*          Zed+ Zfd, Zg eKd-           d.             Zh eKe'ji        j[                  d/             Zj eKe'jk        j+                  d0             Zl eKe'jm        j+                   eKe'jn        j+                   eKe'jo        j+                   eKe'jp        j+                  d1                                                 Zq eKe'jn        j,                   eKe'jp        j,                  d2                         Zr eKe'js        j+                   eKe'jt        j+                  d3                         Zu eKe'j<        j+                   eKe'j<        j,                   eKe'jv        j+                   eKe'jw        j+                  d4                                                 Zx eKd5 eDD                       d6             Zy eKe'jz        j+        e'j{        j+        g          d7             Z| eKej&        j'        j}        j+                  d8             Z}i Z~defd9Zd: Zd; Zd< Z e jH        d          d=             ZdS )@    N)CallableUnion)no_python_dispatcher)
OpOverload)elementwise_dtypesELEMENTWISE_TYPE_PROMOTION_KINDis_boolean_dtypeis_float_dtypeis_integer_dtype)DataDependentOutputExceptionDynamicOutputShapeException
FakeTensorin_kernel_invocation_managerrun_fallback_kernelUnsupportedOperatorException)normalize_functioncount_label)op_implementations_checksget_fast_op_implsstride_incorrect_ophas_metac                  8    t                               | d          S )NT)dictfromkeys)itemss    X/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/_subclasses/fake_impls.pyordered_setr   1   s    ==%%%    c                     | j         dk    S )Nhpu)typedevices    r   is_noncontiguous_supportedr%   7   s    ;%r   c                     t           j        j                                        }|                     |          p*t          d |                                 D                       S )Nc              3   4   K   | ]}t          |          V  d S N)contains_tensor_types).0es     r   	<genexpr>z(contains_tensor_types.<locals>.<genexpr>m   s<       0 0%&a  0 0 0 0 0 0r   )torch_C
TensorTypegetisSubtypeOfanycontainedTypes)r"   tensor_types     r   r)   r)   k   sg    (%))++KK(( C 0 0*.*=*=*?*?0 0 0 - - r   funcc                    t          | t                    sJ | j        }t          d |j        D                       rdS t          |j                  dk    o4|j        d         j        t          j	        j
                                        u S )Nc              3   >   K   | ]}t          |j                  V  d S r(   )r)   r"   )r*   args     r   r,   z)_is_tensor_constructor.<locals>.<genexpr>v   s-      
G
Gs **
G
G
G
G
G
Gr   F   r   )
isinstancer   _schemar2   	argumentslenreturnsr"   r-   r.   r/   r0   )r5   schemas     r   _is_tensor_constructorr@   r   s    dJ'''''\F

G
Gf6F
G
G
GGG u 	FNq XV^A%6%;ux?R?V?V?X?X%Xr   run_impl_checkc                       fd}|S )Nc                 B   t          t                    r!t          vsJ d             | t          <   ngt          t          t          f          rD ]} t          |          |            n-t                    sJ t                              | f           | S )Nzduplicate registration: )	r:   r   op_implementations_dictlisttupleregister_op_implcallabler   append)op_imploprA   s     r   impl_decoratorz(register_op_impl.<locals>.impl_decorator   s    nj11 
	H&====:.:: >==6=#N33u66 	H$ . .$ $$W----. N+++++%,,ng-FGGGr    )rA   rL   s   ` r   rG   rG   ~   s$         r   c                 0    t          |         | |g|R i |S r(   )rD   	fake_moder5   argskwargss       r   #dispatch_to_op_implementations_dictrS      s'    "4(DJ4JJJ6JJJr   c                    |t           vsJ t          |||d          \  }}d|v rt          d          |t          v r$|d         j        }|                    d          f}nt          j        d          }d}|                    dd           }||n|}t          j        d	          |d<   t          |           5   ||i |}d d d            n# 1 swxY w Y   t          | ||          S )
NTrQ   rR   normalize_to_only_use_kwargsnamesz+torch.compile doesn't support named tensorsinputcpurM   r$   meta)	_non_kwarg_device_constructorsr   r   _like_tensor_constructorsr$   popr-   r   r   )	rP   r5   rQ   rR   _
new_kwargsdefault_device
out_devicers	            r   constructorsrc      s`    55555&4T  MAz &*9
 
 	
 (((#G,3w'') e,,$//J)5>J <//Jx 
&i	0	0 & &D$%*%%& & & & & & & & & & & & & & &iJ///s   :	CCCc                     t          |||d          \  }}|                    d          }t          |           5   ||          }d d d            n# 1 swxY w Y   |S )NTrV   rX   )r   r]   r   )rP   r5   rQ   rR   r^   r_   inprb   s           r   non_kwarg_is_pinnedrg      s    &dF  MAz ..
!
!C 
&i	0	0  DII              Hs   AAAc                 P   t          |||d          \  }}|d         }|r|n|d         j        }t          j        d          |d<   |                    d          }t	          |           5   ||fi |}	d d d            n# 1 swxY w Y   | j                            | |	|          S )NTre   r$   rX   rZ   )r   r$   r-   r]   r   fake_tensor_converterfrom_meta_and_device)
rP   r5   rQ   rR   r^   r_   input_devicera   rf   rb   s
             r   non_kwarg_torl      s
    'dF  MAz h'L!-M:g3F3MJ <//Jx
..
!
!C	%i	0	0 $ $D##
##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ *??1j  s   +
BBBc                 z    | j         dvrdS | t          j        j        u rdS |                                 }d|v rdS dS )N)atenprimsFfftT)	namespacern   _fft_c2cdefaultname)rK   op_names     r   r   r      sL    	|,,,u	T]"""uggiiGt5r   c                    d | j         rtt          fdt          j        ||                                          D                       }|s2t
                              ||f          \  }}t          | |||d           S t          |          )Nc                     t          | t                    r| j        S t          | t          j        t          j        t          j        f          rdS dS )NTF)r:   r   _has_symbolic_sizes_stridesr-   SymIntSymFloatSymBool)xs    r   is_symbolicz3wordaround_stride_incorrect_op.<locals>.is_symbolic   sF    a$$ 	100a%,FGG 	4ur   c              3   .   K   | ]} |          V  d S r(   rM   )r*   r|   r}   s     r   r,   z1wordaround_stride_incorrect_op.<locals>.<genexpr>   s<       
 
 KKNN
 
 
 
 
 
r   )	allow_fallback_kernelsr2   	itertoolschainvaluespytreetree_flattenr   r   )rP   r5   rQ   rR   require_dynamic	flat_args	args_specr}   s          @r   wordaround_stride_incorrect_opr      s       ' T 
 
 
 
$-OD&--//$J$J
 
 
 
 
  	T#)#6#6f~#F#F Iy&y$	9dSSS
&t
,
,,r   c                 d    t          |           5   ||i |cd d d            S # 1 swxY w Y   d S r(   )r   rO   s       r   
resize_as_r      s    	%i	0	0 % %tT$V$$% % % % % % % % % % % % % % % % % %s   %))c                 $    t          | |g|R i |S r(   )rc   rO   s       r   (_sparse_coo_tensor_with_dims_and_tensorsr      s$     	49$999&999r   c                     t           j        j        | j        v o3| t          j        j        t          j        j        t          j	        j        fvS r(   )
r-   Tagdynamic_output_shapetagsrn   indexTensornonzerors   repeat_interleaver5   s    r   <lambda>r     s>    /49< TJt|3T5K5RS	T r   c                      t          |          r(   )r   rO   s       r   	dyn_shaper     s     &d
+
++r   TFc                 P   | j         | j         j        st          |          |	|j        x}ddlm}m}	  |	|                                          s|                                dk    rd}nz| j                                         }t          j
        dz
  }
||                                n|                    |          } |	|          st          |          }
 |||
           |||_        ||                    |f          g}n/ |j        g |j        d |         ||j        |dz   d          R  g}|d uo|j        t!          j        d          k    }|s|r+|                    ||j        n|j        |         f          }n|                    d          }|                    |           |s|r7|                    ||d         j        n|d         j        |         f          }n|                    d          }|                    |           t'          |          S )Nr   _constrain_range_for_sizehas_free_symbolsr9   maxrY   )	shape_envallow_dynamic_output_shape_opsr   unique_memo%torch.fx.experimental.symbolic_shapesr   r   numelcreate_unbacked_symintsysmaxsizesizeint	new_emptyshapefake_devicer-   r$   rI   rF   )rP   r5   r8   dimsortedreturn_inversereturn_countsnnzr   r   maxvalr   retreturn_if_dim_and_cpuinversecountss                   r   _uniquer     s^    	#"A 	$ *$/// #/13:	
 	
 	
 	
 	
 	
 	
 	

  		,, 	71A1A CC%<<>>C[1_F#&;CIIKKKCHHSMME##E** $U%%cv6666;!CO
{}}cV$$%s}JcioJsJSYsQwyy5IJJJKtOV5<PUCVCV0V #. #--S[		sy~>OPP--""JJw "- "s{s1v||QcAR@TUUq!!JJv::r   c           	      ,    t          | ||d |||          S r(   )r   )rP   r5   r8   r   r   r   s         r   unique2r   N  s     9dCv~}UUUr   c           
      h    t          | |||dk    r|n|t          |j        d          z  |||          S )Nr   r9   )r   r   ndim)rP   r5   r8   r   r   r   r   s          r   
unique_dimr   U  sH     axxS3sx#3#33	 	 	r   c                     |L| j         | j         j        st          |          | j                                         }ddlm}  ||           |                    |          S )Nr   r   )r   r   r   r   r   r   r   )rP   r5   repeatsoutput_sizer   s        r   repeat_interleave_tensorr   e  s}    '&E ( .d333)@@BB 	TSSSSS!!+...[)))r   c                    |j         x}|S | j        | j        j        s| j        st          |          t	          |j                  r| j                                        }nst          |j                  r| j                                        }nEt          |j                  r| j        
                                }nt          d|j                   ||_         |S )Nz local_scalar_dense/item NYI for )	item_memor   allow_scalar_outputsr   r
   dtypecreate_unbacked_symfloatr   r   r	   create_unbacked_symboolNotImplementedError)rP   r5   r8   rb   s       r   local_scalar_denser   x  s     ]'"4 #. #
 +4000ci   R88::	#)	$	$ R6688	#)	$	$ R7799!"PSY"P"PQQQCMHr   c                 6   | j         | j         j        st          |          |j        x}ddlm}m}  ||                                          s|                                dk    rd}ns| j                                         }t          j
        dz
  } ||                                          s!t          |                                          } |||           ||_        |                    ||                                ft          j                  S )Nr   r   r9   r   )r   )r   r   r   nonzero_memor   r   r   r   r   r   r   r   r   r   r-   int64)rP   r5   r8   r   r   r   r   s          r   r   r     s+    	#"A 	$ *$///(	
 	
 	
 	
 	
 	
 	
 	

  		,, 	71A1A CC%<<>>C[1_F##CIIKK00 *SYY[[))%%cv6666==#swwyy)====r   c                 \   | j         | j         j        st          |          | j                                         }t          j        dz
  }ddlm}m} ddl	m
} ddlm}	  ||                                          s"t          |                                          }
net          j        |j                  j        } |	|j        |j         j                  }t+          |j        |          rt          j        dz
  }
n|j        }
|
dk    r|
} |||           |                    |f          S )Nr9   r   r   )IntInfinity)bound_sympy   r   )r   r   r   r   r   r   r   r   r   torch.utils._sympy.numbersr   torch.utils._sympy.value_rangesr   r   r   mathprodr   nodeexprvar_to_ranger:   upperr   )rP   r5   selfmaskr   r   r   r   r   r   num_elements	prod_node
prod_ranges                r   masked_selectr     s_    	#"A 	$ *$///


4
4
6
6C [1_F        766666;;;;;;
 DJJLL)) ,4::<<((Idj)).	 [1D1QRR
j&44 	,;?LL%+Lacv....>>3&!!!r   c                 2    t           j        j        | j        v S r(   )r-   r   data_dependent_outputr   r   s    r   r   r     s    uy>$)K r   c                      t          |          r(   )r   rO   s       r   data_depr     s    
&t
,
,,r   c                 p    |D ]2}|.|j         t          j        t          j        fv rt	          |           3d S r(   )r   r-   booluint8r   )r5   r   indicesr   s       r   check_no_bool_index_tensorsr     sE     4 4U[0I!I!I-d3334 4r   c                 2   t          |||d          \  }}|d         j        }t          |           5   ||i |}t          |          s|                    |j                  }d d d            n# 1 swxY w Y   ||d         u r|S t          | ||          S NTrU   rX   )r   r$   r   r%   r   r   r   )rP   r5   rQ   rR   r^   r_   ra   outs           r   )run_and_return_new_tensor_of_input_devicer     s    &4T  MAz G$+J	%i	0	0 + +dD#F##)*55 	+--	**C+ + + + + + + + + + + + + + +
 j!!!
ij111s   2A11A58A5rn   ro   primc                     | j         t          v S r(   )rq   _is_builtin_namespaces)rK   s    r   
is_builtinr     s    <111r   c                 f    t           j                            |                                 d          S )NMeta)r-   r.   ._dispatch_has_computed_kernel_for_dispatch_keyrt   r   s    r   r   r     s#    8BB499;;PVWWWr   c                 j    t          |           o$d|                                 v ot          |           S )Nforeach)r   rt   r   r   s    r   r   r     s+    D!!Qi499;;&>Q8D>> r   c                    g }t          j        ||                                          D ]b}t          |t          t
          f          rDt          |          r5t          |d         t          j                  r|	                    |           c	 t          |           5   ||i |}d d d            n# 1 swxY w Y   n# t          $ r}t          cY d }~S d }~ww xY w|s|S |sJ g }t          |          D ]X\  }	t          j        |fd|D                       \  }
}|	                    | j                            | |	|
                     Y|S )Nr   c                      g | ]
}|         S rM   rM   )r*   tlis     r   
<listcomp>z4foreach_run_and_map_input_device.<locals>.<listcomp>%  s    9W9W9WB"Q%9W9W9Wr   )r   r   r   r:   rE   rF   r=   r-   r   rI   r   r   NotImplemented	enumerater   _find_common_deviceri   rj   )rP   r5   rQ   rR   tensor_listsr8   out_metanot_implemented_errorout_fakemeta_tr$   r^   r   s               @r    foreach_run_and_map_input_devicer    s    LtV]]__55 % %sT5M**	%C	% 3q65<00	%
 $$$))44 	- 	-tT,V,,H	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-     Hx(( 
 
	6249W9W9W9W,9W9W9WXX	+@@66 	
 	
 	
 	
 OsB   B? 	B3'B? 3B77B? :B7;B? ?
C	CCCc                     ddl m} t          |||d          \  }}|d         j        }| 5   ||i |}|                    |          cd d d            S # 1 swxY w Y   d S )Nr   )meta_index_TensorTrU   rX   )torch._meta_registrationsr  r   r$   to)	rP   r5   rQ   rR   r  r^   r_   ra   r   s	            r   index_tensorr  2  s    ;;;;;;&4T  MAz G$+J	 " "000vvj!!" " " " " " " " " " " " " " " " " "s   AAAc                 V    ddl m} | 5   ||i |cd d d            S # 1 swxY w Y   d S )Nr   )meta_embedding_bag)r  r  )rP   r5   rQ   rR   r  s        r   embedding_bagr	  C  s    <<<<<<	 3 3!!426223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s   ""c                 &    t          | |||          S r(   )r   rO   s       r   multi_device_op_defaultr  L  s    
 5YdFSSSr   c                     t          |           5   ||i |}d d d            n# 1 swxY w Y   t          |||d          \  }}|d         S r   )r   r   )rP   r5   rQ   rR   r   r^   r_   s          r   multi_device_op_outr  U  s     
&i	0	0 $ $dD#F##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ '4T  MAz gs   	%))c                 H   t          ||d          \  }}|d         |d         j        t          j        j        k    p"j        dk    o                                dk    fd           t          | ||          }t          j        j	        u r|d         S |S )NTrU   r   rX   r   r9   c                  &    d  d dj          dS )NzMismatching z device between self (z) and values ()r#   )r5   self_devicer   s   r   r   z index_put_impl.<locals>.<lambda>m  s'    ftff;ffV\Vcfff r   )
r   r   r-   _checkr   r   r   rn   
index_put_rs   )	rP   r5   rQ   rR   r^   r_   r   r  r   s	    `     @@r   index_put_implr  b  s     '4T  MAz !FW%1K	Lv))WfkQ.>.V6<<>>UVCVffffff  
 4ItT6
R
RCt&&&'""
r   c                      t          d          )Nz3torch.compile does not support strided NestedTensor)r   rO   s       r   nested_tensors_unsupportedr  w  s    
 '=  r   c                     g | ]X}|t           j        j        t           j        j        t           j        j        t           j        j        t           j        j        fvV|YS rM   )rn   	is_pinnedrs   r  r$   prim_Device_nested_tensor_from_tensor_listr   )r*   r|   s     r   r   r     se        N"GNG0804

 
 	

 
 
r   c                 2    |t           vsJ d|             d S )NzNYI: )_device_not_kwarg_opsrO   s       r   nyir    s*      ,,,,ndnn,,,,,r   c                     t          |||d          \  }}|d         j         5  |d         j        }|d         j        d         }ddlm}  ||          sd }n|dk    r|d         j        s|d         j        sd }n|t          j	        j
        u rt          j        j        di |}	n_t          j                            |d         |d         d |d         |d	         |d
         |d         |d         |d         |d         
  
        }	t          j                            |d         |d         |	          }d d d            n# 1 swxY w Y    fd}
t                     5   |di |}|t          j	        j
        u r |
||          cd d d            S  |
|d         |           |
|d         |           |
|d         d           fcd d d            S # 1 swxY w Y   d S )NTrU   rX   weightr   )has_hint   stridepaddingdilation
transposedoutput_paddinggroups
bias_sizes)biasr"  r#  r$  r%  r&  r'  r(  c                 ^    | | S ||                      |          } t          |           S )Nmemory_format)r  r   )tmem_fmtr$   rP   s     r   convertzconv.<locals>.convert  s8    9H7++A)Q///r   r9   r   rM   )r   r   r   r   r   r   	is_mkldnnis_xpurn   convolutionrs   r-   r.   _select_conv_backend%_conv_determine_backend_memory_formatr   )rP   r5   rQ   rR   r^   kbatchr   r.  conv_backendr/  r   r$   s   `           @r   convr8    s   "4T  IAv G_(F	    8!w%a( 	CBBBBBx 	 GG!VVF7O5VfWo>TVGGt'///$x<FFvFF$x<<7O8$!(+"9-#J/%l3#)*:#;!(+%l3  =     hDDw!1< G=                             D0 0 0 0 0 0 
&i	0	0 
 
dnnVnn4#+++73((	
 
 
 
 
 
 
 
 A((A((A%%
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s*   DEE	E"'G4GGGc                 F   | j         | j         j        st          |          | j                                         }ddlm}  ||           |s|                    dd          }|j        dd          }|                    |          }|                    |f          }	||	fS )Nr   r   r9   )	r   r   r   r   r   r   	transposer   r   )
rP   r5   inputslengthsbatch_firstnew_batch_sizer   res_sizepacked_data
batch_sizes
             r   _pack_padded_sequencerB    s     	#"A 	$ *$///(??AANOOOOOOn--- (!!!Q''|ABBH""8,,K!!>"344J$$r   c                       fd}|S )Nc                     | t           <   | S r(   )FAST_OP_IMPLEMENTATIONS)rJ   r5   s    r   rL   z-register_fast_op_impl.<locals>.impl_decorator  s    (/%r   rM   )r5   rL   s   ` r   register_fast_op_implrF    s$         r   c                   
 ddl m} t          |           }t          |          }t          ||          }dg|z  }t	          |dz
  dd          D ]
|dz
  
z
  }|dz
  |z
  }|dz
  |z
  }	|dk    r| |         nd|	dk    r||	         ndt          j         |dk              p |dk              pk    
fd            |dk              rn|
<   t          |          S )Nr   )guard_size_obliviousr9   c                      d d d  dS )NzThe size of tensor a (z#) must match the size of tensor b (z) at non-singleton dimension r  rM   )r   sizeAsizeBs   r   r   zinfer_size.<locals>.<lambda>  s5     /U / /05/ /*+/ / / r   )r   rH  r=   r   ranger-   r  rF   )abrH  dimsAdimsBr   expandedSizesoffsetdimAdimBr   rK  rL  s             @@@r   
infer_sizerV    sY   JJJJJJFFEFFEueDC$JM4!8R$$ P PAqy6!qy6!199$!199$! 	  !,, ##EQJ//~/ / / / / /		
 	
 	
 %9$8!$D$DO55%ar   c                       fd}|S )Nc           	           fd}t          d           }d}d}d }|D ]Q}t          |t          j                  r|j        nd}	t          |	          dk    rd}nd}||	}t          ||	          }R|J ddlm}
m	} |D ]]}t          |t          j                  rAt          |j                  t          |          k    r |
 ||j        |                    r n^ |d          S t          j
        d	          }|}d }d }d}|D ]S}t          |t          j                  sd}||k    r|j
        j        d	k    s|j
        }||j        }F||j        k    rd}T|rt          |d
t          j        i\  }}d}d}|D ]w}t          |t          j                  s||k    r<|                                dk    r$|j
        |k    r||k    r |d          c S |dz  }_|j
        |k    r |d          c S xd}d}t#          |          rd|D ]a}t          |t          j                  s|o|                    t          j                  }|o|                    t          j                  }b|rAt          d           t+           t          j        ||dt          j                  |          S |rAt          d           t+           t          j        ||dt          j                  |          S  |d          S )Nc                 p    t          d|             5   i cd d d            S # 1 swxY w Y   d S )Nzslow r   )msgrQ   rR   modeslow_refs    r   slowz=make_fast_binary_impl.<locals>.fast_binary_impl.<locals>.slow  s    &&& 1 1x0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   +//zattempt fastFrM   r   T)rH  sym_eqz#both tensors nontrivially broadcastrY   type_promotion_kindr9   errorr+  zfast is_contiguousrZ   )r   r$   r,  r#   zfast channels_lastzno contiguity match)r   r:   r-   r   r   r=   rV  r   rH  r^  r$   r"   r   r   r   DEFAULTr   r%   is_contiguouscontiguous_formatchannels_lastr   empty)r[  rQ   rR   r]  operandshas_scalarshas_tensorsfinal_shaperK   r   rH  r^  rY   common_devicecommon_dtypeoutput_dtypehas_different_input_dtypesr^   current_cpu_scalars_on_non_cpumax_cpu_scalars_on_non_cpurb  is_channels_lastr\  s   ```                   r   fast_binary_implz/make_fast_binary_impl.<locals>.fast_binary_impl  s+   	1 	1 	1 	1 	1 	1 	1 	1
 	N###   	9 	9B *2u| < <DBHH"E5zzQ"""# %[%88KK&&&VVVVVVVV  	? 	?B2u|,,MMS%5%555((+)F)FGG 6 4=>>> l5!!%*" 	2 	2Bb%,// -1*##BINe,C,C "	#!x))-1*% 	 1/N/V OA| *+&%&" 	% 	%Bb%,// ##A")s:J:J15OOO4==(((.!3..m++tG}}$$$ ,  &m44 		  !"el33  - !"2B2B"'"9 3C 3 3 $4 $8H8H"'"5 9I 9 9    	,---&!"'"9	   %	 	 	 	  	,---&!"'"5	   %	 	 	 	 t)***r   rM   )r\  rq  s   ` r   make_fast_binary_implrr    s*    E+ E+ E+ E+ E+N r   c                    t                      5  t          |           5  t          j        j        j                            |          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          | ||j                  S r(   )	r   r   r-   opsrn   detachrs   r   r$   )rP   r|   r   s      r   fast_detachrv    s    			 / /!=i!H!H / /in#++A../ / / / / / / / / / / / / / / / / / / / / / / / / / / / / /iah///s4   A,*A	A,A	A,A	A,,A03A0c                     dd l }  t          | j        j        j        j                  t          | j        j                              t          | j        j        j        j                  t          | j        j                              t          | j        j        j	        j                  t          | j        j	                              t          | j        j        j
        j                  t          | j        j
                              t          | j        j        j        j                  t                     t          S )Nr   )torch._refsrF  rt  rn   addr   rr  _refssubmuldivru  rs   rv  rE  )r-   s    r   r   r     s   4%).,344eko..   5%).,344eko..   5%).,3445J5;?5[5[\\\4%).,344eko..   9%)./788EEE""r   )TFFr(   )	functoolsr   r   r   typingr   r   r-   torch._custom_optorch._loggingtorch._dispatch.pythonr   
torch._opsr   torch._prims_commonr   r   r	   r
   r   torch._subclasses.fake_tensorr   r   r   r   r   r   torch.fx.operator_schemasr   torch.utils._statsr   utils_pytreer   __all__rD   r   _opsrt  rn   r   r%   
empty_likers   r   	full_like	ones_like	rand_like
randn_likerandint_like	low_dtypelow_dtype_out
zeros_liker   new_empty_stridednew_full	new_zerosnew_onesr\   _resize_output_r  
pin_memoryr  r$   r  r  _pin_memory_resize_outputr  _list_to_tensorr[   r)   	lru_cacher@   r   rG   __contains__rS   rc   rg   rl   r   r   r   r   r   r   _unique2r   r   r   r   r   item_local_scalar_denser   r   r   r   r   r   r   r   r   r  r   r  _embedding_bagr	  _unsafe_index_putcopycopy_slice_scatterr  r  	index_putr  r  _nested_view_from_buffer_nested_view_from_buffer_copyr  r  r2  convolution_backwardr8  rB  rE  rF  rV  rr  rv  r   rM   r   r   <module>r     su
            



 " " " " " " " "          7 7 7 7 7 7 ! ! ! ! ! !                             9 8 8 8 8 8 * * * * * * 
	      z~& & &      (KOONNNNNNOO#OONN"MMNNMM5  < $ (0(,OGNGN   #'"6!8    T    U8ZL$4F+G+S%T    & )677K K 87K ()).-.//0 0 0/ *)08 $.())	 	 *)	 $'%&&$'.!!  "! '& 	 	 	 %&&- - '&-0 $/)**% % +*%
 $?GHH: : IH: T T 
, , 
,
 QV< < < <~ $-'((KPV V V )(V $/)**PU   +* $(/00* * * 10*$ %).%-..%).4<==  >= /.* %).(011%> %> 21%>P %)..677&" &" 87&"T KKLL- - ML-4 4 42 2 2  %VWf== 2 2 2X X X QQ   H $*#$$" " %$"  $%-..3 3 /.3 $(011$)#$$$*$%%$$,--T T .- &% %$ 21T
 $)-  $$())  *) !  $.())$/)**  +* *)& $6>??$6:;;$/788$4<==  >= 98 <; @?  &   = = = 4#+T-F-NOPP9 9 QP9x %).6>??% % @?%0  

    "  "  " JH H HZ0 0 0 T# # # # #r   