
    ^j]                     h   d dl Z d dlmZmZ d dlmZ d dlZd dlZddlm	Z	m
Z
 eeez     dz  Z G d de      Zeej                  j                   z  ez  e	z  ej"                  z  Zded	ed
efdZ e j(                  d      deeez  df   d	eeez  df   d
efd       Zdee   d
efdZ G d d      Zy)    N)CallableSequence)Protocol   )OpsValueVc                   "    e Zd Zedefd       Zy)ShapeVarreturnc                      y N )selfs    l/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_inductor/shape_propagation.pyshapezShapeVar.shape   s    '*    N)__name__
__module____qualname__propertyBlockShapeTyper   r   r   r   r
   r
      s    *~* *r   r
   abr   c                     t        | t              sJ t        |t              sJ t        t        |       t        |            S r   )
isinstancer   _get_broadcasted_shapetuple)r   r   s     r   get_broadcasted_shaper      s7    a"""a"""!%(E!H55r   .c           	         t        |       t        |      kD  r*t        | g dgt        |       t        |      z
  z  |      S t        |       t        |      k  r.| |} }t        | g dgt        |       t        |      z
  z  |      S dt        t        z  dt        t        z  dt        t        z  fdt	        fdt        | |      D              S )Nr   d1d2r   c                 x    t        |       dk(  r|S t        |      dk(  r| S t        |       t        |      k(  sJ | S )N1)str)r    r!   s     r   _get_broadcasted_dimz4_get_broadcasted_shape.<locals>._get_broadcasted_dim+   s=    2w#~	RC	r7c"g%%%Ir   c              3   6   K   | ]  \  }} ||        y wr   r   ).0r    r!   r%   s      r   	<genexpr>z)_get_broadcasted_shape.<locals>.<genexpr>3   s     Jfb")"b1Js   )lenr   intr$   r   zip)r   r   r%   s     @r   r   r       s     1vA%a)GA3#a&3q6/+B)GQ)GHH	Q#a&!1%a)GA3#a&3q6/+B)GQ)GHH	S3Y 	C#I 	#) 	 JAq	JJJr   argsc                 l   d }| D ]  }t        |d      r4|j                  }| y |t        |      }-t        |t        |            }Ct	        |t
        t        f      r|\d}_t	        |t        j                        rzddl	m
}m} t	        |||t        f      r y t        dt        |              |S )Nr   r   r   )LoopBodyLoopBodyBlockzUnknown type: )hasattrr   r   r   r   r*   floattorchdtypetorch._inductor.loop_bodyr.   r/   r   	TypeErrortype)r,   result_shapeargr   r.   r/   s         r   broadcast_shapes_for_argsr9   6   s    #'L :3 IIE}%$U|4\5<Pc5\*#!U[[)I#xBCnT#YK899):, r   c                      e Zd ZdZedej                  j                  dej                  de	fd       Z
ededededdfd	       Zedej                  d
ej                  dedeeedf   z  de	ee	df   z  f
d       Zed#dededededz  ddf
d       Ze	 	 d$dedej                  d
ej                  dz  dede	f
d       Zedej,                  dej,                  de	fd       Zedej,                  dej                  de	fd       Zedej,                  dej                  de	fd       Zededede	fd       Ze	 	 d%dedej,                  ez  dededdf
d       Zdedede	f   fdZed ed!eddfd"       Zy)&ShapePropagationOpsHandlerz-
    Propagate shape from args to output
    valuer3   r   c                     ddl m} t        t        j                  |      r-t        j                  j                         }t        dg|z        S y)Nr   TritonKernelr   r   )torch._inductor.codegen.tritonr?   r   r   kerneltriton_tensor_ndimr   )r<   r3   r?   ndims       r   constantz#ShapePropagationOpsHandler.constantW   s<     	@ahh-88..0D!t$$r   nameindexNc                      y r   r   )rE   rF   r<   s      r   store_reductionz*ShapePropagationOpsHandler.store_reductionb       r   	src_dtypereduction_type.c                     t         r   )NotImplementedError)r3   rJ   rK   r<   s       r   	reductionz$ShapePropagationOpsHandler.reductionf   s
     "!r   modec                      y r   r   )rE   rF   r<   rO   s       r   storez ShapePropagationOpsHandler.storeo   rI   r   use_compute_typesc                     | j                   S r   )r   )r<   r3   rJ   rR   s       r   to_dtypez#ShapePropagationOpsHandler.to_dtypes   s     {{r   r   r   c                 R    ddl m} t        t        j                  |      sJ d       y)Nr   r>   zdot supports Triton only)YBLOCKXBLOCK)r@   r?   r   r   rA   )r   r   r?   s      r   dotzShapePropagationOpsHandler.dot|   s"    ?!((L1M3MM1#r   exprc                      y r   r   rY   r3   s     r   
index_exprz%ShapePropagationOpsHandler.index_expr        r   c                      y r   r   r[   s     r   
value_exprz%ShapePropagationOpsHandler.value_expr   r]   r   offsetc                      y)Nr   r   )rE   r`   s     r   	load_seedz$ShapePropagationOpsHandler.load_seed   s    r   varsizecheckwrap_negc                      y r   r   )rc   rd   re   rf   s       r   indirect_indexingz,ShapePropagationOpsHandler.indirect_indexing   s     r   c                     d S )Nc                      t        |       S r   )r9   )r,   kwargss     r   <lambda>z8ShapePropagationOpsHandler.__getattr__.<locals>.<lambda>   s    '@'F r   r   )r   rE   s     r   __getattr__z&ShapePropagationOpsHandler.__getattr__   s    FFr   condmsgc                      y r   r   )rn   ro   s     r   device_assert_asyncz.ShapePropagationOpsHandler.device_assert_async   rI   r   r   )NT)TT)r   r   r   __doc__staticmethodr2   typesNumberr3   r   rD   r$   r*   ShapeArgrH   r   rN   rQ   r
   boolrT   sympyExprrX   r\   r_   rb   rh   r   rm   rq   r   r   r   r;   r;   R   s    ** 5;; >   c # h 4   "{{";;" " %#..	"
 
% 34	4" " C  H C$J RV    )-"&	{{ ;;%  	
 
  $uzz $ejj $^ $ $  EKK N    EKK N    S ^    	jj3  	
 
 G Gn1D(E G (    r   r;   )	functoolscollections.abcr   r   typingr   rx   r2   virtualizedr   r   r*   r$   r   r
   rt   ru   r3   rv   r   	lru_cacher   r   r9   r;   r   r   r   <module>r      s     .    $ #)$t++x +
 ekk(((3.9EKKG6^ 6 6> 6 TKS3Y^K!&sSy#~!6KK K*HX$6 > 8M Mr   