Skip to content

Conversation

@guitargeek
Copy link
Contributor

@guitargeek guitargeek commented Dec 20, 2025

In the interpreter, we must match the SIMD width used by compiled ROOT. ROOT::Double_v aliases the best available native SIMD type, which may differ between compiled and interpreted contexts (e.g. with -march=native). Therefore, we explicitly select the fixed-size SIMD type corresponding to the native SIMD width used in compiled ROOT.

This fixes failues in the vectorized TFormula tests for platforms with possible mismatch between the SIMD types between interpretd and compiled context (e.g. vanilla Alma 10 or Alma 9 with march=native in the CI).

A separate commit also enables VecCore and Vc for the -march=native build in the CI, so we get test coverage.

Note that this fix is not specific to VecCore or Vc: the same needs to be done if we were using std::experimental::simd or std::simd.

@github-actions
Copy link

github-actions bot commented Dec 21, 2025

Test Results

    22 files      22 suites   3d 20h 22m 5s ⏱️
 3 794 tests  3 793 ✅ 0 💤 1 ❌
80 296 runs  80 295 ✅ 0 💤 1 ❌

For more details on these failures, see this check.

Results for commit 096f2df.

♻️ This comment has been updated with latest results.

In the interpreter, we must match the SIMD width used by compiled ROOT.
`ROOT::Double_v` aliases the best available native SIMD type, which may
differ between compiled and interpreted contexts (e.g. with
`-march=native`). Therefore, we explicitly select the fixed-size SIMD
type corresponding to the native SIMD width used in compiled ROOT.

This fixes failues in the vectorized TFormula tests for platforms with
possible mismatch between the SIMD types between interpretd and compiled
context (e.g. vanilla Alma 10 or Alma 9 with `march=native` in the CI).

Also, disable some subtests in the vectorized TFormula tests if they'd
still fail becaues of missing Vc symbols.
This is to show that issues related to VecCore and Vc are fixed, and to
provide much-needed test coverage for a gradual migration from VecCore
and Vc to `std::experimental::simd`.
Using the subset of the Vc API that is also part of
`std::experimental::simd` makes it possible to transparently use
`std::experimental::simd` as a GenVector template parameter.
@guitargeek guitargeek merged commit 0e4c52a into root-project:master Dec 25, 2025
28 of 31 checks passed
@guitargeek guitargeek deleted the veccore_jira_issue branch December 25, 2025 15:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants