Skip to content

fixes for 2026.0 compiler#3476

Open
Alexandr-Solovev wants to merge 18 commits intouxlfoundation:mainfrom
Alexandr-Solovev:dev/asolovev_fixes_compiler_2026
Open

fixes for 2026.0 compiler#3476
Alexandr-Solovev wants to merge 18 commits intouxlfoundation:mainfrom
Alexandr-Solovev:dev/asolovev_fixes_compiler_2026

Conversation

@Alexandr-Solovev
Copy link
Contributor

@Alexandr-Solovev Alexandr-Solovev commented Jan 14, 2026

PR Description

Summary

This PR updates SYCL code to remove deprecated features and improve compatibility with recent compiler versions.

Changes

  1. Replacement of deprecated address_space

    • Replaced usage of
      sycl::access::address_space::ext_intel_global_device_space
      with
      sycl::access::address_space::global_space
    • Reason: ext_intel_global_device_space has been removed in recent compiler versions.
  2. Update of binary operations with is_logical flag

    • For all operations like:
      template <typename T>
      struct logical_or {
          using tag_t = reduce_binary_op_tag;
          constexpr static inline T init_value = false;
          using acc_t = T;
      };
    • Added is_logical flag and updated init_value to T(false)
    • Purpose: Ensure compatibility with
      sycl::reduce_over_group(it.get_group(), local_accum, binary.native);
      so that the binary operation matches the type of the return value during reduction.
  3. Removal of old compiler version checks

    • Removed blocks like:
      #if __SYCL_COMPILER_VERSION >= 20230828

Notes

  • All changes are backward compatible with current SYCL standards.
  • No behavioral changes; only refactoring for compatibility and clarity.

Checklist:

Completeness and readability

  • 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 updates 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 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

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

@Alexandr-Solovev Alexandr-Solovev changed the title fixes fixes for 2026.0 compiler Jan 15, 2026
@Alexandr-Solovev Alexandr-Solovev added the dependencies Pull requests that update a dependency file label Jan 15, 2026
@Alexandr-Solovev Alexandr-Solovev marked this pull request as ready for review January 15, 2026 16:04
@ethanglaser
Copy link
Contributor

ethanglaser commented Jan 15, 2026

Nice work on this so far! CEV job with this branch: http://intel-ci.intel.com/f0f24793-7dcb-f1ab-af3c-a4bf010d0e2d. FYI there are still fails in oneDAL build on windows and several validation jobs on linux side

Copy link
Contributor

@Vika-F Vika-F left a comment

Choose a reason for hiding this comment

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

Please revert this change in logical_or, wait for the CI results and LGTM.

constexpr static inline auto native = [](const T& a, const T& b) {
    return static_cast<T>(std::logical_or<T>{}(a, b));
};

@ethanglaser
Copy link
Contributor

ethanglaser commented Jan 23, 2026

Please share the latest CEV run from this branch. Also please address clang-format before merging

constexpr static inline sycl::logical_or<T> native{};
#else
constexpr static inline std::logical_or<T> native{};
};
Copy link
Contributor

Choose a reason for hiding this comment

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

Confused how this file compiled with an extra } in here?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I guess it was under #else branch and was never built.

Copilot AI review requested due to automatic review settings February 4, 2026 09:28
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR updates SYCL code to remove deprecated compiler features and improve compatibility with the 2026.0 compiler version.

Changes:

  • Replaced deprecated ext_intel_global_device_space with global_space in atomic operations
  • Updated logical_or binary operations to use bool accumulator type instead of float/double
  • Removed compiler version checks (#if __SYCL_COMPILER_VERSION >= ...) for obsolete fallback code
  • Updated MKL SYCL library symlinks from version 5 to version 6

Reviewed changes

Copilot reviewed 30 out of 30 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
dev/bazel/deps/mkl.tpl.BUILD Updated MKL SYCL library symlinks from .so.5 to .so.6
dev/bazel/deps/mkl.bzl Updated MKL SYCL library symlinks from .so.5 to .so.6
cpp/oneapi/dal/backend/primitives/reduction/functors.hpp Fixed logical_or init_value and replaced deprecated address space
cpp/oneapi/dal/backend/atomic.hpp Replaced deprecated ext_intel_global_device_space with global_space
cpp/oneapi/dal/backend/primitives/reduction/*.cpp Added AccT template parameter for accumulator type in reduction operations
cpp/oneapi/dal/backend/primitives/selection/*.cpp Removed obsolete compiler version checks
cpp/oneapi/dal/algo//backend/gpu/.cpp Replaced deprecated address space and removed compiler version checks


array<float_t> groundtruth_cw() const {
auto res = array<float_t>::full(width_, binary_.init_value);
auto res = array<float_t>::full(width_, static_cast<float_t>(binary_.init_value));
Copy link

Copilot AI Feb 4, 2026

Choose a reason for hiding this comment

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

The explicit cast static_cast<float_t>(binary_.init_value) is needed because binary_.init_value is now of type bool for logical_or operations. Consider documenting this cast requirement to clarify why the conversion is necessary for future maintainers.

Copilot uses AI. Check for mistakes.
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants