+
    –°³j©@  ã                   óÌ  € ^ RI t ^ RIt^ RIHt ^ RIt^ RIHt ^RIH	t	H
t ^RIHtHt . ROt] P                   ! RRR.4      tR	 tR
t]P(                  ! R/ R7      s]\*        n        \*        P.                  '       d   ]\*        n        R tR t]P4                  ]P6                  3R ltR tR t]P>                  RR3R lt R t!R t"RR lt#R t$R t%R t&R t'R t(]! R] ](4       R# )é    N)Úcast)ÚapiÚ	constants)Ú_group_membership_managementÚ_update_group_membershipÚBackendValueÚBackendTypeÚ%construct_rpc_backend_options_handlerÚinit_backend_handlerc                 ó(   € R V P                   ,           # )zBackendType.)Úname)Úselfs   &Úg/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/distributed/rpc/backend_registry.pyÚ_backend_type_reprr      s   € Ø˜DŸI™IÕ%Ð%ó    zï
    An enum class of available backends.

    PyTorch ships with a builtin ``BackendType.TENSORPIPE`` backend.
    Additional ones can be registered using the
    :func:`~torch.distributed.rpc.backend_registry.register_backend` function.
©ÚvalueÚnamesc                ó(   € V \         P                  9   # )zÜ
Checks if backend_name is registered as an RPC backend.

Args:
    backend_name (str): string to identify the RPC backend.
Returns:
    True if the backend has been registered with ``register_backend``, else
    False.
)r	   Ú__members__)Úbackend_names   &r   Úbackend_registeredr   3   s   € ð œ;×2Ñ2Ñ2Ð2r   c                ó‚  € \        V 4      '       d   \        RV  R24      h\         Uu/ uF  q3P                  VP                  bK  	  pp\        V \        VVR7      /3/ VB p\        P                  ! RVR7      s\        \        n
        \        P                  '       d   \        \        n        \        V ,          # u upi )a¯  Registers a new RPC backend.

Args:
    backend_name (str): backend string to identify the handler.
    construct_rpc_backend_options_handler (function):
        Handler that is invoked when
        ``rpc_backend.construct_rpc_backend_options(**dict)`` is called.
    init_backend_handler (function): Handler that is invoked when the
        `_init_rpc_backend()` function is called with a backend.
        This returns the agent.
zRPC backend z: already registered)r
   r   r	   r   )r   ÚRuntimeErrorr	   r   r   Údictr   ÚenumÚEnumr   Ú__repr__Ú__doc__Ú_backend_type_doc)r   r
   r   ÚmemberÚexisting_enum_dictÚextended_enum_dicts   &&&   r   Úregister_backendr$   @   s®   € ô ˜,×'Ò'Ü˜\¨,¨Ð7KÐLÓMÐMåBMÓNÁ+¸Ÿ+™+ v§|¡|Ò3Á+ÐÐNÜàœ,Ø6[Ø%9ôð	
ñð ñÐô —)’) -Ð7IÔJ€Kä-„KÔÜ××ÐÜ/ŒÔä�|Õ$Ð$ùò# Os   ©B<c                 ó<   € V P                   P                  ! W3/ VB # ©N)r   r
   )ÚbackendÚrpc_timeoutÚinit_methodÚkwargss   &&&,r   Úconstruct_rpc_backend_optionsr+   f   s&   € ð �=‰=×>Ò>ØñØ$*ñð r   c                 ó:   € V P                   P                  ! V/ VB # r&   )r   r   )r'   Úargsr*   s   &*,r   Úinit_backendr.   q   s   € Ø�=‰=×-Ò-¨tÐ>°vÑ>Ð>r   c                 óZ  € \         P                  p\        P                  ! WW#4      pVf   \	        R4      hVR8w  d4   WP                  4       8w  d    \        RV RVP                  4        24      hVR8w  d4   W$P                  4       8w  d    \        RV RVP                  4        24      hV# )Nz*Failed to initialize default ProcessGroup.zrank argument z doesn't match pg rank zworld_size argument z doesn't match pg size éÿÿÿÿ)Úrpc_constantsÚDEFAULT_PROCESS_GROUP_TIMEOUTÚdistÚProcessGroupGlooÚAssertionErrorÚrankr   Úsize)Ústorer6   Ú
world_sizeÚprocess_group_timeoutÚgroups   &&&  r   Ú_init_process_groupr<   u   s¢   € ä)×GÑGÐô ×!Ò! %¨zÓQ€Eà‚}ÜÐIÓJÐJà�Œ
˜§¡£Ô-Ü˜^¨D¨6Ð1HÈÏÉËÈÐWÓXÐXØ�bÔ˜z¯Z©Z«\Ô9ÜØ" : ,Ð.EÀeÇjÁjÃlÀ^ÐTó
ð 	
ð €Lr   c                 ó(   € ^RI Hp V! V VVVVR7      # )é   )ÚTensorPipeRpcBackendOptions)r(   r)   Únum_worker_threadsÚ_transportsÚ	_channels)Ú r?   )r(   r)   r@   rA   rB   r*   r?   s   &&&&&, r   Ú1_tensorpipe_construct_rpc_backend_options_handlerrD   ‰   s#   € õ .á&ØØØ-ØØôð r   c                 óæ   aa€ \         P                  P                  4       ;p'       d   VP                  MR o\        ;QJ d     VV3R lV  4       F  '       d   K   R# 	  R# ! VV3R lV  4       4      # )Úcpuc              3   óÀ   <"  € T FS  pVP                   R 8H  ;'       g8    VP                   S8H  ;'       d!    ^ VP                  u;8*  ;'       d    S8  Mu x € KU  	  R# 5i)rF   N)ÚtypeÚindex)Ú.0ÚdÚdevice_countÚdevice_types   & €€r   Ú	<genexpr>Ú/_tensorpipe_validate_devices.<locals>.<genexpr>    sM   øé € ð áˆAð 	
�‰�%‰×RÐR˜AŸF™F kÑ1×QÐQ°a¸1¿7¹7×6QÔ6QÀ\Ô6QÔRÛùs   ƒAžAµAÁAFT)ÚtorchÚacceleratorÚcurrent_acceleratorrH   Úall)ÚdevicesrL   ÚaccrM   s   &f @r   Ú_tensorpipe_validate_devicesrV   œ   sg   ù€ ä!×-Ñ-×AÑAÓCÐC�SÖCˆ�ŠÈ%ð ÷ ‹3õ áó�3Œ3ð Š3ð ˆ3õ áóó ð r   c           	      óà  € \        VP                  4       4       Uu. uF	  pR ^ / . 3NK  	  upp\        P                  ! W`WV3V4       V UUu. uF	  w  p  qWNK  	  pppV UU	Uu/ uF	  w  ry qWV	bK  	  p
p	ppV UUUu/ uF  w  rurµW{bK
  	  ppppV UUUu/ uF	  w  p r]W}bK  	  pppp\	        WŠWÎ4       \        WV4      p\        W2V4      pWó3# u upi u uppi u upp	pi u upppi u upppi )rC   )Úranger7   r3   Úall_gather_objectÚ_validate_device_mapsÚ_create_reverse_mappingÚ_create_device_list)Úmy_nameÚmy_device_countÚmy_device_mapsÚ
my_devicesr;   Ú_Úgatheredr   Ú	all_namesÚcountÚall_device_countsÚmap_Úall_device_mapsrT   Úall_devicesÚreverse_device_mapss   &&&&&           r   Ú._tensorpipe_exchange_and_check_all_device_mapsrj   ¨   s  € ô
 #(¨¯
©
«Ô"5Ó6Ñ"5˜Qˆ"ˆa��R‹Ñ"5Ñ6ð ô 	×ÒØ˜O¸ZÐHÈ%ôñ ,4Ô4©8™-˜$  1 a’©8€IÑ4Ù>FÕG¹hÑ):¨°a¸˜uš¹hÐÒGÙ:BÕC¹(Ñ&6 d¨t�t’z¹(€OÒCÙ<DÕE¹HÑ%8 T¨1¨a�4’=¹H€KÒEä˜)¸ÔUô 2°'ÀoÓVÐÜ$ ZÐATÓU€JØÐ*Ð*ùò 	7ùó 5ùÜGùÜCùÜEs   œCÁCÁ%CÁ>C"ÂC)c                 óP  € V  Fp  pW5,          p\        \        V4      4      \        V4      8w  d   \        R V RV 24      h\        WaV,          4      '       d   KX  \        R V RV RW,           24      h	  V  EF(  pV'       d]   \        W',          P	                  4       4      P                  V 4      '       g)   \        R V RW',          P	                  4        RV  24      hW',          P                  4        EF¥  w  r‰\        \        V	P                  4       4      4      \        V	4      8w  d   \        R V RV RV	 24      hW7,          '       dS   \        V	P	                  4       4      P                  W7,          4      '       g   \        R V RV RV	 R	W7,           24      hMC\        V	P	                  4       W,          4      '       g   \        R V R
V RV	 RW,           24      hVP                  V. 4      '       dU   \        V	P                  4       4      P                  W8,          4      '       g   \        R V RV RV	 R	W8,           24      hEKY  W�9   g   EKb  \        V	P                  4       W,          4      '       d   EK‹  \        R V RV RV	 RW,           24      h	  EK+  	  R# )zNode z" has duplicated devices
devices = z, has devices with invalid indices
devices = z
device count = z@ has invalid target node names in its device maps
device maps = z
node names = z5 has duplicated target devices in its device map for z
device map = z5 has unexpected source devices in its device map for z
devices = z? has source devices with invalid indices in its device map for z5 has unexpected target devices in its device map for z? has target devices with invalid indices in its device map for N)	ÚlenÚsetÚ
ValueErrorrV   ÚkeysÚissubsetÚitemsÚvaluesÚget)
rc   re   rg   rh   Úis_static_groupÚnoderT   Úsource_nodeÚtarget_noderf   s
   &&&&&     r   rZ   rZ   ¾   sû  € ó ˆØÕ#ˆÜŒs�7‹|Ó¤ G£Ô,Ü˜u T FÐ*MÈgÈYÐWÓXÐXÜ+¨GÀtÕ5L×MÔMÜØ˜�vð Ø$˜Ið &"Ø"3Õ"9Ð!:ð<óð ñ ô !ˆç¤3 Õ'C×'HÑ'HÓ'JÓ#K×#TÑ#TØ÷$
ò $
ô Ø˜�}ð %!Ø!0Õ!=×!BÑ!BÓ!DÐ Eð F Ø )˜{ð,óð ð
 "1Õ!=×!CÑ!C×!EÑˆKÜ”3�t—{‘{“}Ó%Ó&¬#¨d«)Ô3Ü Ø˜K˜=ð )-Ø-8¨Mð :$Ø$( 6ð+óð ð
 ×'Ô'Ü˜4Ÿ9™9›;Ó'×0Ñ0°Õ1I×JÒJÜ$Ø ˜}ð -1Ø1<°ð >(Ø(, vð .%Ø%0Õ%=Ð$>ð@óð ð Kô 2Ø—	‘	“Ð.Õ;÷ò ô !Ø˜K˜=ð )-Ø-8¨Mð :$Ø$( 6ð *&Ø&7Õ&DÐ%EðGóð ð �‰˜{¨B×/Ò/Ü˜4Ÿ;™;›=Ó)×2Ñ2°;Õ3K×LÒLÜ$Ø ˜}ð -1Ø1<°ð >(Ø(, vð .%Ø%0Õ%=Ð$>ð@óð ò Mð ×1Ô:VØ—‘“Ð0Õ=÷;õ ;ô !Ø˜K˜=ð )-Ø-8¨Mð :$Ø$( 6ð *&Ø&7Õ&DÐ%EðGóð ôG "Fó !r   c                 ó~  € V '       g§   \        4       pVP                  4        F"  pVP                  VP                  4       4       K$  	  VP                  4        F"  pVP                  VP                  4       4       K$  	  VP	                  \
        P                  ! R 4      4       \        V4      p \        V R R7      p V # )rF   c                 ó   € V P                   # r&   )rI   )rK   s   &r   Ú<lambda>Ú%_create_device_list.<locals>.<lambda>
  s   € °!·'²'r   )Úkey)	rm   rr   Úupdatero   ÚdiscardrP   ÚdeviceÚlistÚsorted)r`   r_   ri   Údevices_setrf   s   &&&  r   r\   r\     sŽ   € ßÜ),«ˆØ"×)Ñ)Ö+ˆDØ×Ñ˜tŸy™y›{Ö+ñ ,à'×.Ñ.Ö0ˆDØ×Ñ˜tŸy™y›{Ö+ñ 1à×ÑœEŸLšL¨Ó/Ô0Ü˜+Ó&ˆ
Ü˜
Ñ(9Ô:€JØÐr   c                 ó¬   € / pV FE  pWV,          9   g   K  W$,          V ,          P                  4        UUu/ uF  w  rVWebK	  	  uppW4&   KG  	  V# u uppi r&   )rq   )r]   rc   rg   ri   ru   ÚkÚvs   &&&    r   r[   r[     s]   € ØGIÐÛˆØ dÕ+Ö+à!0Õ!6°wÕ!?×!EÑ!EÔ!Gô)Ù!G™˜�’Ñ!Gò)ÐÓ%ñ ð
 Ðùó)s   ·Ac                  óÈ  € ^RI Hp  \        V \        P                  ! 4       4      pVP                  4       p\        P                  P                  4       p\        P                  P                  4       '       dU   VP                  '       dC   \        P                  ! \        P                  P                  4       4      pVP                  4        W2P                  VP                  3# )r>   ©ÚTensorPipeAgent)rC   rˆ   r   r   Ú_get_current_rpc_agentÚ_get_backend_optionsrP   rQ   rL   Úis_availablerT   Úget_device_modulerR   ÚinitÚdevice_maps)rˆ   ÚagentÚoptsrL   Úmods        r   Ú_get_device_infosr’     s–   € Ý!ä�¤#×"<Ò"<Ó">Ó?€EØ×%Ñ%Ó'€DÜ×$Ñ$×1Ñ1Ó3€LÜ×Ñ×%Ñ%×'Ò'¨D¯L¯L¨LÜ×%Ò%¤e×&7Ñ&7×&KÑ&KÓ&MÓNˆØ�‰Œ
Ø×)Ñ)¨4¯<©<Ð7Ð7r   c           	      ó˜  € ^RI Hp \        W4      p V P                  4       pVP                  pV P                  4       p/ / / . 3w  rVrxV F–  p	V	P                  p
W£8w  d    \        P                  ! V
\        4      w  r¼pMEV P                  4       p\        P                  P                  4       VP                  VP                  rÜpWµV
&   WÆV
&   W×V
&   VP                  V
4       K˜  	  \!        VVVVRR7       \#        W8V4      pV FE  p
\%        Wz,          Wj,          V4      Wz&   \        P                  ! V
\&        W'V
,          VR3R7       KG  	  R# )r>   r‡   F)rt   T)r-   N)rC   rˆ   r   Úget_worker_infor   Úget_worker_infosr   Úrpc_syncr’   rŠ   rP   rQ   rL   rŽ   rT   ÚappendrZ   r[   r\   r   )r�   rˆ   Úmy_worker_infor]   Úall_worker_infosre   rg   rh   rc   Úworker_infoÚworker_namerL   Ú
device_maprT   r�   ri   s   &               r   Ú#_set_devices_and_reverse_device_mapr�   $  sU  € Ý!ä�Ó(€Eð ×*Ñ*Ó,€NØ×!Ñ!€GØ×-Ñ-Ó/ÐàACÀRÈÈRÀÑ>Ð¨Û'ˆØ!×&Ñ&ˆØÔ!ä03·²ØÔ.ó1Ñ-ˆL¡gð ×-Ñ-Ó/ˆDä×!Ñ!×.Ñ.Ó0Ø× Ñ Ø—‘ð '.ˆLð
 *6˜+Ñ&Ø'1˜Ñ$Ø#*�KÑ Ø×Ñ˜Ö%ñ# (ô& ØØØØØõô 2°'ÀoÓVÐó !ˆä#6ØÕ$ oÕ&BÐDWó$
ˆÑ ô 	�ŠØÜ$Ø ¨kÕ":Ð<OÐQUÐV÷	
ó !r   c                 ó.  € ^RI HpHp \        V \        P
                  4      '       g   \        RV  24      h\        WF4      '       g   \        RV 24      h\        P                  P                  4       p\        V4      pV'       Ed   \        WV4      p	\        VVVP                  VP                  V	4      w  r«\        P                  P                  4       '       dK   V'       dC   \        P                   ! \        P                  P#                  4       4      pVP%                  4        V! V VVVVV
V4      p\&        P(                  ! V4       \&        P*                  ! RVP,                  R7       V	P/                  4       P1                  4        V# \3        WR4      ;_uu_ 4        V! V VVVV/ . 4      p\&        P(                  ! V4        \5        V4       TuuRRR4       #   \6         d    \&        P8                  ! 4        h i ; i  + '       g   i     R# ; i)r>   )rˆ   r?   z`store` must be a c10d::Store. z?`rpc_backend_options` must be a `TensorPipeRpcBackendOptions`. N)ÚtimeoutT)rC   rˆ   r?   Ú
isinstancer3   ÚStoreÚ	TypeErrorrP   rQ   rL   Úboolr<   rj   rŽ   rT   r‹   rŒ   rR   r�   r   Ú_init_rpc_statesÚ_all_gatherr(   ÚbarrierÚwaitr   r�   Ú	ExceptionÚshutdown)r8   r   r6   r9   Úrpc_backend_optionsrˆ   r?   rL   rt   r;   ri   rT   r‘   r�   s   &&&&&         r   Ú _tensorpipe_init_backend_handlerr«   X  sÕ  € ÷ ?ä�eœTŸZ™Z×(Ò(ÜÐ9¸%¸ÐAÓBÐBäÐ)×GÒGÜØMÐNaÐMbÐcó
ð 	
ô ×$Ñ$×1Ñ1Ó3€Lä˜:Ó&€Oç€ô $ E°Ó<ˆä'UØØØ×+Ñ+Ø×'Ñ'Øó(
Ñ$Ðô ×Ñ×)Ñ)×+Ò+·ô ×)Ò)¬%×*;Ñ*;×*OÑ*OÓ*QÓRˆCØ�H‰HŒJñ  ØØØØØØØó
ˆô 	×Ò˜UÔ#ô 	�Š˜Ð&9×&EÑ&EÕFð 	�‰‹×ÑÔàˆô *¨%°t×<Õ<ñ $ØØØØØ#ØØóˆEô × Ò  Ô'ðô 4°EÔ:ð ÷+ =Ò<øô$ ô Ü—’”Øðú÷% =×<Ð<ús$   Æ!%HÇGÇHÇ"H È HÈH	Ú
TENSORPIPE)r   r$   r+   r.   r   r	   )T))Úcollectionsr   Útypingr   rP   Útorch.distributedÚdistributedr3   rC   r   r   r1   Ú_utilsr   r   Ú__all__Ú
namedtupler   r   r    r   r	   r   r   r   r$   ÚDEFAULT_RPC_TIMEOUT_SECÚDEFAULT_INIT_METHODr+   r.   r<   ÚDEFAULT_NUM_WORKER_THREADSrD   rV   rj   rZ   r\   r[   r’   r�   r«   © r   r   Ú<module>r¸      s   ðó Û Ý ã Ý  ç -ß Jò€ð ×%Ò%ØÐ<Ð>TÐUó€ò
&ðÐ ð �iŠi˜m°2Ô6€à)„Ô ä××ÐØ+„KÔò
3ò#%ðP ×5Ñ5Ø×1Ñ1ôò?òð. %×?Ñ?ØØôò&ò+ô,@òF
òò	8ò1
òhVñr ØØ5Ø$ör   