RooFit::MultiProcess & TestStatistics part 7: MultiProcess based TestStatistics classes#9349
Conversation
This comment has been minimized.
This comment has been minimized.
|
@phsft-bot build with flags -Droofit_multiprocess=ON -Dbuiltin_zeromq=ON -Dbuiltin_cppzmq=ON |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
@phsft-bot build with flags -Droofit_multiprocess=ON -Dbuiltin_zeromq=ON -Dbuiltin_cppzmq=ON |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
@phsft-bot build with flags -Droofit_multiprocess=ON -Dbuiltin_zeromq=ON -Dbuiltin_cppzmq=ON |
|
Starting build on |
|
Build failed on ROOT-ubuntu16/nortcxxmod. Failing tests: |
|
Build failed on ROOT-performance-centos8-multicore/default. Warnings:
Failing tests: |
|
Build failed on windows10/cxx14. Errors:
|
|
Build failed on mac1015/python3. Failing tests:
|
This comment has been minimized.
This comment has been minimized.
|
@phsft-bot build on windows10/cxx14 with flags -Droofit_multiprocess=ON -Dbuiltin_zeromq=ON -Dbuiltin_cppzmq=ON |
|
Starting build on |
|
Starting build on |
|
@phsft-bot build with flags -Droofit_multiprocess=ON -Dbuiltin_zeromq=ON -Dbuiltin_cppzmq=ON |
|
Starting build on |
|
Build failed on windows10/cxx14. Errors:
|
ce08c20 to
807564d
Compare
|
Starting build on |
807564d to
fb952c0
Compare
|
Starting build on |
guitargeek
left a comment
There was a problem hiding this comment.
Thanks @egpbos for this very well organized PR, respecting many good practices! It was smooth to review with this commit history and there is nothing that blocks us from merging.
One thing that we need to still follow up on is the leaking of zeromq symbols. I will check again if they still leak in my environment, and if yes, open a GitHub issue so we have a communication thread to talk about this further.
…o_workers Also use perfect forwarding to avoid copying movable messages.
Replaces custom variables, which were not working anyway, because they are not defined outside of their scope, in parent (or sibling) directories.
The default setting for roofit_multiprocess on Windows is now OFF. If -Droofit_multiprocess=ON is passed manually, CMake configuration will emit a fatal error.
Three things that also impact existing files (not just the ones added in this commit): - RooMinimizer templated constructors and create factory functions removed. Replaced with enum class flags that allow the user to choose the type of RooAbsMinimizerFcn and the Likelihood(Gradient)Wrapper implementations to use. Same for TestStatistics::MinuitFcnGrad. - add *WithPrevResults implementations to pass along previous gradient, second derivative and step size information between Minuit2 and RooFit. - Add compiler definition to disable MultiProcess based classes (also in MinuitFcnGrad) when not building with MultiProcess (e.g. in Windows).
fb952c0 to
8341962
Compare
|
Starting build on |
|
@phsft-bot build with flags -Droofit_multiprocess=ON -Dbuiltin_zeromq=ON -Dbuiltin_cppzmq=ON |
|
Starting build on |
|
Build failed on windows10/cxx14. Errors:
|
lmoneta
left a comment
There was a problem hiding this comment.
LGTM !
Thank you Patrick for this contribution!

In this PR, we introduce two new classes:
LikelihoodJobandLikelihoodGradientJob. These areRooFit::MultiProcessbased test-statistic calculators that parallelize likelihood and likelihood gradient calculation respectively over multiple processes. These classes can be used internally byRooMinimizerto speed up fitting withmigrad. The way to use them is to use the newRooMinimizerconstructor that takes a (pointer to a)RooAbsLlikelihood class that was introduced in previous PR #8700.This PR is the seventh and final part of a split and clean-up of #8294.
Changes or fixes:
LikelihoodJobandLikelihoodGradientJobunder theRooFit::TestStatisticsnamespace.LikelihoodGradientJobtest case, which also covers the rest of theTestStatisticsframework, as promised in RooFit::MultiProcess & TestStatistics part 6: add RooFit::TestStatistics #8700 (comment).KahanSumconstructors that allow for initialization of the full internal state. This is necessary for serializing and rematerializingKahanSums so they can be sent over ZeroMQ sockets.RooMinimizertemplated constructors and create factory functions were removed. These are replaced with enum class flags that allow the user to choose the type ofRooAbsMinimizerFcn(this was already in place) and theLikelihood(Gradient)Wrapperimplementations to use, i.e. the classes introduced in this PR. Similar changes were made inMinuitFcnGrad, which is now also template-free.RooMinimizer's (now) two constructors use two helper functions now to avoid code duplication.RooFitZMQandRooFit::MultiProcessthat only came to light now when building these classes that depend onRooFit::MultiProcess. These are fixed.LikelihoodGradientWrapperandMinuitFcnGradfor passing along previous gradient, second derivative and step size information from Minuit2 to RooFit and back, i.e. using the functionality introduced in RooFit::MultiProcess & TestStatistics part 5b: test RooGradMinimizerFcn #8694.Checklist:
KahanSumand one for the rest)