
    .`i/                         d dl Zd dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZ  G d d          Zej        dej        fd	            ZdS )
    N)tltriton)cdiv)UvaBufferPool)
InputBatchc            
       Z    e Zd ZdedefdZdej        dedee	         de
j        dd	f
d
Zd	S )StructuredOutputsWorkermax_num_logits
vocab_sizec                     t          |t          j                  | _        t          |t	          |d          ft          j                  | _        d S )N    )r   torchint32logits_indicesr   grammar_bitmask)selfr
   r   s      y/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/v1/worker/gpu/structured_outputs.py__init__z StructuredOutputsWorker.__init__   sF     ,NEKHH,T*b112EK 
  
    logitsinput_batchgrammar_req_idsr   returnNc           	         |sd S g }|j         }|j                                        }d t          |          D             }|D ]@}	||	         }
||
         }||
dz            }|                    t          ||                     At          j        |t          j                  }| j	        
                    |          }| j        
                    |          }|j        d         }|t          |          k    sJ |j        d         }d}|t          j        ||          f}t!          |         ||                    d          |||                    d          ||           d S )Nc                     i | ]\  }}||	S  r   ).0ireq_ids      r   
<dictcomp>zAStructuredOutputsWorker.apply_grammar_bitmask.<locals>.<dictcomp>'   s    GGGyq&GGGr      )dtyper   i    )
BLOCK_SIZE)req_idscu_num_logits_nptolist	enumerateextendrangenparrayr   r   copy_to_uvar   shapelenr   r   _apply_grammar_bitmask_kernelstride)r   r   r   r   r   mappingr%   cu_num_logitsreq_id_to_idxgrammar_req_idreq_idxlogits_start_idxlogits_end_idx
mapping_npr   bitmask	num_masksr   r$   grids                       r   apply_grammar_bitmaskz-StructuredOutputsWorker.apply_grammar_bitmask   s     	F  %#4;;==GGIg4F4FGGG- 	D 	DN#N3G,W5*7Q;7NNN5!1>BBCCCCXgRX666
,88DD &22?CCM!$	CLL((((\"%

6;z:>>?%d+MM!NN1!	
 	
 	
 	
 	
 	
r   )__name__
__module____qualname__intr   r   Tensorr   liststrr+   ndarrayr=   r   r   r   r	   r	      s        



 

 

 

 

(
(
  (
 c	(

 (
 
(
 (
 (
 (
 (
 (
r   r	   r$   c                 <   t          j        d          }t          j        ||z             }t          j        d          }	|	|z  dz  t          j        d|dz            z   }
t          j        |||z  z   |
z   |
|k               }|d d d f         t          j        dd          d d d f         z	  dz  dk    }|                    |          }|	|z  t          j        d|          z   }t          j        | ||z  z   |z   t          d           |||k     z             d S )Nr   r!   r   )maskinf)r   
program_idloadarangereshapestorefloat)
logits_ptrlogits_stridelogits_indices_ptrbitmask_ptrbitmask_strider   r$   bitmask_idx
logits_idxblock_idbitmask_offsetpacked_bitmaskr:   block_offsets                 r   r0   r0   F   sG    -""K+k9::J }QH+2RYq*PRBR5S5SSNWkN22^Cn,  N
 qqq$w'BIa,<,<T111W,EF!KPQQGooj))G j(29Q
+C+CCLHZ-//,>	uz12     r   )numpyr+   r   vllm.triton_utilsr   r   vllm.utils.math_utilsr   vllm.v1.worker.gpu.buffer_utilsr   vllm.v1.worker.gpu.input_batchr   r	   jit	constexprr0   r   r   r   <module>ra      s         ( ( ( ( ( ( ( ( & & & & & & 9 9 9 9 9 9 5 5 5 5 5 55
 5
 5
 5
 5
 5
 5
 5
t       r   