L i bUddlmZgZeeed<dededefdZdededeee e e e ffd Z y ) )ChunkStorageMetadata__all__shard1shard2returnct|j}t|D]d}|j||j||j|zk\ry|j||j||j|zk\sdyy)zCheck if two shards overlap.FT)lenoffsetsrangesizes)rrndimsis m/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/torch/distributed/checkpoint/resharding.py"_check_shard_metadata_pair_overlaprs~  E 5\ >>! q 1FLLO C C >>! q 1FLLO C C   saved_shard current_shardc6g}tt|j|j|j|jD]T\}\}}}}t ||z||z}|t ||z } ||kDrd} ||z } n||z } d} |j || | | fV|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) enumeratezipr r minmaxappend) rrnarrowsdimsaved_shard_offsetcurrent_shard_offsetsaved_shard_sizecurrent_shard_size min_range_endlengthoffset_for_saved_tensoroffset_for_current_tensors r+_shards_get_overlap_region_wrt_saved_tensorr$sG      ! !             !1 1 #5 5 %9;M!NN  4 4&' #(:=Q(Q %&:=O&O #() % )+Df M 7 > NrN) %torch.distributed.checkpoint.metadatarrliststr__annotations__boolrtupleintr$rrr-seFc *> $,%,6J, %S#s" #$,r