§
    &Vji>  ã                   ó<   — d dl Z d dlmZ d dlZ G d„ d¦  «        ZdS )é    N)ÚOptionalc                   óx   — e Zd ZdZd	d„Zdej        ddfd„Zdeej                 fd„Z	deej                 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    ú_/root/voice-cloning/.venv/lib/python3.11/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   r      sš   € € € € € ðð ð/ð /ð /ð /ð' %¤+ð '°$ð 'ð 'ð 'ð 'ð 8¨E¬KÔ#8ð ð ð ð ð˜( 5¤;Ô/ð ð ð ð ð ð r   r   )r	   Útypingr   r!   r   r#   r   r   ú<module>r%      s^   ðØ Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€ðð ð ð ð ñ ô ð ð ð r   