You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README/ReleaseNotes/v640/index.md
+14Lines changed: 14 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -71,6 +71,20 @@ This change affects the following classes: `TFile`, `TMapFile`, `TMemFile`, `TD
71
71
72
72
## Math
73
73
74
+
### Migration from Vc to `std::simd`
75
+
76
+
ROOT has migrated its internal SIMD usage from **Vc** to `std::simd` where applicable.
77
+
78
+
This change affects:
79
+
* The vectorized backend of **TFormula** and **TMath** interfaces that are available via VecCore when building ROOT with `veccore=ON`.
80
+
* Users who instantiate the GenVector classes with Vc SIMD types like `Vc::double_v`. If you rely on these types, your code must be update to use `std::simd` instead.
81
+
82
+
* On **Windows and Apple silicon platforms**, this change has no practical impact: Vc-based SIMD via VecCore was not supported by ROOT on these platforms, and ROOT will also not try to use `std::simd` now on these platforms.
83
+
84
+
* TFormula and TMath attempt to use `std::simd` when compiled with **Clang** (any supported version) or **GCC ≥ 9**. On other compilers or configurations, SIMD support is disabled. This affects in particular the default compiler on RHEL/AlmaLinux 8 (GCC 8.5).
85
+
86
+
* As a consequence of this migration, the build options **vc** and **builtin_vc** are now deprecated and ignored. Their usage will cause CMake configuration errors starting from ROOT 6.42.
@@ -180,7 +179,6 @@ ROOT_BUILD_OPTION(unfold OFF "Enable the unfold package [GPL]")
180
179
ROOT_BUILD_OPTION(unuran OFF"Enable support for UNURAN (package for generating non-uniform random numbers) [GPL]")
181
180
ROOT_BUILD_OPTION(uring OFF"Enable support for io_uring (requires liburing and Linux kernel >= 5.1)")
182
181
ROOT_BUILD_OPTION(use_gsl_cblas ON"Use the CBLAS library from GSL instead of finding a more optimized BLAS library automatically with FindBLAS (the GSL CBLAS is less performant but more portable)")
183
-
ROOT_BUILD_OPTION(vc OFF"Enable support for Vc (SIMD Vector Classes for C++)")
184
182
ROOT_BUILD_OPTION(vdt ON"Enable support for VDT (fast and vectorisable mathematical functions)")
185
183
ROOT_BUILD_OPTION(veccore OFF"Enable support for VecCore SIMD abstraction library")
186
184
ROOT_BUILD_OPTION(vecgeom OFF"Enable support for VecGeom vectorized geometry library")
@@ -253,7 +251,6 @@ if(all)
253
251
set(tmva-pymva_defvalue ON)
254
252
set(tmva-rmva_defvalue ON)
255
253
set(unuran_defvalue ON)
256
-
set(vc_defvalue ON)
257
254
set(vdt_defvalue ON)
258
255
set(veccore_defvalue ON)
259
256
set(vecgeom_defvalue ON)
@@ -295,7 +292,6 @@ if(builtin_all)
295
292
set(builtin_png_defvalue ON)
296
293
set(builtin_tbb_defvalue ON)
297
294
# set(builtin_unuran_defvalue ON) (GPL)
298
-
set(builtin_vc_defvalue ON)
299
295
set(builtin_vdt_defvalue ON)
300
296
set(builtin_veccore_defvalue ON)
301
297
set(builtin_xrootd_defvalue ON)
@@ -415,6 +411,35 @@ if(DEFINED rpath)
415
411
"") # empty line at the end to make the deprecation message more visible
416
412
endif()
417
413
414
+
foreach(opt vc builtin_vc)
415
+
if(${opt})
416
+
message(DEPRECATION ">>> Option '${opt}' is deprecated and ignored."
417
+
"ROOT now uses std::simd for the vectorized TFormula and TMath classes when available (Clang or GCC >= 9)."
418
+
"Using this option will result in configuration errors in ROOT 6.42.")
419
+
endif()
420
+
endforeach()
421
+
422
+
foreach(opt veccore builtin_veccore)
423
+
# Disable VecCore if we don't support it for a given platform.
424
+
# We try to give clear explanations here in all distinct cases.
425
+
if(${opt})
426
+
if(WIN32)
427
+
message(WARNING "ROOT option '${opt}' will be disabled. Using VecCore on Windows is not supported by ROOT.")
428
+
set(${opt}OFFCACHEBOOL"Disabled because VecCore is not supported on Windows." FORCE)
message(WARNING "ROOT option '${opt}' will be disabled. We don't support using VecCore on Apple with Intel hardware anymore.")
431
+
set(${opt}OFFCACHEBOOL"Disabled because VecCore is not supported on Apple with Intel hardware." FORCE)
432
+
elseif(APPLE)
433
+
message(WARNING "ROOT option '${opt}' will be disabled. We don't support using VecCore on Apple silicon, as std::simd is not available for Apple Clang and the old Vc backend also didn't support Apple silicon anyway.")
434
+
set(${opt}OFFCACHEBOOL"Disabled because VecCore is not supported on Apple silicon." FORCE)
435
+
elseif(CMAKE_CXX_COMPILER_ID STREQUAL"GNU"
436
+
AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9)
437
+
message(WARNING "ROOT option '${opt}' will be disabled. GCC versions older than 9 do not provide std::simd, and the Vc backend of VecCore is not supported anymore by ROOT.")
438
+
set(${opt}OFFCACHEBOOL"Disabled because VecCore is not supported on GCC < 9." FORCE)
439
+
endif()
440
+
endif()
441
+
endforeach()
442
+
418
443
foreach(opt minuit2_mpi)
419
444
if(${opt})
420
445
message(WARNING "The option '${opt}' can only be used to minimise thread-safe functions in Minuit2. It cannot be used for Histogram/Graph fitting and for RooFit. If you want to use Minuit2 with MPI support, it is better to build Minuit2 as a standalone library.")
0 commit comments