U
    Jºcü  ã                   @   sZ   d dl Z d dlmZ d dlmZ e jee ee e jdœdd„Ze jee jdœdd	„ZdS )
é    N)ÚShardMetadata)ÚSequence)ÚtensorÚoffsetsÚsizesÚreturnc                 C   s@   | }t t||ƒƒD ](\}\}}||  |¡k r| |||¡}q|S )zC
    Narrow the tensor according to ``offsets`` and ``sizes``.
    )Ú	enumerateÚzipÚsizeZnarrow)r   r   r   Znarrowed_tensorÚidxÚoffsetr
   © r   úC/tmp/pip-unpacked-wheel-gikjz4vx/torch/distributed/_shard/_utils.pyÚnarrow_tensor_by_index   s    ýr   )r   Úmetadatar   c                 C   s   t | |j|jƒS )z5
    Narrow the tensor according to the metadata
    )r   Zshard_offsetsZshard_sizes)r   r   r   r   r   Únarrow_tensor   s    r   )	ZtorchZ!torch.distributed._shard.metadatar   Útypingr   ZTensorÚintr   r   r   r   r   r   Ú<module>   s    