Skip to main content

A lightweight Python wrapper for a subset of SYCL.

Project description

Code style: black Imports: isort Coverage Status

About dpctl

oneAPI logo

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
  • Install OpenCL HD graphics drivers

Build and Install Conda Package

  1. Create and activate conda build environment
conda create -n build-env conda-build
conda activate build-env
  1. Set environment variable ONEAPI_ROOT and 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!

  1. 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:

  • cython
  • numpy
  • cmake - for building C API
  • ninja - 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

  1. 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.

  1. 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

dpctl-0.11.3-0-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9Windows x86-64

dpctl-0.11.3-0-cp39-cp39-manylinux2014_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.9

dpctl-0.11.3-0-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8Windows x86-64

dpctl-0.11.3-0-cp38-cp38-manylinux2014_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.8

dpctl-0.11.3-0-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

dpctl-0.11.3-0-cp37-cp37m-manylinux2014_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.7m

File details

Details for the file dpctl-0.11.3-0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: dpctl-0.11.3-0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using 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

File hashes

Hashes for dpctl-0.11.3-0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 df013c812d06f457f456f9da468f8c8e95c360348e8b2f304acd104412d2fd66
MD5 0c3336c0c412e163e9a419bff71d1d22
BLAKE2b-256 ce89c3e4e24c0bcd45e3cc359646a80ea827828505cae54489890b84d1e5a28a

See more details on using hashes here.

File details

Details for the file dpctl-0.11.3-0-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

  • Download URL: dpctl-0.11.3-0-cp39-cp39-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.9
  • Uploaded using 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

File hashes

Hashes for dpctl-0.11.3-0-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f34ec82fdf4ea66d1baf5f34fc80d3c5a47d18008d4522e8439cf060cef2c3cc
MD5 3d944f1442323e59aa7c7daa30931c46
BLAKE2b-256 dfb8e73211fb57d0dd81d87af2edcfa77ecc88b831b07a4c1acb0d940f4e0ae0

See more details on using hashes here.

File details

Details for the file dpctl-0.11.3-0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: dpctl-0.11.3-0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using 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

File hashes

Hashes for dpctl-0.11.3-0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 e050ab46a08ea3a54411f553aeabfc5a825c1f92b648f23494e094da24b1a2af
MD5 ffb3f370b47c74987330c66dcb8b58d9
BLAKE2b-256 8b53324d98009f4851fef4fe6c60ebd1c3736781e7b0714bec9ad4d7b2609703

See more details on using hashes here.

File details

Details for the file dpctl-0.11.3-0-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

  • Download URL: dpctl-0.11.3-0-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.8
  • Uploaded using 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

File hashes

Hashes for dpctl-0.11.3-0-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5707c57b7a631d730fffa4b3fbada55c9a0e0f59129def900e1420f28f18491a
MD5 ed700fc59061cfc01e784dc0db2e58ff
BLAKE2b-256 504e03ba107bf2c383f7b0231909a9b232f7d202bcc5ca72fcdd77e7a5105aae

See more details on using hashes here.

File details

Details for the file dpctl-0.11.3-0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: dpctl-0.11.3-0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using 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

File hashes

Hashes for dpctl-0.11.3-0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 4e82a0fdafe37a02305fddfa8a928b259a483f45d9e71ffc3b436af792a7c727
MD5 c5872633cd821fa799ca9615f7fbe876
BLAKE2b-256 e3e0f8b64639f7efeb62b49773237b71798f578a7bbff383ad43976511902c54

See more details on using hashes here.

File details

Details for the file dpctl-0.11.3-0-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: dpctl-0.11.3-0-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.7m
  • Uploaded using 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

File hashes

Hashes for dpctl-0.11.3-0-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c64cf293d47f93d7115583d4a2d7bb9a88ba1a8add2537630c5dc9a30aa3714e
MD5 00a41091ddc6ea406c5eda524250070a
BLAKE2b-256 32a26130631cab2f9adaec4f4b1fcb69fac066ce4e08bfb8580193ba8838d2ab

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page