Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/workflows/root-ci-config/buildconfig/mac14.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ builtin_openssl=ON
builtin_pcre=ON
builtin_tbb=ON
builtin_unuran=ON
builtin_vc=ON
builtin_vdt=ON
builtin_veccore=ON
builtin_xrootd=ON
Expand Down
1 change: 1 addition & 0 deletions README/ReleaseNotes/v638/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ The following people have contributed to this new version:
Relative RPATHs to the main ROOT libraries are unconditionally appended to all ROOT executables and libraries if the operating system supports it.
If you want a ROOT build without RPATHs, use the canonical CMake variable `CMAKE_SKIP_INSTALL_RPATH=TRUE`.
* The `TH1K` class is deprecated and will be removed in 6.40. It did not implement the `TH1` interface consistently, and limited the usability of the k-neighbors method it implemented by closely coupling the algorithm with the histogram class. Please use the new `TMath::KNNDensity` function that implements the same mathematical logic.
* The `vc` and `builtin_vc` build options are deprecated and will be removed in ROOT 6.40. They were not working anymore on newer platforms, and the vectorized math functions that they added to ROOT were not adopted by its users.

## Core Libraries
* Behavior change: when selecting a template instantiation for a dictionary, all the template arguments have to be fully defined - the forward declarations are not enough any more. The error prompted by the dictionary generator will be `Warning: Unused class rule: MyTemplate<MyFwdDeclaredClass>`.
Expand Down
6 changes: 3 additions & 3 deletions cmake/modules/RootBuildOptions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ ROOT_BUILD_OPTION(builtin_pcre OFF "Build bundled copy of PCRE")
ROOT_BUILD_OPTION(builtin_png OFF "Build bundled copy of libpng")
ROOT_BUILD_OPTION(builtin_tbb OFF "Build TBB internally (requires network)")
ROOT_BUILD_OPTION(builtin_unuran OFF "Build bundled copy of unuran")
ROOT_BUILD_OPTION(builtin_vc OFF "Build Vc internally (requires network)")
ROOT_BUILD_OPTION(builtin_vc OFF "Build Vc internally (requires network) [deprecated]")
ROOT_BUILD_OPTION(builtin_vdt OFF "Build VDT internally (requires network)")
ROOT_BUILD_OPTION(builtin_veccore OFF "Build VecCore internally (requires network)")
ROOT_BUILD_OPTION(builtin_xrootd OFF "Build XRootD internally (requires network)")
Expand Down Expand Up @@ -180,7 +180,7 @@ ROOT_BUILD_OPTION(unfold OFF "Enable the unfold package [GPL]")
ROOT_BUILD_OPTION(unuran OFF "Enable support for UNURAN (package for generating non-uniform random numbers) [GPL]")
ROOT_BUILD_OPTION(uring OFF "Enable support for io_uring (requires liburing and Linux kernel >= 5.1)")
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)")
ROOT_BUILD_OPTION(vc OFF "Enable support for Vc (SIMD Vector Classes for C++)")
ROOT_BUILD_OPTION(vc OFF "Enable support for Vc (SIMD Vector Classes for C++) [deprecated]")
ROOT_BUILD_OPTION(vdt ON "Enable support for VDT (fast and vectorisable mathematical functions)")
ROOT_BUILD_OPTION(veccore OFF "Enable support for VecCore SIMD abstraction library")
ROOT_BUILD_OPTION(vecgeom OFF "Enable support for VecGeom vectorized geometry library")
Expand Down Expand Up @@ -402,7 +402,7 @@ foreach(opt afdsmgrd afs alien bonjour builtin_afterimage castor chirp cxx11 cxx
endforeach()

#---Deprecated options------------------------------------------------------------------------
foreach(opt )
foreach(opt builtin_vc vc)
if(${opt})
message(DEPRECATION ">>> Option '${opt}' is deprecated and will be removed in the next release of ROOT. Please contact root-dev@cern.ch should you still need it.")
endif()
Expand Down
106 changes: 0 additions & 106 deletions cmake/modules/SearchInstalledSoftware.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -1365,106 +1365,12 @@ if(builtin_tbb)
set(TBB_TARGET TBB)
endif()

#---Check for Vc---------------------------------------------------------------------
if(builtin_vc)
unset(Vc_FOUND)
unset(Vc_FOUND CACHE)
set(vc ON CACHE BOOL "Enabled because builtin_vc requested (${vc_description})" FORCE)
elseif(vc)
if(fail-on-missing)
find_package(Vc 1.4.4 CONFIG QUIET REQUIRED)
else()
find_package(Vc 1.4.4 CONFIG QUIET)
if(NOT Vc_FOUND)
message(STATUS "Vc library not found, support for it disabled.")
message(STATUS "Please enable the option 'builtin_vc' to build Vc internally.")
set(vc OFF CACHE BOOL "Disabled because Vc not found (${vc_description})" FORCE)
endif()
endif()
if(Vc_FOUND)
set_property(DIRECTORY APPEND PROPERTY INCLUDE_DIRECTORIES ${Vc_INCLUDE_DIR})
BUILD_ROOT_INCLUDE_PATH("${Vc_INCLUDE_DIR}")
endif()
endif()

if(vc AND NOT Vc_FOUND)
ROOT_CHECK_CONNECTION_AND_DISABLE_OPTION("vc")
endif()

if(vc AND NOT Vc_FOUND)
set(Vc_VERSION "1.4.4")
set(Vc_PROJECT "Vc-${Vc_VERSION}")
set(Vc_SRC_URI "${lcgpackages}/${Vc_PROJECT}.tar.gz")
set(Vc_DESTDIR "${CMAKE_BINARY_DIR}/externals")
set(Vc_ROOTDIR "${Vc_DESTDIR}/${CMAKE_INSTALL_PREFIX}")
set(Vc_LIBNAME "${CMAKE_STATIC_LIBRARY_PREFIX}Vc${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(Vc_LIBRARY "${Vc_ROOTDIR}/lib/${Vc_LIBNAME}")

ExternalProject_Add(VC
URL ${Vc_SRC_URI}
URL_HASH SHA256=5933108196be44c41613884cd56305df320263981fe6a49e648aebb3354d57f3
BUILD_IN_SOURCE 0
BUILD_BYPRODUCTS ${Vc_LIBRARY}
LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 LOG_OUTPUT_ON_FAILURE 1
CMAKE_ARGS -G ${CMAKE_GENERATOR}
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_CXX_FLAGS=${ROOT_EXTERNAL_CXX_FLAGS}
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
INSTALL_COMMAND env DESTDIR=${Vc_DESTDIR} ${CMAKE_COMMAND} --build . --target install
TIMEOUT 600
)

set(VC_TARGET Vc)
set(Vc_LIBRARIES Vc)
set(Vc_INCLUDE_DIR ${Vc_ROOTDIR}/include)
set(Vc_CMAKE_MODULES_DIR ${Vc_ROOTDIR}/lib/cmake/Vc)

add_library(VcExt STATIC IMPORTED)
set_property(TARGET VcExt PROPERTY IMPORTED_LOCATION ${Vc_LIBRARY})
add_dependencies(VcExt VC)

add_library(Vc INTERFACE)
target_include_directories(Vc SYSTEM BEFORE INTERFACE $<BUILD_INTERFACE:${Vc_INCLUDE_DIR}>)
target_link_libraries(Vc INTERFACE VcExt)

find_package_handle_standard_args(Vc
FOUND_VAR Vc_FOUND
REQUIRED_VARS Vc_INCLUDE_DIR Vc_LIBRARIES Vc_CMAKE_MODULES_DIR
VERSION_VAR Vc_VERSION)

# FIXME: This is a workaround to let ROOT find the headers at runtime if
# they are in the build directory. This is necessary until we decide how to
# treat externals with headers used by ROOT
if(NOT EXISTS ${CMAKE_BINARY_DIR}/include/Vc)
if (NOT EXISTS ${CMAKE_BINARY_DIR}/include)
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/include)
endif()
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
${Vc_INCLUDE_DIR}/Vc ${CMAKE_BINARY_DIR}/include/Vc)
endif()
# end of workaround

install(DIRECTORY ${Vc_ROOTDIR}/ DESTINATION ".")
endif()

if(Vc_FOUND)
# Missing from VcConfig.cmake
set(Vc_INCLUDE_DIRS ${Vc_INCLUDE_DIR})
endif()

#---Check for VecCore--------------------------------------------------------------------
if(builtin_veccore)
unset(VecCore_FOUND)
unset(VecCore_FOUND CACHE)
set(veccore ON CACHE BOOL "Enabled because builtin_veccore requested (${veccore_description})" FORCE)
elseif(veccore)
if(vc)
set(VecCore_COMPONENTS Vc)
endif()
if(fail-on-missing)
find_package(VecCore 0.4.2 CONFIG QUIET REQUIRED COMPONENTS ${VecCore_COMPONENTS})
else()
Expand Down Expand Up @@ -1521,18 +1427,6 @@ if(builtin_veccore)
target_include_directories(VecCore SYSTEM INTERFACE $<BUILD_INTERFACE:${VecCore_ROOTDIR}/include>)
add_dependencies(VecCore VECCORE)

if (Vc_FOUND)
set(VecCore_Vc_FOUND True)
set(VecCore_Vc_DEFINITIONS -DVECCORE_ENABLE_VC)
set(VecCore_Vc_INCLUDE_DIR ${Vc_INCLUDE_DIR})
set(VecCore_Vc_LIBRARIES ${Vc_LIBRARIES})

set(VecCore_DEFINITIONS ${VecCore_Vc_DEFINITIONS})
list(APPEND VecCore_INCLUDE_DIRS ${VecCore_Vc_INCLUDE_DIR})
set(VecCore_LIBRARIES ${VecCore_LIBRARIES} ${Vc_LIBRARIES})
target_link_libraries(VecCore INTERFACE ${Vc_LIBRARIES})
endif()

find_package_handle_standard_args(VecCore
FOUND_VAR VecCore_FOUND
REQUIRED_VARS VecCore_INCLUDE_DIRS VecCore_LIBRARIES
Expand Down
7 changes: 0 additions & 7 deletions config/RConfigure.in
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
#@haspthread@ R__HAS_PTHREAD /**/
#@hasxft@ R__HAS_XFT /**/
#@hascocoa@ R__HAS_COCOA /**/
#@hasvc@ R__HAS_VC /**/
#@hasvdt@ R__HAS_VDT /**/
#@hasveccore@ R__HAS_VECCORE /**/
#@usecxxmodules@ R__USE_CXXMODULES /**/
Expand All @@ -54,12 +53,6 @@
#@hastbb@ R__HAS_TBB /**/
#define R__HARDWARE_INTERFERENCE_SIZE @hardwareinterferencesize@ /*Determined at CMake configure to be stable across all TUs*/

#if defined(R__HAS_VECCORE) && defined(R__HAS_VC)
#ifndef VECCORE_ENABLE_VC
#define VECCORE_ENABLE_VC
#endif
#endif

#@uselz4@ R__HAS_DEFAULT_LZ4 /**/
#@usezlib@ R__HAS_DEFAULT_ZLIB /**/
#@uselzma@ R__HAS_DEFAULT_LZMA /**/
Expand Down
3 changes: 0 additions & 3 deletions core/clingutils/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,6 @@ set(clinginclude ${CMAKE_SOURCE_DIR}/interpreter/cling/include)
set(custom_modulemaps)
if (runtime_cxxmodules)
set(custom_modulemaps boost.modulemap tinyxml2.modulemap cuda.modulemap module.modulemap.build)
if(vc)
set(custom_modulemaps ${custom_modulemaps} vc.modulemap)
endif()

# We need to override the default modulemap because instead of producing a
# single std.pcm, produces hundreds of pcms. This changed with MacOSX14.4.sdk
Expand Down
4 changes: 0 additions & 4 deletions interpreter/cling/include/cling/vc.modulemap

This file was deleted.

10 changes: 0 additions & 10 deletions math/mathcore/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,6 @@ set(HEADERS
TRandom3.h
TRandomGen.h
TStatistic.h
VectorizedTMath.h
)

if(runtime_cxxmodules)
Expand All @@ -104,14 +103,6 @@ if(runtime_cxxmodules)
# 'abs' shadow declaration (from stl math.h) is broken.
# FIXME: Revise after a llvm upgrade or reproduce it outside rootcling.
list(REMOVE_ITEM HEADERS "Math/Math.h")

if(vc)
# We do not link against libVc.a thus it makes no sense to check for
# version compatibility between libraries and header files. This fixes
# ROOT-11002 where upon building the modules.idx we run the static ctor
# runLibraryAbiCheck which fails to find the corresponding symbol.
set(dictoptions "-m" "Vc" "-mByproduct" "Vc" "-D" "Vc_NO_VERSION_CHECK")
endif(vc)
endif()

ROOT_ADD_C_FLAG(_flags -Wno-strict-overflow) # Avoid what it seems a compiler false positive warning
Expand Down Expand Up @@ -189,7 +180,6 @@ ROOT_STANDARD_LIBRARY_PACKAGE(MathCore
src/TStatistic.cxx
src/UnBinData.cxx
src/Util.cxx
src/VectorizedTMath.cxx
LIBRARIES
${MATHCORE_LIBRARIES}
DICTIONARY_OPTIONS
Expand Down
23 changes: 0 additions & 23 deletions math/mathcore/inc/Math/Types.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,36 +5,13 @@

#ifdef R__HAS_VECCORE

#if defined(R__HAS_VC)

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wall"
#pragma GCC diagnostic ignored "-Wunused-parameter"
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#if (__cplusplus >= 202002L) // only for C++20
#pragma GCC diagnostic ignored "-Wdeprecated-enum-enum-conversion"
#endif

#ifdef __clang__
#pragma clang diagnostic ignored "-Wconditional-uninitialized"
#pragma clang diagnostic ignored "-Wdeprecated-copy"
#endif

#include <Vc/Vc>
#pragma GCC diagnostic pop
#endif

#include <VecCore/VecCore>

namespace ROOT {

namespace Internal {
using ScalarBackend = vecCore::backend::Scalar;
#ifdef VECCORE_ENABLE_VC
using VectorBackend = vecCore::backend::VcVector;
#else
using VectorBackend = vecCore::backend::Scalar;
#endif
}
using Float_v = typename Internal::VectorBackend::Float_v;
using Double_v = typename Internal::VectorBackend::Double_v;
Expand Down
33 changes: 0 additions & 33 deletions math/mathcore/inc/VectorizedTMath.h

This file was deleted.

Loading
Loading