oneDAL
oneDAL copied to clipboard
Use daal::static_threader_reduce in Linear Regression and dispatch grainSize hyperparameter
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.
/intelci: run
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.
It looks as though there is a precision issue with float32 which causes some sklearnex test failures.