Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ CMAKE_CXX_STANDARD=23
builtin_civetweb=ON
experimental_adaptivecpp=OFF
pythia8=ON
roofit_multiprocess=ON
test_distrdf_dask=OFF
test_distrdf_pyspark=OFF
vdt=OFF
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
CMAKE_CXX_STANDARD=23
experimental_adaptivecpp=OFF
pythia8=ON
roofit_multiprocess=ON
test_distrdf_pyspark=OFF
vdt=OFF
cefweb=ON
1 change: 0 additions & 1 deletion .github/workflows/root-ci-config/buildconfig/global.txt
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ pyroot=ON
pythia8=OFF
qt6web=OFF
roofit=ON
roofit_multiprocess=OFF
root7=ON
rootbench=OFF
roottest=ON
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/root-ci-config/buildconfig/rawhide.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,3 @@ pythia8=ON
test_distrdf_dask=OFF
test_distrdf_pyspark=OFF
vdt=OFF
roofit_multiprocess=ON
8 changes: 8 additions & 0 deletions README/ReleaseNotes/v642/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ The following people have contributed to this new version:
* The overloads of `RooAbsReal::createChi2()` and `RooAbsReal::chi2FitTo()` that take unbinned **RooDataSet** data objects were deprecated in ROOT 6.40 and are now removed.
* The **RooStats::HybridPlot** class and the related **HybridResult::GetPlot** method were deprecated in ROOT 6.40 and are now removed.
* The `builtin_zeromq` and `builtin_cppzmq` build options that were deprecated in ROOT 6.40 are now removed.
* The `roofit_multiprocess` build option is deprecated and will be removed in ROOT 6.44. It has no effect anymore: RooFit's multi-process test statistics no longer depend on ZeroMQ and are now always built on non-Windows platforms, so there is no reason for an opt-in build option anymore (see the RooFit section below).
* The ROOT **auth** package together with `TVirtualAuth` and `TROOT::GetListOfSecContexts()`, and the **authenticated sockets** (`TSocket::CreateAuthSocket()`) feature are now removed following deprecation in ROOT 6.40.
* The `TSSLSocket` class is now removed following deprecation in ROOT 6.40.
* The bindings to the R programming language that are enabled with the `r=ON` or `tmva-rmva=ON` build options (`TRInterface`, RMVA, and friends) are removed, following deprecation in ROOT 6.40. Their maintenance is no longer justified, given the broader adoption of the scientific Python ecosystem. Users who still rely on R from C++ are encouraged to call R directly via https://cran.r-project.org/package=RInside, which is what the ROOT bindings were using internally.
Expand Down Expand Up @@ -154,6 +155,13 @@ the cut instead of being selected based on `sqrt(abs(x))`.

## RooFit

### RooFit::MultiProcess without ZeroMQ, now enabled by default

The `RooFit::MultiProcess` package that implements the parallel gradient minimization with `fitTo(..., RooFit::Parallelize(n))` previously communicated between the forked processes with ZeroMQ sockets, which required building ROOT with `roofit_multiprocess=ON` and the ZeroMQ (with draft API) and cppzmq dependencies.
The interprocess communication is now implemented directly on top of plain `socketpair()` pipes that are inherited by the forked worker processes, so the ZeroMQ and cppzmq dependencies and the `RooFitZMQ` library are removed entirely.
Since the feature no longer needs extra dependencies, it is now always built on non-Windows platforms and the `roofit_multiprocess` build option has no effect anymore; it is deprecated and will be removed in ROOT 6.44.
For implementers of custom `RooFit::MultiProcess::Job` subclasses, the message type in the `Job` interface changed from `zmq::message_t` to the new `RooFit::MultiProcess::Message` byte-buffer class, which supports the same usage patterns.

### Small changes

* The `RooMinimizer::Strategy` enum has been removed. It named the Minuit strategies that are usually referred to just by integers, but caused confusion because it didn't include the unnamed "Strategy 3". Since people usually set the strategy with integer values anyway, it was decided that the simplest solution to avoid the confusion was simply to remove the `RooMinimizer::Strategy` enum
Expand Down
67 changes: 0 additions & 67 deletions cmake/modules/FindZeroMQ.cmake

This file was deleted.

21 changes: 0 additions & 21 deletions cmake/modules/Findcppzmq.cmake

This file was deleted.

10 changes: 4 additions & 6 deletions cmake/modules/RootBuildOptions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,6 @@ ROOT_BUILD_OPTION(pyroot ON "Enable support for automatic Python bindings (PyROO
ROOT_BUILD_OPTION(pythia8 OFF "Enable support for Pythia 8.x [GPL]")
ROOT_BUILD_OPTION(qt6web OFF "Enable support for Qt6 web-based display (requires Qt6::WebEngineCore and Qt6::WebEngineWidgets)")
ROOT_BUILD_OPTION(roofit ON "Build the advanced fitting package RooFit, and RooStats for statistical tests. If xml is available, also build HistFactory.")
ROOT_BUILD_OPTION(roofit_multiprocess OFF "Build RooFit::MultiProcess and multi-process RooFit::TestStatistics classes (requires ZeroMQ >= 4.3.5 built with -DENABLE_DRAFTS and cppzmq).")
ROOT_BUILD_OPTION(root7 ON "Build ROOT 7 experimental components of ROOT")
ROOT_BUILD_OPTION(runtime_cxxmodules ON "Enable runtime support for C++ modules")
ROOT_BUILD_OPTION(shadowpw OFF "Enable support for shadow passwords")
Expand Down Expand Up @@ -304,11 +303,6 @@ if(builtin_openssl AND NOT APPLE)
message(FATAL_ERROR ">>> Option 'builtin_openssl' is only supported on macOS.")
endif()

# MultiProcess is not possible on Windows, so fail if it is manually set:
if(roofit_multiprocess AND WIN32)
message(FATAL_ERROR ">>> Option 'roofit_multiprocess' is not supported on Windows.")
endif()

#---Options depending of CMake Generator-------------------------------------------------------
if( CMAKE_GENERATOR STREQUAL Ninja)
set(fortran_defvalue OFF)
Expand Down Expand Up @@ -392,6 +386,10 @@ foreach(opt afdsmgrd afs alien bonjour builtin_afterimage builtin_davix builtin_
endforeach()

#---Deprecated options------------------------------------------------------------------------
if(DEFINED roofit_multiprocess)
message(DEPRECATION ">>> Option 'roofit_multiprocess' has no effect anymore and will be removed in the next release of ROOT: RooFit::MultiProcess no longer needs ZeroMQ and is now always built on all platforms except Windows.")
endif()

foreach(opt mpi r tmva-pymva)
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.")
Expand Down
26 changes: 0 additions & 26 deletions cmake/modules/SearchInstalledSoftware.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -1067,32 +1067,6 @@ if (mpi)
endif()
endif()

#---Check for ZeroMQ when building RooFit::MultiProcess--------------------------------------------

if (roofit_multiprocess)
message(STATUS "Looking for ZeroMQ (libzmq)")

# Temporarily prefer config mode over module mode, so that a CMake-installed system version
# gets detected before looking for an autotools-installed system version (which the
# FindZeroMQ.cmake module does).
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG_ORIGINAL_VALUE ${CMAKE_FIND_PACKAGE_PREFER_CONFIG})
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)

# The fail-on-missing branching is not implemented, and we always look for
# ZeroMQ and cppzmq with REQUIRED to fail configuration if not available.
# That's because the roofit_multiprocess option can only be deliberately
# enabled by the user with roofit_multiprocess=ON, in which case it would
# be frustrating to get it auto-disabled on missing dependencies.
find_package(ZeroMQ 4.3.5 REQUIRED)

# Reset default find_package mode
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ${CMAKE_FIND_PACKAGE_PREFER_CONFIG_ORIGINAL_VALUE})
unset(CMAKE_FIND_PACKAGE_PREFER_CONFIG_ORIGINAL_VALUE)

message(STATUS "Looking for ZeroMQ C++ bindings (cppzmq)")
find_package(cppzmq REQUIRED)
endif (roofit_multiprocess)

#---Check for googletest---------------------------------------------------------------
if (testing OR testsupport)
if (builtin_gtest)
Expand Down
3 changes: 1 addition & 2 deletions roofit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@ set(roofit_legacy_eval_backend ON CACHE BOOL "" FORCE)

add_subdirectory(batchcompute)
add_subdirectory(codegen)
if (roofit_multiprocess)
add_subdirectory(roofitZMQ)
if(NOT WIN32)
add_subdirectory(multiprocess)
endif()
add_subdirectory(roofitcore)
Expand Down
8 changes: 5 additions & 3 deletions roofit/multiprocess/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

ROOT_LINKER_LIBRARY(RooFitMultiProcess
src/worker.cxx
src/Channel.cxx
src/Messenger.cxx
src/ProcessManager.cxx
src/util.cxx
Expand All @@ -18,11 +19,9 @@ ROOT_LINKER_LIBRARY(RooFitMultiProcess
src/HeatmapAnalyzer.cxx
LIBRARIES
Core
DEPENDENCIES
RooFitZMQ
)

target_link_libraries(RooFitMultiProcess PUBLIC Hist RooFitZMQ)
target_link_libraries(RooFitMultiProcess PUBLIC Hist)
set(RooFitMultiProcess_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/res")
target_include_directories(RooFitMultiProcess
PRIVATE ${RooFitMultiProcess_INCLUDE_DIR}
Expand All @@ -41,10 +40,13 @@ if(NOT CMAKE_VERSION VERSION_LESS "3.23.0")
inc/RooFit/MultiProcess/Config.h
inc/RooFit/MultiProcess/HeatmapAnalyzer.h
inc/RooFit/MultiProcess/types.h
res/RooFit/MultiProcess/Channel.h
res/RooFit/MultiProcess/JobManager.h
res/RooFit/MultiProcess/Job.h
res/RooFit/MultiProcess/Message.h
res/RooFit/MultiProcess/Messenger.h
res/RooFit/MultiProcess/Messenger_decl.h
res/RooFit/MultiProcess/Poller.h
res/RooFit/MultiProcess/ProcessManager.h
res/RooFit/MultiProcess/ProcessTimer.h
res/RooFit/MultiProcess/Queue.h
Expand Down
Loading
Loading