
    %Vji                        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 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 d dlmZmZmZmZ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 Z0 e/e.j1        j2        e.j1        j3        e.j4        j2        e.j4        j3        e.j5        j2        e.j5        j3        e.j6        j2        e.j6        j3        e.j7        j2        e.j7        j3        e.j8        j2        e.j8        j9        e.j8        j:        e.j8        j3        e.j8        j;        e.j8        j<        e.j=        j2        e.j=        j3        e.j>        j2        e.j>        j3        e.j?        j2        e.j?        j3        e.j@        j2        e.j@        j3        e.jA        j2        e.jA        j3        e.jB        j2        e.jB        j3                  ZC e/e.jD        j2        e.jE        j2        e.jE        j3        e.jF        j2        e.jG        jH        e.jG        jI        e.jJ        j2        e.jK        j2        e.jK        j3        e.jL        j2        e.jL        j3                  ZMe.jN        fZOd ZPe jQ        defd            ZRdeeegeSf         ef         fdZTd ZUd ZV eTe*jW                  d             ZX eTeR           eTg eC          d                         ZY eTe.jJ        j2                  d             ZZ eTe.jG        jI                   eTe.jG        jH                  d                         Z[d Z\ eTe\          d             Z] eTe.j^        j2                  d             Z^ eTe.j_        j2                  d             Z_ eTd           d             Z`	 	 	 dPdd d!Za eTe.jb        j2                  	 dPd"            Zc eTe.jd        je                  d#             Zf eTe.jg        j2                  	 dPd$            Zg eTe.jh        j2                  dQd%            ZidRd&Zjd' ZkdSd(Zl eTe.jm        j2                   eTe.jn        j2                  d)                         Zo eTe.jp        j2                  dd*d+            Zq eTe.jr        j9                  dTd,            Zs eTe	j-        j.        jt        j2                   eTe	j-        j.        ju        j2                  d-                         Zv eTe	j-        j.        jw        j2                  d.             Zw eTe	j-        j.        jx        j2                  d/             Zx eTe	j-        j.        jy        j2                  dTd0            Zy eTe	j-        j.        jz        j2                  d1             Zz eTe	j-        j.        j{        j2                  	 	 	 dUddd2	 dVd4            Z| eTd5           d6             Z}d7 Z~d8 Z e/d9d:d;          Zd< Zd= Z eTd>           d?             Z eTe.j        j9                  d@             Z eTe.j        j2                  dA             Z eTe.j        j2                   eTe.j        j2                   eTe.j        j2                   eTe.j        j2                  dB                                                 Z eTe.j        j3                   eTe.j        j3                  dC                         Z eTe.j        j2                   eTe.j        j2                  dD                         Z eTe.jE        j2                   eTe.jE        j3                   eTe.j        j2                   eTe.j        j2                  dE                                                 Z eTdF eMD                       dG             Z eTe.j        j2        e.j        j2        g          dH             Z eTe	j-        j.        j        j2                  dWdI            Z eTe	j-        j.        j        j2                  dJ             Zi ZdefdKZdL Zej        fdMZdRdNZe jQ        dO             ZdS )X    N)reduce)CallableUnion)no_python_dispatcher)
OpOverload)	elementwise_dtypesELEMENTWISE_TYPE_PROMOTION_KINDis_boolean_dtypeis_contiguous(is_contiguous_for_memory_format_or_falseis_contiguous_or_falseis_float_dtypeis_integer_dtypemake_contiguous_strides_for)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    V/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/_subclasses/fake_impls.pyordered_setr#   8   s    ==%%%    c                     | j         dk    S )Nhpu)typedevices    r"   is_noncontiguous_supportedr*   >   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>v   s<       0 0%&a  0 0 0 0 0 0r$   )torch_C
TensorTypegetisSubtypeOfanycontainedTypes)r'   tensor_types     r"   r.   r.   t   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"   r1   z)_is_tensor_constructor.<locals>.<genexpr>   s-      
G
Gs **
G
G
G
G
G
Gr$   F   r   )
isinstancer   _schemar7   	argumentslenreturnsr'   r2   r3   r4   r5   )r:   schemas     r"   _is_tensor_constructorrF   {   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oprG   s     r"   impl_decoratorz(register_op_impl.<locals>.impl_decorator   s    nj11 
	H!)@@@@;>;; A@@ 7>#N33u66 	H$ . .$ $$W----. N+++++%,,ng-FGGGr$    )rG   rR   s   ` r"   rM   rM      s$         r$   c                     | t           v S r-   rJ   rQ   s    r"   _is_op_registered_to_fake_rulerW      s    (((r$   c                     | t           v rt           | = t          D ](\  }}|| u rt                              ||f            d S )d S r-   )rJ   r   remove)rQ   checkimpls      r"   _deregister_op_implr\      s`    	$$$#B'0  tB;;%,,eT];;;EE  r$   c                 0    t          |         | |g|R i |S r-   rU   	fake_moder:   argskwargss       r"   #dispatch_to_op_implementations_dictrb      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r`   ra   normalize_to_only_use_kwargsnamesz+torch.compile doesn't support named tensorsinputcpurS   r)   meta)	_non_kwarg_device_constructorsr   r   _like_tensor_constructorsr)   popr2   r   r   )	r_   r:   r`   ra   _
new_kwargsdefault_device
out_devicers	            r"   constructorsrr      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re   rg   )r   rl   r   )r_   r:   r`   ra   rm   rn   inprq   s           r"   non_kwarg_is_pinnedrv      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 )NTrt   r)   rg   ri   )r   r)   r2   rl   r   fake_tensor_converterfrom_meta_and_device)
r_   r:   r`   ra   rm   rn   input_devicerp   ru   rq   s
             r"   non_kwarg_tor{      s
    'dF  MAz h'L!-M:g3F3MJ <//Jx
..
!
!C	%i	0	0 $ $D##
##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ *??1j  s   +
BBBc                     dS )NFrS   rV   s    r"   r   r      s    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_stridesr2   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-   rS   )r/   r   r   s     r"   r1   z1wordaround_stride_incorrect_op.<locals>.<genexpr>   s<       
 
 KKNN
 
 
 
 
 
r$   )	allow_fallback_kernelsr7   	itertoolschainvaluespytreetree_flattenr   r   )r_   r:   r`   ra   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   r^   s       r"   
resize_as_r     s    	%i	0	0 % %tT$V$$% % % % % % % % % % % % % % % % % %s   %))c                 $    t          | |g|R i |S r-   )rr   r^   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-   )
r2   Tagdynamic_output_shapetagsatenindexTensornonzerodefaultrepeat_interleaver:   s    r"   <lambda>r     s>    /49< TJt|3T5K5RS	T r$   c                      t          |          r-   )r   r^   s       r"   	dyn_shaper     s     &d
+
++r$   TFunique_consecutivec                v   | j         | j         j        st          |          |r|j        n|j        }||ddlm}	m}
  |
|                                          s|                                dk    rd}nz| j         	                                }t          j        dz
  }||                                n|                    |          } |
|          st          |          } |	||           ||r||_        n||_        ||                    |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_symbolsr?   maxrh   )	shape_envallow_dynamic_output_shape_opsr   unique_consecutive_memounique_memo%torch.fx.experimental.symbolic_shapesr   r   numelcreate_unbacked_symintsysmaxsizesizeint	new_emptyshapefake_devicer2   r)   rO   rL   )r_   r:   r>   dimsortedreturn_inversereturn_countsr   nnzr   r   maxvalr   retreturn_if_dim_and_cpuinversecountss                    r"   _uniquer     s}    	#"A 	$ *$///);
P#
%
%C #+	
 	
 	
 	
 	
 	
 	
 	

  		,, 	71A1A CC%<<>>C[1_F#&;CIIKKKCHHSMME##E** $U%%cv6666;! &.1++"%
{}}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   )r_   r:   r>   r   r   r   s         r"   unique2r   i  s     9dCv~}UUUr$   c                    ddl m} |j        rt          S |                                }t          j        |dk    d            |dk    r|n||z   }|                    |          }t          |                                          }t          |	                                          }	d }
 ||dk              r!|
                                ||	|         z  z   }
n2 ||dk               r#|
                                ||z   |	|         z  z   }
|
B| j        | j        j        s| j        st          |          | j                                        }
||= |	|= |
J |                    ||	|
          S )Nr   guard_or_falsec                      dS )Nz-select() cannot be applied to a 0-dim tensor.rS   rS   r$   r"   r   zmeta_select.<locals>.<lambda>z  s    ? r$   )r   r   	is_sparseNotImplementedr   r2   _check_indexr   rK   stridestorage_offsetr   allow_scalar_outputsr   r   
as_strided)r_   r:   selfr   r   r   ndimr   new_size
new_stridenew_storage_offsets              r"   meta_selectr   p  s   DDDDDD~ 88::D		??  
 ##sTzC99S>>DDIIKK  Hdkkmm$$J~eqj!! V!0022UZ_5LL			"	" V!0022edljQTo5UU!&#8 '2 ' /t444 '0GGII3)))??8Z1CDDDr$   c           
      h    t          | |||dk    r|n|t          |j        d          z  |||          S )Nr   r?   )r   r   r   )r_   r:   r>   r   r   r   r   s          r"   
unique_dimr     sH     axxS3sx#3#33	 	 	r$   c           
      0    t          | |||d||d          S )NFTr   r   )r_   r:   r>   r   r   r   s         r"   rm   rm     s1    	 	 	 	r$   c                 J   ddl mmm} fd}fd}t	          |           dk    rdgt	          |          z  S t          t          j        | d          } ||dk              }|r | || |                    r|S dgt	          |          z  }	|rjt          t	          |          dz
  dd          D ]F}
|
t	          |          dz
  k    rd|	|
<   t          ||
dz            d          |	|
dz            z  |	|
<   G|	S t	          |          dz
  }
|d         }d}d}t          t	          |           dz
  dd          D ]}|| |         z  }|dk    s3 || |dz
           dk              r |||dz
           ||z  k              r|
dk    rf |||k               s |||
         dk              rB||z  |	|
<   |||
         z  }|
dz  }
|
dk    r$ |||k               - |||
         dk              B |||k              r d S |dk    r||dz
           }d}d}|
dk    rd S |	S )Nr   )r   guard_or_truesym_eqc                 "    r |           S | S r-   rS   )r   r   size_obliviouss    r"   maybe_guard_or_falsez-_compute_stride.<locals>.maybe_guard_or_false  s      	%!>!$$$r$   c                 "    r |           S | S r-   rS   )r   r   r   s    r"   maybe_guard_or_truez,_compute_stride.<locals>.maybe_guard_or_true  s      	$ =###r$   r?   )
r   r   r   r   rC   r   operatormulranger   )	old_shape
old_stride	new_shaper   r   r   r   r   
zero_numelr   view_dchunk_base_stridetensor_numel
view_numeltensor_dr   r   s      `           @@r"   _compute_strider     s<                       9~~sS^^##8<A..E%%eqj11J **66)Y+G+GHH s9~~%J C	NNQ.B77 	 	FY!+++%&
6"" 	&1*-q11Jvz4JJ 6"" ^^aF"2LJ#i..1,b"55  	(++q==	(Q, 71 <== ##8a<(L;L,LL   A++##J$=>> ''	&(9Q(>??  &02C%C
6"i//
! A++##J$=>> ''	&(9Q(>??  #":#=>> tt!||$.x!|$<! 
||tr$   c                 &   ddl m t          j        |d          }t	          fd|                                 D                       pGt	          fd|                                 D                       pt	          fd|D                       S )Nr   has_hintFvalidatec              3   0   K   | ]} |           V  d S r-   rS   r/   sr   s     r"   r1   z+_view_has_unbacked_input.<locals>.<genexpr>  s-      ..O......r$   c              3   0   K   | ]} |           V  d S r-   rS   r   s     r"   r1   z+_view_has_unbacked_input.<locals>.<genexpr>	  s-      33188A;;333333r$   c              3   0   K   | ]} |           V  d S r-   rS   r   s     r"   r1   z+_view_has_unbacked_input.<locals>.<genexpr>
  s-      ..188A;;......r$   )r   r   utilsextract_shape_from_varargsr7   r   r   )ar   r   s     @r"   _view_has_unbacked_inputr     s    >>>>>>,UUCCCE 	....QVVXX..... 	/3333

33333	/.........r$   c                 V    ddl m} ddlm}m} t          j        d          t          j                                                    j	        dk    rP }D ]:}t          j        |dk               t          j                            |d          };| u r |           S |S t                    dk    rU } j        D ]:}t          j        |dk               t          j                            |d          };| u r |           S |S t#          t$          j        d          }t          j                                         |k     fd           t                    t           j                  k    r% | | j                            r |           S |rt)                     r5nt+                     r%t-                    }	                     |	          S t1                                                                            |	          }
|
                     |
          S |r=t          j        j        j        j        st?                     rtA           d
          S d j         d                                  d d}tC          |          )Nr   )view_ofr   r   Fr   r?   r   c                       d j          d dS )Nz&Could not reshape a tensor with shape  as a tensor with shape !)r   )r   r   s   r"   r   z%_view_unbacked_meta.<locals>.<lambda>3  s    bbbZ_bbb r$   )r   )size_oblivious_enabledz Cannot view a tensor with shape z and strides r  r  )"torch._primsr   r   r   r   r   r   
infer_sizer   r   r2   _check_refs	unsqueezerC   r   squeezer   r   r   r   r   r   r   r   r   r   fxexperimental_configbacked_size_obliviousr   _view_unbacked_meta
ValueError)r   r   r  r   r   r   _alengthshape_numelstridesnew_stridesmsgs   ``          r"   r  r    s   $$$$$$LLLLLLLL ,UUCCCE UAGGII..E 	v{{ 	/ 	/FL1%%%&&r2..BB7771::I 5zzQg 	- 	-FL1%%%$$R,,BB7771::Iua00K	L			[ bbbbb  
 5zzS\\!!nnVVE175K5K&L&L!wqzz$: ,a   , ,a@P@P ,-e44||E7+++!	!((**e4J  K ||E;///  K%;K#Au--K #1eEJJJJ
oQW
o
o188::
o
ogl
o
o
oC
S//r$   c                     t           j        j        j        j        st          ||          rt          ||          S t          j        j        |g|R ddiS )N
allow_copyF)	r2   r  r  r  r  r   r  r	  _reshape_view_helper)r_   r:   r   r   s       r"   
_view_metar  S  se     x$: M>V	5? ? M #1e,,,{/LELLLeLLLr$   )outc                `    t          | ||g|R  }||S t                              d |          S )Nc                 B    |                      t          j                  S Nmemory_format)cloner2   contiguous_formatr   s    r"   r   z!_view_meta_copy.<locals>.<lambda>e  s    !''(?'@@ r$   )r  r   tree_map)r_   r:   r   r  r   results         r"   _view_meta_copyr&  ^  sD    	43U333F
??@@  r$   c                     |L| j         | j         j        st          |          | j                                         }ddlm}  ||           |                    |          S Nr   r   )r   r   r   r   r   r   r   )r_   r:   repeatsoutput_sizer   s        r"   repeat_interleave_tensorr,  j  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   r   r   r   dtypecreate_unbacked_symfloatr   r   r
   create_unbacked_symboolNotImplementedError)r_   r:   r>   rq   s       r"   local_scalar_denser3  }  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                 z    t           j        j        j                            |                              d          S )Nr?   )r2   opsr   r   r   unbind)r_   r:   r>   s      r"   nonzero_numpyr7    s+    9>!))#..55a888r$   c                 "   | j         | j         j        st          |          |j        x},ddlm}m} ddlm} ddl	m
}  ||                                          s|                                dk    rd}n| j                                         }t          j        dz
  } ||                                          s"t          |                                          }net!          j        |j                  j        }	 ||	j        |	j         j                  }
t-          |
j        |          rt          j        dz
  }n|
j        } |||           ||_        |                    ||                                fd|ft4          j                  S )Nr   r   IntInfinitybound_sympyr?   r   )r/  )r   r   r   nonzero_memor   r   r   torch.utils._sympy.numbersr:  torch.utils._sympy.value_rangesr<  r   r   r   r   r   mathprodr   nodeexprvar_to_ranger@   uppernew_empty_stridedr   r2   int64)r_   r:   r>   r   r   r   r:  r<  r   	prod_node
prod_ranges              r"   r   r     s    	#"A 	$ *$///(	
 	
 	
 	
 	
 	
 	
 	
 	;:::::??????		,, 	71A1A CC%<<>>C[1_F##CIIKK00 
.SYY[[)) Ici005	([NI$7$D 
 j.<< . [1_FF'-F%%cv6666  #swwyy!1As85; OOOr$   c                    t          |          dk    sJ |s| j        | j        j        st          |          | j                                        }t
          j        dz
  }ddlm}m	}  ||
                                          s!t          |
                                          } ||d|           |g|j        dd          R }|                    |          S )Nr?   r   r   )minr      )rC   r   r   r   r   r   r   r   r   r   r   r   r   r   )	r_   r:   paddedoffsetstotal_Lr   r   r   output_shapes	            r"   _padded_dense_to_jagged_forwardrQ    s
    w<<1 >'&E ( .d333%<<>>q	
 	
 	
 	
 	
 	
 	
 	

  // 	)((F!!'qf====/fl122.//LL)))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 )Nr?   r   r   r9  r;  rL  r   )r   r   r   r   r   r   r   r   r   r>  r:  r?  r<  r   r   r@  rA  r   rB  rC  rD  r@   rE  r   )r_   r:   r   maskr   r   r   r   r:  r<  num_elementsrH  rI  s                r"   masked_selectrU    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$   )r)   layoutreturnc                   |:|                                 |k    s"J d| d|                                              |:|                                |k    s"J d| d|                                             | |j        |k    sJ d| d|j                     |-|j        |k    s"J d| d|                                             | |j        |k    sJ d| d|j                     d S d S )Nz!Tensor sizes mismatch! Expected: z, Got: z#Tensor strides mismatch! Expected: z!Tensor dtype mismatch! Expected: z"Tensor layout mismatch! Expected: z"Tensor device mismatch! Expected: )r   r   r/  rV  r)   )r_   r:   tsizesr  r/  r)   rV  s           r"   assert_tensor_metadatar[    sF    vvxx5   HHHaffhhHH !   xxzzW$$$N'NN!((**NN %$$ w%GGGagGG   x6!!!LLL

LL "!! x6!!!JJJJJ "!! !!r$   c                 2    t           j        j        | j        v S r-   )r2   r   data_dependent_outputr   r   s    r"   r   r   :  s    uy>$)K r$   c                      t          |          r-   )r   r^   s       r"   data_depr_  :  s    
&t
,
,,r$   c                 p    |D ]2}|.|j         t          j        t          j        fv rt	          |           3d S r-   )r/  r2   booluint8r   )r:   r   indicesr   s       r"   check_no_bool_index_tensorsrd  A  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 NTrd   rg   )r   r)   r   r*   r   r   r   )r_   r:   r`   ra   rm   rn   rp   r  s           r"   )run_and_return_new_tensor_of_input_devicerg  G  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r   primsprimc                     | j         t          v S r-   )	namespace_is_builtin_namespacesrV   s    r"   
is_builtinrm  Z  s    <111r$   c                 f    t           j                            |                                 d          S )NMeta)r2   r3   ._dispatch_has_computed_kernel_for_dispatch_keynamer   s    r"   r   r   ^  s#    8BB499;;PVWWWr$   c                     t          |           o5|                                                     d          ot          |           S )Nzaten::_foreach_)rm  rq  
startswithr   r   s    r"   r   r   d  s>    D!! 		011 r$   c                   
 d t          j        ||                                          D             }	 t          |           5   ||i |}d d d            n# 1 swxY w Y   n# t          $ r
 t
          cY S w xY w|s|S |sJ g }t          |          D ]X\  
}t          j        |
fd|D                       \  }}	|	                    | j
                            | ||                     Y|S )Nc                     g | ]O}t          |t          t          f          t          |          -t          |d          t          j                  M|PS )r   )r@   rK   rL   rC   r2   r   r=   s     r"   
<listcomp>z4foreach_run_and_map_input_device.<locals>.<listcomp>i  sf       cD%=)) HH	
 s1vu|,,  r$   c                      g | ]
}|         S rS   rS   )r/   tlis     r"   rv  z4foreach_run_and_map_input_device.<locals>.<listcomp>~  s    9W9W9WB"Q%9W9W9Wr$   )r   r   r   r   r2  r   	enumerater   _find_common_devicerO   rx   ry   )r_   r:   r`   ra   tensor_listsout_metaout_fakemeta_tr)   rm   ry  s             @r"    foreach_run_and_map_input_devicer  c  s}    ?499  L))44 	- 	-tT,V,,H	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-     <Hx(( 
 
	6249W9W9W9W,9W9W9WXX	+@@66 	
 	
 	
 	
 Os5   A$ 	AA$ AA$ A A$ $A87A8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_TensorTrd   rg   )torch._meta_registrationsr  r   r)   to)	r_   r:   r`   ra   r  rm   rn   rp   r  s	            r"   index_tensorr    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  )r_   r:   r`   ra   r  s        r"   embedding_bagr    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-   )rg  r^   s       r"   multi_device_op_defaultr    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 rf  )r   r   )r_   r:   r`   ra   rm   rn   s         r"   multi_device_op_outr    s     
&i	0	0  d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 )NTrd   r   rg   r   r?   c                  &    d  d dj          dS )NzMismatching z device between self (z) and values ()r(   )r:   self_devicer   s   r"   r   z index_put_impl.<locals>.<lambda>  s'    ftff;ffV\Vcfff r$   )
r   r   r2   r  r   r   rg  r   
index_put_r   )	r_   r:   r`   ra   rm   rn   r  r  r   s	    `     @@r"   index_put_implr    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   r^   s       r"   nested_tensors_unsupportedr    s    
 '=  r$   c                     g | ]X}|t           j        j        t           j        j        t           j        j        t           j        j        t           j        j        fvV|YS rS   )r   	is_pinnedr   r  r)   prim_Device_nested_tensor_from_tensor_listr  )r/   r   s     r"   rv  rv    se        N"GNG0804

 
 	

 
 
r$   c                 2    |t           vsJ d|             d S )NzNYI: )_device_not_kwarg_opsr^   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 )NTrd   rg   weightr   r      r   paddingdilation
transposedoutput_paddinggroups
bias_sizes)biasr   r  r  r  r  r  r  c                 ^    | | S ||                      |          } t          |           S r  )r  r   )rY  mem_fmtr)   r_   s     r"   convertzconv.<locals>.convert  s8    9H7++A)Q///r$   r?   rL  rS   )r   r   r   r   r   r   	is_mkldnnis_xpur   convolutionr   r2   r3   _select_conv_backend%_conv_determine_backend_memory_formatr   )r_   r:   r`   ra   rm   kbatchr   r  conv_backendr  r  r)   s   `           @r"   convr    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                     | j         | j         j        st          |          | j                                         }ddlm}  ||           t          j        ||k               |                    |          S r(  )	r   r   r   r   r   r   r2   r  r   )r_   r:   inputsweights	minlengthr   r   s          r"   bincountr  *  s     	#"A 	$ *$///"99;;HOOOOOOh'''	LY&'''H%%%r$   c                 F   | j         | j         j        st          |          | j                                         }ddlm}  ||           |s|                    dd          }|j        dd          }|                    |          }|                    |f          }	||	fS )Nr   r)  r?   )	r   r   r   r   r   r   	transposer   r   )
r_   r:   r  lengthsbatch_firstnew_batch_sizer   res_sizepacked_data
batch_sizes
             r"   _pack_padded_sequencer  <  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)rP   r:   s    r"   rR   z-register_fast_op_impl.<locals>.impl_decorator[  s    (/%r$   rS   )r:   rR   s   ` r"   register_fast_op_implr  Z  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   r   r?   r   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  rS   )ry  sizeAsizeBs   r"   r   zinfer_size.<locals>.<lambda>~  s5     /U / /05/ /*+/ / / r$   )r   r   rC   r   r   r2   r  rL   )r   br   dimsAdimsBr   expandedSizesoffsetdimAdimBry  r  r  s             @@@r"   r  r  c  sQ   DDDDDDFFEFFEueDC$JM4!8R$$ J JAqy6!qy6!199$!199$! 	N5A:&&V..!*D*DVQV/ / / / / /	
 	
 	
 %3N5A:$>$>I55Ear$   c                       fd}|S )Nc           	           fd}t          d           }d }|D ]9}t          |t          j                  r|j        nd}||}t          ||          }:|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 ]S}t          |t          j                  sd	}||
k    r|j
        j        dk    s|j
        }||j        }F||j        k    rd	}T|rt          |d
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          |          rZ|D ]W}t          |t          j                  s|ot!          |t          j                  }|ot!          |t          j                  }X|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   )r  r`   ra   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 fastrS   r   r  z#both tensors nontrivially broadcastrh   FTtype_promotion_kindr?   errorr   zfast is_contiguousri   )r/  r)   r!  r(   zfast channels_lastzno contiguity match)r   r@   r2   r   r   r  r   r   r   rC   r)   r'   r/  r   r   r*   r   r#  channels_lastr   empty)r  r`   ra   r  operandsfinal_shaperQ   r   r   r   rh   common_devicecommon_dtypehas_different_input_dtypesrm   current_cpu_scalars_on_non_cpumax_cpu_scalars_on_non_cpudefinitely_contiguousdefinitely_channels_lastr  r  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"# %[%88KK&&&PPPPPPPP  
	? 
	?B2u|,,MMS%5%555"N66"(K#@#@AA 6  4=>>> l5!!%*" 	2 	2Bb%,// -1*##BINe,C,C "	#!x))-1*% 	 1/B OA| *+&%&" 	% 	%Bb%,// ##A")s:J:J15OOO4==(((.!3..m++tG}}$$$ , !%#' 
 &m44 	  !"el33 ) @%*A   & - @%*=   )( ! 	,---&!"'"9	   %	 	 	 	 $ 	,---&!"'"5	   %	 	 	 	 t)***r$   rS   )r  r  r  s   `` r"   make_fast_binary_implr    s1    G+ G+ G+ G+ G+ G+R r$   c                 X   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   |rt          | ||j        |j	                  S t          | ||j                  S )N)real_tensor)
r   r   r2   r5  r   detachr   r   r)   r  )r_   r   include_realr  s       r"   fast_detachr    s   			 / /!=i!H!H / /in#++A../ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / O)S!(NNNN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                              t          | j        j        j        j                  t                     t           S )Nr   )r  )torch._refsr  r5  r   addr   r  r	  subr   divr	   INT_TO_FLOATr  r   r  r  )r2   s    r"   r   r     s'   4%).,344eko..   5%).,344eko..   5%).,344eko..   5%).,344KO ? L	
 	
 	
   9%)./788EEE""r$   )TFF)FFN)F)Tr-   )NNN)rW  N)Nr   )	functoolsr   r@  r   r   r   typingr   r   r2   torch._custom_optorch._loggingtorch._prims_common_prims_commonr   torch._dispatch.pythonr   
torch._opsr   r   r	   r
   r   r   r   r   r   r   torch._subclasses.fake_tensorr   r   r   r   r   r   torch.fx.operator_schemasr   torch.utils._statsr   _pytreer   __all__rJ   r   _opsr5  r   r#   r*   
empty_liker   r  	full_like	ones_like	rand_like
randn_likerandint_liker   
Tensor_out	low_dtypelow_dtype_out
zeros_liker   rF  new_full	new_zerosnew_onesrk   _resize_output_r  
pin_memoryr  r)   r  r  _pin_memory_resize_outputr  _list_to_tensorrj   r.   cacherF   ra  rM   rW   r\   __contains__rb   rr   rv   r{   r   r   r   r   r   r   _unique2r   selectr   r   r   r   rm   r   r   r  view_unsafe_viewr  	view_copyr&  r   r,  item_local_scalar_denser3  r7  r   rQ  rU  _assert_tensor_metadatar[  r_  rd  rg  rl  rm  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  r  convolution_backwardr  r  r  r  r  r  DEFAULTr  r  r   rS   r$   r"   <module>r#     s:             



       " " " " " " " "          # # # # # # 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9  @ $ (0(,OGNGN   #'"6!8        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 
, , 
, I I I I I IX $-'((KPV V V )(V $+/""&E &E #"&ER $/)**PU   +* $)122
 
 
 32
F F F FR	 	 	B B B BJ $)#$$$#+,,M M -, %$M $.())48     *) $(/00* * * 10*$ %).%-..%).4<==  >= /.* %)..6779 9 879 %).(0110P 0P 210Pf %).@HII* * * JI*> %)..677&" &" 87&"R %).8@AA
 

 
 
 

 
 
 BA
D KKLL- - ML-4 4 42 2 2  %VWf== 2 2 2X X X
   
  
F $*#$$" " %$"  $%-..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 %).)122& & & 32&" %).6>??% % @?%0  

            H #B"IL L L Lb0 0 0 0 # # # # #r$   