Ë
    M²j5  ã                   óx  — U d dl Z d dlZd dlZd dlZd dlmZ d dlZeej                  z  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                  j0                  Zej                  j4                  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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z7 d„ Z8i Z9e:eejv                  f   e<d<   dd	ed
efd„Z=ej|                  dk7  rd dlm?Z? ddl@mAZAmBZB ddlC­ ddlCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL ddlMmNZN ddlOmPZPmQZQmOZO  e3«        y G d„ d«      ZReRej¦                  d   _T        eRej¦                  d   _0        y)é    N)Ú	timedeltaÚ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© ó    úY/var/www/html/ia-enhanced/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                  óH   ‡— ddl Š G ˆfd„d‰j                  «      }  | «       S )z�
        Supports using PDB from inside a multiprocessing child process.

        Usage:
        _make_distributed_pdb().set_trace()
        r   Nc                   ó   •— e Zd Zˆ fd„Zy)ú._make_distributed_pdb.<locals>._DistributedPdbc                 óð   •— t         j                  }	 t        d«      5 t         _         ‰j                  j                  | g|¢­i |¤Ž d d d «       |t         _        y # 1 sw Y   ŒxY w# |t         _        w xY w)Nz
/dev/stdin)ÚsysÚstdinÚopenÚPdbÚinteraction)ÚselfÚargsÚkwargsÚ_stdinÚpdbs       €r   r/   z:_make_distributed_pdb.<locals>._DistributedPdb.interactionR   sg   ø€ ÜŸ™�ð'Ü˜lÓ+ð C¬s¬yØ+˜Ÿ™×+Ñ+¨DÐB°4ÒB¸6ÒB÷Cð !'”C•I÷Cð Cûð !'”C•Iús"   “A( ž*AÁA( ÁA%Á!A( Á(A5N)Ú__name__Ú
__module__Ú__qualname__r/   )r4   s   €r   Ú_DistributedPdbr)   Q   s   ø„ õ'r   r8   )r4   r.   )r8   r4   s    @r   Ú_make_distributed_pdbr9   F   s#   ø€ ó 	ö	'˜cŸg™gô 	'ñ Ó Ð r   Ú_breakpoint_cacheÚrankÚskipc                 ób  — |dkD  rdt        t        t        j                  «       «      «      }t        j                  |d«      dz   }|t        |<   ||k  rt        j                  d|«       y|�]t        j                  j                  j                  D ]6  }t        j                  j                  j                  t        |¬«      |«       Œ8 t        «       | k(  r/t        «       }|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=%dN)ÚsecondszS
!!! ATTENTION !!!

Type 'up' to get to the frame that called dist.breakpoint(rank=z)
F)ÚhashÚstrÚ	tracebackÚ
format_excr:   ÚgetÚlogÚwarningr   ÚdistributedÚdistributed_c10dÚ_pg_mapÚ_set_pg_timeoutr   Úget_rankr9   ÚmessageÚ	set_tracer	   Ú_meta_in_tls_dispatch_includeÚ_DisableTorchDispatchÚ!_set_meta_in_tls_dispatch_includeÚbarrier)	r;   r<   Ú	timeout_sÚkeyÚcounterÚgroupr4   Úmeta_in_tlsÚguards	            r   Ú
breakpointrX   ^   s[  € ð �!Š8Ü”sœ9×/Ñ/Ó1Ó2Ó3ˆCÜ'×+Ñ+¨C°Ó3°aÑ7ˆGØ%,Ô˜cÑ"Ø˜$ŠÜ—‘Ð=¸wÔGØð Ð Ü×*Ñ*×;Ñ;×CÑCò �Ü×!Ñ!×2Ñ2×BÑBÜ iÔ0°%õðô
 ‹:˜ÒÜ'Ó)ˆCØ�K‰KðRØRVÐQWÐWZð\ôð �M‰MŒOô —h‘h×<Ñ<Ó>ˆÜ—‘×.Ñ.Ó0ˆÜ�‰×2Ñ2°5Ô9ð	ÜŒIä�H‰H×6Ñ6°{ÔCÙøô �H‰H×6Ñ6°{ÔCÙús   Å!
F Æ"F.Ú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Ú_time_estimatorÚget_node_local_rank)Ú_remote_device)Ú_create_store_from_optionsÚregister_rendezvous_handlerÚ
rendezvousc                   ó   — e Zd Zy)Ú_StubN)r5   r6   r7   r
   r   r   rl   rl   ¬   s   „ Ør   rl   ztorch.distributed)r   r   i  )UÚloggingr+   rB   ÚtypingÚdatetimer   r   ÚintÚSymIntÚRankTypeÚ	getLoggerr5   rE   Úboolr   r	   r   ÚRuntimeErrorÚ
_DistErrorÚ	DistErrorÚ_DistBackendErrorÚDistBackendErrorÚ_DistNetworkErrorÚDistNetworkErrorÚ_DistStoreErrorÚDistStoreErrorÚ_DistQueueEmptyErrorÚQueueEmptyErrorÚ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&   Ú_Workr9   r:   ÚdictÚAnyÚ__annotations__rX   ÚplatformrZ   Údevice_meshr[   r\   rH   r^   r_   r`   ra   rb   rc   rd   re   rf   Úremote_devicerg   rj   rh   ri   rl   ÚmodulesÚ	GroupNamer
   r   r   ú<module>r‹      s‚  ðä Û 
Û Û Ý ã ð �—‘Ñ€ð €g×Ñ˜Ó!€ð+�dó +ñ „>˜%Ÿ(™(×-Ñ-Ô/Ù
Ð?Ó
@Ð@ð �H‰H×Ñ€	Ø—8‘8×-Ñ-Ð Ø—8‘8×-Ñ-Ð Ø—‘×)Ñ)€Ø—(‘(×/Ñ/€á„>÷÷ ÷ ÷ ÷ ÷ õ ò8!ð, 02Ð�t˜C §¡˜OÑ,Ó1ñ(˜ð (¨ó (ðT ‡|�|�wÒÝ8ç9ô
 $÷
÷ 
õ 
õ .÷ñ ñ Õ÷ñ ð 27€C‡K�KÐ#Ñ$Ô.Ø49€C‡K�KÐ#Ñ$Õ1r   