o
    "j                     @   s   d dl Z d dlmZmZmZ d dlZd dlZd dlm	Z	 deej
eee  f defddZdee d	e	jd
ee deee ee f fddZdd ZdS )    N)ListTupleUnion)coremeshrankc                 C   sR   t | } | |k }|jd dv sJ d|j |jd dkr'|d  S d S )Nr   )r      zrand_coordinator.shape: )paddleZ	to_tensorZnonzeroshapetolist)r   r   Zrand_coordinator r   d/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddle/distributed/checkpoint/utils.pyget_coordinator   s   

r   global_shapeprocess_meshdims_mappingreturnc           
   	   C   s   t |j|j}tj |vrdS t|tj }t		| }dd | D }t
|D ]=\}}|dkr4q+| | |j|  dksQJ d| d| |  d|j|  | | |j|  ||< || }	|	||  ||< q+t|t|fS )	N)NNc                 S   s   g | ]}d qS )r   r   ).0_r   r   r   
<listcomp>0   s    z9compute_local_shape_and_global_offset.<locals>.<listcomp>r   zi:z, global_shape[i]:z, process_mesh.shape[dim]:)nparrayZprocess_idsZreshaper
   r	   distributedZget_rankr   copy	enumeratetuple)
r   r   r   r   Zrank_coordinatorZlocal_shapeZglobal_offsetidimZ	chunk_idxr   r   r   %compute_local_shape_and_global_offset%   s    
r   c                 C   s   | S )Nr   )Z
state_dictr   r   r   flatten_state_dict?   s   r    )r   typingr   r   r   numpyr   r	   Zpaddle.frameworkr   r   intr   ZProcessMeshr   r    r   r   r   r   <module>   s    $
