Deprecate distributed algorithms in DAAL#3481
Deprecate distributed algorithms in DAAL#3481Vika-F wants to merge 13 commits intouxlfoundation:mainfrom
Conversation
|
/intelci: run |
ethanglaser
left a comment
There was a problem hiding this comment.
Looks like implicit_als still needs deprecations - if we are planning to deprecate those distributed interfaces. Also covariance_types.h.
Does it make sense to apply deprecations to https://github.com/uxlfoundation/oneDAL/blob/main/cpp/daal/include/algorithms/covariance/covariance_types.h and https://github.com/uxlfoundation/oneDAL/tree/main/cpp/daal/include/algorithms/implicit_als ? |
cpp/daal/include/algorithms/implicit_als/implicit_als_predict_ratings_types.h
Outdated
Show resolved
Hide resolved
cpp/daal/include/algorithms/implicit_als/implicit_als_training_distributed.h
Outdated
Show resolved
Hide resolved
cpp/daal/include/algorithms/implicit_als/implicit_als_training_distributed.h
Outdated
Show resolved
Hide resolved
|
|
||
| - :ref:`Correlation and Variance-Covariance Matrices <cor_cov>` | ||
| - :ref:`K-Means Clustering <kmeans>` | ||
| - :ref:`Linear <linear_regression>` and :ref:`Ridge <ridge>` Regression |
There was a problem hiding this comment.
Can add DBSCAN and implicit ALS here
There was a problem hiding this comment.
Pull request overview
This PR deprecates all distributed algorithm APIs in DAAL as part of transitioning distributed functionality from the legacy DAAL interface to the modern oneAPI interface. The deprecation marks these APIs for removal in 2026.x releases, with complete transition to oneAPI expected by 2027.0.
Changes:
- Documentation added describing deprecation timeline and affected algorithms
- DAAL_DEPRECATED macro added to constructors and initializer lists across distributed algorithm classes
- Reference anchors added to documentation files for cross-referencing
Reviewed changes
Copilot reviewed 28 out of 28 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| docs/source/deprecation.rst | Added deprecation notice section documenting affected algorithms and migration path |
| docs/source/daal/algorithms/qr/qr-without-pivoting.rst | Added reference anchor for QR decomposition |
| docs/source/daal/algorithms/implicit_als/implicit-alternating-least-squares.rst | Added reference anchor for Implicit ALS |
| cpp/daal/include/algorithms/svd/*.h | Deprecated distributed SVD constructors and input/result classes |
| cpp/daal/include/algorithms/ridge_regression/*.h | Deprecated distributed ridge regression constructors and input classes |
| cpp/daal/include/algorithms/qr/*.h | Deprecated distributed QR decomposition constructors and input/result classes |
| cpp/daal/include/algorithms/pca/*.h | Deprecated distributed PCA constructors, parameters, and input classes |
| cpp/daal/include/algorithms/moments/*.h | Deprecated distributed low order moments constructors and input classes |
| cpp/daal/include/algorithms/linear_regression/*.h | Deprecated distributed linear regression constructors and input classes |
| cpp/daal/include/algorithms/kmeans/*.h | Deprecated distributed K-Means constructors, inputs, and partial results |
| cpp/daal/include/algorithms/implicit_als/*.h | Deprecated distributed Implicit ALS constructors, parameters, inputs, and results |
| cpp/daal/include/algorithms/dbscan/*.h | Deprecated all distributed DBSCAN constructors, containers, inputs, and results across 13 steps |
| cpp/daal/include/algorithms/covariance/*.h | Deprecated distributed covariance constructors and input classes |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
| **Deprecation:** The distributed DAAL functionality in the oneDAL library is marked as deprecated. | ||
| The 2026.x releases are the last to provide it. The list of the deprecated DAAL distributed algorithms includes: |
There was a problem hiding this comment.
The timeline stated here is internally inconsistent: it says 2026.x are the last releases to provide distributed DAAL, while also stating that by 2027.0 everything will be available via oneDAL-only interfaces. If 2026.x is the last to provide DAAL distributed APIs, the removal point should be clearly stated (e.g., removed starting 2027.0). Please clarify the timeline and align the wording so it unambiguously communicates last supported version vs. first removed version.
There was a problem hiding this comment.
The exact dates of the removal cannot be specified now, because they are unknown yet. The removals will happen in 2026.x timeframe.
docs/source/deprecation.rst
Outdated
| **Reasons for deprecation:** The distributed functionality running on CPUs is being transitioned from DAAL to oneDAL. | ||
| By 2027.0 release, all distributed algorithms will be available through oneDAL interfaces only. |
There was a problem hiding this comment.
The timeline stated here is internally inconsistent: it says 2026.x are the last releases to provide distributed DAAL, while also stating that by 2027.0 everything will be available via oneDAL-only interfaces. If 2026.x is the last to provide DAAL distributed APIs, the removal point should be clearly stated (e.g., removed starting 2027.0). Please clarify the timeline and align the wording so it unambiguously communicates last supported version vs. first removed version.
| typedef typename super::PartialResultType PartialResultType; | ||
|
|
||
| Distributed() : Online<algorithmFPType, method>() {} | ||
| DAAL_DEPRECATED Distributed() : Online<algorithmFPType, method>() {} |
There was a problem hiding this comment.
Only the default constructor is marked deprecated here, but the class still exposes other public constructors (e.g., copy constructors) that remain non-deprecated. If the goal is to deprecate the distributed API surface, consider deprecating the class itself (or consistently marking all public constructors/assignment operators) to ensure users get a deprecation warning for any use of the type, not just one construction path.
There was a problem hiding this comment.
It is enough to deprecate only constructors, because those classes can only be created through those constructors.
| services::SharedPtr<covariance::Distributed<step2Master, algorithmFPType, covariance::defaultDense> >( | ||
| new covariance::Distributed<step2Master, algorithmFPType, covariance::defaultDense>())); |
There was a problem hiding this comment.
This deprecated constructor’s default argument instantiates covariance::Distributed<step2Master,...>, whose default ctor is now deprecated (in this PR). Many compilers emit deprecation diagnostics at the point of the default-argument declaration, which can cause warnings (or -Werror build breaks) for any TU that includes this header, even if the constructor is never called. Consider changing the default to an empty SharedPtr and performing the fallback initialization in the constructor definition (or otherwise avoiding a deprecated constructor call in the default argument expression).
| services::SharedPtr<covariance::Distributed<step2Master, algorithmFPType, covariance::defaultDense> >( | |
| new covariance::Distributed<step2Master, algorithmFPType, covariance::defaultDense>())); | |
| services::SharedPtr<covariance::DistributedIface<step2Master> >()); |
There was a problem hiding this comment.
If this leads to problems in the future, this can be changed. But for now I prefer to leave it as is.
Also, this API is planned for removal by 2027.0 release.
|
/intelci: run |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
| ****************************** | ||
|
|
||
| **Deprecation:** The distributed DAAL functionality in the oneDAL library is marked as deprecated. | ||
| The 2026.x releases are the last to provide it. The list of the deprecated DAAL distributed algorithms includes: |
There was a problem hiding this comment.
Minor grammar/readability: 'The list of the deprecated ... includes' reads awkwardly. Consider rephrasing to 'The following DAAL distributed algorithms are deprecated:' (and optionally split the long sentence for easier scanning).
| The 2026.x releases are the last to provide it. The list of the deprecated DAAL distributed algorithms includes: | |
| The 2026.x releases are the last to provide it. The following DAAL distributed algorithms are deprecated: |
| typedef typename super::PartialResultType PartialResultType; | ||
|
|
||
| Distributed() : Online<algorithmFPType, method>() {} | ||
| DAAL_DEPRECATED Distributed() : Online<algorithmFPType, method>() {} |
There was a problem hiding this comment.
Deprecation is currently applied to specific constructors, but the type itself (and potentially other public construction/usage paths) may remain non-deprecated. If the goal is to deprecate the distributed API surface, consider deprecating the Distributed<...> class template/specializations themselves (or consistently marking all public constructors and key entry points), so any use triggers a diagnostic regardless of which constructor a user calls.
There was a problem hiding this comment.
It is enough to deprecate only constructors, because those classes can only be created through those constructors.
|
/intelci: run |
1 similar comment
|
/intelci: run |
|
The CI error: |
|
/intelci: run |
|
I'm unable to access all the logs, but I see an issue with msvc likely popping up with this example: |
@david-cortes-intel yes, I also see the errors in python examples and tests. I will investigate. |
|
/intelci: run |
Description
This PR deprecates all distributed algorithms APIs in DAAL.
The actual removal of the deprecated APIs is expected in 2026.X releases.
Checklist:
Completeness and readability
Testing
No failures related to the changes in CI:
http://intel-ci.intel.com/f106607e-c718-f169-a79a-a4bf010d0e2d
No new functionality is introduced.
Performance
not applicable.