Skip to content
Snippets Groups Projects
  • Xavier Valls Pla's avatar
    5a4e4ba6
    [WIP] PR#3 Vectorization: Added parallelized and vectorized Chi2 and Unbinned Likelihood (#567) · 5a4e4ba6
    Xavier Valls Pla authored
    * Add parallelization to Chi2 fitting.
    
    - Adapt vectorized TF1 for a Fitter with fixed parameters.
    - Made the Chi2FCN Evaluating loop independent of the size of the SIMD array.
    - Parallelized both vectorized and scalar versions of the Chi2FCN evaluation.
    - Added new fExecutionpolicy field to the Chi2FCN class that will determine the policy to use for the chi2 function evaluation: multiprocess, multithread or serial(none).
    
    * Provide automatic chunking in parallel Chi2 Fit
    
    * Change naming in template resolver
    
    * Fix error calling EvalParVec with ftype=1
    
    * Template Paramfunctor
    
    Templates Paramfunctor and adds const parameters interfaces for evaluation.
    
    * Add vectorized Chi2 Evaluation
    
    * Add Functor type resolving to TF1
    
    * Vectorize and parallelize unbinned likelihood fit
    
    * Introduce the Double_v type
    
    * Linked MathCore with Vc
    
    * Prepare for chunking
    
    * Adapt Fitter interfaces for vectorization
    
    * Improve use of VecCore
    
    * Change Mathcore linking from Thread to IMT
    
    * Allow the evaluation of Chi2 with coord errors
    
    * Improve identation
    
    * Disable the multiprocessing of the fitting
    
    * Cleaned remaining Vc directives
    
    * Link vecCore instead of Vc
    
    * Define R__HAS_VECCORE
    
    * Differentiate VecCore code at compile time
    
    * Fix warning due to unused args
    
    * Restore original conditions for Chi2Evaluation
    
    * Make fFunctor transient again
    
    * Reenable Chi2Gradient and Chi2Residual evaluations
    
    * Add ValuePtr documentation
    
    * Fix white lines between functions
    
    * Fix Chi2 evaluation of multidimensional data
    
    * Fix Memory alignment in the vectorized Likelihood fit.
    
    This reintroduces Vc dependencies
    
    * Fix for classic builds
    
    * Conditionate MathCore linking
    
    * Only Fit Multithreaded if IMT is enabled
    
    * Fix multidim integral error in the Chi2 fit
    
    * Fix LogL evaluation of multidimensional unbinned data
    
    * Improve VecCore usage
    
    * Simplify fFunctor check expressions
    
    * Move the Double_v type into the ROOT namespace
    
    * Make executionPolicy an enum
    
    * Explain functor operator resolving in TF1
    
    * Improved TF1::fType documentation
    
    * Adapt execution policy option of the histogram fit
    
    * Completed move of executionPolicy to a enum
    
    * Add tests for the new parallel fitting.
    
    This tests check both Chi2 and Unbinned LogL fitting in each one of the
    execution policies available.
    
    * Correct function naming
    
    * Rename global variables to supress shadowing warning.
    
    * Remove legacy parallel implementations
    5a4e4ba6
    History
    [WIP] PR#3 Vectorization: Added parallelized and vectorized Chi2 and Unbinned Likelihood (#567)
    Xavier Valls Pla authored
    * Add parallelization to Chi2 fitting.
    
    - Adapt vectorized TF1 for a Fitter with fixed parameters.
    - Made the Chi2FCN Evaluating loop independent of the size of the SIMD array.
    - Parallelized both vectorized and scalar versions of the Chi2FCN evaluation.
    - Added new fExecutionpolicy field to the Chi2FCN class that will determine the policy to use for the chi2 function evaluation: multiprocess, multithread or serial(none).
    
    * Provide automatic chunking in parallel Chi2 Fit
    
    * Change naming in template resolver
    
    * Fix error calling EvalParVec with ftype=1
    
    * Template Paramfunctor
    
    Templates Paramfunctor and adds const parameters interfaces for evaluation.
    
    * Add vectorized Chi2 Evaluation
    
    * Add Functor type resolving to TF1
    
    * Vectorize and parallelize unbinned likelihood fit
    
    * Introduce the Double_v type
    
    * Linked MathCore with Vc
    
    * Prepare for chunking
    
    * Adapt Fitter interfaces for vectorization
    
    * Improve use of VecCore
    
    * Change Mathcore linking from Thread to IMT
    
    * Allow the evaluation of Chi2 with coord errors
    
    * Improve identation
    
    * Disable the multiprocessing of the fitting
    
    * Cleaned remaining Vc directives
    
    * Link vecCore instead of Vc
    
    * Define R__HAS_VECCORE
    
    * Differentiate VecCore code at compile time
    
    * Fix warning due to unused args
    
    * Restore original conditions for Chi2Evaluation
    
    * Make fFunctor transient again
    
    * Reenable Chi2Gradient and Chi2Residual evaluations
    
    * Add ValuePtr documentation
    
    * Fix white lines between functions
    
    * Fix Chi2 evaluation of multidimensional data
    
    * Fix Memory alignment in the vectorized Likelihood fit.
    
    This reintroduces Vc dependencies
    
    * Fix for classic builds
    
    * Conditionate MathCore linking
    
    * Only Fit Multithreaded if IMT is enabled
    
    * Fix multidim integral error in the Chi2 fit
    
    * Fix LogL evaluation of multidimensional unbinned data
    
    * Improve VecCore usage
    
    * Simplify fFunctor check expressions
    
    * Move the Double_v type into the ROOT namespace
    
    * Make executionPolicy an enum
    
    * Explain functor operator resolving in TF1
    
    * Improved TF1::fType documentation
    
    * Adapt execution policy option of the histogram fit
    
    * Completed move of executionPolicy to a enum
    
    * Add tests for the new parallel fitting.
    
    This tests check both Chi2 and Unbinned LogL fitting in each one of the
    execution policies available.
    
    * Correct function naming
    
    * Rename global variables to supress shadowing warning.
    
    * Remove legacy parallel implementations