-
Notifications
You must be signed in to change notification settings - Fork 183
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
Changes from 9 commits
043e750
7d18320
64e3b95
9184739
21c3129
41119fe
d9c52f7
e1cbdd0
e30f412
70b091a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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) There was a problem hiding this comment. Choose a reason for hiding this commentThe 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: | ||
|
||
|
@@ -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: :: | ||
david-cortes-intel marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
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. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. They aren't, but that kind of usage is common throughout docs: |
||
|
||
For Arch Linux, and for other distributions in general, see the `GPGPU article in the Arch wiki <https://wiki.archlinux.org/title/GPGPU>`__. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 | ||
----------------- | ||
|
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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