Python Data Parallel Control (dpctl)
- 0 Collaborators
Dpctl provides Python SYCL bindings and SYCL-based Python Array API library. The dpctl simplifies building Python native extensions that use oneAPI DPC++ to implement portable data-parallel functions, as well as implements such extensions for its array library. ...learn more
Project status: Published/In Market
Intel Technologies
DPC++
Overview / Usage
Dpctl supports array computations on Intel GPU devices and Intel CPU devices. It can be compiled to target NVidia(R) GPUs and AMD GPUs as well.
Dpctl enables Python package authors to build data-parallel extensions using oneAPI DPC++, and build Python interfaces to SYCL functions. It provides Python bindings to SYCL runtime objects allowing user to discover available devices, select a device of interest, and create SYCL queue to target offload to a specific device. Dpctl exposes Unified Shared Memory allocation to Python, and provides N-dimensional strided array object based on USM. Dpctl provides reference implementation of library to manipulate such array object that complies with 2023.12 revision of Python Array API specification.
Methodology / Approach
Dpctl is written in layers. It provides C-API library to select DPC runtime functionality, libDPCTLSyclInterface, which supports numba_dpex sister project to allow it to call DPC functions from LLVM.
Dpctl builds Python API for core DPC runtime object, generating C-API for such Python objects. Implementation of array library functions is done in C SYCL using pybind11 bindings which leverage generated C-API for dpctl Python objects to support seamless integration between dpctl objects and C++ sycl objects.
Technologies Used
Python, Cython, pybind11, CMake, DPC++