o
    پiz                     @   sV   d dl mZ d dlmZmZ d dlmZ d dlZG dd deZeG dd dZ	dS )	    )	dataclass)Enumauto)OptionalNc                   @   s   e Zd ZdZe Ze ZdS )CutlassMoETypezl
    Enum for the different types of cutlass moe operations
    that are currently supported in SGLang.
    N)__name__
__module____qualname____doc__r   BlockscaledFP8BlockscaledFP4 r   r   \/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/layers/moe/cutlass_moe_params.pyr      s    
r   c                
   @   s
  e Zd ZU dZeed< ejed< ejed< ejed< ejed< eed< eed< eed	< eed
< ej	ed< ejed< ejed< ejed< ejed< ejed< ejed< ejed< ejed< dZ
eej ed< dedej	d
eded	ef
ddZdefddZdefddZdS )CutlassMoEParamsz3
    Parameters for the cutlass moe operation.
    cutlass_moe_typeab_strides_13ab_strides_2c_strides_13c_strides_2mintermediate_size_per_partitionhidden_sizenum_expertsdevicea_ptrsb_ptrsout_ptrsa_scales_ptrsb_scales_ptrsexpert_offsetsproblem_sizes1problem_sizes2Nblockscale_offsetsc                 C   s  || _ || _|| _|| _|| _| j| _| j| _| j| _tj	| jf| jtj
| jd| _tj	| jf| jtj
| jd| _tj	| jfd| j tj
| jd| _tj	| jf| jtj
| jd| _tj| jd ftj| jd| _tj| jdftj| jd| _tj| jdftj| jd| _| j tjkrtj| jd ftj| jd| _nd | _tj| jftj
| jd| _tj| jftj
| jd| _tj| jftj
| jd| _tj| jftj
| jd| _tj| jftj
| jd| _d S )N)dtyper            )r   r   r   r   r   nketorchfullint64r   r   r   r   emptyint32r   r    r!   r   r   r"   r   r   r   r   r   )selfr   r   r   r   r   r   r   r   __init__Z   sV   
zCutlassMoEParams.__init__returnc                 C   *   | j | j| j| jd d | jd d dS N)
ab_strides	c_stridesproblem_sizesr   r"   )r   r   r    r   r"   r/   r   r   r   to_gemm1_args      zCutlassMoEParams.to_gemm1_argsc                 C   r2   r3   )r   r   r!   r   r"   r8   r   r   r   to_gemm2_args   r:   zCutlassMoEParams.to_gemm2_args)r   r   r	   r
   r   __annotations__r*   Tensorintr   r"   r   r0   dictr9   r;   r   r   r   r   r      sD   
 













5r   )
dataclassesr   enumr   r   typingr   r*   r   r   r   r   r   r   <module>   s    
