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

Update of DPC dependencies for CI and conda-recipe #2160

Merged
merged 18 commits into from
Nov 14, 2024

Conversation

Alexsandruss
Copy link
Contributor

@Alexsandruss Alexsandruss commented Nov 11, 2024

Description

Changes:

  • Update DPC compiler, DPC runtime libraries and oneDAL development files to 2025 version in CI
  • Update DPCTL and DPNP versions and their installation channel to PyPI for environment consistency
  • Pin linux kernel headers in conda recipe to reflect GLIBC>=2.28 dependency of dal-devel dpc part
  • Move DPC runtime libraries to optional dependencies in conda recipe

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 commented my code, particularly in hard-to-understand areas.
  • 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.
  • I have extended testing suite if new functionality was introduced in this PR.

Performance

N/A, CI update.

@Alexsandruss Alexsandruss changed the title Update of conda-recipe building dependencies Update of DPC dependencies for CI and conda-recipe Nov 11, 2024
@Alexsandruss Alexsandruss added infra dependencies Pull requests that update a dependency file labels Nov 12, 2024
@Alexsandruss
Copy link
Contributor Author

/intelci: run

@@ -48,7 +45,7 @@ steps:
bash .ci/scripts/setup_sklearn.sh $(SKLEARN_VERSION)
pip install --upgrade -r requirements-test.txt
pip install $(python .ci/scripts/get_compatible_scipy_version.py)
if [ $(echo $(PYTHON_VERSION) | grep '3.9\|3.11') ] && [ $(SKLEARN_VERSION) != "1.0" ]; then conda install -q -y -c https://software.repos.intel.com/python/conda/ dpctl=0.17.0 dpnp=0.15.0; fi
if [ $(SKLEARN_VERSION) != "1.0" ]; then pip install dpctl==0.18.* dpnp==0.16.*; fi
Copy link
Contributor

Choose a reason for hiding this comment

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

Are we installing dpctl/dpnp for all py versions?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, it has same supported python versions as sklearnex.

Copy link
Contributor

Choose a reason for hiding this comment

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

that does, however, cause certain functionality within sklearnex to become untested (see DummySyclQueue)

Copy link
Contributor

Choose a reason for hiding this comment

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

Is DummySyclQueue needed if dpctl supports all sklearnex versions?

Copy link
Contributor

Choose a reason for hiding this comment

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

DummySyclQueue is needed for device offloading, if dpctl is not available in env.

Copy link
Contributor

Choose a reason for hiding this comment

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

Are there circumstances at this point where dpctl would not be available?

Copy link
Contributor

@samir-nasibli samir-nasibli Nov 12, 2024

Choose a reason for hiding this comment

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

I can give at least two examples:

  1. Installation Issues: problems on the user’s side during the installation of dpctl.
  2. Environment Compatibility: for example, dpctl does not currently support Python 3.13. While scikit-learn already supports Python 3.13 and we may soon add it to our matrices, dpctl will not be available for this Python version at this time.

@Alexsandruss
Copy link
Contributor Author

/intelci: run

@Alexsandruss
Copy link
Contributor Author

/intelci: run

- numpy {{ numpy }}
- impi-devel # [not win]
- numpy
- mpich # [not win]
Copy link
Contributor

Choose a reason for hiding this comment

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

Why mpich instead of impi-devel?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It was for testing purposes, mpi version doesn't make difference in public build of conda-recipe.

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.

Thank you for resolving CI. preference would be to keep impi in meta.yaml if it makes sense.

- {{ pin_compatible('numpy') }}
- dpcpp-cpp-rt # [linux64]
- numpy
- scikit-learn
Copy link
Contributor

Choose a reason for hiding this comment

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

Also, is scikit-learn needed in build deps or should it remain as test dep?

Copy link
Contributor

Choose a reason for hiding this comment

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

scikit-learn is only run time dependency.

Copy link
Contributor

@icfaust icfaust left a comment

Choose a reason for hiding this comment

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

Before merge, @Alexsandruss could you leave a comment in the PR on the switch from conda to pip for dpctl/dpnp? This way when we face an upgrade issue with dpctl/dpnp in the future there is a bit of a note for someone to understand (doesn't need to be in the codebase, but something like research via git-blame to this PR would be nice)

@icfaust
Copy link
Contributor

icfaust commented Nov 14, 2024

Also thank you for doing this, very much appreciated @Alexsandruss

@Alexsandruss Alexsandruss merged commit 5af47aa into intel:main Nov 14, 2024
24 of 26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file infra
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants