Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Required run dependency intel-sycl-rt is missing upon install of dpctl wheel package #1910

Open
antonwolfy opened this issue Nov 25, 2024 · 0 comments

Comments

@antonwolfy
Copy link
Collaborator

It seems intel-sycl-rt package isn't installing (but required by) during installation of dpctl wheel package:

$ mamba create -n py312 --yes -c conda-forge --override-channels python=3.12 virtualenv
$ mamba activate py312
$ python -m venv pypi_venv
$ source pypi_venv/bin/activate

$ pip install --no-cache-dir --index-url https://pypi.anaconda.org/dppy/label/dev/simple --extra-index-url https://software.repos.intel.com/python/pypi  dpctl==0.19.0dev0
Looking in indexes: https://pypi.anaconda.org/dppy/label/dev/simple, https://software.repos.intel.com/python/pypi
Collecting dpctl==0.19.0dev0
  Downloading https://pypi.anaconda.org/dppy/label/dev/simple/dpctl/0.19.0dev0/dpctl-0.19.0.dev0%2B278.geefc82b6cd-278-cp312-cp312-manylinux_2_28_x86_64.whl (38.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 38.7/38.7 MB 24.7 MB/s eta 0:00:00
Collecting numpy>=1.23.0 (from dpctl==0.19.0dev0)
  Downloading https://software.repos.intel.com/python/pypi/numpy/numpy-1.26.4-11-cp312-cp312-manylinux_2_28_x86_64.whl (52.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 52.2/52.2 MB 25.2 MB/s eta 0:00:00
Collecting mkl_fft (from numpy>=1.23.0->dpctl==0.19.0dev0)
  Downloading https://software.repos.intel.com/python/pypi/mkl-fft/mkl_fft-1.3.11-81-cp312-cp312-manylinux_2_28_x86_64.whl (3.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.7/3.7 MB 58.5 MB/s eta 0:00:00
Collecting mkl_random (from numpy>=1.23.0->dpctl==0.19.0dev0)
  Downloading https://software.repos.intel.com/python/pypi/mkl-random/mkl_random-1.2.8-101-cp312-cp312-manylinux_2_28_x86_64.whl (3.9 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.9/3.9 MB 61.1 MB/s eta 0:00:00
Collecting mkl_umath (from numpy>=1.23.0->dpctl==0.19.0dev0)
  Downloading https://software.repos.intel.com/python/pypi/mkl-umath/mkl_umath-0.1.2-111-cp312-cp312-manylinux_2_28_x86_64.whl (439 kB)
Collecting mkl (from numpy>=1.23.0->dpctl==0.19.0dev0)
  Downloading https://software.repos.intel.com/python/pypi/mkl/mkl-2025.0.0-py2.py3-none-manylinux_2_28_x86_64.whl (184.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 184.7/184.7 MB 64.9 MB/s eta 0:00:00
Collecting tbb4py (from numpy>=1.23.0->dpctl==0.19.0dev0)
  Downloading https://software.repos.intel.com/python/pypi/tbb4py/tbb4py-2022.0.0-py312-none-manylinux_2_28_x86_64.whl (348 kB)
Collecting mkl-service (from numpy>=1.23.0->dpctl==0.19.0dev0)
  Downloading https://software.repos.intel.com/python/pypi/mkl-service/mkl_service-2.4.2-0-cp312-cp312-manylinux_2_28_x86_64.whl (79 kB)
Collecting intel-openmp>=2024 (from mkl->numpy>=1.23.0->dpctl==0.19.0dev0)
  Downloading https://software.repos.intel.com/python/pypi/intel-openmp/intel_openmp-2025.0.0-py2.py3-none-manylinux_2_28_x86_64.whl (30.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 30.1/30.1 MB 82.8 MB/s eta 0:00:00
Collecting tbb==2022.* (from mkl->numpy>=1.23.0->dpctl==0.19.0dev0)
  Downloading https://software.repos.intel.com/python/pypi/tbb/tbb-2022.0.0-py2.py3-none-manylinux_2_28_x86_64.whl (5.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.8/5.8 MB 90.6 MB/s eta 0:00:00
Collecting tcmlib==1.* (from tbb==2022.*->mkl->numpy>=1.23.0->dpctl==0.19.0dev0)
  Downloading https://software.repos.intel.com/python/pypi/tcmlib/tcmlib-1.2.0-py2.py3-none-manylinux_2_28_x86_64.whl (4.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.2/4.2 MB 82.8 MB/s eta 0:00:00
Collecting intel-cmplr-lib-rt (from mkl_umath->numpy>=1.23.0->dpctl==0.19.0dev0)
  Downloading https://software.repos.intel.com/python/pypi/intel-cmplr-lib-rt/intel_cmplr_lib_rt-2025.0.0-py2.py3-none-manylinux_2_28_x86_64.whl (45.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 45.7/45.7 MB 80.7 MB/s eta 0:00:00
Collecting intel-cmplr-lib-ur==2025.0.0 (from intel-openmp>=2024->mkl->numpy>=1.23.0->dpctl==0.19.0dev0)
  Downloading https://software.repos.intel.com/python/pypi/intel-cmplr-lib-ur/intel_cmplr_lib_ur-2025.0.0-py2.py3-none-manylinux_2_28_x86_64.whl (18.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 18.6/18.6 MB 88.1 MB/s eta 0:00:00
Collecting umf==0.9 (from intel-cmplr-lib-ur==2025.0.0->intel-openmp>=2024->mkl->numpy>=1.23.0->dpctl==0.19.0dev0)
  Downloading https://software.repos.intel.com/python/pypi/umf/umf-0.9.0-py2.py3-none-manylinux_2_28_x86_64.whl (161 kB)
Installing collected packages: tcmlib, intel-cmplr-lib-rt, umf, tbb, tbb4py, intel-cmplr-lib-ur, intel-openmp, mkl, mkl-service, mkl_umath, mkl_random, mkl_fft, numpy, dpctl
Successfully installed dpctl-0.19.0.dev0+278.geefc82b6cd intel-cmplr-lib-rt-2025.0.0 intel-cmplr-lib-ur-2025.0.0 intel-openmp-2025.0.0 mkl-2025.0.0 mkl-service-2.4.2 mkl_fft-1.3.11 mkl_random-1.2.8 mkl_umath-0.1.2 numpy-1.26.4 tbb-2022.0.0 tbb4py-2022.0.0 tcmlib-1.2.0 umf-0.9.0

The import of dpctl package fails with:

$ python -c "import dpctl"
Traceback (most recent call last):
  File "<frozen runpy>", line 189, in _run_module_as_main
  File "<frozen runpy>", line 148, in _get_module_details
  File "<frozen runpy>", line 112, in _get_module_details
  File "/localdisk/work/antonvol/bits/dpnp/pypi_venv/lib/python3.12/site-packages/dpctl/__init__.py", line 29, in <module>
    from ._device_selection import select_device_with_aspects
  File "/localdisk/work/antonvol/bits/dpnp/pypi_venv/lib/python3.12/site-packages/dpctl/_device_selection.py", line 20, in <module>
    from ._sycl_device import SyclDevice, SyclDeviceCreationError
ImportError: libsycl.so.8: cannot open shared object file: No such file or directory

because there is no libsycl.so.8 library installed (missing intel-sycl-rt package):

$ pip list
Package            Version
------------------ ---------------------------
dpctl              0.19.0.dev0+278.geefc82b6cd
intel-cmplr-lib-rt 2025.0.0
intel-cmplr-lib-ur 2025.0.0
intel-openmp       2025.0.0
mkl                2025.0.0
mkl_fft            1.3.11
mkl_random         1.2.8
mkl-service        2.4.2
mkl_umath          0.1.2
numpy              1.26.4
pip                24.2
tbb                2022.0.0
tbb4py             2022.0.0
tcmlib             1.2.0
umf                0.9.0

While explicit installing of intel-sycl-rt package resolves the issue:

$ pip install --no-cache-dir --index-url https://pypi.anaconda.org/dppy/label/dev/simple --extra-index-url https://software.repos.intel.com/python/pypi  dpctl==0.19.0dev0 intel-sycl-rt
Looking in indexes: https://pypi.anaconda.org/dppy/label/dev/simple, https://software.repos.intel.com/python/pypi
Requirement already satisfied: dpctl==0.19.0dev0 in ./pypi_venv/lib/python3.12/site-packages (0.19.0.dev0+278.geefc82b6cd)
Collecting intel-sycl-rt
  Downloading https://software.repos.intel.com/python/pypi/intel-sycl-rt/intel_sycl_rt-2025.0.0-py2.py3-none-manylinux_2_28_x86_64.whl (11.4 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.4/11.4 MB 15.6 MB/s eta 0:00:00
Requirement already satisfied: numpy>=1.23.0 in ./pypi_venv/lib/python3.12/site-packages (from dpctl==0.19.0dev0) (1.26.4)
Requirement already satisfied: intel-cmplr-lib-rt==2025.0.0 in ./pypi_venv/lib/python3.12/site-packages (from intel-sycl-rt) (2025.0.0)
Collecting intel-cmplr-lic-rt==2025.0.0 (from intel-sycl-rt)
  Downloading https://software.repos.intel.com/python/pypi/intel-cmplr-lic-rt/intel_cmplr_lic_rt-2025.0.0-py2.py3-none-manylinux_2_28_x86_64.whl (18 kB)
Requirement already satisfied: intel-cmplr-lib-ur==2025.0.0 in ./pypi_venv/lib/python3.12/site-packages (from intel-sycl-rt) (2025.0.0)
Requirement already satisfied: umf==0.9 in ./pypi_venv/lib/python3.12/site-packages (from intel-cmplr-lib-ur==2025.0.0->intel-sycl-rt) (0.9.0)
Requirement already satisfied: tcmlib==1.2 in ./pypi_venv/lib/python3.12/site-packages (from umf==0.9->intel-cmplr-lib-ur==2025.0.0->intel-sycl-rt) (1.2.0)
Requirement already satisfied: mkl_fft in ./pypi_venv/lib/python3.12/site-packages (from numpy>=1.23.0->dpctl==0.19.0dev0) (1.3.11)
Requirement already satisfied: mkl_random in ./pypi_venv/lib/python3.12/site-packages (from numpy>=1.23.0->dpctl==0.19.0dev0) (1.2.8)
Requirement already satisfied: mkl_umath in ./pypi_venv/lib/python3.12/site-packages (from numpy>=1.23.0->dpctl==0.19.0dev0) (0.1.2)
Requirement already satisfied: mkl in ./pypi_venv/lib/python3.12/site-packages (from numpy>=1.23.0->dpctl==0.19.0dev0) (2025.0.0)
Requirement already satisfied: tbb4py in ./pypi_venv/lib/python3.12/site-packages (from numpy>=1.23.0->dpctl==0.19.0dev0) (2022.0.0)
Requirement already satisfied: mkl-service in ./pypi_venv/lib/python3.12/site-packages (from numpy>=1.23.0->dpctl==0.19.0dev0) (2.4.2)
Requirement already satisfied: intel-openmp>=2024 in ./pypi_venv/lib/python3.12/site-packages (from mkl->numpy>=1.23.0->dpctl==0.19.0dev0) (2025.0.0)
Requirement already satisfied: tbb==2022.* in ./pypi_venv/lib/python3.12/site-packages (from mkl->numpy>=1.23.0->dpctl==0.19.0dev0) (2022.0.0)
Installing collected packages: intel-cmplr-lic-rt, intel-sycl-rt
Successfully installed intel-cmplr-lic-rt-2025.0.0 intel-sycl-rt-2025.0.0

and python -m dpctl command now works.

It seems unclear from installation guide that any extra package has to be installed when reading though Pip chapter.

While looking into the meta data it seems there is no requirements set towards the DPC++ runtime:

$ grep "Requires-Dist" pypi_venv/lib/python3.12/site-packages/dpctl-0.19.0.dev0+278.geefc82b6cd.dist-info/METADATA
Requires-Dist: numpy>=1.23.0
Requires-Dist: Cython; extra == "coverage"
Requires-Dist: pytest; extra == "coverage"
Requires-Dist: pytest-cov; extra == "coverage"
Requires-Dist: coverage; extra == "coverage"
Requires-Dist: tomli; extra == "coverage"
Requires-Dist: Cython; extra == "docs"
Requires-Dist: graphviz; extra == "docs"
Requires-Dist: pydot; extra == "docs"
Requires-Dist: furo; extra == "docs"
Requires-Dist: sphinx; extra == "docs"
Requires-Dist: sphinx-copybutton; extra == "docs"
Requires-Dist: sphinx-design; extra == "docs"
Requires-Dist: sphinxcontrib-googleanalytics; extra == "docs"
Requires-Dist: sphinxcontrib-jsmath; extra == "docs"
Requires-Dist: sphinxcontrib-programoutput; extra == "docs"
Requires-Dist: sphinxcontrib-spelling; extra == "docs"

So the question arises whether this is expected behavior. And whether the documentation needs to be updated to reflect the current behavior and required extra steps.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant