Tensor (dpnp.tensor)
dpnp.tensor provides a reference implementation of the
Python Array API specification.
The implementation uses data-parallel algorithms suitable for execution on
accelerators, such as GPUs.
It also provides the underlying Array API-compliant implementation
used by dpnp.
dpnp.tensor is written using C++ and
SYCL
and oneAPI extensions implemented in
Intel(R) oneAPI DPC++ compiler.
Design and Motivation
The tensor implementation was originally developed as a standalone project and
later integrated into the dpctl
library as dpctl.tensor. It has since been migrated into dpnp,
making dpnp the primary owner and development location of the tensor implementation.
This change simplifies maintenance, reduces cross-project dependencies, and enables independent development and release cycles.
Relationship to dpnp.ndarray
dpnp.ndarray is a high-level array object built on top of
dpnp.tensor.usm_ndarray, storing array data in Unified Shared Memory
(USM) allocated on a SYCL device. Most users interact with
dpnp.ndarray directly; dpnp.tensor.usm_ndarray may appear in error
messages or type signatures when working with device placement or
interoperability.
Relationship to dpctl
The migration of dpctl.tensor into dpnp.tensor does not replace
dpctl itself.
dpctl remains responsible for device and queue management
(dpctl.SyclDevice, dpctl.SyclQueue) as well as USM memory
allocation. dpnp builds on top of these capabilities.
Example
import dpnp
import dpnp.tensor as dpt
# Create a tensor array on the default device
x = dpt.asarray([1.0, 2.0, 3.0])
# dpnp.ndarray wraps the underlying usm_ndarray
a = dpnp.asarray([1.0, 2.0, 3.0])
assert isinstance(a.get_array(), dpt.usm_ndarray)
Note
The dpnp.tensor API documentation will be added in a future release.
The current implementation remains compatible with the original
dpctl.tensor API. For the complete API reference, see the
dpctl 0.21.1 tensor documentation.