
    R j[                        S SK Jr  S SKJrJr  S SKJrJrJr  S SK	J
r
  S SKrS SKJr  S SKJr  S SKJr  \(       a  S S	KJr  S S
KJr  S SKJr  S/rS\S\
S   4S jrS\S\
S   4S jrSS jrS S jrS!S\S\\   S-  S\4S jjr  S"S\\RB                     S\\"\RF                  -     S\S\$\$\RB                        4S jjr%\" S\S9r& S"S\&S\\"\RF                  -     S\S\$\&   4S jjr'g)#    )OrderedDict)IteratorSequence)castTYPE_CHECKINGTypeVar)TypeIsN)_get_device_index)Module)comm)ScriptMethod)ScriptModule)EnabledProxy	replicatemodulereturnr   c                 H    SS K n[        XR                  R                  5      $ Nr   )	torch.jit
isinstancejitr   r   torchs     l/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/torch/nn/parallel/replicate.py_is_script_moduler      s    fii4455    r   c                 H    SS K n[        XR                  R                  5      $ r   )r   r   _Cr   r   s     r   _is_script_methodr      s    fhh3344r   c                  >    SS K n U R                  R                  5       $ r   )r   r   r   r   s    r   _init_script_moduler"   !   s    99!!##r   c                  J    SS K n U R                  R                  R                  $ r   )torch.jit._stater   _state_enabledr!   s    r   _is_jit_enabledr'   '   s    99$$$r   memoc                 n   S[         S[        [            4S jn[        5       (       d  gUc
  [        5       nUR	                  U 5        [        U 5      (       a/  UR                  U" U 5      5        [        S U" U 5       5       5      $ U R                  5        H  nX1;   a  M
  [        X15      (       a  M    g   g)Nr   r   c                 <    U R                  5       n[        U5        U$ N)modulesnext)r   gens     r   descendant_modules0_replicatable_module.<locals>.descendant_modules6   s    nnS	
r   Tc              3   8   #    U  H  n[        U5      v   M     g 7fr+   )r   ).0
descendants     r   	<genexpr>'_replicatable_module.<locals>.<genexpr>D   s      
<Vjj))<Vs   F)
r   r   r'   setaddr   updateallchildren_replicatable_module)r   r(   r/   childs       r   r;   r;   4   s    6 hv.> 
 |u 	HHV  &v./ 
<Nv<V
 
 	
 " =#E00 # r   tensorsdevicesdetachc                 V   SSK Jn  [        U 5      S:X  a  / $ U(       a  U  Vs/ s HC  n[        U[        R
                  R                  5      (       + =(       a    UR                  5       PME     nn[        R                  " X5      nU H:  n[        U5       H(  u  pU	(       d  M  [        R                  " Xx   5      Xx'   M*     M<     U$ UR                  " U/U Q76 n
[        S[        U
5      [        U 5      5       Vs/ s H  n[        XU[        U 5      -    5      PM     sn$ s  snf s  snf )Nr   )	Broadcast)torch.nn.parallel._functionsrA   lenr   r   nnUninitializedParameter
is_complexr   broadcast_coalesced	enumerateview_as_complexapplyrangelist)r=   r>   r?   rA   tcomplex_maskoutputsdevice_outputsirF   tensor_copiess              r   _broadcast_coalesced_reshaperS   S   s   
 7
7|q	 
 1ehh==>>Q1<<>Q 	 

 **7<%N!*<!8:(-(=(=n>O(PN% "9 &
 !:': 1c-0#g,?
? 1s7|#345?
 	


s   A
D!;#D&T)boundnetworkc           	         [        U 5      (       d  [        S5      eU(       d  / $ U Vs/ s H  n[        US5      PM     nn[        U5      n[	        U R                  5       5      n[        U5       VVs0 s H  u  pgXv_M	     nnn[        XQU5      n	[	        U R                  5       5      n
/ n/ nU
 H?  nUR                  (       a  U(       d  UR                  U5        M.  UR                  U5        MA     [        U5       VVs0 s H  u  pmX_M	     nnn[        U5       VVs0 s H  u  pmX_M	     nnn[        XUS9n[        XSS9n[	        U R                  5       5      nU Vs/ s H  n/ PM     nn0 n[        U5       HP  u  nnUUU'   [        U5       H6  nUR                  5       n[        5       Ul        UU   R                  U5        M8     MR     [        U5       GH  u  nnUR                   R#                  5        Hf  u  nnUc+  [        U5       H  nUU   U   nS UR                   U'   M     M4  UU   n[        U5       H  nUU   U   n[%        UUUU   U   5        M      Mh     UR&                  R#                  5        Hv  u  nnUc+  [        U5       H  nUU   U   nS UR&                  U'   M     M4  X   n[        U5       H/  nUU   U   nU	U   U   n[%        UUU5        UUR                  U'   M1     Mx     UR(                  R#                  5        H  u  nnUc+  [        U5       H  nUU   U   nS UR(                  U'   M     M4  UR                  (       a  U(       d  UnX   n OUnX   n [        U5       H  nUU   U   n[%        UUUU   U    5        M      M     GM     [        U5       Vs/ s H  n[+        [,        UU   S   5      PM     sn$ s  snf s  snnf s  snnf s  snnf s  snf s  snf )NzJCannot replicate network where python modules are children of ScriptModuleT)r?   r   )r;   RuntimeErrorr
   rC   rL   
parametersrH   rS   buffersrequires_gradappendr,   rK   _replicate_for_data_parallelr   _former_parameters_modulesitemssetattr_parameters_buffersr   rT   )!rV   r>   r?   xnum_replicasparamsidxparamparam_indicesparam_copiesrZ   
buffers_rgbuffers_not_rgbufbuffer_indices_rgbuffer_indices_not_rgbuffer_copies_rgbuffer_copies_not_rgr,   _module_copiesmodule_indicesrQ   r   jreplicakeyr<   
module_idx	param_idx
param_copybuffer_copies
buffer_idxs!                                    r   r   r   v   s   
  ((X
 	
 	3:;7a D)7G;w<L'$$&'F2;F2CD2CJCUZ2CMD/HL7??$%G%'J)+NVc"!!#&	  3<J2GH2Ghc2GH6?6OP6O(#SX6OP3JPVW7 7??$%G5<(=WWM(=(*Nw'	6!"v|$A99;G *5G&!##G, % ( w'	6 ////1JC}|,A+A.q1G,0G$$S) - ,E2
|,A+A.q1GGS-*::*FG - 2 !,,224JC}|,A+A.q1G/3G'', - *0	|,A+A.q1G!-a!;J GS*56@G..s3 - 5 --/HC{|,A+A.q1G,0G$$S) - $$V$4M!2!7J$8M!6!;J|,A+A.q1GGS-*::*FG - 05 (T 382EF2EQDM!$Q'(2EFFg < E IP )>t Gs#   O3O OO$!O*0 O/)r   r   )r   r   r+   )F)(collectionsr   collections.abcr   r   typingr   r   r   typing_extensionsr	   r   torch._utilsr
   torch.nn.modulesr   torch.nn.parallelr   torch._Cr   r   r   r$   r   __all__r   objectr   r"   r'   r6   boolr;   TensorintdevicerL   rS   rT   r    r   r   <module>r      sA   # . / / $  * # " %&- -6f 6)? 65f 5)? 5$% s6{T/A T D 
ell#
cELL()
 
 
$u||
	
@ Cv `G`GcELL()`G `G 
!W	`Gr   