§
    Ÿ²Åj^	  ã                   ó‚   — 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       úXC:\Projects\Historical\venv\Lib\site-packages\torch/distributed/checkpoint/resharding.pyÚ"_check_shard_metadata_pair_overlapr   
   s‹   € õ �”ÑÔ€EÝ�5‰\Œ\ð ð ˆØŒ>˜!Ô ¤¨qÔ 1°F´LÀ´OÑ CÒCÐCØ�5�5ØŒ>˜!Ô ¤¨qÔ 1°F´LÀ´OÑ CÒCÐCØ�5�5ð 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Ð#Ø()Ð%à�ŠØÐ)Ð+DÀfÐ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   