Rate this Page

torch.from_dlpack#

torch.from_dlpack(ext_tensor)Tensor[source]#

Converts a tensor from an external library into atorch.Tensor.

The returned PyTorch tensor will share the memory with the input tensor(which may have come from another library). Note that in-place operationswill therefore also affect the data of the input tensor. This may lead tounexpected issues (e.g., other libraries may have read-only flags orimmutable data structures), so the user should only do this if they knowfor sure that this is fine.

Parameters:
  • ext_tensor (object with__dlpack__ attribute, or a DLPack capsule) –

    The tensor or DLPack capsule to convert.

    Ifext_tensor is a tensor (or ndarray) object, it must supportthe__dlpack__ protocol (i.e., have aext_tensor.__dlpack__method). Otherwiseext_tensor may be a DLPack capsule, which isan opaquePyCapsule instance, typically produced by ato_dlpack function or method.

  • device (torch.device orstr orNone) – An optional PyTorch devicespecifying where to place the new tensor. If None (default), thenew tensor will be on the same device asext_tensor.

  • copy (bool orNone) – An optional boolean indicating whether or not to copyself. If None, PyTorch will copy only if necessary.

Return type:

Tensor

Examples:

>>>importtorch.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>>>t2tensor([-1, -1,  2,  3])>>>ttensor([-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)>>>t3tensor([-1, -1,  2,  3])>>>t3[0]=-9# now we're sharing memory between 3 tensors>>>t3tensor([-9, -1,  2,  3])>>>t2tensor([-9, -1,  2,  3])>>>ttensor([-9, -1,  2,  3])