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

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

david-cortes-intel
Copy link
Contributor

@david-cortes-intel david-cortes-intel commented May 5, 2025

Description

This PR adds a better explanation of how to install the GPGPU drivers that are required for GPU mode.


PR should start as a draft, then move to ready for review state after CI is passed and all applicable checkboxes are closed.
This approach ensures that reviewers don't spend extra time asking for regular requirements.

You can remove a checkbox as not applicable only if it doesn't relate to this PR in any way.
For example, PR with docs update doesn't require checkboxes for performance while PR with any change in actual code should have checkboxes and justify how this code change is expected to affect performance (or justification should be self-evident).

Checklist to comply with before moving PR from draft:

PR completeness and readability

  • I have reviewed my changes thoroughly before submitting this pull request.
  • I have updated the documentation to reflect the changes or created a separate PR with update and provided its number in the description, if necessary.
  • Git commit message contains an appropriate signed-off-by string (see CONTRIBUTING.md for details).
  • I have added a respective label(s) to PR if I have a permission for that.
  • I have resolved any merge conflicts that might occur with the base branch.

Testing

  • I have run it locally and tested the changes extensively.
  • All CI jobs are green or I have provided justification why they aren't.

Performance

Not applicable.

Copy link

codecov bot commented May 5, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Flag Coverage Δ
azure 79.91% <ø> (ø)
github 71.62% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

david-cortes-intel and others added 3 commits May 5, 2025 16:57
Co-authored-by: Ian Faust <icfaust@gmail.com>
Co-authored-by: Ian Faust <icfaust@gmail.com>
@@ -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

@@ -19,19 +19,22 @@
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

GPGPU Drivers
~~~~~~~~~~~~~

On Windows, GPGPU drivers are bundled as part of the regular drivers for iGPUs and dGPUs, which can be downloaded from `this link <https://www.intel.com/content/www/us/en/download/785597/intel-arc-iris-xe-graphics-windows.html>`__.

Choose a reason for hiding this comment

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

Maybe instead of GPGPU you should GPU. Since all Intel GPUs are currently generalized gpus. Or maybe just reword this so it's.. "One Windows, gpu drivers for Intel® Arc™ & Iris® Xe Graphics can be downloaded here.."

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 think that wouldn't be very obvious to people who are not familiar with the product suite already. Before joining Intel, I wouldn't have known that laptop iGPUs were called "Iris Xe", for example.

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 GPGPU drivers for iGPUs and dGPUs preinstalled, while others require installing them separately.

Choose a reason for hiding this comment

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

samething maybe just say gpu instead of GPGPU


sudo apt-get install intel-opencl-icd

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.

@@ -319,7 +319,7 @@ Software Requirements
.. tab:: GPU

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

Choose a reason for hiding this comment

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

Here just say GPU instead of GPGPU.

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 are actually different if I'm getting it correctly. The regular GPU drivers that come with MESA don't work for GPGPU.

It's also how the DCP++ page describes them:
image

@KateBlueSky
Copy link

Hi @david-cortes-intel I left a couple of comments other that lgtm


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 so that ``target_offload`` wouldn't need to move the data from CPU to GPU.
Copy link
Contributor

Choose a reason for hiding this comment

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

As an option you can use "compute follows data" name to describe it as well.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Reworded.


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

For execution on GPUs, DPC++ runtime and GPGPU drivers are required.

DPC++
Copy link
Contributor

Choose a reason for hiding this comment

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

Might worth to replace it to SYCL

Copy link
Contributor Author

Choose a reason for hiding this comment

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

But it does require the software called "DPC++ runtime":
https://anaconda.org/conda-forge/dpcpp-cpp-rt

Copy link
Contributor

@ethanglaser ethanglaser left a comment

Choose a reason for hiding this comment

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

Not much feedback here but generally agree with Kate's comments

@@ -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)
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

@@ -19,19 +19,22 @@
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.
Copy link
Contributor

Choose a reason for hiding this comment

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

Agreed

@david-cortes-intel
Copy link
Contributor Author

@ethanglaser @KateBlueSky Some comments:

  • When it comes to consumer-grade GPUs, there is a separation between the regular GPU drivers and what is required to execute GPGPU code with SYCL. On linux at least, the consumer-grade GPU drivers come from the MESA packages, while executing SYCL code requires other packages like 'intel-compute-runtime', 'intel-graphics-compiler', etc. (which are specified neither as 'depends' nor 'recommends' for regular drivers), in addition to the DPC++ runtime. These do not appear to be explicitly called "GPGPU drivers", but that's how DPC++ at least refers to them.
  • There isn't any Intel webpage explaining how to install drivers for all GPGPU-capable devices in all the platforms that are supported. Some oneAPI products link to the generic support page for products (like https://www.intel.com/content/www/us/en/download/747008/intel-arc-graphics-driver-ubuntu.html?wapkw=intel%20arc%20a770), which does not have any instruction for installing required GPGPU software on linux; while others link to the page for DC-grade devices (https://dgpu-docs.intel.com/driver/installation.html) which does not explain how to install the GPGPU software for iGPUs or ARC cards, and does not explain how to install what they offer in most of the platforms that are supported, such as newer versions of Ubuntu or Fedora.
  • We currently have quite a bad structuring of the docs, with some things being spread throughout different pages (like system requirements, GPU instructions, installation instructions, etc.). As it currently is, this PR tries to add visibility about consumer-grade GPU support in this library, which will only be noticeable when added to the GPU docs. Ideally, details like which kinds of devices are supported should be put in the same page as the instructions for running on GPUs, but that would be a much deeper scope of changes for docs.

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

Successfully merging this pull request may close these issues.

5 participants