There is a newer version of the record available.

Published March 23, 2018 | Version v2.1.0
Software Open

MultithreadCorner/Hydra

  • 1. University of Cincinnati

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 and CUDA.
    • 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 and hydra::multivector.
  • New containers for particles and decays: hydra::Decays and hydra::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:

Files

MultithreadCorner/Hydra-v2.1.0.zip

Files (3.7 MB)

Name Size Download all
md5:ac1ff4cb8ac30c13eec1b118f338dbe5
3.7 MB Preview Download

Additional details

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