In order to take full advantage of new computer architectures and to satisfy the requirement of minimizing the CPU usage with increasing amount of data to analysis, parallelisation and vectorisation have been introduced in the ROOT mathematical and statistical libraries.
We report first on the improvements obtained in the function evaluation, used for data modelling, by adding the support for SIMD vectorisation using the convenient API provided by the VecCore package, which has been recently integrated in ROOT. We then present how the evaluation of the likelihood and the least square functions used for fitting ROOT histograms, graphs and trees have been parallelized using different paradigms.
We describe in detail how the vectorisation and parallelisation has been introduced and how the support for different SIMD’s backed libraries and for different parallelisation strategies, such as those based on multi-threads or multi-process, has been included. Furthermore, we present some new generic classes supporting a task based parallelisation model, which have been introduced in ROOT, and how these new classes can be used also for other complex computational tasks.