o
    TÃi	  ã                   @   s,   d dl mZ d dlmZ G dd„ deƒZdS )é    )Ú	dataclass)Úlog_distc                       s^   e Zd ZeG dd„ dƒƒZdd„ Zdd„ Z‡ fdd„Zd	d
„ Zdd„ Z	dd„ Z
dd„ Z‡  ZS )ÚPartitionedParameterProfilerc                   @   s6   e Zd ZU eed< eed< eed< dd„ Zdd„ ZdS )	z)PartitionedParameterProfiler.EventCounterÚnameÚcountÚnum_elemc                 C   s   d| _ d| _d S )Nr   ©r   r   ©Úself© r   úe/home/ubuntu/.local/lib/python3.10/site-packages/deepspeed/runtime/zero/partitioned_param_profiler.pyÚreset   ó   
z/PartitionedParameterProfiler.EventCounter.resetc                 C   s    |  j d7  _ |  j|7  _d S )Né   r   )r
   Únumelr   r   r   Ú	increment   s   z3PartitionedParameterProfiler.EventCounter.incrementN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__Úintr   r   r   r   r   r   ÚEventCounter   s   
 r   c                 C   s   || _ i | _d S ©N)ÚtimersÚevent_counters)r
   r   r   r   r   Ú__init__   r   z%PartitionedParameterProfiler.__init__c                 C   s   | j  ¡ D ]}| ¡  qd S r   )r   Úvaluesr   ©r
   Ú	event_ctrr   r   r   Úreset_events   s   
ÿz)PartitionedParameterProfiler.reset_eventsc                    s@   | j d u rd S || jvrˆ j|ddd| j|< |   |¡ ¡  d S )Nr   )r   r   r   )r   r   r   Ústart)r
   r   ©Ú	__class__r   r   Ústart_event"   s
   

z(PartitionedParameterProfiler.start_eventc                 C   sH   | j d u rd S || jv sJ d|› ƒ‚| j|  |¡ |   |¡ ¡  d S )Nzunknown event )r   r   r   Ústop)r
   r   r   r   r   r   Ú
stop_event*   s
   
z'PartitionedParameterProfiler.stop_eventc                 C   s*   | j d u rd S | j jt| j ¡ ƒd d S )N)Únames)r   ÚlogÚlistr   Úkeysr	   r   r   r   Ú_log_timers1   s   
z(PartitionedParameterProfiler._log_timersc                 C   s8   | j  ¡ D ]}t|j› d|j› d|j› dgd qd S )Nz
: count = z
, numel = r   )Úranks)r   r   r   r   r   r   r   r   r   r   Ú_log_event_counters6   s   ýÿz0PartitionedParameterProfiler._log_event_countersc                 C   s   |   ¡  |  ¡  d S r   )r-   r+   r	   r   r   r   Ú
log_events=   s   z'PartitionedParameterProfiler.log_events)r   r   r   r   r   r   r    r$   r&   r+   r-   r.   Ú__classcell__r   r   r"   r   r   
   s    r   N)Údataclassesr   Údeepspeed.utilsr   Úobjectr   r   r   r   r   Ú<module>   s   