o
    c۷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   G/home/ubuntu/vllm_env/lib/python3.10/site-packages/quack/gemm_config.pyr      s   
 r   	   device_capacityr   
   epilogue	tune_coopreturnc           
         sn  | 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}dd |D dd |D  dd |D  }	ddg}|dv rdg}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 )r.   r   r   r/   r   r   r   r*   %   s   $ )lsec                 S   s    g | ]\}}|d kr||fqS )r   r   r/   r   r   r   r*   '   s     c                 S      g | ]	\}}||d fqS )Fr   r/   r   r   r   r*   *       c                 S   r3   )Tr   r/   r   r   r   r*   +   r4   r   r   r   r   FT)r2   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*   4   s    	r    )r	   r$   r   r,   r'   c                 S      g | ]}d |dfqS )r	   r5   r   r(   r   r   r   r*   F       c                 S   r7   )r	   r6   r   r(   r   r   r   r*   G   r8   c                 S   r7   )r'   r6   r   r(   r   r   r   r*   H   r8   )r   c              
      s.   g | ]\\}}\}}} |||||d dqS )r   )r
   r   r   r   r   r   r   )r)   r0   r1   cmcnsabGemmConfigClsr   r   r*   N   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_mn_cluster_valsr   r<   r   get_all_configs   s\   	

rG   )r   NT)r>   typingr   r   r   	functoolsr   dataclassesr   r   strr   rG   r   r   r   r   <module>   s$   