Skip to content

DOC: Better explanations about GPGPU driver installations #2464

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

Merged
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ The software acceleration is achieved with vector instructions, AI hardware-spec
With Extension for Scikit-learn, you can:

* Speed up training and inference by up to 100x with equivalent mathematical accuracy
* Benefit from performance improvements across different CPU hardware configurations, including GPUs and multi-GPU configurations
* Benefit from performance improvements across different hardware configurations, including [GPUs](https://uxlfoundation.github.io/scikit-learn-intelex/latest/oneapi-gpu.html) and [multi-GPU](https://uxlfoundation.github.io/scikit-learn-intelex/latest/distributed-mode.html) configurations
* Integrate the extension into your existing Scikit-learn applications without code modifications
* Continue to use the open-source scikit-learn API
* Enable and disable the extension with a couple of lines of code or at the command line
Expand Down
2 changes: 1 addition & 1 deletion doc/sources/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ The software acceleration is achieved with vector instructions, AI hardware-spec
Use |sklearnex|, to:

* Speed up training and inference by up to 100x with equivalent mathematical accuracy
* Benefit from performance improvements across different x86-64 CPUs and Intel(R) GPUs
* Benefit from performance improvements across different x86-64 CPUs and Intel(R) GPUs (including iGPUs)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi David for this would it be better just to say Intel(R) GPUs?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say reading "Intel(R) GPUs" to me at least doesn't immediately bring up the thought that it should work on the iGPUs that one might already have in a laptop.

My idea here is to make it explicit that the library still works on the kind of products that users might already have without knowing, and which might not have been even considered as a potential entry point for trying out the functionalities in the library.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i guess the question is - one is set of supported platforms for binary releases and second more broad in terms what overall support - this includes ARM, RISC and potentially some of the cases on non-intel gpus. there is questions of migration to oneMath for broader enabling but even without it some things can work

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a good point, but this line right here is from the landing page of the docs with the short summary about what the library is for.

I don't think it'd make much sense to add points about ARM/RISC-V support in that specific section right now, because it requires building both oneDAL and sklearnex from source, with non-default arguments and dependencies in the case of oneDAL.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with Kate here

* Integrate the extension into your existing |sklearn| applications without code modifications
* Enable and disable the extension with a couple of lines of code or at the command line

Expand Down
35 changes: 29 additions & 6 deletions doc/sources/oneapi-gpu.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,21 @@
oneAPI and GPU support in |sklearnex|
##############################################################

|sklearnex| can execute computations on different devices (CPUs, GPUs) through the SYCL framework in oneAPI.
|sklearnex| can execute computations on different devices (CPUs and GPUs, including integrated GPUs from laptops and desktops) through the SYCL framework in oneAPI.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here maybe just say ((CPUs and GPUs) instead of (CPUs and GPUs, including integrated GPUs from laptops and desktops)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed


The device used for computations can be easily controlled through the target offloading functionality (e.g. through ``sklearnex.config_context(target_offload="gpu")`` - see rest of this page for more details), but for finer-grained controlled (e.g. operating on arrays that are already in a given device's memory), it can also interact with objects from package |dpctl|, which offers a Python interface over SYCL concepts such as devices, queues, and USM (unified shared memory) arrays.
The device used for computations can be easily controlled through the target offloading functionality (e.g. through ``sklearnex.config_context(target_offload="gpu")``, which moves data to GPU if it's not already there - see rest of this page for more details), but for finer-grained controlled (e.g. operating on arrays that are already in a given device's memory), it can also interact with objects from package |dpctl|, which offers a Python interface over SYCL concepts such as devices, queues, and USM (unified shared memory) arrays.

While not strictly required, package |dpctl| is recommended for a better experience on GPUs.
While not strictly required, package |dpctl| is recommended for a better experience on GPUs - for example, it can provide GPU-allocated arrays that enable compute-follows-data execution models (i.e. so that ``target_offload`` wouldn't need to move the data from CPU to GPU).

.. important:: Be aware that GPU usage requires non-Python dependencies on your system, such as the `Intel(R) GPGPU Drivers <https://www.intel.com/content/www/us/en/developer/articles/system-requirements/intel-oneapi-dpcpp-system-requirements.html>`_.
.. important:: Be aware that GPU usage requires non-Python dependencies on your system, such as the `Intel(R) Compute Runtime <https://www.intel.com/content/www/us/en/developer/articles/system-requirements/intel-oneapi-dpcpp-system-requirements.html>`_ (see below).

Prerequisites
-------------

For execution on GPUs, DPC++ runtime and GPGPU drivers are required.
For execution on GPUs, DPC++ runtime and Intel Compute Runtime (also referred to elsewhere as 'GPGPU drivers') are required.

DPC++ Runtime
~~~~~~~~~~~~~

DPC++ compiler runtime can be installed either from PyPI or Conda:

Expand All @@ -46,7 +49,27 @@ DPC++ compiler runtime can be installed either from PyPI or Conda:

conda install -c conda-forge dpcpp_cpp_rt

For GPGPU driver installation instructions, see the general `DPC++ system requirements <https://www.intel.com/content/www/us/en/developer/articles/system-requirements/intel-oneapi-dpcpp-system-requirements.html>`_ sections corresponding to your operating system.
Intel Compute Runtime
~~~~~~~~~~~~~~~~~~~~~

On Windows, GPU drivers for iGPUs and dGPUs include the required Intel Compute Runtime. Drivers for windows can be downloaded from `this link <https://www.intel.com/content/www/us/en/download/785597/intel-arc-iris-xe-graphics-windows.html>`__.

For datacenters, see further instructions `here <https://www.intel.com/content/www/us/en/developer/articles/system-requirements/oneapi-dpcpp/2025.html#inpage-nav-2-1-1>`__.


On Linux, some distributions - namely Ubuntu Desktop 25.04 and higher, and Fedora Workstation 42 and higher - come with the compute runtime for iGPUs and dGPUs preinstalled, while others require installing them separately.

On Debian systems, it requires installing package ``intel-opencl-icd`` (along with its dependencies such as ``intel-compute-runtime`` and ``intel-graphics-compiler``), which is available from Debian's ``main`` repository: ::

sudo apt-get install intel-opencl-icd

.. tip:: For Debian Trixie (13), the Intel Compute Runtime is not available from the Stable repository, but can be installed by enabling the Sid (Unstable) repository.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are stable and unstable actual names/proper nouns here or should they be lowercase?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They aren't, but that kind of usage is common throughout docs:
https://wiki.debian.org/SourcesList


For Arch Linux, and for other distributions in general, see the `GPGPU article in the Arch wiki <https://wiki.archlinux.org/title/GPGPU>`__.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also for this you might just want point the reader to the installation page for the Intel GPU driver install page. https://dgpu-docs.intel.com/driver/installation.html

Copy link
Contributor Author

@david-cortes-intel david-cortes-intel May 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Problems with that page are that: (a) it doesn't explain how to install the drivers in most of the supported platforms; (b) the drivers and processes it lists are mostly for datacenter GPUs.


Be aware that datacenter-grade devices, such as 'Flex' and 'Max', require different drivers and runtimes. For CentOS and for datacenter-grade devices, see `instructions here <https://dgpu-docs.intel.com/driver/installation.html>`__.

For more details, see the `DPC++ requirements page <https://www.intel.com/content/www/us/en/developer/articles/system-requirements/oneapi-dpcpp/2025.html>`__.

Device offloading
-----------------
Expand Down
2 changes: 1 addition & 1 deletion doc/sources/quick-start.rst
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ Software Requirements
.. tab:: GPU

- A Linux* or Windows* version supported by DPC++ and oneMKL
- Intel® GPGPU drivers
- Intel® Compute Runtime (see :ref:`oneapi_gpu`)
- DPC++ runtime libraries

.. important::
Expand Down
Loading