o
    &j#                     @   s4   d dl Z ddlmZ G dd dZG dd dZdS )    N   )traverse_treec                   @   s   e Zd ZdddZdd ZdS )
MemoryItem	Allocatedc                 C   s4   || _ || _d| _d| _d| _d| _d| _|| _d S Nr   )
event_nameplaceallocation_count
free_countallocation_size	free_sizeincrease_sizememory_type)selfr   r   r    r   q/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/visualdl/component/profiler/parser/memory_parser.py__init__   s   
zMemoryItem.__init__c                 C   sv   |dks|dkr|  j d7  _ |  j|7  _n|dks|dkr.|  jd7  _|  j|8  _ntd | j| j | _d S )NAllocateReservedAllocater   FreeReservedFreezNo corresponding type.)r	   r   r
   r   printr   )r   sizeZallocation_typer   r   r   add_memory_record   s   zMemoryItem.add_memory_recordN)r   )__name__
__module____qualname__r   r   r   r   r   r   r      s    

r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )MemoryParserc                 C   sf   t t| _t t| _t t| _t t| _t dd | _t dd | _	t t
| _i | _d S )Nc                   S   
   t tS Ncollectionsdefaultdictlistr   r   r   r   <lambda>5       z'MemoryParser.__init__.<locals>.<lambda>c                   S   r   r   r    r   r   r   r   r$   7   r%   )r!   r"   dictallocated_itemsreserved_itemsintpeak_allocation_valuespeak_reserved_valuesmemory_eventsmemory_curver#   paired_eventssize_ranges)r   r   r   r   r   .   s   
zMemoryParser.__init__c                 C   sF  t |}| D ],\}}|dd D ]!}|jdkrq|jdkr,|jD ]	}| |j| q"| |j| qq| j D ]\}}d}	| D ]\\}
}}t|dd d}g }|D ]}|\}}}}|d	ksf|d
kr||	krl|}	|d	kr}||
d||dd|g qV||
d
||dd|g qV|dks|dkr| |	kr| }	|r|d d du r||d d< ||d d< | j	| |
  qV|dkr||
ddd||| g n||
d
dd||| g | j	| |
  qV|dkr||
ddd||| g n||
d
dd||| g | j	| |
  qV| j	| | qDd|	f| j|< q:dS )z8
        Analyse memory event in the nodetress.
        r   NZOperatorInnerOperatorr   c                 S   s   | d S r   r   )xr   r   r   r$   N   s    z$MemoryParser.parse.<locals>.<lambda>)keyr   r   r   r   r   )r   itemstypeZchildren_node_analyse_node_memorynamer,   sortedappendr.   popextendr/   )r   Z	nodetreesZthread2hostnodesZthreadidZ
host_nodesZ	host_nodechildZdevice_typer,   max_sizeaddrr   Zmemory_listsZpaired_resultsZmemory_list	timestampZhostnodenamer   r   r   r   parse<   s   


	



zMemoryParser.parsec                 C   s  |j D ]}|jdks|jdkrH|| j|j vr$t||jd| j|j |< | j|j | |j|j | j|j |jdf 	|j
|j||jg nB|jdksR|jdkr|| j|j vrgt||jd| j|j |< | j|j | |j|j | j|j |jdf 	|j
|j||jg | j|j d 	|j
|j|f | j|j d 	|j
|j|f | j|j d 	|j
|j|f | j|j d 	|j
|j|f t| j|j |j| j|j< t| j|j |j| j|j< qd S )	Nr   r   r   r   r   ReservedZPeakAllocatedZPeakReserved)Zmem_noder7   r'   r   r   r   Zincrease_bytesr,   r@   r;   Ztimestamp_nsr(   r-   Zcurrent_allocatedZcurrent_reservedZpeak_allocatedZpeak_reservedmaxr*   r+   )r   r   nodeZmemnoder   r   r   r8      s   


z!MemoryParser._analyse_node_memoryN)r   r   r   r   rB   r8   r   r   r   r   r   -   s    Jr   )r!   utilsr   r   r   r   r   r   r   <module>   s   