RooFit is the statistical modeling and fitting package used in many big particle physics experiments to extract physical parameters from reduced particle collision data, e.g. the Higgs boson experiments at the LHC.
RooFit aims to separate particle physics model building and fitting (the users' goals) from their technical implementation and optimization in the back-end.
In this talk, we outline our efforts to further optimize the back-end by automatically running major parts of user models in parallel on multi-core machines.
A major challenge is that RooFit allows users to define many different types of models, with different types of computational bottlenecks.
Our automatic parallelization framework must then be flexible, while still reducing run-time by at least an order of magnitude, preferably more.
We have performed extensive benchmarks and identified at least three bottlenecks that will benefit from parallelization.
To tackle these and possible future bottlenecks, we designed a parallelization layer that allows us to parallelize existing classes with minimal effort, but with high performance and retaining as much of the existing class's interface as possible.
The high-level parallelization model is a task-stealing approach.
Our multi-process approach uses socket-based communication, originally implemented using a custom built, highly performant bi-directional memory mapped pipe, while currently we are considering switching to ZeroMQ for more flexibilty.
Preliminary results show speed-ups of factor 2 to 20, depending on the exact model and parallelization strategy.