Ë
    g^(h^  ã                   ó"  — U d dl Z d dlZd dlZd dlZd dlZd dlZ e j                  e«      Zde	fd„Z
 e
«       r"ej                  j                  «       s ed«      ‚ej                  j                  Zej                  j                   Zej                  j$                  Zej                  j(                  Z e
«       r¸d dlmZmZmZmZmZmZmZmZmZm Z m!Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z1  G d„ dejd                  «      Z3i Z4e5e6ejn                  f   e8d<   dd	e6d
e6fd„Z9ejt                  dk7  rd dlm;Z; ddl<m=Z=m>Z> ddl?­ ddl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG ddlHmIZI ddlJmKZKmLZLmJZJ  e-«        y G d„ d«      ZMeMejœ                  d   _*        y)é    NÚreturnc                  ó6   — t        t        j                  d«      S )aŸ  
    Return ``True`` if the distributed package is available.

    Otherwise,
    ``torch.distributed`` does not expose any other APIs. Currently,
    ``torch.distributed`` is available on Linux, MacOS and Windows. Set
    ``USE_DISTRIBUTED=1`` to enable it when building PyTorch from source.
    Currently, the default value is ``USE_DISTRIBUTED=1`` for Linux and Windows,
    ``USE_DISTRIBUTED=0`` for MacOS.
    Ú
_c10d_init)ÚhasattrÚtorchÚ_C© ó    úX/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/distributed/__init__.pyÚis_availabler      s   € ô ”5—8‘8˜\Ó*Ð*r
   z&Failed to initialize torch.distributed)Ú_broadcast_coalescedÚ"_compute_bucket_assignment_by_sizeÚ_ControlCollectivesÚ_DEFAULT_FIRST_BUCKET_BYTESÚ_make_nccl_premul_sumÚ_register_builtin_comm_hookÚ_register_comm_hookÚ_StoreCollectivesÚ_test_python_storeÚ_verify_params_across_processesÚBackendÚBuiltinCommHookTypeÚ
DebugLevelÚ	FileStoreÚget_debug_levelÚ
GradBucketÚLoggerÚPrefixStoreÚProcessGroupÚReducerÚset_debug_levelÚset_debug_level_from_envÚStoreÚTCPStoreÚWorkc                   ó   — e Zd ZdZd„ Zy)Ú_DistributedPdbz‡
        Supports using PDB from inside a multiprocessing child process.

        Usage:
        _DistributedPdb().set_trace()
        c                 óÊ   — t         j                  }	 t        d«      t         _        t        j                  j
                  | g|¢­i |¤Ž |t         _        y # |t         _        w xY w)Nz
/dev/stdin)ÚsysÚstdinÚopenÚpdbÚPdbÚinteraction)ÚselfÚargsÚkwargsÚ_stdins       r   r.   z_DistributedPdb.interactionJ   sG   € Ü—Y‘YˆFð#Ü  Ó.””	Ü—‘×#Ñ# DÐ:¨4Ò:°6Ò:à"”•	ø˜F”•	ús   ’7A ÁA"N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r.   r	   r
   r   r'   r'   B   s   „ ñ	ó	#r
   r'   Ú_breakpoint_cacheÚrankÚskipc                 ó¨  — |dkD  rdt        t        t        j                  «       «      «      }t        j                  |d«      dz   }|t        |<   ||k  rt        j                  d|«       yt        «       | k(  r1t        «       } |j                  d| › d�«        |j                  «        t        j                  j                  «       }t        j                  j                  «       }t        j                  j!                  d«       	 t#        «        t        j                  j!                  |«       ~y# t        j                  j!                  |«       ~w xY w)aD  
        Set a breakpoint, but only on a single rank.  All other ranks will wait for you to be
        done with the breakpoint before continuing.

        Args:
            rank (int): Which rank to break on.  Default: ``0``
            skip (int): Skip the first ``skip`` calls to this breakpoint. Default: ``0``.
        r   é   zSkip the breakpoint, counter=%dNzS
!!! ATTENTION !!!

Type 'up' to get to the frame that called dist.breakpoint(rank=z)
F)ÚhashÚstrÚ	tracebackÚ
format_excr7   ÚgetÚlogÚwarningÚget_rankr'   ÚmessageÚ	set_tracer   r   Ú_meta_in_tls_dispatch_includeÚ_DisableTorchDispatchÚ!_set_meta_in_tls_dispatch_includeÚbarrier)r8   r9   ÚkeyÚcounterr,   Úmeta_in_tlsÚguards          r   Ú
breakpointrN   T   s  € ð �!Š8Ü”sœ9×/Ñ/Ó1Ó2Ó3ˆCÜ'×+Ñ+¨C°Ó3°aÑ7ˆGØ%,Ô˜cÑ"Ø˜$ŠÜ—‘Ð=¸wÔGØä‹:˜ÒÜ!Ó#ˆCØˆC�K‰KðRØRVÐQWÐWZð\ôð ˆC�M‰MŒOô —h‘h×<Ñ<Ó>ˆÜ—‘×.Ñ.Ó0ˆÜ�‰×2Ñ2°5Ô9ð	ÜŒIä�H‰H×6Ñ6°{ÔCÙøô �H‰H×6Ñ6°{ÔCÙús   Ä
D/ Ä/"EÚwin32)Ú	HashStorer;   )Ú
DeviceMeshÚinit_device_mesh)Ú*)Ú_all_gather_baseÚ_coalescing_managerÚ_CoalescingManagerÚ_create_process_group_wrapperÚ_get_process_group_nameÚ_rank_not_in_groupÚ_reduce_scatter_baseÚget_node_local_rank)Ú_remote_device)Ú_create_store_from_optionsÚregister_rendezvous_handlerÚ
rendezvousc                   ó   — e Zd Zy)Ú_ProcessGroupStubN)r3   r4   r5   r	   r
   r   ra   ra   š   s   „ Ør
   ra   ztorch.distributed)r   r   )OÚloggingr,   r)   r>   Útypingr   Ú	getLoggerr3   rA   Úboolr   r   r   ÚRuntimeErrorÚ
_DistErrorÚ	DistErrorÚ_DistBackendErrorÚDistBackendErrorÚ_DistNetworkErrorÚDistNetworkErrorÚ_DistStoreErrorÚDistStoreErrorÚtorch._C._distributed_c10dr   r   r   r   r   r   r   r   r   r   r   Ú_Backendr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   Ú_Workr-   r'   r7   ÚdictÚintÚAnyÚ__annotations__rN   ÚplatformrP   Údevice_meshrQ   rR   Údistributed_c10drT   rU   rV   rW   rX   rY   rZ   r[   Úremote_devicer\   r_   r]   r^   ra   Úmodulesr	   r
   r   ú<module>r{      s]  ðä Û 
Û 
Û Û ã ð €g×Ñ˜Ó!€ð+�dó +ñ „>˜%Ÿ(™(×-Ñ-Ô/Ù
Ð?Ó
@Ð@ð �H‰H×Ñ€	Ø—8‘8×-Ñ-Ð Ø—8‘8×-Ñ-Ð Ø—‘×)Ñ)€á„>÷÷ ÷ ÷ ÷ ÷ õ ô8#˜#Ÿ'™'ô #ð  02Ð�t˜C §¡˜OÑ,Ó1ñ!˜ð !¨ó !ðF ‡|�|�wÒÝ8ç9ô
 $÷	÷ 	ó 	õ .÷ñ ñ Õ÷ñ ð 5F€C‡K�KÐ#Ñ$Õ1r
   