oneDAL icon indicating copy to clipboard operation
oneDAL copied to clipboard

Use daal::static_threader_reduce in Linear Regression and dispatch grainSize hyperparameter

Open avolkov-intel opened this issue 6 months ago • 2 comments

Description

Use daal::static_threader_reduce in Linear Regression algorithm to compute X^tX and X^tY matrices the same way it was done for Covariance algorithm (https://github.com/uxlfoundation/oneDAL/pull/3126).

Also add grainSize hyperparameter that controls the minimum number of blocks allocated to a single thread to the list of dispatched Linear Regression hyperparameters.


Checklist to comply with before moving PR from draft:

PR completeness and readability

  • [x] I have reviewed my changes thoroughly before submitting this pull request.
  • [x] I have commented my code, particularly in hard-to-understand areas.
  • [x] 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.
  • [x] Git commit message contains an appropriate signed-off-by string (see CONTRIBUTING.md for details).
  • [x] I have added a respective label(s) to PR if I have a permission for that.
  • [x] I have resolved any merge conflicts that might occur with the base branch.

Testing

  • [x] I have run it locally and tested the changes extensively.
  • [ ] All CI jobs are green or I have provided justification why they aren't.
  • [x] I have extended testing suite if new functionality was introduced in this PR.

Performance

  • [ ] I have measured performance for affected algorithms using scikit-learn_bench and provided at least summary table with measured data, if performance change is expected.
  • [ ] I have provided justification why performance has changed or why changes are not expected.
  • [ ] I have provided justification why quality metrics have changed or why changes are not expected.
  • [ ] I have extended benchmarking suite and provided corresponding scikit-learn_bench PR if new measurable functionality was introduced in this PR.

avolkov-intel avatar May 19 '25 10:05 avolkov-intel

/intelci: run

avolkov-intel avatar May 19 '25 10:05 avolkov-intel

The failing sklearnex test is due to small numerical differences, guess it's safe to just change the thresholds there.

But the test itself is not well designed: better would be to compare against a reference implementation like SciPy's, the same way it's done in other tests within sklearnex.

david-cortes-intel avatar May 20 '25 08:05 david-cortes-intel

It looks as though there is a precision issue with float32 which causes some sklearnex test failures.

icfaust avatar Jul 07 '25 15:07 icfaust