Ë
      çiÌ  ã                   ó^   — d dl mZmZ d dlmZmZ d dlmZ d dlm	Z	 d dl
mZ  G d„ de«      Zy)	é    )ÚABCÚabstractmethod)ÚAnyÚOptional)ÚTensor)ÚSelf)ÚCollectibleGroupc                   ó  — e Zd ZdZd+d„Zeedefd„«       «       Zeedefd„«       «       Z	ede
fd„«       Zeded	edefd
„«       Zedededefd„«       Zededededefd„«       Zedee   dedee   fd„«       Zed,dedee   dedee   fd„«       Zed,dedee   d	edefd„«       Zededee   dedefd„«       Zedee   dee   dee   fd„«       Zed,dedededdfd„«       Zed-ded	ee   dedefd„«       Zed.deee      ddfd„«       Zeedefd „«       «       Zeedefd!„«       «       Zeed"eddfd#„«       «       Z eed"ede
fd$„«       «       Z!eed%e
ddfd&„«       «       Z"eededefd'„«       «       Z#d"ede$fd(„Z%d"ede$fd)„Z&de$fd*„Z'y)/Ú
Collectivea  Interface for collective operations.

    Supports communications between multiple processes and multiple nodes. A collective owns a group.

    .. warning:: This is an :ref:`experimental <versioning:Experimental API>` feature which is still in development.

    ÚreturnNc                 ó   — d | _         y ©N)Ú_group©Úselfs    ú„/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/lightning_fabric/plugins/collectives/collective.pyÚ__init__zCollective.__init__   s	   € Ø26ˆ�ó    c                  ó   — y)zRank.N© r   s    r   ÚrankzCollective.rank   ó   � r   c                  ó   — y)zWorld size.Nr   r   s    r   Ú
world_sizezCollective.world_size   r   r   c                 óv   — | j                   €"t        dt        | «      j                  › d�«      ‚| j                   S )NÚ`zC` does not own a group. HINT: try `collective.create_group().group`)r   ÚRuntimeErrorÚtypeÚ__name__r   s    r   ÚgroupzCollective.group    s=   € à�;‰;ÐÜØ”D˜“J×'Ñ'Ð(Ð(kÐlóð ð �{‰{Ðr   ÚtensorÚsrcc                  ó   — y r   r   )r   r!   r"   s      r   Ú	broadcastzCollective.broadcast(   ó   € Ø=@r   Úopc                  ó   — y r   r   )r   r!   r&   s      r   Ú
all_reducezCollective.all_reduce+   r%   r   Údstc                  ó   — y r   r   )r   r!   r)   r&   s       r   ÚreducezCollective.reduce.   s   € ØCFr   Útensor_listc                  ó   — y r   r   )r   r,   r!   s      r   Ú
all_gatherzCollective.all_gather1   s   € ØUXr   Úgather_listc                  ó   — y r   r   )r   r!   r/   r)   s       r   ÚgatherzCollective.gather4   s   € Ø_br   Úscatter_listc                  ó   — y r   r   )r   r!   r2   r"   s       r   ÚscatterzCollective.scatter7   ó   € Ø[^r   ÚoutputÚ
input_listc                  ó   — y r   r   )r   r6   r7   r&   s       r   Úreduce_scatterzCollective.reduce_scatter:   r5   r   Úoutput_tensor_listÚinput_tensor_listc                  ó   — y r   r   )r   r:   r;   s      r   Ú
all_to_allzCollective.all_to_all=   s   € Ømpr   Útagc                  ó   — y r   r   )r   r!   r)   r>   s       r   ÚsendzCollective.send@   s   € ØDGr   c                  ó   — y r   r   )r   r!   r"   r>   s       r   ÚrecvzCollective.recvC   s   € ØWZr   Ú
device_idsc                  ó   — y r   r   )r   rC   s     r   ÚbarrierzCollective.barrierF   s   € ØGJr   c                  ó   — y r   r   ©Úclss    r   Úis_availablezCollective.is_availableI   s   € à#&r   c                  ó   — y r   r   rG   s    r   Úis_initializedzCollective.is_initializedM   s   € à%(r   Úkwargsc                  ó   — y r   r   ©rH   rL   s     r   Ú
init_groupzCollective.init_groupQ   s   € à03r   c                  ó   — y r   r   rN   s     r   Ú	new_groupzCollective.new_groupU   s   € à;>r   r    c                  ó   — y r   r   )rH   r    s     r   Údestroy_groupzCollective.destroy_groupY   s   € à=@r   c                  ó   — y r   r   )rH   r&   s     r   Ú_convert_to_native_opz Collective._convert_to_native_op]   s   € à47r   c                 óJ   — | j                  «       s | j                  di |¤Ž | S )Nr   )rK   rO   ©r   rL   s     r   ÚsetupzCollective.setupa   s$   € Ø×"Ñ"Ô$ØˆD�O‰OÑ%˜fÒ%Øˆr   c                 ó�   — | j                   �"t        dt        | «      j                  › d�«      ‚ | j                  di |¤Ž| _         | S )z¥Create a group.

        This assumes that :meth:`~lightning_fabric.plugins.collectives.Collective.init_group` has been
        called already by the user.

        r   z` already owns a group.r   )r   r   r   r   rQ   rW   s     r   Úcreate_groupzCollective.create_groupf   sH   € ð �;‰;Ð"Ü ¤4¨£:×#6Ñ#6Ð"7Ð7NÐOÓPÐPØ$�d—n‘nÑ. vÑ.ˆŒØˆr   c                 ó¦   — | j                   €"t        dt        | «      j                  › d�«      ‚| j	                  | j                   «       d | _         | S )Nr   z"` does not own a group to destroy.)r   r   r   r   rS   r   s    r   ÚteardownzCollective.teardownr   sJ   € Ø�;‰;ÐÜ ¤4¨£:×#6Ñ#6Ð"7Ð7YÐZÓ[Ð[Ø×Ñ˜4Ÿ;™;Ô'ØˆŒØˆr   )r   N)r   )Nr   r   )(r   Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   Úintr   r   r	   r    r   r$   Ústrr(   r+   Úlistr.   r1   r4   r9   r=   r@   r   rB   rE   ÚclassmethodÚboolrI   rK   r   rO   rQ   rS   rU   r   rX   rZ   r\   r   r   r   r   r   
   sì  „ ñó7ð Øð�cò ó ó ðð Øð˜Cò ó ó ðð ðÐ'ò ó ðð Ø@ Ð@¨SÐ@°VÒ@ó Ø@àØ@ Ð@¨SÐ@°VÒ@ó Ø@àØF˜VÐF¨#ÐF°3ÐF¸6ÒFó ØFàØX d¨6¡lÐX¸FÐXÀtÈFÁ|ÒXó ØXàÙb˜VÐb°$°v±,ÐbÀSÐbÐQUÐV\ÑQ]Òbó ØbàÙ^˜fÐ^°D¸±LÐ^ÀsÐ^ÐSYÒ^ó Ø^àØ^ VÐ^¸¸f¹Ð^È3Ð^ÐSYÒ^ó Ø^àØp¨T°&©\ÐpÈdÐSYÉlÐpÐ_cÐdjÑ_kÒpó ØpàÙG˜6ÐG¨ÐG°#ÐG¸dÒGó ØGàÙZ˜6ÐZ¨°©ÐZÀ3ÐZÈvÒZó ØZàÙJ (¨4°©9Ñ"5ÐJÀÒJó ØJàØØ&˜TÒ&ó ó à&àØØ(˜tÒ(ó ó à(àØØ3 #Ð3¨$Ò3ó ó à3àØØ> Ð>Ð)9Ò>ó ó à>àØØ@Ð"2Ð@°tÒ@ó ó à@àØØ7 sÐ7¨sÒ7ó ó à7ð˜cð  dó ð

 Sð 
¨Tó 
ð˜$ô r   r   N)Úabcr   r   Útypingr   r   Útorchr   Útyping_extensionsr   Ú lightning_fabric.utilities.typesr	   r   r   r   r   Ú<module>rk      s"   ðß #ß  å Ý "å =ôm�õ mr   