jax.dlpack.from_dlpack#

jax.dlpack.from_dlpack(external_array, device=None, copy=None)[源代码]#

返回 DLPack 张量的 Array 表示。

如果未请求设备传输或复制,则返回的 Arrayexternal_array 共享内存。

参数:
  • external_array – 具有 __dlpack__` ``__dlpack_device__ 方法的数组对象。

  • device (xla_client.Device | Sharding | None | None) – (可选)Device,表示返回数组应放置的设备。如果给定,则结果将提交到设备。如果未指定,则结果数组将解包到其来源设备上。将 device 设置为与 external_array 的来源不同的设备将需要复制,这意味着 copy 必须设置为 TrueNone

  • copy (bool | None | None) – (可选)布尔值,控制是否执行复制。如果 copy=True,则始终执行复制,即使解包到同一设备上也是如此。如果 copy=False,则永不执行复制,并且在必要时会引发错误。当 copy=None 时,如果设备传输需要,则可以执行复制。

返回:

一个 jax.Array

注意

虽然 JAX 数组始终是不可变的,但 dlpack 缓冲区无法标记为不可变,并且 JAX 外部的进程可能会就地修改它们。如果 jax Array 是从 dlpack 缓冲区构建的,并且缓冲区稍后被就地修改,则在使用关联的 JAX 数组时可能会导致未定义的行为。