o
    ÅÙ¾iÆ  ã                   @   s`  d dl Z 			d,de jde jde jde jde jd	e jd
e jde jde jde jde jdedededdfdd„Zde jde jde jde jde jd	e jd
e jde jddfdd„Zde jde jde jde jde jde jd	e jd
e jdededed eddfd!d"„Zde jde jde jde jd	e jd
e jd#ededdfd$d%„Zd&e jd'e jd(e jd)e jd#eddfd*d+„Z	dS )-é    Nç      ð?TÚpredictsÚaccept_indexÚaccept_token_numÚ
candidatesÚretrive_indexÚretrive_next_tokenÚretrive_next_siblingÚuniform_samplesÚ"uniform_samples_for_final_samplingÚtarget_probsÚdraft_probsÚthreshold_singleÚthreshold_accÚdeterministicÚreturnc                 C   s.   t jjj | |||||||||	|
|||¡ d S ©N)ÚtorchÚopsÚ
sgl_kernelÚ%tree_speculative_sampling_target_onlyÚdefault)r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   © r   úJ/home/ubuntu/.local/lib/python3.10/site-packages/sgl_kernel/speculative.pyr      s    
òr   Útarget_predictc              
   C   ó"   t jjj | |||||||¡ d S r   )r   r   r   Úverify_tree_greedyr   )r   r   r   r   r   r   r	   r   r   r   r   r   &   ó   

ør   Úparent_listÚselected_indexÚverified_seq_lenÚ	tree_maskÚ	positionsÚtopkÚdepthÚdraft_token_numÚtree_mask_modec                 C   s*   t jjj | |||||||||	|
|¡ d S r   )r   r   r   Úbuild_tree_kernel_efficientr   )r   r   r    r!   r"   r   r   r	   r#   r$   r%   r&   r   r   r   r'   <   s   
ôr'   Ú
batch_sizec              
   C   r   r   )r   r   r   Ú"reconstruct_indices_from_tree_maskr   )r!   r    r"   r   r   r	   r(   r%   r   r   r   r)   Z   r   r)   ÚxÚinput_indptrÚoutput_indptrÚyc              	   C   s&   t jjj | ||||t j ¡ j¡ d S r   )r   r   r   Úsegment_packbitsr   ÚcudaÚcurrent_streamÚcuda_stream)r*   r+   r,   r-   r(   r   r   r   r.   p   s   

úr.   )r   r   T)
r   ÚTensorÚfloatÚboolr   r   Úintr'   r)   r.   r   r   r   r   Ú<module>   sâ    òÿþýüûúùø	÷
öõôóò
ñ"ÿþýüûúùø	
÷ÿþýüûúùø	÷
öõô
óÿþýüûúùø	
÷ÿþýüûú