+
    –°³j‡$  ã                   óÔ   € ^ RI t ^ RIHt ^ RIHtHt ^ RIt^ RIHt ^ RI	H
t
 ^ RIHt ^RIHtHt Rt ! R R	]
4      tR
 R lt ! R R4      t]! ]R7      RR R ll4       tR R ltR# )é    N)ÚIterable©ÚAnyÚNoReturn)Ú_State)ÚDistributedDataParallel)Ú_get_registryÚcontractÚ c                   óÎ   a a€ ] tR t^t oV3R lV 3R llt]3V3R lR lltV3R lR ltV3R lR ltV3R	 lR
 lt	V3R lR lt
V3R lR ltV3R lR ltV3R ltRtVtV ;t# )Ú_ReplicateStatec                ó   <€ V ^8„  d   QhRR/# ©é   ÚreturnN© )ÚformatÚ__classdict__s   "€Úh/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/distributed/_composable/replicate.pyÚ__annotate__Ú_ReplicateState.__annotate__   s   ø€ ÷ -ñ -˜$ñ -ó    c                ó  <€ \         SV `  4        \        P                  ! 4       V n        R V n        \        P                  ! 4       V n        V P                  V n        . V n        R V n	        RV n
        / V n        . V n        R# )FN)ÚsuperÚ__init__ÚnnÚParameterListÚmoduleÚhas_initializedÚ_param_listÚ_orig_moduleÚ_param_namesÚ_no_syncÚ
_init_argsÚ_init_kwargsÚ_comm_hook_args)ÚselfÚ	__class__s   &€r   r   Ú_ReplicateState.__init__   sk   ø€ Ü‰ÑÔÜ!#×!1Ò!1Ó!3ˆŒØ%*ˆÔÜ-/×-=Ò-=Ó-?ˆÔð !ŸK™KˆÔØ')ˆÔØ#ˆŒØ26ˆŒØ,.ˆÔØ*,ˆÖr   c          
      ó’   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[ P                  ,          RS[RR/# )r   r   Úignored_modulesÚignored_paramsÚprefixr   N)r   ÚModuleÚsetÚ	ParameterÚstr)r   r   s   "€r   r   r   "   sR   ø€ ÷ ñ á—	‘	ðñ ™RŸY™Y�ðñ ™BŸL™LÕ)ð	ñ
 ðð 
ñr   c                ó†  € \        V4      '       d   R # W9   d   R # V\        8w  d   V R2M\        pVP                  RR7       FG  w  rgWs9  g   K  V P                  P	                  V4       V P
                  P	                  V V 24       KI  	  VP                  4        F  w  r‰V P                  V	VVV V 2R7       K   	  R # )NÚ.F)Úrecurse)r-   )Ú_is_fully_shardedÚ_ROOT_MODULE_PREFIXÚnamed_parametersr    Úappendr"   Únamed_childrenÚ_collect_params)
r'   r   r+   r,   r-   Úrecurse_prefixÚnÚpÚnameÚchild_modules
   &&&&&     r   r:   Ú_ReplicateState._collect_params"   sÍ   € ô ˜V×$Ò$Ùð Ô$Ùð #Ô&9Ô9ˆvˆh�a‰LÔ?Rð 	ð ×+Ñ+°EÐ+Ö:‰DˆAØÖ&Ø× Ñ ×'Ñ'¨Ô*Ø×!Ñ!×(Ñ(¨NÐ+;¸A¸3Ð)?Ö@ñ ;ð
 #)×"7Ñ"7Ö"9ÑˆDØ× Ñ ØØØØ(Ð)¨$¨Ð0ð	 !ö ó #:r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   B   s   ø€ ÷ 
ñ 
˜4ñ 
r   c                óV   a € \         P                  ! R R7      V 3R l4       pV! 4        R# )T)Ú	recursivec                  ó¸   <€ S P                   f   \        hS P                  ! S P                   / S P                  B  S P	                  4        RS n         / S n        R # )Nr   )r$   ÚAssertionErrorÚinitr%   Úregister_comm_hook)r'   s   €r   Ú
_lazy_initÚ-_ReplicateState.lazy_init.<locals>._lazy_initC   sI   ø€ à�‰Ò&Ü$Ð$Ø�IŠI�t—‘Ð<¨$×*;Ñ*;Ò<Ø×#Ñ#Ô%Ø ˆDŒOØ "ˆDÖr   N)ÚtorchÚ_disable_dynamo)r'   rH   s   f r   Ú	lazy_initÚ_ReplicateState.lazy_initB   s'   ø€ Ü	×	Ò	¨Ô	.ô	#ó 
/ð	#ñ 	Žr   c                ób   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RR/# )r   r   r+   r   N)r   r.   r/   )r   r   s   "€r   r   r   N   s:   ø€ ÷ (Kñ (Ká—	‘	ð(Kñ ™RŸY™Y�ð(Kð
 
ñ(Kr   c                ó  € V P                   '       d   R # RV n         Wn        V UUu0 uF  qDP                  4        F  qUkK  	  K  	  pppVP                  4        F5  p\	        V4      '       g   K  VP                  VP                  4       4       K7  	  ^ RIHp V! WR7       V P                  WV4       RV9   di   VR,          eH   VR,          p	\        V	\        P                  4      '       d   V	P                  R8X  d   R VR&   MV	.VR&   MR VR&   VP                  R4       \        V P                  3/ VB V n        \"        P$                  ! V P                   4      \&        P)                  V P                  4      n        R # u uppi )NT)Ú_localize_dtensor)r,   Ú	device_idÚcpuÚ
device_ids)r   r   Ú
parametersÚmodulesr5   ÚupdateÚ%torch.distributed.tensor.parallel.ddprP   r:   Ú
isinstancerJ   ÚdeviceÚtypeÚpopr   r    Ú_ddpÚweakrefÚrefÚ	replicateÚstateÚ_ddp_weakref)
r'   r   r+   ÚkwargsÚmr=   r,   Ú	submodulerP   rQ   s
   &&&,      r   rF   Ú_ReplicateState.initN   s9  € ð ××ÐÙà#ˆÔØŒÙ%4ÔM¡_ ¿l¹l¾n¸š!¹n™!¡_ˆÑMØŸ™Ö)ˆIÜ  ×+Ô+Ø×%Ñ% i×&:Ñ&:Ó&<Ö=ñ *õ 	Lá˜&Õ@Ø×Ñ˜V°nÔEà˜&Ô ð
 �kÕ"Ò.Ø" ;Õ/�	ä˜i¬¯©×6Ò6¸9¿>¹>ÈUÔ;Rà+/�F˜<Ò(ð -6¨;�F˜<Ò(à'+��|Ñ$Ø�J‰J�{Ô#ä+¨D×,<Ñ,<ÑGÀÑGˆŒ	ä4;·K²KÀÇ	Á	Ó4JŒ	�‰˜Ÿ™Ó$Ö1ùó; Ns   § Fc                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   x   s   ø€ ÷ %ñ % Dñ %r   c                óœ   € V P                    F!  w  rV P                  P                  ! V/ VB  K#  	  V P                   P                  4        R # ©N)r&   r\   rG   Úclear)r'   Ú	comm_argsÚcomm_kwargss   &  r   rG   Ú"_ReplicateState.register_comm_hookx   s>   € Ø&*×&:Ô&:Ñ"ˆIØ�I‰I×(Ò(¨)ÐC°{ÔCñ ';à×Ñ×"Ñ"Ö$r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   }   s   ø€ ÷ #ñ #°4ñ #r   c                ó   € Wn         W n        R # rh   )r$   r%   ©r'   Úargsrb   s   &*,r   Úrecord_init_argsÚ _ReplicateState.record_init_args}   s   € ØŒØ"Ör   c                óp   <€ V ^8„  d   QhRS[ P                  RS[S[R3,          RS[S[S[3,          RS[/# )r   r   rp   .rb   r   )r   r.   Útupler   Údictr1   )r   r   s   "€r   r   r   �   sA   ø€ ÷ 7ñ 7Ù—i‘ið7Ù',©S°#¨X¥ð7Ù@DÁSÉ#ÀXÅð7á	ñ7r   c                ó  € V P                   '       g   V P                  '       d   V P                  4        V P                  '       * V P                  n        V P                  \        n        V P                  P                  ! V/ VB # rh   )	r$   r%   rL   r#   r\   Úrequire_backward_grad_syncr   Ú_active_ddp_moduleÚ_pre_forward)r'   r   rp   rb   s   &&&&r   Úforward_pre_hookÚ _ReplicateState.forward_pre_hook�   s\   € ð �?�?ˆ?˜d×/×/Ð/Ø�N‰NÔØ37·=±=Ô/@ˆ�	‰	Ô,Ø59·Y±YÔÔ2Ø�y‰y×%Ò% tÐ6¨vÑ6Ð6r   c                ó’   <€ V ^8„  d   QhRS[ P                  RS[S[P                  ,          RS[P                  RS[P                  /# )r   r   ÚinputÚoutputr   )r   r.   rt   rJ   ÚTensor)r   r   s   "€r   r   r   Š   sH   ø€ ÷ /ñ /á—	‘	ð/ñ ‘U—\‘\Õ"ð/ñ —‘ð	/ñ
 
�‰ñ/r   c                óN   € R \         n        V P                  P                  V4      # rh   )r   rx   r\   Ú_post_forward)r'   r   r}   r~   s   &&&&r   Úforward_post_hookÚ!_ReplicateState.forward_post_hookŠ   s"   € ð 6:ÔÔ2Ø�y‰y×&Ñ& vÓ.Ð.r   c                ó:   <€ V ^8„  d   Qh/ S[ P                  ;R&   # )r   ra   )r]   r^   )r   r   s   "€r   r   r      s   ø‡ ‚ Ù—+‘+Ñò r   )
r&   r\   r$   r%   r#   r!   r    r"   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r6   r:   rL   rF   rG   rq   rz   r‚   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r(   r   s   @@r   r   r      sf   ù‡ € ÷-ó -ð& *÷ò ÷@
ð 
÷(Kð (K÷T%ð %÷
#ð #÷7ð 7÷/ð /÷s … r   r   c                ó<   € V ^8„  d   QhR\         R\         R\        /# )r   rp   rb   r   r   )r   s   "r   r   r   ”   s!   € ÷ ñ ¤#ð ´ð ¼ñ r   c                  ó   € \        R 4      h)zGDDP does not support deepcopy. Please use state dict for serialization.)rE   )rp   rb   s   *,r   Úunimplemented_deepcopyr�   ”   s   € Ü
ØQóð r   c                   óJ   a € ] tR t^›t o R tV 3R lR ltV 3R lR ltRtV tR# )ÚDDPc                óT   € V P                   ^,          pVP                  ! V.VO5/ VB # )z‰
Override ``__new__`` to remove the DDP class and directly construct
the original class for cases like indexing into a container module.
)Ú__mro__Ú__new__)Úclsrp   rb   Úorig_clss   &*, r   r”   ÚDDP.__new__œ   s,   € ð —;‘;˜q•>ˆØ×Ò Ð:¨4Ò:°6Ñ:Ð:r   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Úrequires_gradient_syncr   N)Úbool)r   r   s   "€r   r   ÚDDP.__annotate__¦   s   ø€ ÷ 	Dñ 	DÁð 	DÈ$ñ 	Dr   c                óD   € V'       * \         P                  V 4      n        R# )zá
Sets if the module should sync gradients. This can be used to implement
gradient accumulation without communication.

Args:
    requires_gradient_sync (bool): Whether to reduce gradients for the
        module's parameters.
N)r_   r`   r#   )r'   r™   s   &&r   Úset_requires_gradient_syncÚDDP.set_requires_gradient_sync¦   s   € ð .DÔ)CŒ	�‰˜ÓÖ&r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r›   ±   s   ø€ ÷ Eñ E°Tñ Er   c                ód   € \         P                  V 4      P                  P                  W34       R # rh   )r_   r`   r&   r8   ro   s   &*,r   rG   ÚDDP.register_comm_hook±   s!   € Ü�‰˜Ó×-Ñ-×4Ñ4°d°^ÖDr   r   N)	r…   r†   r‡   rˆ   r”   r�   rG   rŠ   r‹   )r   s   @r   r‘   r‘   ›   s"   ø‡ € ò;÷	Dð 	D÷Eö Er   r‘   )Ú	state_clsc                ó°   € V ^8„  d   QhR\         P                  R\        \        P                   P                  ,          R,          R\         P                  /# )r   r   r+   Nr   )r   r.   r   rJ   )r   s   "r   r   r   ¶   sE   € ÷ Cñ CÜ�I‰IðCäœeŸh™hŸo™oÕ.°Õ5ðCô ‡Y�Yñ	Cr   c                ó"  € \         P                  P                  R4       RV9   dL   \        VR,          \        \         P
                  34      '       g   \        R\        VR,          4       24      h\        V 4      '       d   \        R4      hVf   / pM\        V4      p\        P                  V 4      pV P                  VP                  RR7       VP                  R4      pVeA   VP                  4       pWT8w  d+   ^ RIHpHp V P                  V4       V P'                  V4       V P'                  VP(                  4       VP*                  ! W3/ VB  V P,                  pR	\.        /p	\        R
VP0                   2\2        V3V	4      p
W n        V # )zÔReplicates a module

Args:
    module (torch.nn.Module): module to replicate

Example::
    >>> # xdoctest: +REQUIRES(module:torch._C._distributed_c10d)
    >>> module = nn.Linear(3, 3)
    >>> replicate(module)
ztorch.distributed.replicaterQ   z6Expected device_id to be int or torch.device, but got zGCannot apply `replicate()` on a Module already managed by `fully_shard`T)Úwith_kwargsÚdevice_mesh)rP   Ú_reconstruct_dtensorÚ__deepcopy__r‘   )rJ   Ú_CÚ_log_api_usage_oncerX   ÚintrY   ÚRuntimeErrorrZ   r5   r/   r_   r`   Úregister_forward_pre_hookrz   ÚgetÚ_get_root_meshrW   rP   r§   Úregister_forward_hookr‚   rq   r(   r�   r…   r‘   )r   r+   rb   r`   r¦   Ú	root_meshrP   r§   r•   ÚdctÚnew_clss   &&,        r   r_   r_   µ   st  € ô  
‡H�H× Ñ Ð!>Ô?ð �fÔÜ˜& Õ-´´U·\±\Ð/B×CÒCÜðÜ  {Õ 3Ó4Ð5ð7óð ô
 ˜× Ò ÜØUó
ð 	
ð ÒØ‰ä˜oÓ.ˆä�O‰O˜FÓ#€EØ
×$Ñ$ U×%;Ñ%;ÈÐ$ÔNØ—*‘*˜]Ó+€KØÒØ×.Ñ.Ó0ˆ	ð Ô#÷ð
 ×,Ñ,Ð-AÔBØ×(Ñ(Ð):Ô;à
× Ñ  ×!8Ñ!8Ô9à	×Ò˜6Ñ=°fÒ=ð ×
Ñ
€CØÔ1Ð
2€CÜ�S˜Ÿ™˜Ð'¬#¨s¨°SÓ9€GØÔØ€Mr   c                óD   € V ^8„  d   QhR\         P                  R\        /# )r   r   r   )r   r.   rš   )r   s   "r   r   r   ü   s   € ÷ %ñ %œbŸi™ið %¬Dñ %r   c                ó.   € \        V 4      pVf   R# RV9   # )z+Check if module is marked with fully_shard.FÚfully_shard)r	   )r   Úregistrys   & r   r5   r5   ü   s    € ä˜VÓ$€HØÒÙØ˜HÑ$Ð$r   rh   )r]   Úcollections.abcr   Útypingr   r   rJ   Útorch.nnr   Ú#torch.distributed._composable_stater   Útorch.nn.parallelr   r
   r	   r6   r   r�   r‘   r_   r5   r   r   r   Ú<module>r½      sf   ðã Ý $ß  ã Ý Ý 6Ý 5ç -ð Ð ô@/�fô @/õF÷Eñ Eñ4 
�OÔ$öCó %ðC÷L%r   