o
    ig                  	   @   s  d dl Z d dlmZ d dlmZ d dlmZmZmZ de	de
de	fdd	Zde	de
de	fd
dZG dd dZ	d"de	de
dee
ge	f e	B de	fddZdedefddZdedefddZde	fddZdede	fddZdede	fddZdedeegef de	fd d!ZdS )#    N)Callable)DataclassInstance)
_EventType_ProfilerEvent_TensorMetadatastringwidthreturnc                 C   sH   t | |kr"t | | d }| |d  } t | dkr"d| dd   } | S N   z...lenr   r   offset r   I/home/ubuntu/vllm_env/lib/python3.10/site-packages/vllm/profiler/utils.pytrim_string_front   s   r   c                 C   sB   t | |krt | | d }| d |  } t | dkr| d } | S r
   r   r   r   r   r   trim_string_back   s   r   c                   @   sT   e Zd Zdee deeef fddZde	e fddZ
dd	 Zd
d Zdd ZdS )TablePrinterrow_clscolumn_widthsc                 C   sB   || _ dd t|D | _|| _t| j t| jksJ d S )Nc                 S   s   g | ]}|j qS r   )name.0xr   r   r   
<listcomp>$   s    z)TablePrinter.__init__.<locals>.<listcomp>)r   dataclassesfields
fieldnamesr   setkeys)selfr   r   r   r   r   __init__"   s    zTablePrinter.__init__rowsc                 C   s(   |    |   |D ]}| | q
d S N)_print_header_print_line
_print_row)r!   r#   rowr   r   r   print_table(   s
   zTablePrinter.print_tablec                 C   sT   t | jD ]"\}}|t| jd k}| j| }tt||||s#dndd qd S )N    | 
end)	enumerater   r   r   printr   ljust)r!   iflast	col_widthr   r   r   r%   .   s   

zTablePrinter._print_headerc                 C   s   t || jsJ t| jD ]I\}}|t| jd k}| j| }t||}d}t |tr4t||	|}nt
|ttfv rFt|d|}n| |}t||sRdndd qd S )Nr*    z>.2fr+   r,   r-   )
isinstancer   r/   r   r   r   getattrstrr   r1   typefloatintrjustr0   )r!   r(   r2   r3   r4   r5   valval_strr   r   r   r'   7   s   


zTablePrinter._print_rowc                 C   s>   d}| j  D ]}||7 }qtd|dt| j d     d S )Nr   =r   r*   )r   valuesr0   r   )r!   total_col_widthcolumn_widthr   r   r   r&   H   s   
"zTablePrinter._print_lineN)__name__
__module____qualname__r:   r   dictr9   r<   r"   listr)   r%   r'   r&   r   r   r   r   r   !   s    	r    indentindent_stylec                 C   s*   |rt |tr|| |  S |||  S | S r$   )r7   r9   )r   rJ   rK   r   r   r   indent_stringO   s
   
rL   eventc                 C   s"   | j \}}|tjkr|jd uS dS )NF)typedr   PyCallmodule)rM   
event_typetyped_eventr   r   r   event_has_module`   s   


rS   c                 C   s   | j tjkS r$   )tagr   TorchOp)rM   r   r   r   event_is_torch_opg   s   rV   c                 C   s   | d u st | ttttfv r|  S t| tr$dddd | D  dS t| tr7dddd | D  dS t| t	sEJ d	t |  dd
d | j
D }t| jdd d| dS )N[, c                 S      g | ]}t |qS r   event_arg_reprr   r   r   r   r   o       z"event_arg_repr.<locals>.<listcomp>](c                 S   rY   r   rZ   r   r   r   r   r   q   r\   )zUnsupported type: c                 S   rY   r   )r9   r   r   r   r   r   t   r\   ztorch.r6   )r:   r;   r<   boolr9   r7   rH   jointupler   sizesdtypereplace)arg	sizes_strr   r   r   r[   k   s   

r[   c                 C   sF   | j tjksJ ddd | jd jD }| j d| dddS )	NrX   c                 S   rY   r   rZ   r   r   r   r   r   z   r\   z'event_torch_op_repr.<locals>.<listcomp>r*   r^   r_   zaten::r6   )rT   r   rU   ra   rN   inputsr   re   )rM   args_strr   r   r   event_torch_op_reprx   s   rj   c                 C   sZ   t | sJ | jd j}|jr*t|jdkr*ddd |jD }|j d| dS |jS )Nr*   r   rX   c                 S   s&   g | ]}|d   dt |d  qS )r   r@   r*   rZ   r   r   r   r   r      s   & z%event_module_repr.<locals>.<listcomp>r^   r_   )rS   rN   rP   
parametersr   ra   cls_name)rM   rP   ri   r   r   r   event_module_repr~   s   rm   
curr_eventuntilc                 C   sT   d}| j } | r(|| s(t| rt|dkr|d7 }|t| 7 }| j } | r(|| r|S )Nr6   r   z <- )parentrV   r   rj   )rn   ro   tracer   r   r   event_torch_op_stack_trace   s   rr   )rI   )r   collections.abcr   	_typeshedr   torch._C._profilerr   r   r   r9   r<   r   r   r   rL   r`   rS   rV   r[   rj   rm   rr   r   r   r   r   <module>   s:   		/
