
    )`iZ                         d Z ddlmZmZmZ ddlmZmZmZ  G d d          Z	 G d d          Z
 G d d	          Zd
S )z!
Utilities for expressing shapes
    )ConvModeConvKind
LayoutType)Conv2DProblemSize_
GemmCoord_GemmCoordBatched_c                   P    e Zd Zd Zed             Zed             ZdedefdZ	dS )MatrixCoordc                 "    || _         || _        d S N)_row_col)selfrowcols      /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/flashinfer/data/cutlass/python/cutlass_cppgen/shape.py__init__zMatrixCoord.__init__2   s    				    c                     | j         S r   )r   r   s    r   r   zMatrixCoord.row6   
    yr   c                     | j         S r   )r   r   s    r   columnzMatrixCoord.column:   r   r   layoutreturnc                     |t           j        k    r| j        S |t           j        k    r| j        S t          d|           )a  
        Returns the leading dimension for a matrix with layout ``layout`` and shape provided by the MatrixCoord.

        :param layout: layout of matrix
        :type layout: cutlass_library.LayoutType

        :returns: leading dimension
        :rtype: int
        z6Unsupported layout for leading dimension calculation: )r   RowMajorr   ColumnMajorr   	Exception)r   r   s     r   leading_dimensionzMatrixCoord.leading_dimension>   sH     Z(((9z---9]U[]]^^^r   N)
__name__
__module____qualname__r   propertyr   r   r   intr     r   r   r
   r
   1   s             X   X_
 _s _ _ _ _ _ _r   r
   c                       e Zd ZdededefdZedefd            Zedefd            Zedefd            Zede	fd	            Z
ede	fd
            Zede	fd            Zedefd            ZdedefdZdS )	GemmCoordmnkc                 0    || _         || _        || _        d S r   )_m_n_k)r   r)   r*   r+   s       r   r   zGemmCoord.__init__Q   s    r   r   c                     | j         S r   )r-   r   s    r   r)   zGemmCoord.mV   	    wr   c                     | j         S r   )r.   r   s    r   r*   zGemmCoord.nZ   r1   r   c                     | j         S r   )r/   r   s    r   r+   zGemmCoord.k^   r1   r   c                 6    t          | j        | j                  S r   )r
   r-   r/   r   s    r   mkzGemmCoord.mkb       47DG,,,r   c                 6    t          | j        | j                  S r   )r
   r-   r.   r   s    r   mnzGemmCoord.mnf   r6   r   c                 6    t          | j        | j                  S r   )r
   r/   r.   r   s    r   knzGemmCoord.knj   r6   r   c                 B    t          | j        | j        | j                  S r   )r   r-   r.   r/   r   s    r   ctypezGemmCoord.ctypen   s    $'47DG444r   batch_countc                 D    t          | j        | j        | j        |          S r   )r   r-   r.   r/   )r   r=   s     r   batched_ctypezGemmCoord.batched_ctyper   s     $'47KHHHr   N)r!   r"   r#   r%   r   r$   r)   r*   r+   r
   r5   r8   r:   r   r<   r   r?   r&   r   r   r(   r(   P   sy       # # #    
 3    X 3    X 3    X -K - - - X- -K - - - X- -K - - - X- 5z 5 5 5 X5I I1B I I I I I Ir   r(   c            #           e Zd Zej        ddfdededededededed	ed
ededededededededef"dZedefd            Z	de
fdZed             ZdS )Conv2DProblemSize   r*   hwcr+   rsc_pad_hpad_wstride_hstride_w
dilation_h
dilation_wmodesplit_k_slicesgroupsc                 d   || _         || _        || _        || _        || _        || _        || _        |	| _        |
| _        || _	        || _
        || _        || _        t          |          | _        || _        || _        ||	dz  z   ||z  z
  |z  dz   | _        ||
dz  z   ||z  z
  |z  dz   | _        d S N   rB   )NHWCKRSrI   rJ   rK   rL   rM   rN   r%   rO   rP   rQ   PQ)r   r*   rC   rD   rE   r+   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   s                     r   r   zConv2DProblemSize.__init__w   s     

  $$II	,uqy=1z>1h>!Cuqy=1z>1h>!Cr   r   c                      t          |           S r   )r   r   s    r   r<   zConv2DProblemSize.ctype   s    !$'''r   kindc                    |t           j        k    rHt          | j        | j        z  | j        z  | j        | j        | j        z  | j	        z  | j
        z            S |t           j        k    r@t          | j        | j        z  | j        z  | j	        | j        | j        z  | j        z            S |t           j        k    r@t          | j        | j        | j        z  | j	        z  | j        | j        z  | j        z            S d S r   )r   Fpropr(   rU   r\   r]   rY   rZ   r[   rX   rQ   DgradrV   rW   Wgrad)r   r_   s     r   implicit_gemm_sizez$Conv2DProblemSize.implicit_gemm_size   s    8>!!$&($&(DK7  
 X^##$&($&(  
 X^##$&($&(   $#r   c                 h    |\  }}}}|dz  }|dz  }d}d}	d}
d}t          g | |||||	|
|R  S rS   )rA   )
input_sizeweight_sizerY   rZ   r[   _rI   rJ   rK   rL   rM   rN   s               r   
from_sizeszConv2DProblemSize.from_sizes   s     
1aQQ

  


 
 
 	
 	

 

 #
 
 
 	
r   N)r!   r"   r#   r   CrossCorrelationr%   r   r$   r   r<   r   rd   staticmethodri   r&   r   r   rA   rA   v   sI       
 :B9R1D DDD!$D),DDDD$'D D D +.D :=D 	D &)	D 19	D
 D
 (+D D D D4 () ( ( ( X(x    ( 
 
 \
 
 
r   rA   N)__doc__cutlass_libraryr   r   r   cutlass_cppgen.backend.c_typesr   r   r   r
   r(   rA   r&   r   r   <module>ro      s  B          
         _ _ _ _ _ _ _ _>#I #I #I #I #I #I #I #ILB
 B
 B
 B
 B
 B
 B
 B
 B
 B
r   