Quick Start Guide
Installation from oneAPI
Dpctl is available as part of the oneAPI Intel(R) Distribution for Python (IDP). Refer to Intel(R) oneAPI Toolkits Installation Guide to install it.
In this topic, it is assumed that oneAPI is installed in the standard location and the
environment variable ONEAPI_ROOT
points to the following installation root
directory:
Windows OS:
C:\Program Files (x86)\Intel\oneAPI\
Linux OS:
/opt/intel/oneapi
Once oneAPI is installed, dpctl is ready to be used by setting up IDP from the oneAPI installation. IDP can be set up as follows:
On Linux OS
source ${ONEAPI_ROOT}/intelpython/latest/env/vars.sh
python -c "import dpctl; dpctl.lsplatform()"
On Windows OS
call "%ONEAPI_ROOT%\intelpython\latest\env\vars.bat"
python -c "import dpctl; dpctl.lsplatform()"
Note
If no GPU platforms are shown, make sure your system has a supported GPU and the necessary GPU drivers installed. See GPU driver installation guide to install GPU drivers.
Install the Wheel Package from PyPi
To install dpctl from PyPi, run:
python -m pip install --index-url https://pypi.anaconda.org/intel/simple dpctl
Note
The dpctl wheel package is available on PyPi, but some of the dependencies
(like Intel(R) numpy) are available only on Anaconda Cloud. For this reason,
install the extra packages needed by dpctl from the Intel(R) channel on
Anaconda cloud. You also need to set the LD_LIBRARY_PATH
or PATH
correctly.
On Linux OS
export LD_LIBRARY_PATH=<path_to_your_env>/lib
On Windows OS
set PATH=<path_to_your_env>\bin;<path_to_your_env>\Library\bin;%PATH%
Building from the Source
To build dpctl from the source, you need dpcpp and GPU drivers, and optionally CPU OpenCL drivers. It is preferable to use the dpcpp compiler packaged as part of oneAPI. However, it is possible to use a custom build of dpcpp to build dpctl, especially if you want to enable CUDA support.
Building using oneAPI dpcpp
Install oneAPI and graphics drivers to the system prior to proceeding further.
Activate oneAPI
On Linux OS
source ${ONEAPI_ROOT}/setvars.sh
On Windows OS
call "%ONEAPI_ROOT%\setvars.bat"
Build and Install Using Conda-Build
You can use the conda-recipe included with the sources to build the dpctl package. The advantage of this approach is that all dependencies are pulled in from oneAPI’s intelpython conda channel that is installed as a part of oneAPI.
export ONEAPI_ROOT=/opt/intel/oneapi
conda build conda-recipe -c ${ONEAPI_ROOT}/conda_channel
On Windows OS to cope with long file names,
use croot
with a short folder path:
set "ONEAPI_ROOT=C:\Program Files (x86)\Intel\oneAPI\"
conda build --croot=C:/tmp conda-recipe -c "%ONEAPI_ROOT%\conda_channel"
After building the Conda package, install it by executing:
conda install dpctl
Note
You can face issues with conda-build version 3.20. Use conda-build 3.18 instead.
Build and Install with scikit-build
To build using Python setuptools
and scikit-build
, install the following Python packages:
cython
numpy
cmake
scikit-build
ninja
gtest
(optional to run C API tests)
gmock
(optional to run C API tests)
pytest
(optional to run Python API tests)
Once the prerequisites are installed, building using scikit-build
involves the usual steps.
To build and install, run:
python setup.py install -- -G Ninja -DCMAKE_C_COMPILER:PATH=icx -DCMAKE_CXX_COMPILER:PATH=icpx
To develop, run:
python setup.py develop -G Ninja -DCMAKE_C_COMPILER:PATH=icx -DCMAKE_CXX_COMPILER:PATH=icpx
On Windows OS, use icx
for both C and CXX compilers.
To develop on Linux OS, use the driver script:
python scripts/build_locally.py
Building Using Custom dpcpp
You can build dpctl from the source using the DPC++ toolchain instead of the DPC++ compiler that comes with oneAPI.
Do this, to enable support for CUDA devices.
Following steps in the Build and install with scikit-build use a command-line option to set the relevant CMake variables, for example:
python setup.py develop -- -G Ninja -DCMAKE_C_COMPILER:PATH=$(which clang) -DCMAKE_CXX_COMPILER:PATH=$(which clang++)
Or you can use the driver script:
python scripts/build_locally.py --c-compiler=$(which clang) --cxx-compiler=$(which clang++)
You can retrieve available options and their descriptions using the option
--help
.
Using dpctl
Dpctl requires a DPC++ runtime. When dpctl is installed via Conda it uses
the DPC++ runtime from the dpcpp_cpp_rt
package that is a part of IDP. When using
setuptools
make sure a compatible version of DPC++ runtime is available on
the system. The easiest way to set up a DPC++ runtime is by activating
oneAPI.
Running Examples and Tests
Running the Examples
After setting up dpctl, you can test the Python examples as follows:
for script in `ls examples/python/`
do
echo "executing ${script}"
python examples/python/${script}
done
The dpctl repository also provides a set of examples of building the Cython extensions with the DPC++ compiler, that interoperates with dpctl.
To build each example, use
CC=icx CXX=dpcpp python setup.py build_ext --inplace
.
Refer to the run.py
script in respective folders to execute the Cython extension
examples.
Running the Python Tests
You can execute the dpctl Python test suite as follow:
pytest --pyargs dpctl
Building the libsyclinterface Library
The libsyclinterface is a shared library used by the Python package. To build the library, you need:
DPC++
toolchaincmake
ninja
ormake
Optionally
gtest 1.10
if you want to run the test suite
For example, on Linux OS the following script can be used to build the C oneAPI library.
#!/bin/bash
set +xe
rm -rf build
mkdir build
pushd build
INSTALL_PREFIX=`pwd`/../install
rm -rf ${INSTALL_PREFIX}
export ONEAPI_ROOT=/opt/intel/oneapi
DPCPP_ROOT=${ONEAPI_ROOT}/compiler/latest/linux
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
-DCMAKE_PREFIX_PATH=${INSTALL_PREFIX} \
-DDPCPP_INSTALL_DIR=${DPCPP_ROOT} \
-DCMAKE_C_COMPILER:PATH=${DPCPP_ROOT}/bin/icx \
-DCMAKE_CXX_COMPILER:PATH=${DPCPP_ROOT}/bin/dpcpp \
-DDPCTL_BUILD_CAPI_TESTS=ON \
..
make V=1 -n -j 4 && make check && make install