ó
    0Vði‡  ã                   ó€  • S SK r S SKrS SKJr  S SKJrJr  S SKr/ SQr	S r
S rS rS rS rS	\\R                  \\R                     4   S
S4S jrS\
SS4S jrSS \
SS4SS.S	\\R                     S\\\R                  \\R                     4      S\S\S\\\R&                  R(                        S\\\R                        S
S4S jjjr SS	\\R                     S\S
S4S jjr  SS	\\R                     S\\R                     S
S4S jjr\
SS4S	\\R                     S\\R                     S\S
S4S jjrg)é    N)ÚSequence)ÚOptionalÚUnion)Ú
all_reduceÚreduceÚ	broadcastÚ
all_gatherÚreduce_scatterc                 ó^  • [        [        R                  S5      (       d  [        R                  " SSS9  g[        5       nU  Hh  nUR                  (       a    gUR                  5       (       d    gUR                  (       d    gUR                  5       nX1;   a    gUR                  U5        Mj     g)NÚ_nccl_all_reducez)PyTorch is not compiled with NCCL supporté   ©Ú
stacklevelFT)ÚhasattrÚtorchÚ_CÚwarningsÚwarnÚsetÚ	is_sparseÚis_contiguousÚis_cudaÚ
get_deviceÚadd)ÚtensorsÚdevicesÚtensorÚdevices       ÚTD:\a\ltx-desktop-ci\ltx-desktop-ci\python-embed\Lib\site-packages\torch\cuda\nccl.pyÚis_availabler       s‡   € Ü”5—8‘8Ð/×0Ñ0Ü�ŠÐAÈaÒPØä‹e€GÛˆØ××ÙØ×#Ñ#×%Ñ%ÙØ�~�~ÙØ×"Ñ"Ó$ˆØÓÙØ�‰�FÖñ ð ó    c                  óØ   • [         R                  R                  5       n U S-	  nU S-	  S-  nU S-  n[         R                  R                  5       R	                  S5      nUS:X  a  XU4$ XX44$ )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.   $   sp   € ô �(‰(×
 Ñ
 Ó
"€CØ�2‰I€EØ�B‰Y˜%Ñ€EØ�%‰K€EÜ�X‰X×*Ñ*Ó,×3Ñ3°GÓ<€FØ�ƒ|Ø˜eÐ$Ð$à˜eÐ,Ð,r!   c                  ó>   • [         R                  R                  5       $ ©N)r   r   Ú_nccl_unique_id© r!   r   Ú	unique_idr3   9   s   € Ü�8‰8×#Ñ#Ó%Ð%r!   c                 óB   • [         R                  R                  XU5      $ r0   )r   r   Ú_nccl_init_rank)Ú	num_ranksÚuidÚranks      r   Ú	init_rankr9   =   s   € Ü�8‰8×#Ñ# I°DÓ9Ð9r!   ÚinputsÚreturnc                 óª   • [        U [        R                  R                  5      (       a  [        U [        R
                  5      (       a  [        S5      eg )Nz(Inputs should be a collection of tensors)Ú
isinstanceÚcollectionsÚabcÚ	Containerr   ÚTensorÚ	TypeError)r:   s    r   Ú_check_sequence_typerC   A   sA   € Ü�fœkŸo™o×7Ñ7×8Ñ8¼JØ”—‘÷=ñ =ô ÐBÓCÐCð=r!   c                 ó|   • [        U 5        Uc  U n[        U5        [        R                  R                  XX#U5        g r0   )rC   r   r   r   ©r:   ÚoutputsÚopÚstreamsÚcommss        r   r   r   H   s2   € Ü˜Ô Ø�ØˆÜ˜Ô!Ü	‡H�H×Ñ˜f¨r¸EÕBr!   )rF   ÚoutputÚrootrG   rH   rF   c                óœ  • [        U 5        Ub-  Ub  [        S5      e[        R                  " S[        SS9  Xb   nOp[        U[        R                  5      (       dH  [        U[        R                  R                  5      (       a  [        R                  " S[        SS9  X   nO	Uc  X   OUn[        R                  R                  XX#XE5        g )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.r   r   z\nccl.reduce with an output tensor list is deprecated. Please specify a single output tensor.)rC   Ú
ValueErrorr   r   ÚFutureWarningr=   r   rA   r>   r?   r   r   Ú_nccl_reduce)r:   rJ   rK   rG   rH   rI   rF   Ú_outputs           r   r   r   R   s¿   € ô ˜Ô àÑØÑÜðYóð ô �MŠMð`äØò	ð ‘m‰GÜ˜¤§¡×-Ñ-´*Ø”—‘×(Ñ(÷3ñ 3ô 	�Šð5äØò		
ð ‘,‰à"(¡.�&’,°fˆÜ	‡H�H×Ñ˜&¨4°WÕDr!   c                 óZ   • [        U 5        [        R                  R                  XX#5        g r0   )rC   r   r   Ú_nccl_broadcast)r:   rK   rH   rI   s       r   r   r   }   s    € ô ˜Ô Ü	‡H�H×Ñ˜V¨7Õ:r!   c                 óp   • [        U 5        [        U5        [        R                  R                  XX#5        g r0   )rC   r   r   Ú_nccl_all_gather)r:   rF   rH   rI   s       r   r	   r	   „   s(   € ô ˜Ô Ü˜Ô!Ü	‡H�H×Ñ˜f¨wÕ>r!   c                 ór   • [        U 5        [        U5        [        R                  R                  XX#U5        g r0   )rC   r   r   Ú_nccl_reduce_scatterrE   s        r   r
   r
   �   s*   € ô ˜Ô Ü˜Ô!Ü	‡H�H×!Ñ! &°2ÀÕFr!   )r   NN)NN)r>   r   Úcollections.abcr   Útypingr   r   Ú
torch.cudar   Ú__all__ÚSUMr    r.   r3   r9   rA   rC   r   ÚintÚcudaÚStreamr   r   r	   r
   r2   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!   