o
    z“©i=
  ã                   @   sT   d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 G dd„ deƒZdS )	é    )ÚAnyÚList)ÚTensor)Úoverride)Ú
Collective)ÚCollectibleGroupc                   @   s>  e Zd ZdZeedefdd„ƒƒZeedefdd„ƒƒZede	de
d	e
de	fd
d„ƒZede	de
d	e
de	fdd„ƒZede	de
d	e
de	fdd„ƒZedee	 de	d	e
dee	 fdd„ƒZede	de
d	e
dee	 fdd„ƒZede	dee	 de
d	e
de	f
dd„ƒZede	dee	 de
d	e
de	f
dd„ƒZedee	 dee	 de
d	e
dee	 f
dd„ƒZede
d	e
dd fd!d"„ƒZede	de
d	e
de	fd#d$„ƒZede
d	e
dd fd%d&„ƒZeedefd'd(„ƒƒZeedefd)d*„ƒƒZeede
dd fd+d,„ƒƒZeede
defd-d.„ƒƒZeed/edd fd0d1„ƒƒZeed2edefd3d4„ƒƒZ d S )5ÚSingleDeviceCollectivez¹Support for collective operations on a single device (no-op).

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

    Úreturnc                 C   ó   dS ©Nr   © ©Úselfr   r   úf/home/ubuntu/.local/lib/python3.10/site-packages/lightning_fabric/plugins/collectives/single_device.pyÚrank   ó   zSingleDeviceCollective.rankc                 C   r
   )Né   r   r   r   r   r   Ú
world_size   r   z!SingleDeviceCollective.world_sizeÚtensorÚ_Ú__c                 O   ó   |S ©Nr   ©r   r   r   r   r   r   r   Ú	broadcast   ó   z SingleDeviceCollective.broadcastc                 O   r   r   r   r   r   r   r   Ú
all_reduce   r   z!SingleDeviceCollective.all_reducec                 O   r   r   r   r   r   r   r   Úreduce#   r   zSingleDeviceCollective.reduceÚtensor_listc                 K   s   |gS r   r   )r   r   r   r   r   r   r   Ú
all_gather'   ó   z!SingleDeviceCollective.all_gatherc                 O   s   |gS r   r   r   r   r   r   Úgather+   r    zSingleDeviceCollective.gatherÚscatter_listc                 O   ó   |d S r   r   )r   r   r"   r   r   r   r   r   Úscatter/   s   zSingleDeviceCollective.scatterÚoutputÚ
input_listc                 O   r#   r   r   )r   r%   r&   r   r   r   r   r   Úreduce_scatter9   s   z%SingleDeviceCollective.reduce_scatterÚoutput_tensor_listÚinput_tensor_listc                 O   s   |S r   r   )r   r(   r)   r   r   r   r   r   Ú
all_to_all=   s   z!SingleDeviceCollective.all_to_allNc                 O   ó   d S r   r   ©r   r   r   r   r   r   ÚsendC   r   zSingleDeviceCollective.sendc                 O   r   r   r   r   r   r   r   ÚrecvG   r   zSingleDeviceCollective.recvc                 O   r+   r   r   r,   r   r   r   ÚbarrierK   r   zSingleDeviceCollective.barrierc                 C   r
   ©NTr   ©Úclsr   r   r   Úis_availableO   r   z#SingleDeviceCollective.is_availablec                 C   r
   r0   r   r1   r   r   r   Úis_initializedT   r   z%SingleDeviceCollective.is_initializedc                 K   r+   r   r   ©r2   r   r   r   r   Ú
init_groupY   r   z!SingleDeviceCollective.init_groupc                 K   s   t ƒ S r   )Úobjectr5   r   r   r   Ú	new_group^   s   z SingleDeviceCollective.new_groupÚgroupc                 C   r+   r   r   )r2   r9   r   r   r   Údestroy_groupc   r   z$SingleDeviceCollective.destroy_groupÚopc                 C   r   r   r   )r2   r;   r   r   r   Ú_convert_to_native_oph   r   z,SingleDeviceCollective._convert_to_native_op)!Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   Úintr   r   r   r   r   r   r   r   r   r!   r$   r'   r*   r-   r.   r/   ÚclassmethodÚboolr3   r4   r6   r   r8   r:   Ústrr<   r   r   r   r   r   
   sˆ    $ þýüûú	$ÿÿÿÿþr   N)Útypingr   r   Útorchr   Útyping_extensionsr   Ú/lightning_fabric.plugins.collectives.collectiver   Ú lightning_fabric.utilities.typesr   r   r   r   r   r   Ú<module>   s    