
    קg	                         U d dl mZmZ d dlmZ g Zee         ed<   dedefdZdeded	eee	e	e	e	f                  fd
Z
dS )    )ListTuple)ChunkStorageMetadata__all__shard1shard2c                    t          | j                  }t          |          D ]\}| j        |         |j        |         |j        |         z   k    r dS |j        |         | j        |         | j        |         z   k    r dS ]dS )zCheck if two shards overlap.FT)lenoffsetsrangesizes)r   r   ndimsis       c/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/distributed/checkpoint/resharding.py"_check_shard_metadata_pair_overlapr   
   s     E5\\  >!q 1FLO CCC55>!q 1FLO CCC55 D 4    saved_shardcurrent_shardreturnc                 4   g }t          t          | j        |j        | j        |j                            D ]a\  }\  }}}}t	          ||z   ||z             }|t          ||          z
  }	||k    rd}
||z
  }n||z
  }
d}|                    ||
||	f           b|S )a[  
    Return the overlapping region between saved_shard and current_shard.

    There returned list has the same number of elements as the tensor's dimension.
    For each element, we produce a tuple with the following contents:
        (dimension, `saved_shard` offset, `current_shard` offset, length)

    Offsets are relative to each shard.
    r   )	enumeratezipr   r   minmaxappend)r   r   narrowsdimsaved_shard_offsetcurrent_shard_offsetsaved_shard_sizecurrent_shard_sizemin_range_endlengthoffset_for_saved_tensoroffset_for_current_tensors               r   +_shards_get_overlap_region_wrt_saved_tensorr&      s     G 
!		
 	

 

 
 	  !11 #55
 

 %9;M!N!NN 444&'#(:=Q(Q%%&:=O&O#()%)+DfM	
 	
 	
 	
 Nr   N)typingr   r   %torch.distributed.checkpoint.metadatar   r   str__annotations__r   intr&    r   r   <module>r-      s             F F F F F F c    *>   $,%,6J,	%S#s"
#$, , , , , ,r   