Ë
    ‡\;j	  ã                   óÊ   — 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„Zdee   de	j                  d	ee   d
eee   ee   f   fd„Zd„ Zy)é    N)ÚListÚTupleÚUnion)ÚcoreÚmeshÚrankc                 óê   — t        j                  | «      } | |k(  j                  «       }|j                  d   dv sJ d|j                  › �«       ‚|j                  d   dkD  r|d   j	                  «       S d S )Nr   )r   é   zrand_coordinator.shape: )ÚpaddleÚ	to_tensorÚnonzeroÚshapeÚtolist)r   r   Úrand_coordinators      úlG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\paddle/distributed/checkpoint/utils.pyÚget_coordinatorr      s“   € Ü×Ñ˜DÓ!€DØ ™×-Ñ-Ó/ÐØ×!Ñ! !Ñ$ð )ñ ð ;ð 
"Ð"2×"8Ñ"8Ð!9Ð:ó;ð ð
 )9×(>Ñ(>¸qÑ(AÀAÒ(EÐ˜Ñ×"Ñ"Ó$ðØKOðó    Úglobal_shapeÚprocess_meshÚdims_mappingÚreturnc           	      ót  — t        j                  |j                  «      j                  |j                  «      }t
        j                  j                  «       |vryt        |t
        j                  j                  «       «      }t        j                  | «      }| D �cg c]  }d‘Œ }}t        |«      D ]k  \  }}	|	dk(  rŒ| |   |j                  |	   z  dk(  s J d|› d| |   › d|j                  |	   › �«       ‚| |   |j                  |	   z  ||<   ||	   }
|
||   z  ||<   Œm t        |«      t        |«      fS c c}w )N)NNr   éÿÿÿÿzi:z, global_shape[i]:z, process_mesh.shape[dim]:)ÚnpÚarrayÚprocess_idsÚreshaper   r   ÚdistributedÚget_rankr   ÚcopyÚ	enumerateÚtuple)r   r   r   r   Úrank_coordinatorÚlocal_shapeÚ_Úglobal_offsetÚiÚdimÚ	chunk_idxs              r   Ú%compute_local_shape_and_global_offsetr*   %   sL  € ô
 �8‰8�L×,Ñ,Ó-×5Ñ5°l×6HÑ6HÓI€Dä×Ñ×"Ñ"Ó$¨DÑ0ØÜ& t¬V×-?Ñ-?×-HÑ-HÓ-JÓKÐÜ—)‘)˜LÓ)€KÙ ,Ó-¡˜1’Q €MÐ-Ü˜LÖ)‰ˆˆ3Ø�"Š9Øð ˜Q‘ ,×"4Ñ"4°SÑ"9Ñ9¸QÒ>ðnà�A�3Ð(¨°a©Ð(9Ð9SÐT`×TfÑTfÐgjÑTkÐSlÐmónØ>à)¨!™_°×0BÑ0BÀ3Ñ0GÑGˆK˜‰NØ(¨Ñ-ˆIØ(¨;°q©>Ñ9ˆM˜!Òð *ô �Óœu ]Ó3Ð3Ð3ùò .s   Â	D5c                 ó   — | S )N© )Ú
state_dicts    r   Úflatten_state_dictr.   ?   s   € àÐr   )r    Útypingr   r   r   Únumpyr   r   Úpaddle.frameworkr   r   Úintr   ÚProcessMeshr*   r.   r,   r   r   Ú<module>r4      s�   ðó  ß %Ñ %ã ã Ý !ð	˜% §¡¨$¨t°C©y©/Ð 9Ñ:ð 	À#ó 	ð4Ø�s‘)ð4à×"Ñ"ð4ð �s‘)ð4ð ˆ5�‰:�u˜S‘zÐ!Ñ"ó	4ó4r   