torch.utils.dlpack¶
- torch.utils.dlpack.from_dlpack(ext_tensor) Tensor[source]¶
将外部库中的张量转换为
torch.Tensor。返回的 PyTorch 张量将与输入张量共享内存(该输入张量可能来自其他库)。请注意,因此原地操作也会影响输入张量的数据。这可能会导致意外的问题(例如,其他库可能具有只读标志或不可变的数据结构),所以用户只有在确定没有问题的情况下才应这样做。
- Parameters
ext_tensor (具有
__dlpack__个属性的对象,或一个 DLPack capsule) –要转换的张量或 DLPack capsule。
如果
ext_tensor是一个张量(或 ndarray)对象,它必须支持__dlpack__协议(即具有ext_tensor.__dlpack__方法)。否则ext_tensor可能是一个 DLPack capsule,这是一个不透明的PyCapsule实例,通常由to_dlpack函数或方法生成。- Return type
Examples:
>>> import torch.utils.dlpack >>> t = torch.arange(4) # Convert a tensor directly (supported in PyTorch >= 1.10) >>> t2 = torch.from_dlpack(t) >>> t2[:2] = -1 # show that memory is shared >>> t2 tensor([-1, -1, 2, 3]) >>> t tensor([-1, -1, 2, 3]) # The old-style DLPack usage, with an intermediate capsule object >>> capsule = torch.utils.dlpack.to_dlpack(t) >>> capsule <capsule object "dltensor" at ...> >>> t3 = torch.from_dlpack(capsule) >>> t3 tensor([-1, -1, 2, 3]) >>> t3[0] = -9 # now we're sharing memory between 3 tensors >>> t3 tensor([-9, -1, 2, 3]) >>> t2 tensor([-9, -1, 2, 3]) >>> t tensor([-9, -1, 2, 3])
- torch.utils.dlpack.to_dlpack(tensor) PyCapsule¶
返回一个不透明的对象(一个“DLPack capsule”),表示张量。
注意
to_dlpack是一个遗留的 DLPack 接口。它返回的胶囊 在 Python 中除了作为from_dlpack的输入外,不能用于其他任何用途。 DLPack 更符合习惯的用法是直接在张量对象上调用from_dlpack- 当该对象具有__dlpack__方法时, 这将生效,而 PyTorch 和大多数其他库现在确实都提供了这个方法。警告
每个胶囊生成时仅调用
from_dlpack一次。 当胶囊被多次消耗时的行为是未定义的。- Parameters
tensor – 要导出的张量
DLPack capsule 共享张量的内存。