o
    پi                  
   @   s~   d dl Z d dlmZmZmZ d dlmZ d dlmZ eddG dd dZ					dd
ed dee
 dedee	 fddZdS )    N)OptionalListLiteral)partial)	dataclassT)frozenc                   @   sb   e Zd ZU dZeed< dZeed< dZeed< dZ	eed< d	Z
eed
< dZeed< dZeed< dS )
GemmConfig   tile_m   tile_nTpingpong   	cluster_m   	cluster_nFswap_ab   max_swizzle_sizeN)__name__
__module____qualname__r
   int__annotations__r   r   boolr   r   r   r    r   r   E/home/ubuntu/.local/lib/python3.10/site-packages/quack/gemm_config.pyr      s   
 r   	   device_capacityr   
   epilogue	tune_coopreturnc                    s  | dv sJ | dkrzg d}dd |D ddg }dd |D d	g }|d
v r6dd |D }dd |D }n|dv rAdd |D }g }|rN|dd |D 7 }|dd |D 7 }ddg}|dv rcddg}ddg}|dv rndg}dd t |||D S | dkrg d}g d}	dd |D dd |D  dd |D  }
ddg}|dv rdg}g d}ttdd  fddt |
||D S d S ) Nr   r   )r	            r      c                 S      g | ]}d |fqS )   r   .0r   r   r   r   
<listcomp>       z#get_all_configs.<locals>.<listcomp>)r	      )r	   r)   c                 S   r(   )r	   r   r*   r   r   r   r,   "   r-   )r   r	   )gatedc                 S   s,   g | ]\}}|d  dkr|dkr||fqS )    r   r   r   r+   mnr   r   r   r,   $   s   , c                 S   s$   g | ]\}}|d  dkr||fqS )r0   r   r   r1   r   r   r   r,   %   s   $ )lsec                 S   s    g | ]\}}|d kr||fqS )r   r   r1   r   r   r   r,   '   s     c                 S      g | ]	\}}||d fqS )Fr   r1   r   r   r   r,   *       c                 S   r5   )Tr   r1   r   r   r   r,   +   r6   r   r   r   r   FT)r4   r/   c              
   S   s0   g | ]\\}}}\}}}t ||||||d qS ))r
   r   r   r   r   r   )r   )r+   r
   r   r   r   r   r   r   r   r   r,   8   s    r    )r	   r%   r   r.   r)   )r	   r   r)   c                 S      g | ]}d |dfqS )r	   r7   r   r*   r   r   r   r,   N       c                 S   r9   )r	   r8   r   r*   r   r   r   r,   P   r:   c                 S   r9   )r)   r8   r   r*   r   r   r   r,   Q   r:   )   r      )r   c              
      s0   g | ]\\}}\}}}} ||||||d qS ))r
   r   r   r   r   r   r   )r+   r2   r3   cmcnsabmsGemmConfigClsr   r   r,   X   s    )	itertoolsproductr   r   )r   r!   r"   tile_n_valstile_mn_coop_valstile_mn_pingpong_valstile_mn_valsclusterswap_ab_valstile_n_64_valstile_mn_cluster_valsmax_swizzle_size_valsr   rA   r   get_all_configs   sd   
rN   )r   NT)rC   typingr   r   r   	functoolsr   dataclassesr   r   strr   rN   r   r   r   r   <module>   s$   