About dpctl
dpctl (data parallel control) is a lightweight Python package exposing a
subset of the Intel(R) oneAPI DPC++ runtime classes
that is distributed as part of Intel(R) Distribution for Python* and
is included in Intel(R) oneAPI Base ToolKit.
dpctl lets Python users query SYCL platforms, discover and represent SYCL devices, and construct SYCL queues to control data-parallel code execution on Intel(R) XPUs from Python.
dpctl features classes representing SYCL unified shared memory
allocations as well as higher-level objects such as dpctl.tensor.usm_ndarray on top of USM allocations.
dpctl assists authors of Python native extensions written in C,
Cython, or pybind11 to use its dpctl.SyclQueue object to indicate the offload
target as well as objects in dpctl.memory and dpctl.tensor submodules to
represent USM allocations that are accessible from within data-parallel code executed
on the target queue.
dpctl.tensor submodule provides an array container representing an array in a
strided layout on top of a USM allocation. The submodule provides an array-API
conforming oneAPI DPC++ powered library to manipulate the array container.
Requirements
- Install Conda
- Install Intel oneAPI
- Set environment variable
ONEAPI_ROOT- Windows:
C:\Program Files (x86)\Intel\oneAPI\ - Linux:
/opt/intel/oneapi
- Windows:
- Set environment variable
- Install OpenCL HD graphics drivers
Build and Install Conda Package
- Create and activate conda build environment
conda create -n build-env conda-build
conda activate build-env
- Set environment variable
ONEAPI_ROOTand build conda package
export ONEAPI_ROOT=/opt/intel/oneapi
conda build conda-recipe -c ${ONEAPI_ROOT}/conda_channel
On Windows to cope with long file names
use croot with short folder path:
set "ONEAPI_ROOT=C:\Program Files (x86)\Intel\oneAPI\"
conda build --croot=C:/tmp conda-recipe -c "%ONEAPI_ROOT%\conda_channel"
:warning: You could face issues with conda-build=3.20: Use conda-build=3.18!
- Install conda package
conda install dpctl
Build and Install with setuptools
dpctl relies on DPC++ runtime. With Intel oneAPI installed you should activate it.
setup.py requires environment variable ONEAPI_ROOT and following packages
installed:
cythonnumpycmake- for building C APIninja- only on Windows
You need DPC++ to build dpctl. If you want to build using the DPC++ in a oneAPI distribution, activate DPC++ compiler as follows:
export ONEAPI_ROOT=/opt/intel/oneapi
source ${ONEAPI_ROOT}/compiler/latest/env/vars.sh
For install:
python setup.py install
For development:
python setup.py develop
It is also possible to build dpctl using DPC++ toolchain instead of oneAPI DPC++. Instead of activating the oneAPI environment, indicate the toolchain installation prefix with --sycl-compiler-prefix option, e.g.
python setup.py develop --sycl-compiler-prefix=${DPCPP_ROOT}/llvm/build
Please use python setup.py develop --help for more details.
Install Wheel Package from Pypi
- Install dpctl
python -m pip install --index-url https://pypi.anaconda.org/intel/simple --extra-index-url https://pypi.org/simple dpctl
Note: dpctl wheel package is placed on Pypi, but some of its dependencies (like Intel numpy) are in Anaconda Cloud. That is why install command requires additional intel Pypi channel from Anaconda Cloud.
- Set path to Performance Libraries in case of using venv or system Python: On Linux:
export LD_LIBRARY_PATH=<path_to_your_env>/lib
On Windows:
set PATH=<path_to_your_env>\bin;<path_to_your_env>\Library\bin;%PATH%
Using dpctl
dpctl relies on DPC++ runtime. With Intel oneAPI installed you could activate it.
On Windows:
call "%ONEAPI_ROOT%\compiler\latest\env\vars.bat"
On Linux:
source ${ONEAPI_ROOT}/compiler/latest/env/vars.sh
When dpctl is installed via conda package
then it uses DPC++ runtime from dpcpp_cpp_rt package
and it is not necessary to activate oneAPI DPC++ compiler environment.
dpcpp_cpp_rt package is provided by oneAPI conda_channel.
Examples
See examples in folder examples.
Run python examples:
for script in `ls examples/python/`; do echo "executing ${script}"; python examples/python/${script}; done
Examples of building Cython extensions with DPC++ compiler, that interoperate
with dpctl can be found in folder cython.
Each example in cython folder can be built using
CC=icx CXX=dpcpp python setup.py build_ext --inplace.
Please refer to run.py script in respective folders to execute extensions.
Tests
See tests in folder dpctl/tests.
Run tests:
pytest --pyargs dpctl
Release files for dpctl 0.11.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| dpctl-0.11.3-0-cp39-cp39-win_amd64.whl | CPython 3.9 | CPython 3.9 | Windows x86-64 | Details |
| dpctl-0.11.3-0-cp39-cp39-manylinux2014_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.17+ x86-64 | Details |
| dpctl-0.11.3-0-cp38-cp38-win_amd64.whl | CPython 3.8 | CPython 3.8 | Windows x86-64 | Details |
| dpctl-0.11.3-0-cp38-cp38-manylinux2014_x86_64.whl | CPython 3.8 | CPython 3.8 | Linux glibc 2.17+ x86-64 | Details |
| dpctl-0.11.3-0-cp37-cp37m-win_amd64.whl | CPython 3.7 | CPython 3.7 pymalloc | Windows x86-64 | Details |
| dpctl-0.11.3-0-cp37-cp37m-manylinux2014_x86_64.whl | CPython 3.7 | CPython 3.7 pymalloc | Linux glibc 2.17+ x86-64 | Details |
Total release size: 8.0 MB
Release files / dpctl-0.11.3-0-cp39-cp39-win_amd64.whl
| Download URL | dpctl-0.11.3-0-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
df013c812d06f457f456f9da468f8c8e95c360348e8b2f304acd104412d2fd66
|
|
BLAKE2b-256 checksum How to use checksums |
ce89c3e4e24c0bcd45e3cc359646a80ea827828505cae54489890b84d1e5a28a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.6.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9
|
Release files / dpctl-0.11.3-0-cp39-cp39-manylinux2014_x86_64.whl
| Download URL | dpctl-0.11.3-0-cp39-cp39-manylinux2014_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
f34ec82fdf4ea66d1baf5f34fc80d3c5a47d18008d4522e8439cf060cef2c3cc
|
|
BLAKE2b-256 checksum How to use checksums |
dfb8e73211fb57d0dd81d87af2edcfa77ecc88b831b07a4c1acb0d940f4e0ae0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.6.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9
|
Release files / dpctl-0.11.3-0-cp38-cp38-win_amd64.whl
| Download URL | dpctl-0.11.3-0-cp38-cp38-win_amd64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.8 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e050ab46a08ea3a54411f553aeabfc5a825c1f92b648f23494e094da24b1a2af
|
|
BLAKE2b-256 checksum How to use checksums |
8b53324d98009f4851fef4fe6c60ebd1c3736781e7b0714bec9ad4d7b2609703
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.6.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9
|
Release files / dpctl-0.11.3-0-cp38-cp38-manylinux2014_x86_64.whl
| Download URL | dpctl-0.11.3-0-cp38-cp38-manylinux2014_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
5707c57b7a631d730fffa4b3fbada55c9a0e0f59129def900e1420f28f18491a
|
|
BLAKE2b-256 checksum How to use checksums |
504e03ba107bf2c383f7b0231909a9b232f7d202bcc5ca72fcdd77e7a5105aae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.6.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9
|
Release files / dpctl-0.11.3-0-cp37-cp37m-win_amd64.whl
| Download URL | dpctl-0.11.3-0-cp37-cp37m-win_amd64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.7 CPython 3.7 pymalloc Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4e82a0fdafe37a02305fddfa8a928b259a483f45d9e71ffc3b436af792a7c727
|
|
BLAKE2b-256 checksum How to use checksums |
e3e0f8b64639f7efeb62b49773237b71798f578a7bbff383ad43976511902c54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.6.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9
|
Release files / dpctl-0.11.3-0-cp37-cp37m-manylinux2014_x86_64.whl
| Download URL | dpctl-0.11.3-0-cp37-cp37m-manylinux2014_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
c64cf293d47f93d7115583d4a2d7bb9a88ba1a8add2537630c5dc9a30aa3714e
|
|
BLAKE2b-256 checksum How to use checksums |
32a26130631cab2f9adaec4f4b1fcb69fac066ce4e08bfb8580193ba8838d2ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.6.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9
|