Skip to content

MAINT: Add dependencies on MKL and DPC runtimes used by oneDAL to nightly jobs#3010

Draft
david-cortes-intel wants to merge 2 commits intouxlfoundation:mainfrom
david-cortes-intel:dpc_deps
Draft

MAINT: Add dependencies on MKL and DPC runtimes used by oneDAL to nightly jobs#3010
david-cortes-intel wants to merge 2 commits intouxlfoundation:mainfrom
david-cortes-intel:dpc_deps

Conversation

@david-cortes-intel
Copy link
Contributor

Description

OneDAL now has runtime dependencies on MKL and compiler DPC runtimes when using the DPC modules.

If installing a oneDAL package from pip/conda/apt/etc., these should be automatically pulled by the same package manager, but if using a from-source build directly, those dependencies won't necessarily be available in the system at the time of building / testing sklearnex.

This PR adds explicit dependencies on DPC components to the nightly jobs which use from-source builds of oneDAL, and updates the documentation to reflect these dependencies.


Checklist:

Completeness and readability

  • I have commented my code, particularly in hard-to-understand areas.
  • Git commit message contains an appropriate signed-off-by string (see CONTRIBUTING.md for details).
  • 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.

@david-cortes-intel david-cortes-intel marked this pull request as draft March 9, 2026 14:10
@david-cortes-intel david-cortes-intel changed the title MAINT: Add dependencies on MKL and DPC runtimes used by oneDAL MAINT: Add dependencies on MKL and DPC runtimes used by oneDAL to nightly jobs Mar 9, 2026
@codecov
Copy link

codecov bot commented Mar 9, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

Flag Coverage Δ
azure 79.87% <ø> (ø)

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
Copy link
Contributor Author

CI failure is in KMeans and happens sporadically in other jobs too.

@david-cortes-intel david-cortes-intel marked this pull request as ready for review March 9, 2026 14:54
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.

Can all of this be bypassed by adding bash .ci/env/apt.sh mkl to the dpcpp installation step? In https://github.com/uxlfoundation/oneDAL/blob/main/.github/workflows/nightly-build.yml those two lines are sufficient to set up the environment necessary for oneDAL build. It's possible this oneDAL nightly build logic would need to be reconfigured as part of the library split, in which case we should update here to align, but I don't think we should be installing conda oneAPI deps on the sklearnex side.

@david-cortes-intel
Copy link
Contributor Author

@ethanglaser I cannot find any file named like that in this repository. Are you suggesting to add a new file?

@ethanglaser
Copy link
Contributor

@ethanglaser I cannot find any file named like that in this repository. Are you suggesting to add a new file?

Right, it comes from the oneDAL repo (https://github.com/uxlfoundation/oneDAL/blob/main/.ci/env/apt.sh) and is used here to replicate the environment used to produce the oneDAL build. It's a bit confusing but that nightly-build.yml in oneDAL github actions also zips up the oneDAL env scripts for reuse here

@david-cortes-intel
Copy link
Contributor Author

@ethanglaser I cannot find any file named like that in this repository. Are you suggesting to add a new file?

Right, it comes from the oneDAL repo (https://github.com/uxlfoundation/oneDAL/blob/main/.ci/env/apt.sh) and is used here to replicate the environment used to produce the oneDAL build. It's a bit confusing but that nightly-build.yml in oneDAL github actions also zips up the oneDAL env scripts for reuse here

Looks like that file currently doesn't have entries for MKL DPC runtimes.

@david-cortes-intel
Copy link
Contributor Author

Comment above was wrong, they do have them as transitive dependencies, but they use different names in APT than in pip and conda.

@david-cortes-intel
Copy link
Contributor Author

@ethanglaser I'm not sure it'd be a good idea to reuse that script. It install development dependencies in addition to runtime ones, which could potentially mask dependency problems.

@david-cortes-intel
Copy link
Contributor Author

@ethanglaser Also, how would that work for windows? The script uses APT to pull packages.

@ethanglaser
Copy link
Contributor

@ethanglaser I'm not sure it'd be a good idea to reuse that script. It install development dependencies in addition to runtime ones, which could potentially mask dependency problems.

We are building sklearnex as part of this scope - why are development dependencies not necessary?

@david-cortes-intel
Copy link
Contributor Author

@ethanglaser I'm not sure it'd be a good idea to reuse that script. It install development dependencies in addition to runtime ones, which could potentially mask dependency problems.

We are building sklearnex as part of this scope - why are development dependencies not necessary?

Because sklearnex doesn't depend directly on packages like mkl-dpc-devel and similar.

@ethanglaser
Copy link
Contributor

@ethanglaser Also, how would that work for windows? The script uses APT to pull packages.

There is similar scope for windows: https://github.com/uxlfoundation/scikit-learn-intelex/blob/main/.github/workflows/ci.yml#L201-L248, not sure on the specifics

python -m venv venv
source venv/bin/activate
pip install -r dependencies-dev
# Note: oneDAL packages should have dependencies on these, but
Copy link
Contributor

Choose a reason for hiding this comment

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

This isn't a nightly job.

@icfaust
Copy link
Contributor

icfaust commented Mar 11, 2026

@ethanglaser I'm not sure it'd be a good idea to reuse that script. It install development dependencies in addition to runtime ones, which could potentially mask dependency problems.

this will make dependency tracking and upgrading harder making for a more often broken CI

i agree with @ethanglaser

@icfaust
Copy link
Contributor

icfaust commented Mar 11, 2026

everything in the github nightly should use pip hence the name. if it cannot it replicates infrastructure code from oneDAL for ease of maintenance and will be within one day of changes in oneDAL master making changes in oneDAL easier to see in sklearnex in a public manner

@david-cortes-intel david-cortes-intel marked this pull request as draft March 12, 2026 09:27
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.

3 participants