
    rh#                     N   d dl mZ d dlmZmZ d dlmZmZ g dZd Z	 G d d      Z
 ed	       G d
 de
             Z ed	       G d de
             Z ed	       G d de
             Z G d d      Z ed	       G d de             Z edd       G d de             Zy)    )	dataclass)ListOptional)_unwrap_if_constexpr_unwrap_shape)BlockedLayoutSliceLayoutDistributedLinearLayoutNVMMASharedLayoutSwizzledSharedLayoutc                 v    |xs dg| z  }|xs dg| z  }|xs t        t        t        |                   }|||fS )N   )listreversedrange)rankctas_per_cgacta_split_num	cta_orders       ~/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/triton/experimental/gluon/language/_layouts.py_realize_cta_layoutr      sG    -A3:L!/aS4ZM8T(5;"78I	11    c                       e Zd Zy)DistributedLayoutN__name__
__module____qualname__ r   r   r   r          r   r   T)frozenc                        e Zd ZU ee   ed<   ee   ed<   ee   ed<   ee   ed<   dZeee      ed<   dZeee      ed<   dZ	eee      ed<    fd	Z
d
 ZdefdZ xZS )r   size_per_threadthreads_per_warpwarps_per_ctaorderNr   r   r   c                    t         |   dt        | j                               t         |   dt        | j                               t         |   dt        | j
                               t         |   dt        | j                               t         |   dt        | j                               t         |   dt        | j                               t         |   dt        | j                               t        | j                        }t        | j                        |k(  sJ t        | j
                        |k(  sJ t        | j                        |k(  sJ | j                  t        | j                        |k(  sJ | j                  t        | j                        |k(  sJ | j                  t        | j                        |k(  sJ y y )Nr#   r$   r%   r&   r   r   r   )super__setattr__r   r#   r$   r%   r&   r   r   r   lenselfr   	__class__s     r   __post_init__zBlockedLayout.__post_init__#   s   -/CDDXDX/YZ.0DTEZEZ0[\O-A$BTBT-UVG%9$**%EFN,@ARAR,STO-A$BTBT-UVK)=dnn)MN4''(4(()T1114%%&$...4::$&&&  (C0A0A,Bd,JJJ!!)S1C1C-D-LLL~~%T^^)<)DDD)D%r   c           	      
   t        | j                        }t        || j                  | j                  | j
                        \  }}}|j                  | j                  | j                  | j                  | j                  |||      S N)
r*   r#   r   r   r   r   get_blocked_layoutr$   r%   r&   r,   builderr   r   r   r   s         r   _to_irzBlockedLayout._to_ir4   s|    4''(1DT4K\K\^b^p^pEI^^2U.mY))  !!JJ
 	
r   returnc                 4   d } || j                         } || j                        } || j                        } || j                        } || j                        } || j
                        } || j                        }d| d| d| d| d| d| d| dS )Nc                 F    | ydj                  t        t        |             S N _joinmapstrxs    r   	stringifyz'BlockedLayout.mangle.<locals>.stringifyD       y88CQK((r   B)r#   r$   r%   r&   r   r   r   )	r,   rA   r#   r$   r%   r&   r   r   r   s	            r   manglezBlockedLayout.mangleB   s    	)
 $D$8$89$T%:%:;!$"4"45$**% !2!23!$"4"45dnn-	?#1%5$6aawaP\~]^_l^mmnoxnyyz{{r   )r   r   r   r   int__annotations__r   r   r   r   r.   r4   r>   rD   __classcell__r-   s   @r   r   r      s}    #Y3i99(,L(49%,)-M8DI&-%)IxS	")E"
| |r   r   c                   F     e Zd ZU eed<   eed<    fdZd ZdefdZ	 xZ
S )r	   dimparentc                     t         |   dt        | j                               t         |   dt        | j                               y )NrJ   rK   )r(   r)   r   rJ   rK   )r,   r-   s    r   r.   zSliceLayout.__post_init__X   s5    E#7#ABH&:4;;&GHr   c                 l    |j                  | j                  | j                  j                  |            S r0   )get_slice_layoutrJ   rK   r4   r,   r3   s     r   r4   zSliceLayout._to_ir\   s.    ''HHKKw'
 	
r   r5   c                 X    d| j                    d| j                  j                          dS )NSLr:   )rJ   rK   rD   r,   s    r   rD   zSliceLayout.mangleb   s)    DHH:Qt{{1134B77r   )r   r   r   rE   rF   r   r.   r4   r>   rD   rG   rH   s   @r   r	   r	   S   s%    	HI
8 8r   r	   c                        e Zd ZU eee      ed<   eee      ed<   eee      ed<   eee      ed<   ee   ed<    fdZd Zd Z xZ	S )	r
   	reg_bases
lane_bases
warp_basesblock_basesshapec                    t         |   dt        | j                               t         |   dt        | j                               t         |   dt        | j
                               t         |   dt        | j                               t         |   dt        | j                               t        | j                        }| j                  D ]  }t        |      |k(  rJ  | j                  D ]  }t        |      |k(  rJ  | j
                  D ]  }t        |      |k(  rJ  | j                  D ]  }t        |      |k(  rJ  y )NrT   rU   rV   rW   rX   )	r(   r)   r   rT   rU   rV   rW   rX   r*   )r,   r   basisr-   s      r   r.   z%DistributedLinearLayout.__post_init__n   s    Kt~~)FGL-*HIL-*HIM=9I9I+JKG]4::%>?4::^^ 	&Eu:%%%	&__ 	&Eu:%%%	&__ 	&Eu:%%%	&%% 	&Eu:%%%	&r   c                     |j                  | j                  | j                  | j                  | j                  | j
                        S r0   )get_distributed_linear_layoutrT   rU   rV   rW   rX   rO   s     r   r4   zDistributedLinearLayout._to_ir   s<    44T^^T__VZVeVegkgwgw59ZZA 	Ar   c                     d| j                    d| j                   d| j                   d| j                   d| j                   dS )NDLLr:   )rT   rU   rV   rW   rX   rR   s    r   rD   zDistributedLinearLayout.mangle   sI    T^^$Adoo%6a7H$JZJZI[[\]a]g]g\hhkllr   )
r   r   r   r   rE   rF   r.   r4   rD   rG   rH   s   @r   r
   r
   f   sV    DIT#YT#Yd3i 9&$Amr   r
   c                       e Zd Zy)SharedLayoutNr   r   r   r   r`   r`      r    r   r`   c                        e Zd ZU eed<   eed<   eed<   dZeed<   dZeed<   dZe	e
e      ed<   dZe	e
e      ed	<   dZe	e
e      ed
<    fdZd ZdefdZ xZS )r   swizzle_byte_widthelement_bitwidthr   F
transposed
fp4_paddedNr   r   r   c                 t   t         |   dt        | j                               t         |   dt        | j                               t         |   dt        | j
                               t         |   dt        | j                               t         |   dt        | j                               t         |   dt        | j                               t         |   dt        | j                               t         |   dt        | j                               | j                  d	v sJ | j                  d
v sJ | j
                  }| j                  t        | j                        |k(  sJ | j                  t        | j                        |k(  sJ | j                  t        | j                        |k(  sJ y y )Nrb   rc   r   rd   re   r   r   r   )          @   )r   ri   rj      )r(   r)   r   rb   rc   r   rd   re   r   r   r   r*   r+   s     r   r.   zNVMMASharedLayout.__post_init__   su   02FtG^G^2_`.0DTEZEZ0[\F$8$CDL*>t*OPL*>t*OPN,@ARAR,STO-A$BTBT-UVK)=dnn)MN$$777&&*::::yy  (C0A0A,Bd,JJJ!!)S1C1C-D-LLL~~%T^^)<)DDD)D%r   c           	          t        | j                  | j                  | j                  | j                        \  }}}|j                  | j                  | j                  | j                  | j                  |||      S r0   )
r   r   r   r   r   get_nvmma_shared_layoutrb   rc   rd   re   )r,   r3   r   r   r   s        r   r4   zNVMMASharedLayout._to_ir   so    1DTYYPTPaPacgcucuEI^^2U.mY..##!!OOOO
 	
r   r5   c           	      p    d| j                    d| j                   d| j                   d| j                   d	S )NNVMMA_r:   _NVMMA)rb   rc   rd   re   rR   s    r   rD   zNVMMASharedLayout.mangle   s@    //0$2G2G1H$//IZZ[\`\k\k[llrssr   )r   r   r   rE   rF   rd   boolre   r   r   r   r   r   r.   r4   r>   rD   rG   rH   s   @r   r   r      sz    
IJJ(,L(49%,)-M8DI&-%)IxS	")E"
t tr   r   )r!   eqc                        e Zd ZU eed<   eed<   eed<   ee   ed<   dZeee      ed<   dZeee      ed<   dZ	eee      ed<    fd	Z
d
 ZdefdZ xZS )r   vec	per_phase	max_phaser&   Nr   r   r   c                     t         |   dt        | j                               t         |   dt        | j                               t         |   dt        | j
                               t         |   dt        | j                               t         |   dt        | j                               t         |   dt        | j                               t         |   dt        | j                               t        | j                        }| j                  t        | j                        |k(  sJ | j                  t        | j                        |k(  sJ | j                  t        | j                        |k(  sJ y y )Nrt   ru   rv   r&   r   r   r   )r(   r)   r   rt   ru   rv   r&   r   r   r   r*   r+   s     r   r.   z"SwizzledSharedLayout.__post_init__   s1   E#7#ABK)=dnn)MNK)=dnn)MNG%9$**%EFN,@ARAR,STO-A$BTBT-UVK)=dnn)MN4::  (C0A0A,Bd,JJJ!!)S1C1C-D-LLL~~%T^^)<)DDD)D%r   c           	      @   t        | j                        }t        || j                  | j                  | j
                        \  }}}|j                  t        | j                        t        | j                        t        | j                        | j                  |||      S r0   )r*   r&   r   r   r   r   get_swizzled_shared_layoutr   rt   ru   rv   r2   s         r   r4   zSwizzledSharedLayout._to_ir   s    4::1DT4K\K\^b^p^pEI^^2U.mY11 * 0 0JJ
 	
r   r5   c                     d }d| j                    d| j                   d| j                   d || j                         d || j                         d || j
                         d || j                         dS )Nc                 F    | ydj                  t        t        |             S r8   r;   r?   s    r   rA   z.SwizzledSharedLayout.mangle.<locals>.stringify   rB   r   SSS_r:   _SSS)rt   ru   rv   r&   r   r   r   )r,   rA   s     r   rD   zSwizzledSharedLayout.mangle   s    	)
 dhhZq 0$..1A9TZZCXBYYZ[deievev[wZxxy  {D  EI  EW  EW  {X  zY  YZ  [d  ei  es  es  [t  Zu  uy  z  	zr   )r   r   r   rE   rF   r   r   r   r   r   r.   r4   r>   rD   rG   rH   s   @r   r   r      sn    	HNN9(,L(49%,)-M8DI&-%)IxS	")E
z zr   r   N)dataclassesr   typingr   r   triton.language.corer   r   __all__r   r   r   r	   r
   r`   r   r   r   r   r   <module>r      s    ! ! D2	 	 $6|% 6| 6|r $8# 8 8$ $m/ m mB	 	 $)t )t )tX $4 ,z< ,z !,zr   