o
    پi                     @  s   d dl mZ d dlmZ d dlZd dlmZmZ er$d dlZd dlm	Z	 eddd	Z
dddZG dd dZdddZdd ZedkrIe  dS dS )    )annotations)TYPE_CHECKINGN)
cache_onceload_jit)Modulereturnr   c                   C  s   t ddgdgdS )Ncuda_wait_valuezcuda_wait_value.cuh)stream_wait_valuer   )
cuda_filescuda_wrappers)r    r   r   U/home/ubuntu/.local/lib/python3.10/site-packages/sglang/jit_kernel/cuda_wait_value.py_jit_stream_wait_value_module   s
   r   flagtorch.TensorvalueintNonec                 C  s   t  }|| | d S N)r   r	   )r   r   moduler   r   r   r	      s   r	   c                   @  s.   e Zd ZdddZdddd	Zddd
dZdS )Eventr   r   c                 C  s   t jdt jdd| _d S )N   cuda)dtypedevice)torchzerosint32r   )selfr   r   r   __init__   s   zEvent.__init__r   r   r   c                 C  s   || j d< d S )Nr   )r   r   r   r   r   r   record    s   zEvent.recordc                 C  s   t | j| d S r   )r	   r   r    r   r   r   wait#   s   z
Event.waitN)r   r   )r   )r   r   r   r   )__name__
__module____qualname__r   r!   r"   r   r   r   r   r      s    
r   eventEvent | torch.cuda.Eventc                 C  s   t j }t j }t j| |   W d    n1 sw   Y  |  t j| |   W d    d S 1 s>w   Y  d S r   )r   r   Streamstreamr"   synchronizer!   )r&   stream_astream_br   r   r   test_wait_before_record'   s   



"r-   c                  C  s   dd l } dd l}| jtt fdd}|  | jttj fd}|  tddd t	dD ]}td|
 d	|
 dd |d
 q/|
 sOJ d|
 rWJ dtd td d S )Nr   T)targetargsdaemon)r.   r/   z-Checking if custom Event blocks the stream...)flush   zblock_thead.is_alive()=z, non_block_thread.is_alive()=r   z&Custom Event did not block as expectedz!torch.cuda.Event should not blockz(========================================zTest completed successfully.)	threadingtimeThreadr-   r   startr   r   printrangeis_alivesleep)r3   r4   block_theadnon_block_thread_r   r   r   main4   s$   
 r>   __main__)r   r   )r   r   r   r   r   r   )r&   r'   )
__future__r   typingr   r   sglang.jit_kernel.utilsr   r   tvm_ffi.moduler   r   r	   r   r-   r>   r#   r   r   r   r   <module>   s     


