MultithreadCorner/Hydra
Description
Hydra is a C++11 compliant and header only framework designed to perform commom data analysis tasks on massivelly parallel platforms. Hydra provides a collection of containers and algorithms commomly used in HEP data analysis, which can deploys transparently OpenMP, CUDA and TBB enabled devices, allowing the user to re-use the same code across a large range of available multi-core CPU and accelerators. The framework design is focused on performance and precision.
The core algorithms follow as close as is possible the implementations widely used in framworks like ROOT and libraries like GSL.
Release notes of the version v2.1.0:
This is a major release of Hydra. Many new features was added and large parts of the framework have been rewritten. The main changes are summarized below.
New features:
- Monte Carlo based phase-space integrator.
- Generation of phase-space Monte Carlo weighted and unweighted samples, which can be flat or distributed following a model provided by the user.
- Sampling of multidimensional pdfs.
- Multidimensional maximum likelihood fits using binned and unbinned data sets.
- Calculation of S-Plots.
- Numerical integration of multidimensional functions using quadrature methods (Gauss-Kronrod, Genz-Malik).
- Multidimensional sparse and dense histograms for large datasets.
- New tags for host and device functions :
__hydra_host__
,__hydra_device__
,__hydra_dual__
- New symbols to specify host (HYDRA_HOST_SYSTEM) and device (HYDRA_DEVICE_SYSTEM) back-ends at compile time:
OMP
,TBB
,CPP
andCUDA
. - New tags for explicit backends:
hydra::omp::sys
,hydra::cpp::sys
,hydra::cuda::sys
,hydra::tbb::sys
. - Hydra now has its own built-in patched thrust (v1.8.3) distribution. The built-in thrust does not conflict with an user's installation, if present.
- Hydra now has its own built-in patched Eigen distribution. The built-in Eigen does not conflict with an user's installation, if present.
- New lambdas wrappers, supporting named parameters.
- New multidimensional containers:
hydra::multiarray
andhydra::multivector
.
- New containers for particles and decays:
hydra::Decays
andhydra::Chains
. - Common functors (hydra/functions): Gaussian, Exponential, Breit-Wigner, etc
Hydra based scripts can now be compiled and invoked from inside ROOT for execution of algorithms in parallel using TBB and CPP backends.
Many other minor infrastructure improvements, bug fixes and features.
Documentation:
- Online Users Guide : https://hydra-documentation.readthedocs.io/en/latest/
- Twiki page: https://github.com/MultithreadCorner/Hydra/wiki
- New set of examples.
Files
MultithreadCorner/Hydra-v2.1.0.zip
Files
(3.7 MB)
Name | Size | Download all |
---|---|---|
md5:ac1ff4cb8ac30c13eec1b118f338dbe5
|
3.7 MB | Preview Download |
Additional details
Related works
- Is supplement to
- https://github.com/MultithreadCorner/Hydra/tree/v2.1.0 (URL)
Funding
- Enabling High Energy Physics at the Information Frontier Using GPUs and Other Many/Multi-Core Architectures 1414736
- National Science Foundation
References
- Alves Junior, A. A. and Sokoloff M. D. (2017) Hydra: a C++11 framework for data analysis in massively parallel platforms, arXiv:1711.05683. [
- Alves Junior, A A. 2017. GTC 2017 (San José, US) Presentation ID S7340.
- Alves Junior, A A and Contu A. 2017. Rare n Strange: strange physics at LHCb (Santiago de Compostela, Spain) .
- Hydra.Python: python bindings for Hydra. https://summerofcode.withgoogle.com/dashboard/project/6669304945704960/overview
- Alves Junior, A. A. Hydra - HSF-HEP analysis ecosystem workshop, 22-24 May 2017 Amsterdam, Netherlands
- Alves Junior, A. A. MCBooster and Hydra: two libraries for high performance computing and data analysis in massively parallel platforms -Perspectives of GPU computing in Science September 2016, Rome, Italy