DPCTL (Data Parallel Control) is a Python SYCL binding library for heterogeneous computing. It provides Python wrappers for SYCL runtime objects and implements the Python Array API standard for tensor operations.
- License: Apache 2.0 (see
LICENSE) - Copyright: Intel Corporation
Python API → Cython Bindings → C API → SYCL Runtime
dpctl/ _sycl_*.pyx libsyclinterface/
dpctl.tensor → pybind11 → C++ Kernels (libtensor/) → SYCL Runtime
| Directory | AGENTS.md | Purpose |
|---|---|---|
dpctl/ |
dpctl/AGENTS.md | Core SYCL bindings (Device, Queue, Context) |
dpctl/tensor/ |
dpctl/tensor/AGENTS.md | Array API tensor operations |
dpctl/tensor/libtensor/ |
dpctl/tensor/libtensor/AGENTS.md | C++ SYCL kernels |
dpctl/memory/ |
dpctl/memory/AGENTS.md | USM memory management |
dpctl/program/ |
dpctl/program/AGENTS.md | SYCL kernel compilation |
dpctl/utils/ |
dpctl/utils/AGENTS.md | Utility functions |
dpctl/tests/ |
dpctl/tests/AGENTS.md | Test suite |
libsyclinterface/ |
libsyclinterface/AGENTS.md | C API layer |
Configuration files (do not hardcode versions - check these files):
- Python/Cython:
.pre-commit-config.yaml - C/C++:
.clang-format - Linting:
.flake8
All source files require Apache 2.0 header with Intel copyright. Reference existing files for exact format.
import dpctl
import dpctl.tensor as dpt
q = dpctl.SyclQueue("gpu") # Create queue
x = dpt.ones((100, 100), dtype="f4", sycl_queue=q) # Create array
np_array = dpt.asnumpy(x) # Transfer to host- Queue: Execution context binding device + context
- USM: Unified Shared Memory (device/shared/host types)
- Filter string: Device selector syntax
"backend:device_type:num" - Array API: Python standard for array operations (https://data-apis.org/array-api/)