§
    O�’jW  ã                   óÀ  — d dl Z d dlmc mZ 	 d„ Zd„ Zd„ Zd„ Zd„ Z	de j
        ded	ed
ee         def
d„Zdee j
                 ded	ed
ee         def
d„Zde j
        dee         dz  dee         dz  d	ed
ee         defd„Zde j
        de j
        fd„Zde j
        ded	efd„Zde j
        ded	efd„Zdee         dee         dee         dee j
                 def
d„ZdS )é    Nc                 óx   — t          j        ||¦  «        }t          j        j                             | ||¦  «        S ©N)Úc10dÚ$_resolve_group_name_by_ranks_and_tagÚtorchÚopsÚ_c10d_functionalÚ	broadcast)ÚinputÚsrcÚtagÚranksÚ
group_sizeÚ
group_names         ú\C:\Projects\DSCons\.venv\Lib\site-packages\torch\distributed\_functional_collectives_impl.pyÚ
_broadcastr      s:   € ÝÔ:¸5À#ÑFÔF€JÝŒ9Ô%×/Ò/ØØØñô ð ó    c                 óx   — t          j        ||¦  «        }t          j        j                             | ||¦  «        S r   )r   r   r   r   r	   Ú
all_reduce©r   Ú	reduce_opr   r   r   r   s         r   Ú_all_reducer      s:   € ÝÔ:¸5À#ÑFÔF€JÝŒ9Ô%×0Ò0ØØØñô ð r   c                 óx   — t          j        ||¦  «        }t          j        j                             | ||¦  «        S r   )r   r   r   r   r	   Úall_reduce_coalesced©Úinputsr   r   r   r   r   s         r   Ú_all_reduce_coalescedr      s:   € ÝÔ:¸5À#ÑFÔF€JÝŒ9Ô%×:Ò:ØØØñô ð r   c                 óx   — t          j        ||¦  «        }t          j        j                             | ||¦  «        S r   )r   r   r   r   r	   Úall_gather_into_tensor©r   r   r   r   r   s        r   Ú_all_gather_into_tensorr!   (   s:   € ÝÔ:¸5À#ÑFÔF€JÝŒ9Ô%×<Ò<ØØØñô ð r   c                 óx   — t          j        ||¦  «        }t          j        j                             | ||¦  «        S r   )r   r   r   r   r	   Ú all_gather_into_tensor_coalescedr    s        r   Ú!_all_gather_into_tensor_coalescedr$   1   s:   € ÝÔ:¸5À#ÑFÔF€JÝŒ9Ô%×FÒFØØØñô ð r   r   r   r   r   r   c                 óz   — t          j        ||¦  «        }t          j        j                             | |||¦  «        S r   )r   r   r   r   r	   Úreduce_scatter_tensorr   s         r   Ú_reduce_scatter_tensorr'   :   s?   € õ Ô:¸5À#ÑFÔF€JÝŒ9Ô%×;Ò;ØØØØñ	ô ð r   r   c                 óz   — t          j        ||¦  «        }t          j        j                             | |||¦  «        S r   )r   r   r   r   r	   Úreduce_scatter_tensor_coalescedr   s         r   Ú _reduce_scatter_tensor_coalescedr*   J   s?   € õ Ô:¸5À#ÑFÔF€JÝŒ9Ô%×EÒEØØØØñ	ô ð r   Úoutput_split_sizesÚinput_split_sizesc                 óÔ   — |�|€)|€|�t          d¦  «        ‚| j        d         |z  g|z  }|}t          j        ||¦  «        }t          j        j                             | |||¦  «        S )Nz^output_split_sizes and input_split_sizes must either be specified together or both set to Noner   )ÚAssertionErrorÚshaper   r   r   r   r	   Úall_to_all_single)r   r+   r,   r   r   r   r   s          r   Ú_all_to_all_singler1   Z   s�   € ð Ð!Ð%6Ð%>Ø"Ð*Ð/@Ð/HÝ ð9ñô ð ð $œk¨!œn°
Ñ:Ð;¸jÑHÐØ.ÐåÔ:¸5À#ÑFÔF€JÝŒ9Ô%×7Ò7ØØØØñ	ô ð r   ÚtensorÚreturnc                 óJ   — t           j        j                             | ¦  «        S r   )r   r   r	   Úwait_tensor)r2   s    r   Ú_wait_tensorr6   t   s   € ÝŒ9Ô%×1Ò1°&Ñ9Ô9Ð9r   Údstc                 óP   — t           j        j                             | |||¦  «        S r   )r   r   r	   Úisend)r2   r7   r   r   s       r   Ú_isendr:   x   ó!   € ÝŒ9Ô%×+Ò+¨F°C¸¸jÑIÔIÐIr   r   c                 óP   — t           j        j                             | |||¦  «        S r   )r   r   r	   Úirecv)r2   r   r   r   s       r   Ú_irecvr>   |   r;   r   Úop_listÚ	peer_listÚtag_listÚtensorsr   c                 óR   — t           j        j                             | ||||¦  «        S r   )r   r   r	   Úbatch_p2p_ops)r?   r@   rA   rB   r   s        r   Ú_batch_p2p_opsrE   €   s,   € õ Œ9Ô%×3Ò3Ø�˜H g¨zñô ð r   )r   Ú"torch.distributed.distributed_c10dÚdistributedÚdistributed_c10dr   r   r   r   r!   r$   ÚTensorÚstrÚlistÚintr'   r*   r1   r6   r:   r>   rE   © r   r   ú<module>rN      s]  ðð €€€Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1ððð ð ðð ð ðð ð ðð ð ðð ð ðØŒ<ðàðð 
ðð �Œ9ð	ð
 ðð ð ð ð Ø�”Ôðàðð 
ðð �Œ9ð	ð
 ðð ð ð ð ØŒ<ðà˜Sœ	 DÑ(ðð ˜C”y 4Ñ'ðð 
ð	ð
 �Œ9ðð ðð ð ð ð4:˜œð :¨%¬,ð :ð :ð :ð :ðJ�5”<ð J cð J°ð Jð Jð Jð JðJ�5”<ð J cð J°ð Jð Jð Jð Jð	Ø�#ŒYð	à�CŒyð	ð �3Œið	ð �%”,Ôð		ð
 ð	ð 	ð 	ð 	ð 	ð 	r   