§
    N�’j<  ã                   ó0   — d dl Z d dlZ G d„ d¦  «        ZdS )é    Nc                   ól   — e Zd ZdZd	d„Zdej        ddfd„Zdej        dz  fd„Zdej        dz  fd„Z	dS )
Ú_FreeEventQueuezâ
    This tracks all pending frees corresponding to inflight all-gathers. The
    queueing pattern is iterative enqueues with a single dequeue per iteration
    once the limit ``_max_num_inflight_all_gathers`` is reached.
    ÚreturnNc                 óD   — t          j        ¦   «         | _        d| _        d S )Né   )ÚcollectionsÚdequeÚ_queueÚ_max_num_inflight_all_gathers©Úselfs    úSC:\Projects\DSCons\.venv\Lib\site-packages\torch\distributed\fsdp\_limiter_utils.pyÚ__init__z_FreeEventQueue.__init__   s    € Ý6AÔ6GÑ6IÔ6IˆŒØ-.ˆÔ*Ð*Ð*ó    Ú
free_eventc                 ó:   — | j                              |¦  «         dS )zEnqueues a free event.N)r
   Úappend)r   r   s     r   Úenqueuez_FreeEventQueue.enqueue   s   € àŒ×Ò˜:Ñ&Ô&Ð&Ð&Ð&r   c                 óh   — t          | j        ¦  «        | j        k    r|                      ¦   «         S dS )z0Dequeues a single event if the limit is reached.N)Úlenr
   r   Ú_dequeuer   s    r   Údequeue_if_neededz!_FreeEventQueue.dequeue_if_needed   s-   € åˆtŒ{ÑÔ˜tÔAÒAÐAØ—=’=‘?”?Ð"Øˆtr   c                 óJ   — | j         r| j                              ¦   «         }|S dS )z"Dequeues a free event if possible.N)r
   Úpopleft)r   Úevents     r   r   z_FreeEventQueue._dequeue   s)   € àŒ;ð 	Ø”K×'Ò'Ñ)Ô)ˆEØˆLØˆtr   )r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚtorchÚEventr   r   r   © r   r   r   r      sš   € € € € € ðð ð/ð /ð /ð /ð' %¤+ð '°$ð 'ð 'ð 'ð 'ð 5¤;°Ñ#5ð ð ð ð ð˜%œ+¨Ñ,ð ð ð ð ð ð r   r   )r   r    r   r"   r   r   ú<module>r#      sL   ðØ Ð Ð Ð à €€€ðð ð ð ð ñ ô ð ð ð r   