
    9j                     4   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 e j&                  d      ded	e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    a/media/conek/DATA/Code/OCR/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        |      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_dimz3get_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>-   s     Jfb")"b1Js   )
isinstancer   lenget_broadcasted_shapeintr   tuplezip)r   r   r    s     @r   r&   r&      s    a"""a"""
1vA$Q(F1#Q#a&*A(FA(FGG	Q#a&!1$Q(F1#Q#a&*A(FA(FGG	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_argsr7   0   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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
    valuer1   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:   r1   r=   ndims       r   constantz#ShapePropagationOpsHandler.constantQ   s<     	@ahh-88..0D!t$$r   nameindexNc                      y r   r   )rC   rD   r:   s      r   store_reductionz*ShapePropagationOpsHandler.store_reduction\       r   	src_dtypereduction_type.c                     t         r   )NotImplementedError)r1   rH   rI   r:   s       r   	reductionz$ShapePropagationOpsHandler.reduction`   s
     "!r   modec                      y r   r   )rC   rD   r:   rM   s       r   storez ShapePropagationOpsHandler.storei   rG   r   use_compute_typesc                     | j                   S r   )r   )r:   r1   rH   rP   s       r   to_dtypez#ShapePropagationOpsHandler.to_dtypem   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   r?   )r   r   r=   s      r   dotzShapePropagationOpsHandler.dotv   s"    ?!((L1M3MM1#r   exprc                      y r   r   )rW   r1   s     r   
index_exprz%ShapePropagationOpsHandler.index_expr}   s     r   offsetc                      y)Nr   r   )rC   rZ   s     r   	load_seedz$ShapePropagationOpsHandler.load_seed   s    r   varsizecheckwrap_negc                      y r   r   )r]   r^   r_   r`   s       r   indirect_indexingz,ShapePropagationOpsHandler.indirect_indexing   s     r   c                     d S )Nc                      t        |       S r   )r7   )r*   kwargss     r   <lambda>z8ShapePropagationOpsHandler.__getattr__.<locals>.<lambda>   s    '@'F r   r   )r   rC   s     r   __getattr__z&ShapePropagationOpsHandler.__getattr__   s    FFr   condmsgc                      y r   r   )rh   ri   s     r   device_assert_asyncz.ShapePropagationOpsHandler.device_assert_async   rG   r   r   )NT)TT)r   r   r   __doc__staticmethodr0   typesNumberr1   r   rB   r   r'   ShapeArgrF   r(   rL   rO   r
   boolrR   sympyExprrV   rY   r\   rb   r   rg   rk   r   r   r   r9   r9   L   s    ** 5;; >   c # h 4   "{{";;" " %#..	"
 
% 34	4" " C  H C$J RV    )-"&	{{ ;;%  	
 
  $uzz $ejj $^ $ $  EKK N    S ^    	jj3  	
 
 G Gn1D(E G (    r   r9   )	functoolscollections.abcr   r   typingr   rr   r0   virtualizedr   r   r'   r   r   r
   rn   ro   r1   rp   	lru_cacher&   r7   r9   r   r   r   <module>ry      s     .    $ #)$t++x +
 ekk(((3.9EKKG TK^ K K> K K*HX$6 > 8H Hr   