
    Χg                        d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
mZmZ d dlZd dlmZ d dlmZ d dlmZ e
rd dlmZ d dlmZ d	gZd
edefdZd
edefdZddZddZdd
edee	e                  defdZ	 d deej                 deee ej!        f                  dedeeej                          fdZ" ede          Z#	 d de#deee ej!        f                  dedee#         fdZ$dS )!    )OrderedDict)
castDictIteratorListOptionalSequenceSetTYPE_CHECKINGTypeVarUnionN_get_device_index)Module)comm)ScriptModule)EnabledProxy	replicatemodulereturnc                 >    dd l }t          | |j        j                  S Nr   )	torch.jit
isinstancejitr   r   torchs     W/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/nn/parallel/replicate.py_is_script_moduler      s#    fei4555    c                 >    dd l }t          | |j        j                  S r   )r   r   _CScriptMethodr   s     r   _is_script_methodr$   #   s#    feh3444r    r   c                  <    dd l } | j                                        S r   )r   r   r   r   s    r   _init_script_moduler'   )   s"    9!!###r    r   c                  ,    dd l } | j        j        j        S r   )torch.jit._stater   _state_enabledr&   s    r   _is_jit_enabledr,   /   s    9$$r    memoc                    dt           dt          t                    fd}t                      sdS |t                      }|                    |            t          |           r@|                     ||                      t          d  ||           D                       S |                                 D ]}||v rt          ||          s dS dS )Nr   r   c                 L    |                                  }t          |           |S N)modulesnext)r   gens     r   descendant_modulesz0_replicatable_module.<locals>.descendant_modules>   s!    nnS			
r    Tc              3   4   K   | ]}t          |          V  d S r0   )r   ).0
descendants     r   	<genexpr>z'_replicatable_module.<locals>.<genexpr>L   s<       
 
.8j))
 
 
 
 
 
r    F)
r   r   r,   setaddr   updateallchildren_replicatable_module)r   r-   r4   childs       r   r>   r>   <   s   6 hv.>    
  t|uu 	HHV   
&&v../// 
 
<N<Nv<V<V
 
 
 
 
 	
 ""   D==#E400 	55	 4r    Ftensorsdevicesdetachc                      ddl m} |rt          j         |          S t	                     dk    rF |j        |g R   fdt          dt	                    t	                               D             S g S )Nr   )	Broadcastc                 D    g | ]}||t                    z            S  )len)r6   itensor_copiesr@   s     r   
<listcomp>z0_broadcast_coalesced_reshape.<locals>.<listcomp>h   s>        a!c'll"223  r    )torch.nn.parallel._functionsrD   r   broadcast_coalescedrG   applyrange)r@   rA   rB   rD   rI   s   `   @r   _broadcast_coalesced_reshaperO   [   s    
 766666 '999 w<<!+IOG>g>>>M    q#m"4"4c'llCC   
 Ir    T)boundnetworkc           	         t          |           st          d          |sg S d |D             }t          |          }t          |                                           }d t          |          D             }t          |||          }t          |                                           }g }g }	|D ]6}
|
j        r|s|	                    |
           !|		                    |
           7d t          |          D             }d t          |	          D             }t          |||          }t          |	|d          }t          | 
                                          }d |D             i }t          |          D ]^\  }}|||<   t          |          D ]D}|                                }t                      |_        |         	                    |           E_t          |          D ]\  }}|j                                        D ]w\  }}|+t          |          D ]}|         |         }d |j        |<   2||         }t          |          D ]-}|         |         }t#          |||         |                    .x|j                                        D ]\  }}|+t          |          D ]}|         |         }d |j        |<   2||         }t          |          D ]9}|         |         }||         |         }t#          |||           ||j        |<   :|j                                        D ]\  }}
|
+t          |          D ]}|         |         }d |j        |<   2|
j        r|s|}||
         }n
|}||
         }t          |          D ]-}|         |         }t#          ||||         |                    .݈fd	t          |          D             S )
NzKCannot replicate network where python modules are childrens of ScriptModulec                 .    g | ]}t          |d           S )Tr   )r6   xs     r   rJ   zreplicate.<locals>.<listcomp>   s#    ;;;a D));;;r    c                     i | ]\  }}||	S rF   rF   )r6   idxparams      r   
<dictcomp>zreplicate.<locals>.<dictcomp>   s    DDDJCUCDDDr    c                     i | ]\  }}||	S rF   rF   r6   rW   bufs      r   rY   zreplicate.<locals>.<dictcomp>   s    HHHhc3cHHHr    c                     i | ]\  }}||	S rF   rF   r[   s      r   rY   zreplicate.<locals>.<dictcomp>   s    PPP(#sS#PPPr    )rB   Tc                     g | ]}g S rF   rF   )r6   _s     r   rJ   zreplicate.<locals>.<listcomp>   s    (=(=(=(=(=(=r    c                 R    g | ]#}t          t          |         d                    $S )r   )r   rP   )r6   jmodule_copiess     r   rJ   zreplicate.<locals>.<listcomp>   s-    FFFQDM!$Q'((FFFr    )r>   RuntimeErrorrG   list
parameters	enumeraterO   buffersrequires_gradappendr1   rN   _replicate_for_data_parallelr   _former_parameters_modulesitemssetattr_parameters_buffers)rR   rA   rB   num_replicasparamsparam_indicesparam_copiesrg   
buffers_rgbuffers_not_rgr\   buffer_indices_rgbuffer_indices_not_rgbuffer_copies_rgbuffer_copies_not_rgr1   module_indicesrH   r   ra   replicakeyr?   
module_idxrX   	param_idx
param_copybuffer_copies
buffer_idxrb   s                                @r   r   r   s   s   
  (( 
(
 
 	

  	;;7;;;Gw<<L'$$&&''FDD)F2C2CDDDM/HHL7??$$%%G%'J)+N ' ' 	'V 	'c""""!!#&&&&HH)J2G2GHHHPPi6O6OPPP3JPVWWW7   7??$$%%G(=(=W(=(=(=M(*Nw'' - -	6!"v|$$ 		- 		-A99;;G *5G&!##G,,,,		- w'' (H (H	6 ///11 		H 		HJC}|,, 1 1A+A.q1G,0G$S))1 ,E2
|,, H HA+A.q1GGS-*::*FGGGGH !,2244 	A 	AJC}|,, 4 4A+A.q1G/3G',,4 *%0	|,, A AA+A.q1G!-a!;J GS*5556@G.s33A --// 	H 	HHC{|,, 1 1A+A.q1G,0G$S))1 $ <V <$4M!23!7JJ$8M!6s!;J|,, H HA+A.q1GGS-*::*FGGGGH	H  GFFF%2E2EFFFFr    )r   r   )r   r   r0   )F)%collectionsr   typingr   r   r   r   r   r	   r
   r   r   r   r   torch._utilsr   torch.nn.modulesr   torch.nn.parallelr   r   r   r)   r   __all__boolr   r$   r'   r,   r>   TensorintdevicerO   rP   r   rF   r    r   <module>r      s   # # # # # #                         * * * * * * # # # # # # " " " " " "  .&&&&&&------ -6f 6 6 6 6 65f 5 5 5 5 5$ $ $ $% % % %  xF/D PT    D  el#eC-./  
$u|
	   * GCv aG aGaGeC-./aG aG 
!W	aG aG aG aG aG aGr    