You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+50-2Lines changed: 50 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,53 @@
1
1
## CHANGE LOG
2
2
3
+
### Hydra 4.0.1
4
+
5
+
Hydra is now compatible with CUDA 12.2 or higher and compliant with C++17 and C++20.
6
+
7
+
In this release:
8
+
9
+
1) Dependencies updates:
10
+
11
+
* Thrust v2.2.0
12
+
* CUB v2.2.0
13
+
* Eigen 3.4.0
14
+
* Boost.Math 1.83.0 (NEW)
15
+
16
+
2) Dependencies functions and classes are now available under corresponding subnamespaces. For example:
17
+
`hydra::thrust`, `hydra::boost::math` and `hydra::Eigen`;
18
+
3) New spline algorithms for interpolation up to four dimensions:
19
+
20
+
Free functions:
21
+
22
+
```cpp
23
+
24
+
hydra::spline
25
+
hydra::spline2D
26
+
hydra::spline4D
27
+
hydra::spline3D
28
+
```
29
+
Including overloads for range-based contained and histograms with corresponding dimension. Header: `hydra/Spline.h`
30
+
31
+
32
+
4) New method `Interpolate(...)` for dense and sparse histograms up to four dimensions.
33
+
34
+
5) New functors:
35
+
36
+
```cpp
37
+
38
+
hydra::SplineFunctor
39
+
hydra::Spline2DFunctor
40
+
hydra::Spline4DFunctor
41
+
hydra::Spline3DFunctor
42
+
```
43
+
Defined in the headers: `hydra/functions/SplineFunctor.h` , `hydra/functions/Spline2DFunctor.h` `hydra/functions/Spline3DFunctor.h` `hydra/functions/Spline4DFunctor.h`.
44
+
45
+
6) New examples covering new functionality.
46
+
47
+
Bug fixes:
48
+
49
+
Many bug fixes across the tree.
50
+
3
51
### Hydra 3.2.2
4
52
5
53
This release:
@@ -317,8 +365,8 @@ This is the last release from series 2.x.x.
317
365
318
366
1. Interfaces to FFTW and CuFFT for performing 1D real-real complex-real and real-complex FFT on CPU and GPU
319
367
2. FFT based convolution on CPU and GPU for arbitrary pair of functors: `hydra::convolute` and `hydra::ConvolutionFunctor`
320
-
3. Cubic spiline reimplementation for deal with abitrary large datasets: `hydra::spiline` and `hydra::SpilineFunctor`
321
-
4. new examples showing how to deploy convolution in fits, spilines and FFT.
368
+
3. Cubic spline reimplementation for deal with abitrary large datasets: `hydra::spline` and `hydra::SpilineFunctor`
369
+
4. new examples showing how to deploy convolution in fits, splines and FFT.
Copy file name to clipboardExpand all lines: README.md
+21-17Lines changed: 21 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -32,27 +32,27 @@ Table of Contents
32
32
What is it?
33
33
-----------
34
34
35
-
Hydra is a C++14 compliant and header only framework designed to perform common data analysis tasks on massively parallel platforms. Hydra provides a collection of containers and algorithms commonly used in HEP data analysis, which can deploy 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.
35
+
Hydra is a C++17/20 compliant and header only framework designed to perform common data analysis tasks on massively parallel platforms. Hydra provides a collection of containers and algorithms commonly used in HEP data analysis, which can deploy 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.
36
36
37
37
The core algorithms follow as close as possible the implementations widely used in frameworks like ROOT and libraries
38
38
like GSL.
39
39
40
40
Main features
41
41
-------------
42
42
43
-
Currently Hydra supports:
43
+
Currently Hydra implementation includes:
44
44
45
45
* Generation of phase-space Monte Carlo samples with any number of particles in the final states. Sequential decays, calculation of integrals of models over the corresponding phase-space and production of weighted and unweighted samples, which can be flat or distributed following a model provided by the user.
46
46
* Sampling of multidimensional pdfs.
47
47
* Multidimensional maximum likelihood fits using binned and unbinned data sets.
48
-
* Multi-layered simultaneous fit of different models, over different datasets, deploying different parallelization strategies for each model.
48
+
* Multi-layered simultaneous fit of different models, over different datasets, deploying different parallelization strategies for each submodel.
49
49
* Calculation of S-Plots, a popular technique for statistical unfolding of populations contributing to a sample.
50
50
* Evaluation of multidimensional functions over heterogeneous data sets.
51
51
* Numerical integration of multidimensional functions using self-adaptive Monte Carlo and quadrature methods.
52
52
* Multidimensional sparse and dense histogramming of large samples.
53
53
* Object-based interface to FFTW and CuFFT for performing Fast Fourier Transform in CPU and GPU.
54
-
* FFT based one-dimensional convolution for arbitrary signal and kernel shapes.
55
-
* Booststrap and real cubic spiline for datasets on CPU and GPU.
54
+
*Fitting models containing FFT based one-dimensional convolution components with arbitrary signal and kernel shapes.
55
+
* Booststrap and real cubic spline (1D, 2D, 3D and 4D)for datasets on CPU and GPU.
56
56
* Sobol low discrepance sequences up to 3667 dimensions.
57
57
* Seven fast and reliable counter based pseudo-random number generators.
58
58
@@ -70,14 +70,11 @@ Hydra and Thrust
70
70
----------------
71
71
72
72
Hydra is implemented on top of the [Thrust library](https://thrust.github.io/) and relies strongly on Thrust's containers, algorithms and backend management systems.
73
-
The official version of Thrust supports tuples with maximum ten elements. In order to overcome this limitation, Hydra uses an
74
-
[unofficial version, forked from the original, by Andrew Currigan and collaborators](https://github.com/andrewcorrigan/thrust-multi-permutation-iterator).
75
-
This version implements variadic tuples and related classes, as well as provides some additional functionality, which are missing in the official Thrust.
76
-
In order to keep Hydra uptodated with the latest bug-fixes and architetural improvements in Thrust, at each Hydra release, the official [Thrust library](https://thrust.github.io/) is patched with the Currigan's variadic tuple implementation.
77
-
78
-
So, version of Thrust distributed with Hydra is maintained by [MultithreadCorner](https://github.com/MultithreadCorner). It is basically a fork of Currigan's repository, which was merged with the latest official release available in GitHub (Thrust 1.9.7).
79
-
80
-
***Hydra does not depend or conflict with the official Thrust library distributed with the CUDA-SDK.***
73
+
However, since the official version of Thrust supports tuples with maximum ten elements, in order to overcome this limitation, Hydra uses an
74
+
[maintain an unofficial version, initially forked from the original by Andrew Currigan and collaborators](https://github.com/andrewcorrigan/thrust-multi-permutation-iterator).
75
+
This version implements variadic tuples and related classes, as well as provides some additional functionality, which are missing in the official Thrust and is necessary for Hydra, but too specific to "pull request".
76
+
In order to keep Hydra uptodated with the latest bug-fixes and architetural improvements in Thrust, at each Hydra release, the official [Thrust library](https://thrust.github.io/) is patched with the Currigan's variadic tuple implementation.
77
+
This Thrust version is accessible in ``hydra::thrust`` namespace and does not conflicts in anyway with the users system Cuda Tookit installation or its deployment in applications also using Hydra. Same logics applies to Eigen and Boost.Math, which are also distributed with Hydra and are accessible in ``hydra::Eigen`` and ``hydra::boost::math`` namespaces.
The available "host" and "device" backends can be freely combined.
102
99
Two important features related to Hydra's design and the backend configuration:
103
100
104
-
* If CUDA backend is not used, [NVCC and the CUDA runtime](https://developer.nvidia.com/cuda-toolkit) are not necessary. The programs can be compiled with GCC, Clang or other host compiler compatible with C++14 support directly.
101
+
* If CUDA backend is not used or available, [NVCC and the CUDA runtime](https://developer.nvidia.com/cuda-toolkit) are not necessary. The programs can be compiled with GCC, Clang or other host compiler compatible with C++17 support directly.
105
102
* Programs written using only Hydra, Thrust, STL and standard c++ constructs, it means programs without any raw CUDA code or calls to the CUDA runtime API, can be compiled with NVCC, to run on CUDA backends, or a suitable host compiler to run on OpenMP , TBB and CPP backends. **Just change the source file extension from .cu to .cpp, or something else the host compiler understands.**
106
103
107
104
@@ -154,7 +151,7 @@ The examples are built using [CMAKE](https://cmake.org/) with the following inst
1.[A. A. Alves Junior, *Hydra: a C++11 framework for data analysis in massively parallel platforms*, Proceedings of the 18th International Workshop on Advanced Computing and Analysis Techniques in Physics Research, 21-25 August 2017 Seattle,USA](https://inspirehep.net/record/1636201/files/arXiv:1711.05683.pdf),
183
180
2.[A. A. Alves Junior, *Hydra: Accelerating Data Analysis in Massively Parallel Platforms* - ACAT 2017, University of Washington, 21-25 August 2017, Seattle](https://indico.cern.ch/event/567550/contributions/2638690/)
184
181
3.[A. A. Alves Junior, *Hydra: A Framework for Data Analysis in Massively Parallel Platforms* - NVIDIA’s GPU Technology Conference, May 8-11, 2017 - Silicon Valley, USA](http://on-demand.gputechconf.com/gtc/2017/presentation/S7340-antonio-augusto-alves-hydra-a-framework-for-data-analysis-in-massively-parallel-platforms.pdf)
185
182
4.[A. A. Alves Junior, *Hydra* - HSF-HEP analysis ecosystem workshop, 22-24 May 2017 Amsterdam, Netherlands](https://indico.cern.ch/event/613842/)
186
183
5.[A. A. Alves Junior, *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](http://www.roma1.infn.it/conference/GPU2016/pdf/talks/AlvesJr.pdf)
184
+
6.[D. Brundu, A. Contu, G. M. Cossu and A. Loi, *Modeling of Solid State Detectors Using Advanced Multi-Threading: The TCoDe and TFBoost Simulation Packages* - Front. Phys., 21 March 2022 Sec. Radiation Detectors and Imaging Volume 10 - 2022 | https://doi.org/10.3389/fphy.2022.804752*](https://www.frontiersin.org/articles/10.3389/fphy.2022.804752/full)
185
+
7.[A. Loi, A. Contu and A. Lai, *Timing optimisation and analysis in the design of 3D silicon sensors: the TCoDe simulator* - JINST 16 P02011, https://doi.org/10.1088/1748-0221/16/02/P02011](https://iopscience.iop.org/article/10.1088/1748-0221/16/02/P02011)
186
+
8.[A. Loi, A. Contu, R. Mendicino, G. T. Forcolin, A. Lai, G. F. Betta, M. Boscardin, S. Vecchi, *Timing optimization for 3D silicon sensors* - Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment, Volume 958, 2020, 162491,https://doi.org/10.1016/j.nima.2019.162491](https://www.sciencedirect.com/science/article/abs/pii/S0168900219310381)
187
+
9.[R. Aaij et al. (LHCb Collaboration) *Angular Analysis of D0→π+π−μ+μ− and D0→K+K−μ+μ− Decays and Search for CP Violation* - Phys. Rev. Lett. 128, 221801](https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.128.221801)
188
+
10.[D. Brundu1, A. Cardini, A. Contu, G.M. Cossu, G.-F. Dalla Betta, M. Garau, A. Lai, A. Lampis, A. Loi and M.M. Obertino,*Accurate modelling of 3D-trench silicon sensor with enhanced timing performance and comparison with test beam measurements*
0 commit comments