
    Ph`	                     n    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
y)    )ListTuple)ChunkStorageMetadata__all__shard1shard2c                    t        | j                        }t        |      D ]d  }| j                  |   |j                  |   |j                  |   z   k\  r y|j                  |   | j                  |   | j                  |   z   k\  sd y y)zCheck if two shards overlap.FT)lenoffsetsrangesizes)r   r   ndimsis       rC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/distributed/checkpoint/resharding.py"_check_shard_metadata_pair_overlapr   	   sy     E5\>>!q 1FLLO CC>>!q 1FLLO CC	      saved_shardcurrent_shardreturnc                 6   g }t        t        | j                  |j                  | j                  |j                              D ]T  \  }\  }}}}t	        ||z   ||z         }|t        ||      z
  }	||kD  rd}
||z
  }n||z
  }
d}|j                  ||
||	f       V |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 44&'#"%99 & ';=O&O#()%)+DfM	
1
8 Nr   N)typingr   r   %torch.distributed.checkpoint.metadatar   r   str__annotations__r   intr&    r   r   <module>r-      se      c /C Ma .%.6J.	%S#s"
#$.r   