o
    پi                  
   @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ g dZe jddge jd	d
dge jdejejge jdddge jdee jdddgdd Zedkryd dlZeddeeg dS dS )    N)gptq_marlin_gemm)scalar_types)marlin_make_workspace)awq_marlin_quantizemarlin_quantize))   r   r   )r         )      C   )i  r
      k_chunk   n_chunk@      
quant_type
group_sizemnk_factors	act_orderFTc                 C   s  |\}}}|t jt jfv }	|}
| | }|| }|r)|dkrd S ||kr%d S |	r)d S || dkr1d S tj|
|ftjdd}tj||ftjdd}|	rZt|||\}}}}d }d }d }nt||||\}}}}}}d }d }t|j	}t
|d |||||||||jd |jd |jd ddddd}t|d |||||||||jd |jd |jd ddddd}t||}tj  tt|| tt| }|d	k sJ tjj||ddd
 d S )Nr   r   cuda)dtypedevicer   TF)	is_k_fulluse_atomic_adduse_fp32_reduceis_zp_floatg{Gz?)rtolatol)r   uint4uint8torchrandnfloat16r   r   r   r   r   shapeaot_gptq_marlin_gemmmatmulr   synchronizemeanabstestingassert_close)r   r   r   r   r   r   m_factorn_factork_factorhas_zpsize_msize_ksize_na_inputb_weightw_ref
marlin_q_wmarlin_s	marlin_zpg_idxsort_indices	marlin_s2_	workspaceoutput
aot_output
output_refmax_diff rD   \/home/ubuntu/.local/lib/python3.10/site-packages/sglang/jit_kernel/tests/test_gptq_marlin.pytest_gptq_marlin_gemm   s   


rF   __main__pytestz
--tb=short)rH   r#   
sgl_kernelr   r'   sgl_kernel.scalar_typer   sglang.jit_kernel.gptq_marlin+sglang.srt.layers.quantization.marlin_utilsr   sglang.test.test_marlin_utilsr   r   MNK_FACTORSmarkparametrizer!   uint4b8rF   __name__
subprocesscallstr__file__rD   rD   rD   rE   <module>   s&    b