
    rh                     *   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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@                  jB                  Z"g d	Z#i Z$g Z%ejL                  jN                  jP                  Z(d
 Z)d Z* e)e(jV                  jX                  e(jV                  jZ                  e(j\                  jX                  e(j\                  jZ                  e(j^                  jX                  e(j^                  jZ                  e(j`                  jX                  e(j`                  jZ                  e(jb                  jX                  e(jb                  jZ                  e(jd                  jX                  e(jd                  jf                  e(jd                  jh                  e(jd                  jZ                  e(jd                  jj                  e(jd                  jl                  e(jn                  jX                  e(jn                  jZ                  e(jp                  jX                  e(jp                  jZ                  e(jr                  jX                  e(jr                  jZ                  e(jt                  jX                  e(jt                  jZ                  e(jv                  jX                  e(jv                  jZ                  e(jx                  jX                  e(jx                  jZ                        Z= e)e(j|                  jX                  e(j~                  jX                  e(j~                  jZ                  e(j                  jX                  e(j                  j                  e(j                  j                  e(j                  jX                  e(j                  jX                  e(j                  jZ                  e(j                  jX                  e(j                  jZ                        ZGe(j                  fZId ZJe j                  defd       ZLdeeegeMf   ef   fdZNd ZOd ZP eNe$j                        d        ZR eNeL       eNg e=      d               ZS eNe(j                  jX                        d        ZT eNe(j                  j                         eNe(j                  j                        d               ZUd ZV eNeV      d        ZW eNe(j                  jX                        d        ZX eNe(j                  jX                        d        ZY eNd       d        ZZ	 	 	 dEdddZ[ eNe(j                  jX                        	 dEd        Z] eNe(j                  jX                        	 dEd!       Z^ eNe(j                  jX                        dFd"       Z` eNe(j                  jf                        dGd#       Zb eNejN                  jP                  j                  jX                         eNejN                  jP                  j                  jX                        d$               Ze eNejN                  jP                  j                  jX                        d%        Zf eNejN                  jP                  j                  jX                        d&        Zg eNejN                  jP                  j                  jX                        dGd'       Zh eNejN                  jP                  j                  jX                        d(        Zi eNejN                  jP                  j                  jX                        	 	 	 dHddd)	 dId*       Zk eNd+       d,        Zld- Zmd. Zn e)d/d0d1      Zod2 Zpd3 Zq eNd4       d5        Zr eNe(j                  jf                        d6        Zt eNe(j                  jX                        d7        Zv eNe(j                  jX                         eNe(j                  jX                         eNe(j                  jX                         eNe(j                  jX                        d8                             Z{ eNe(j                  jZ                         eNe(j                  jZ                        d9               Z| eNe(j                  jX                         eNe(j                  jX                        d:               Z eNe(j~                  jX                         eNe(j~                  jZ                         eNe(j                   jX                         eNe(j                  jX                        d;                             Z eNeGD  cg c]q  } | e(j                  jX                  e(j                  j                  e(j                  j                  e(j~                  jX                  e(j~                  jZ                  fvr| s c}       d<        Z eNe(j                  jX                  e(j
                  jX                  g      d=        Z eNejN                  jP                  j                  jX                        dJd>       Z eNejN                  jP                  j                  jX                        d?        Zi Zdefd@ZdA Zej                  fdBZdKdCZe j                  dD        Zyc c} w )L    N)CallableUnion)no_python_dispatcher)
OpOverload)'definitely_contiguous_for_memory_format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                  .    t         j                  | d      S )NT)dictfromkeys)itemss    o/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/torch/_subclasses/fake_impls.pyordered_setr   2   s    ==%%    c                      | j                   dk7  S )Nhpu)typedevices    r   is_noncontiguous_supportedr&   8   s    ;;%r    c                     t         j                  j                  j                         }| j	                  |      xs  t        d | j                         D              S )Nc              3   2   K   | ]  }t        |        y wN)contains_tensor_types).0es     r   	<genexpr>z(contains_tensor_types.<locals>.<genexpr>p   s      0%&a 0s   )torch_C
TensorTypegetisSubtypeOfanycontainedTypes)r#   tensor_types     r   r*   r*   n   sO    ((%%))+KK( C 0*.*=*=*?0 - r    funcc                 .   t        | t              sJ | j                  }t        d |j                  D              ryt        |j                        dk(  xrA |j                  d   j                  t        j                  j                  j                         u S )Nc              3   F   K   | ]  }t        |j                          y wr)   )r*   r#   )r+   args     r   r-   z)_is_tensor_constructor.<locals>.<genexpr>y   s     
Gs *
Gs   !F   r   )
isinstancer   _schemar3   	argumentslenreturnsr#   r.   r/   r0   r1   )r6   schemas     r   _is_tensor_constructorrA   u   sv    dJ'''\\F

Gf6F6F
GG 	FNNq XV^^A%6%;%;uxx?R?R?V?V?X%Xr    run_impl_checkc                       fd}|S )Nc                 
   t        t              rt        vs
J d        | t        <   | S t        t        t        f      rD ]  } t        |      |         | S t              sJ t        j                  | f       | S )Nzduplicate registration: )	r;   r   op_implementations_dictlisttupleregister_op_implcallabler   append)op_imploprB   s     r   impl_decoratorz(register_op_impl.<locals>.impl_decorator   s    nj1&==;).)9:;=6=#N3  u6$ .$ $W-.  N+++%,,ng-FGr     )rB   rM   s   ` r   rH   rH      s     r    c                     | t         v S r)   rE   rL   s    r   _is_op_registered_to_fake_rulerR      s    (((r    c                 x    | t         v rt         | = t        D ]"  \  }}|| u st        j                  ||f        y  y r)   )rE   r   remove)rL   checkimpls      r   _deregister_op_implrW      sB    	$$#B'0 tB;%,,eT];r    c                 (    t        |   | |g|i |S r)   rP   	fake_moder6   argskwargss       r   #dispatch_to_op_implementations_dictr]      s    "4(DJ4J6JJr    c                    |t         vsJ t        |||d      \  }}d|v rt        d      |t        v r"|d   j                  }|j                  d      f}nt        j                  d      }d}|j                  dd       }||n|}t        j                  d	      |d<   t        |       5   ||i |}d d d        t        | |      S # 1 sw Y   xY w)
NTr[   r\   normalize_to_only_use_kwargsnamesz+torch.compile doesn't support named tensorsinputcpurN   r%   meta)	_non_kwarg_device_constructorsr   r   _like_tensor_constructorsr%   popr.   r   r   )	rZ   r6   r[   r\   _
new_kwargsdefault_device
out_devicers	            r   constructorsrm      s     5555&4TMAz &*9
 	
 ((#G,33w') e,$/J)5>J <</Jx 
&i	0 &$%*%&iJ//& &s   (	CCc                     t        |||d      \  }}|j                  d      }t        |       5   ||      }d d d        |S # 1 sw Y   S xY w)NTr`   rb   )r   rg   r   )rZ   r6   r[   r\   rh   ri   inprl   s           r   non_kwarg_is_pinnedrq      sV    &dFMAz ..
!C 
&i	0 IHHs   	AAc                 4   t        |||d      \  }}|d   }|r|n|d   j                  }t        j                  d      |d<   |j                  d      }t	        |       5   ||fi |}	d d d        | j
                  j                  | 	|      S # 1 sw Y   &xY w)NTro   r%   rb   rd   )r   r%   r.   rg   r   fake_tensor_converterfrom_meta_and_device)
rZ   r6   r[   r\   rh   ri   input_devicerk   rp   rl   s
             r   non_kwarg_torv      s     'dFMAz h'L!-:g3F3M3MJ <</Jx
..
!C	%i	0 $#
#$ **??1j $ $s   
BBc                      y)NFrN   rQ   s    r   r   r      s    r    c                     d | j                   rat        fdt        j                  ||j	                               D              }|s)t
        j                  ||f      \  }}t        | |||d       S t        |      )Nc                     t        | t              r| j                  S t        | t        j                  t        j
                  t        j                  f      ryy)NTF)r;   r   _has_symbolic_sizes_stridesr.   SymIntSymFloatSymBoolxs    r   is_symbolicz3wordaround_stride_incorrect_op.<locals>.is_symbolic   s;    a$000a%,,FGr    c              3   .   K   | ]  } |        y wr)   rN   )r+   r   r   s     r   r-   z1wordaround_stride_incorrect_op.<locals>.<genexpr>   s      
 KN
s   )	allow_fallback_kernelsr3   	itertoolschainvaluespytreetree_flattenr   r   )rZ   r6   r[   r\   require_dynamic	flat_args	args_specr   s          @r   wordaround_stride_incorrect_opr      sw     '' 
$-OOD&--/$J
 
 #)#6#6f~#F Iy&y$	9dSS
&t
,,r    c                 T    t        |       5   ||i |cd d d        S # 1 sw Y   y xY wr)   )r   rY   s       r   
resize_as_r     s,    	%i	0 %T$V$% % %s   'c                 "    t        | |g|i |S r)   )rm   rY   s       r   (_sparse_coo_tensor_with_dims_and_tensorsr     s     	49$9&99r    c                     t         j                  j                  | j                  v xrO | t        j
                  j                  t        j                  j                  t        j                  j                  fvS r)   )
r.   Tagdynamic_output_shapetagsatenindexTensornonzerodefaultrepeat_interleaver6   s    r   <lambda>r     sU    //499< TJJt||33T5K5K5R5RS	T r    c                     t        |      r)   )r   rY   s       r   	dyn_shaper     s     &d
++r    Funique_consecutivec                V   | j                   | j                   j                  st        |      |r|j                  n|j                  }||ddlm}	m}
  |
|j                               s|j                         dk(  rd}nm| j                   j                         }t        j                  dz
  }||j                         n|j                  |      } |
|      st        |      } |	||       ||r||_        n||_        ||j                  |f      g}n4 |j                  g |j                  d | ||j                  |dz   d   g}|d uxr" |j                   t#        j$                  d      k(  }|s|r.|j                  ||j                  n|j                  |   f      }n|j                  d      }|j'                  |       |s|r4|j                  ||d   j                  n|d   j                  |   f      }n|j                  d      }|j'                  |       t)        |      S )Nr   _constrain_range_for_sizehas_free_symbolsr:   maxrc   )	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_devicer.   r%   rJ   rG   )rZ   r6   r9   dimsortedreturn_inversereturn_countsr   nnzr   r   maxvalr   retreturn_if_dim_and_cpuinversecountss                    r   _uniquer     s    	#""AA *$//);#
%
%C #+	

  		,1A C%%<<>C[[1_F#&;CIIKCHHSME#E*U%cv6;!.1+"%
{}}cV$%s}}JciioJsJSYYsQwy5IJKtOV5<<PUCV0V.--S[		syy~>OP--"JJw-s{s1v||QcAR@TUq!JJv:r    c           	      $    t        | ||d |||      S r)   r   )rZ   r6   r9   r   r   r   s         r   unique2r   c  s     9dCv~}UUr    c           
      `    t        | |||dk\  r|n|t        |j                  d      z  |||      S )Nr   r:   )r   r   ndim)rZ   r6   r9   r   r   r   r   s          r   
unique_dimr   j  s>     axS3sxx#33	 	r    c           
      (    t        | |||d||d      S )NFTr   r   )rZ   r6   r9   r   r   r   s         r   rh   rh   z  s'    	 	r    c                     |U| j                   | j                   j                  st        |      | j                   j                         }ddlm}  ||       |j                  |      S Nr   r   )r   r   r   r   r   r   r   )rZ   r6   repeatsoutput_sizer   s        r   repeat_interleave_tensorr     sa    '&&EE-d33))@@B 	T!+.[))r    c                    |j                   x}|S | j                  "| j                  j                  s| j                  st        |      t	        |j
                        r| j                  j                         }nxt        |j
                        r| j                  j                         }nHt        |j
                        r| j                  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)rZ   r6   r9   rl   s       r   local_scalar_denser     s     ]]'"44.. +400cii 88:	#))	$668	#))	$779!$DSYYK"PQQCMHr    c                     t         j                  j                  j                  j	                  |      j                  d      S )Nr:   )r.   opsr   r   r   unbind)rZ   r6   r9   s      r   nonzero_numpyr     s,    99>>!!))#.55a88r    c                 J   | j                   | j                   j                  st        |      |j                  x}4ddlm}m} ddlm} ddl	m
}  ||j                               s|j                         dk(  rd}n| j                   j                         }t        j                  dz
  } ||j                               st        |j                               }nt!        j"                  |j$                        j&                  }	 ||	j(                  |	j                   j*                        }
t-        |
j.                  |      rt        j                  dz
  }n|
j.                  } |||       ||_        |j1                  ||j3                         fd|ft4        j6                        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   r.   int64)rZ   r6   r9   r   r   r   r   r   r   	prod_node
prod_ranges              r   r   r     sI    	#""AA *$//(	
 	;?		,1A C%%<<>C[[1_F#CIIK0SYY[) IIcii055	(NNI$7$7$D$D
 j..< [[1_F'--F%cv6  #swwy!1As85;; OOr    c                    t        |      dk(  sJ |s| j                  | j                  j                  st        |      | j                  j	                         }t
        j                  dz
  }ddlm}m	}  ||j                               st        |j                               } ||d|       |g|j                  dd  }|j                  |      S )Nr:   r   r   )minr      )r>   r   r   r   r   r   r   r   r   r   r   r   r   r   )	rZ   r6   paddedoffsetstotal_Lr   r   r   output_shapes	            r   _padded_dense_to_jagged_forwardr     s     w<1'&&EE .d33%%<<>q	

  /(F!'qf=/fll12./LL))r    c                    | j                   | j                   j                  st        |      | j                   j                         }t        j
                  dz
  }ddlm}m} ddl	m
} ddlm}	  ||j                               st        |j                               }
nt        j                   |j"                        j$                  } |	|j&                  |j                   j(                        }t+        |j,                  |      rt        j
                  dz
  }
n|j,                  }
|
dkD  r|
} |||       |j/                  |f      S )Nr:   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r;   r   r   )rZ   r6   selfmaskr   r   r   r   r   r   num_elementsr   r   s                r   masked_selectr     s     	#""AA *$//



4
4
6C [[1_F 7;
 DJJL)4::<(IIdjj)..	 1D1D1Q1QR
j&&4;;?L%++Lacv.>>3&!!r    )r%   layoutc                   |.|j                         |k(  sJ d| d|j                                 |.|j                         |k(  sJ d| d|j                                 |&|j                  |k(  sJ d| d|j                          |*|j                  |k(  sJ d| d|j                                 |'|j                  |k(  sJ d| d|j                          y y )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   strider   r   r%   )rZ   r6   tsizesstridesr   r%   r   s           r   assert_tensor_metadatar   5  s    FFH	H.ugWQVVXJG	HHHJ'!	N0	M	N!GGu	G.ugWQWWIF	GHH	L/xwqxxzlK	LHH	J/xwqxxjI	J r    c                 N    t         j                  j                  | j                  v S r)   )r.   r   data_dependent_outputr   r   s    r   r   r   X  s    uyy>>$))K r    c                     t        |      r)   )r   rY   s       r   data_depr  X  s    
&t
,,r    c                     |D ]<  }||j                   t        j                  t        j                  fv s3t	        |        y r)   )r   r.   booluint8r   )r6   r   indicesr   s       r   check_no_bool_index_tensorsr  _  s:     4U[[0I!I-d334r    c                    t        |||d      \  }}|d   j                  }t        |       5   ||i |}t        |      s|j	                  |j
                        }d d d        |d   u r|S t        | ||      S # 1 sw Y   xY wNTr_   rb   )r   r%   r   r&   r   r   r   )rZ   r6   r[   r\   rh   ri   rk   outs           r   )run_and_return_new_tensor_of_input_devicer
  e  s    &4TMAz G$++J	%i	0 +D#F#)*5--		*C+
 j!!
ij11+ +s   /A::Br   primsprimc                 &    | j                   t        v S r)   )	namespace_is_builtin_namespacesrQ   s    r   
is_builtinr  x  s    <<111r    c                 ^    t         j                  j                  | j                         d      S )NMeta)r.   r/   ._dispatch_has_computed_kernel_for_dispatch_keynamer   s    r   r   r   |  s     88BB499;PVWWr    c                 t    t        |       xr, | j                         j                  d      xr t        |       S )Nzaten::_foreach_)r  r  
startswithr   r   s    r   r   r     s4    D! 		01 r    c           	      Z   t        j                  ||j                               D cg c]B  }t        |t        t
        f      r*t        |      rt        |d   t        j                        r|D }}	 t        |       5   ||i |}d d d        s|S |sJ g }t        |      D ][  \  }}	t        j                  ||D 
cg c]  }
|
|   	 c}
      \  }}|j                  | j                   j#                  | |	|             ] |S c c}w # 1 sw Y   xY w# t        $ r	 t        cY S w xY wc c}
w Nr   )r   r   r   r;   rF   rG   r>   r.   r   r   r   NotImplemented	enumerater   _find_common_devicerJ   rs   rt   )rZ   r6   r[   r\   r9   tensor_listsout_metaout_fakeimeta_ttlr%   rh   s                r    foreach_run_and_map_input_devicer"    s*    ??49cD%=)Hs1vu||,	 	L ))4 	-T,V,H	-
 <Hx( 
	6224,9WB"Q%9WX	++@@66	

 O9	- 	-  :Xs6   AD1D <	DD <D(DD D%$D%c                     ddl m} t        |||d      \  }}|d   j                  }| 5   ||i |}|j	                  |      cd d d        S # 1 sw Y   y xY w)Nr   )meta_index_TensorTr_   rb   )torch._meta_registrationsr$  r   r%   to)	rZ   r6   r[   r\   r$  rh   ri   rk   r	  s	            r   index_tensorr'    sa    ;&4TMAz G$++J	 "00vvj!" " "s   AAc                 N    ddl m} | 5   ||i |cd d d        S # 1 sw Y   y xY w)Nr   )meta_embedding_bag)r%  r)  )rZ   r6   r[   r\   r)  s        r   embedding_bagr*    s*    <	 3!42623 3 3s   $c                     t        | |||      S r)   )r
  rY   s       r   multi_device_op_defaultr,    s    
 5YdFSSr    c                     t        |       5   ||i | d d d        t        |||d      \  }}|d   S # 1 sw Y    xY wr  )r   r   )rZ   r6   r[   r\   rh   ri   s         r   multi_device_op_outr.    sT     
&i	0 df '4TMAz g s   	4=c                 R   t        ||d      \  }}|d   |d   j                  t        j                  j                  k(  xs$ j                  dk(  xr j                         dk(  fd       t        | ||      }t        j                  j                  u r|d   S |S )NTr_   r   rb   r   r:   c                  0    d  d dj                    dS )NzMismatching z device between self (z) and values ()r$   )r6   self_devicer   s   r   r   z index_put_impl.<locals>.<lambda>  s&    ,tf$:;-~V\VcVcUddef r    )
r   r   r.   _checkr   r   r
  r   
index_put_r   )	rZ   r6   r[   r\   rh   ri   r	  r2  r   s	    `     @@r   index_put_implr5    s     '4TMAz !FW%11K	LLv)))WfkkQ.>.V6<<>UVCVf
 4ItT6
RCt&&&'""
r    c                     t        d      )Nz3torch.compile does not support strided NestedTensor)r   rY   s       r   nested_tensors_unsupportedr7    s    
 '= r    c                 (    |t         vs
J d|        y )NzNYI: )_device_not_kwarg_opsrY   s       r   nyir:    s      ,,<dVn<,r    c                 t    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 |}	nDt        j                  j                  |d   |d   d |d   |d	   |d
   |d   |d   |d   |d   
      }	t        j                  j                  |d   |d   |	      }d d d         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 Y   }xY w# 1 sw Y   y xY w)NTr_   rb   weightr   )has_hint   r   paddingdilation
transposedoutput_paddinggroups
bias_sizes)biasr   r?  r@  rA  rB  rC  rD  c                 N    | | S || j                  |      } t        |       S )Nmemory_format)r&  r   )r   mem_fmtr%   rZ   s     r   convertzconv.<locals>.convert4  s2    9H7+A)Q//r    r:   r   rN   )r   r   r   r   r   r=  	is_mkldnnis_xpur   convolutionr   r.   r/   _select_conv_backend%_conv_determine_backend_memory_formatr   )rZ   r6   r[   r\   rh   kbatchr=  rI  conv_backendrJ  r	  r%   s   `           @r   convrS    s   "4TIAv G_((F	  8!!w%%a( 	C G!VF7O55fWo>T>TGt''///$xx<<FvF$xx<<7O8$!(+"9-#J/%l3#)*:#;!(+%l3  =   hhDDw!1<G= D0 
&i	0 
nVn4##+++3(	
 
 A(A(A%
 
S   R
 
s   D F"?-F.6"F."F+.F7c                     | j                   | j                   j                  st        |      | j                   j                         }ddlm}  ||       t        j                  ||k\         |j                  |      S r   )	r   r   r   r   r   r   r.   r3  r   )rZ   r6   inputsweights	minlengthnew_sizer   s          r   bincountrY  H  sm     	#""AA *$//""99;HOh'	LLY&'H%%r    c                 @   | j                   | j                   j                  st        |      | j                   j                         }ddlm}  ||       |s|j                  dd      }|j                  dd  }|j                  |      }|j                  |f      }	||	fS )Nr   r   r:   )	r   r   r   r   r   r   	transposer   r   )
rZ   r6   rU  lengthsbatch_firstnew_batch_sizer   res_sizepacked_data
batch_sizes
             r   _pack_padded_sequencerb  Z  s     	#""AA *$//((??ANOn-!!!Q'||ABH""8,K!!>"34J$$r    c                       fd}|S )Nc                     | t         <   | S r)   )FAST_OP_IMPLEMENTATIONS)rK   r6   s    r   rM   z-register_fast_op_impl.<locals>.impl_decoratory  s    (/%r    rN   )r6   rM   s   ` r   register_fast_op_implrf  x  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(        xs  |dk(        xs k(  
fd        |dk(        rn|
<   ~ t        |      S )Nr   )guard_or_falser:   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 r1  rN   )r  sizeAsizeBs   r   r   zinfer_size.<locals>.<lambda>  s'    ,UG 4005w 7**+A/ r    )r   rh  r>   r   ranger.   r3  rG   )abrh  dimsAdimsBr   expandedSizesoffsetdimAdimBr  rk  rl  s             @@@r   
infer_sizerv    s    DFEFEueDC$JM4!8R$ JAqy6!qy6!19$!19$! 	5A:&V.!*DVQV/	
 %35A:$>5Ea1J2 r    c                       fd}|S )Nc           	           fd}t        d       }d }|D ]:  }t        |t        j                        r|j                  nd}||}t        ||      }< |J ddlm}m}	 |D ]Z  }t        |t        j                        st        |j                        t        |      k(  s@ | |	|j                  |            sZ n	  |d      S t        j                  d      }
|
}d }d}|D ]j  }t        |t        j                        sd	} ||
k(  r%|j                  j                  dk(  s|j                  }||j                  }Y||j                  k7  sid	}l |rt        |d
i\  }}d}d}|D ]r  }t        |t        j                        s||
k7  r7|j                         dk(  r$|j                  |
k(  r||k\  r
 |d      c S |dz  }Z|j                  |k7  sj |d      c S  d	}d	}t        |      r`|D ][  }t        |t        j                        s|xr t!        |t        j"                        }|xr t!        |t        j$                        }] |r>t        d       t'         t        j(                  ||dt        j"                        |      S |r>t        d       t'         t        j(                  ||dt        j$                        |      S  |d      S )Nc                 `    t        d|         5   i cd d d        S # 1 sw Y   y xY w)Nzslow r   )msgr[   r\   modeslow_refs    r   slowz=make_fast_binary_impl.<locals>.fast_binary_impl.<locals>.slow  s6    %u& 1001 1 1s   $-zattempt fastrN   r   )rh  sym_eqz#both tensors nontrivially broadcastrc   FTtype_promotion_kindr:   errorrG  zfast is_contiguousrd   )r   r%   rH  r$   zfast channels_lastzno contiguity match)r   r;   r.   r   r   rv  r   rh  r~  r>   r%   r#   r   r   r   r&   r   contiguous_formatchannels_lastr   empty)r{  r[   r\   r}  operandsfinal_shaperL   r   rh  r~  rc   common_devicecommon_dtypehas_different_input_dtypesrh   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
 	N#   	9B *2u|| <BHH"E"# %[%8K	9 &&&P  
	?B2u||,MS%55"6"((K#@A
	? =>> ll5!%*" 	2Bb%,,/-1*#BIINNe,C "		#!xx)-1*	2 & 1/BOA| *+&%&" 	%Bb%,,/#A"))s:J15OO=(.!3.m+G}$	% !%#'  &m4 !"ell3) ?%*A*A & - ?%*=*= ) !,-&!"'"9"9	 %	 	 $,-&!"'"5"5	 %	 	 )**r    rN   )r|  r  r  s   `` r   make_fast_binary_implr    s    F+P r    c                 ^   t               5  t        |       5  t        j                  j                  j
                  j                  |      }d d d        d d d        |r#t        | |j                  |j                        S t        | |j                        S # 1 sw Y   MxY w# 1 sw Y   QxY w)N)real_tensor)
r   r   r.   r   r   detachr   r   r%   r  )rZ   r   include_realr	  s       r   fast_detachr  4  s    		 /!=i!H /iinn##++A./ /)S!((NNiahh//	/ / / /s"   B#4BB#B 	B##B,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._refsrf  r   r   addr   r  _refssubmuldivr	   INT_TO_FLOATr  r   r  re  )r.   s    r   r   r   <  s   4%))..,,334ekkoo. 5%))..,,334ekkoo. 5%))..,,3345J5;;??5[\4%))..,,334KKOO ? L L	
 9%))..//778E""r    )TFF)FFNr)   )NNN)returnNr  )F)	functoolsr   r   r   typingr   r   r.   torch._custom_optorch._loggingtorch._dispatch.pythonr   
torch._opsr   torch._prims_commonr   r   r	   r
   r   r   torch._subclasses.fake_tensorr   r   r   r   r   r   torch.fx.operator_schemasr   torch.utils._statsr   utils_pytreer   __all__rE   r   _opsr   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   r   new_full	new_zerosnew_onesrf   _resize_output__nested_tensor_from_tensor_list
pin_memoryr&  r%   prim_Device	is_pinned_pin_memory_resize_outputr9  _list_to_tensorre   r*   cacherA   r  rH   rR   rW   __contains__r]   rm   rq   rv   r   r   r   r   r   r   _unique2r   r   r   rh   r   r   item_local_scalar_denser   r   r   r   r   _assert_tensor_metadatar   r  r  r
  r  r  r   r"  r   r'  _embedding_bagr*  _unsafe_index_putcopycopy_slice_scatterr,  r.  	index_putr4  r5  _nested_view_from_buffer_nested_view_from_buffer_copyr7  r:  rM  convolution_backwardrS  rY  rb  re  rf  rv  DEFAULTr  r  r   r~   s   0r   <module>r     s	      
 "    7 !   9 * 
		    zz~~&  (OOOONNNNNNNNNNNNOOOO  ##OOOONNNN""MMMMNNNNMMMM9 @ $  ((00((,,OOGGNNGGNN  #'"6"6!8    U8ZL$4F+G+S%T &) )667K 8K ().-./0 0 *08 $..(()	 *	 $''%%&$''..! " ' 
 %&- '-0 $//))*% +%
 $??GGH: I: T
,
, I IX $--''(KPV )V $//))*PU + $))112
 3
 $((//0* 1*$ %))..%%--.%))..44<<= > /* %))....6679 89 %))..((0010P 20Pf %))..@@HHI* J*> %))....667&" 8&"R %))..88@@A
 
J J 
J BJD KL- M-42  %VWf= 2X
 

F $**##$" %"  $%%--.3 /3 $((001$))##$$**$$%$$$,,-T . & % 2T
 $))-- $$$(() * ! $..(()$//))* + *& $66>>?$66::;$//778$44<<= > 9 < @  ' NN""GGNNGG00880044

 	
== 4##++T-F-F-N-NOP9 Q9x %))..))112& 3&" %))..66>>?% @%0  

   H #B"I"IK`0 # #I
s   2A6j