Ë
    g^(há  ã                   ój  — d dl Z d dlZd dlmZ d dlmZmZ d dlZg d¢Z	d Z
d„ Zd„ Zd„ Zd„ Zd	eej                  eej                     f   d
dfd„Zde
ddfd„Zdd e
ddfddœd	eej                     deeej                  eej                     f      dededeeej&                  j(                        deeej                        d
dfd„Z	 dd	eej                     ded
dfd„Z	 	 dd	eej                     deej                     d
dfd„Ze
ddfd	eej                     deej                     ded
dfd„Zy)é    N)ÚSequence)ÚOptionalÚUnion)Ú
all_reduceÚreduceÚ	broadcastÚ
all_gatherÚreduce_scatterc                 ó0  — t        t        j                  d«      st        j                  d«       yt        «       }| D ]W  }|j                  r y|j                  «       s y|j                  s y|j                  «       }||v r y|j                  |«       ŒY y)NÚ_nccl_all_reducez)PyTorch is not compiled with NCCL supportFT)ÚhasattrÚtorchÚ_CÚwarningsÚwarnÚsetÚ	is_sparseÚis_contiguousÚis_cudaÚ
get_deviceÚadd)ÚtensorsÚdevicesÚtensorÚdevices       úM/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/cuda/nccl.pyÚis_availabler      s†   € Ü”5—8‘8Ð/Ô0Ü�‰ÐAÔBØä‹e€GØò 
ˆØ×ÒÙØ×#Ñ#Ô%ÙØ�~Š~ÙØ×"Ñ"Ó$ˆØ�WÑÙØ�‰�FÕð
ð ó    c                  óÜ   — t         j                  j                  «       } | dz	  }| dz	  dz  }| dz  }t         j                  j                  «       j	                  d«      }|dk(  r|||fS ||||fS )a  
    Returns the version of the NCCL.


    This function returns a tuple containing the major, minor, and patch version numbers of the NCCL.
    The suffix is also included in the tuple if a version suffix exists.
    Returns:
        tuple: The version information of the NCCL.
    é    é   iÿÿ  zutf-8Ú )r   r   Ú_nccl_versionÚ_nccl_version_suffixÚdecode)ÚverÚmajorÚminorÚpatchÚsuffixs        r   Úversionr+   $   sv   € ô �(‰(×
 Ñ
 Ó
"€CØ�2‰I€EØ�B‰Y˜%Ñ€EØ�%‰K€EÜ�X‰X×*Ñ*Ó,×3Ñ3°GÓ<€FØ�‚|Ø�u˜eÐ$Ð$à�u˜e VÐ,Ð,r   c                  ó>   — t         j                  j                  «       S ©N)r   r   Ú_nccl_unique_id© r   r   Ú	unique_idr0   9   s   € Ü�8‰8×#Ñ#Ó%Ð%r   c                 óD   — t         j                  j                  | ||«      S r-   )r   r   Ú_nccl_init_rank)Ú	num_ranksÚuidÚranks      r   Ú	init_rankr6   =   s   € Ü�8‰8×#Ñ# I¨s°DÓ9Ð9r   ÚinputsÚreturnc                 ó–   — t        | t        j                  j                  «      rt        | t        j
                  «      rt        d«      ‚y )Nz(Inputs should be a collection of tensors)Ú
isinstanceÚcollectionsÚabcÚ	Containerr   ÚTensorÚ	TypeError)r7   s    r   Ú_check_sequence_typer@   A   s9   € Ü�fœkŸo™o×7Ñ7Ô8¼JØ”—‘ô=ô ÐBÓCÐCð=r   c                 ó~   — t        | «       |€| }t        |«       t        j                  j                  | ||||«       y r-   )r@   r   r   r   ©r7   ÚoutputsÚopÚstreamsÚcommss        r   r   r   H   s6   € Ü˜Ô Ø€ØˆÜ˜Ô!Ü	‡H�H×Ñ˜f g¨r°7¸EÕBr   )rC   ÚoutputÚrootrD   rE   rC   c                ó–  — t        | «       |�/|�t        d«      ‚t        j                  dt        d¬«       ||   }nit        |t        j                  «      sFt        |t        j                  j                  «      r"t        j                  dt        d¬«       ||   }n	|€| |   n|}t        j                  j                  | |||||«       y )Nzä'output' and 'outputs' can not be both specified. 'outputs' is deprecated in favor of 'output', taking in a single output tensor. The signature of reduce is: reduce(inputs, output=None, root=0, op=SUM, streams=None, comms=None).z…`nccl.reduce` with an output tensor list is deprecated. Please specify a single output tensor with argument 'output' instead instead.é   )Ú
stacklevelz\nccl.reduce with an output tensor list is deprecated. Please specify a single output tensor.)r@   Ú
ValueErrorr   r   ÚFutureWarningr:   r   r>   r;   r<   r   r   Ú_nccl_reduce)r7   rG   rH   rD   rE   rF   rC   Ú_outputs           r   r   r   R   sÃ   € ô ˜Ô àÐØÐÜðYóð ô �M‰Mð`äØõ	ð ˜d‘m‰GÜ˜¤§¡Ô-´*Ø”—‘×(Ñ(ô3ô 	�‰ð5äØõ		
ð ˜‘,‰à"( .�&˜’,°fˆÜ	‡H�H×Ñ˜& '¨4°°W¸eÕDr   c                 ó^   — t        | «       t        j                  j                  | |||«       y r-   )r@   r   r   Ú_nccl_broadcast)r7   rH   rE   rF   s       r   r   r   }   s$   € ô ˜Ô Ü	‡H�H×Ñ˜V T¨7°EÕ:r   c                 ót   — t        | «       t        |«       t        j                  j                  | |||«       y r-   )r@   r   r   Ú_nccl_all_gather)r7   rC   rE   rF   s       r   r	   r	   „   s,   € ô ˜Ô Ü˜Ô!Ü	‡H�H×Ñ˜f g¨w¸Õ>r   c                 óv   — t        | «       t        |«       t        j                  j                  | ||||«       y r-   )r@   r   r   Ú_nccl_reduce_scatterrB   s        r   r
   r
   �   s.   € ô ˜Ô Ü˜Ô!Ü	‡H�H×!Ñ! &¨'°2°wÀÕFr   )r   NN)NN)r;   r   Úcollections.abcr   Útypingr   r   Ú
torch.cudar   Ú__all__ÚSUMr   r+   r0   r6   r>   r@   r   ÚintÚcudaÚStreamr   r   r	   r
   r/   r   r   ú<module>r^      sÚ  ðã Û Ý $ß "ã ò P€à€òò*-ò*&ò:ðD  u§|¡|°X¸e¿l¹lÑ5KÐ'KÑ!Lð DÐQUó Dð  $¨°TÀó Cð EIØØØ59Ø
ð(Eð 15ò(EØ�U—\‘\Ñ"ð(Eà�U˜5Ÿ<™<¨°%·,±,Ñ)?Ð?Ñ@ÑAð(Eð ð(Eð 	ð	(Eð
 �h˜uŸz™z×0Ñ0Ñ1Ñ2ð(Eð �h˜uŸ|™|Ñ,Ñ-ð(Eð 
ó(EðX HLñ;Ø�U—\‘\Ñ"ð;Ø*-ð;à	ó;ð Ø
ñ	?Ø�U—\‘\Ñ"ð?à�e—l‘lÑ#ð?ð
 
ó?ð ØØ
ñ	GØ�U—\‘\Ñ"ð	Gà�e—l‘lÑ#ð	Gð 	ð	Gð 
ô	Gr   