High Energy Physics analyses are performed with statistical computations to ascertain the compatibility of the reported results with the existing Standard Model.
These computed likelihood fits are performed using tools implemented in ROOT such as RooFit and RooStats.
In many cases, a binned, asymptotic likelihood fit is performed following a mathematical p.d.f. template called HistFactory.
This HistFactory p.d.f. template is per-se independent of its implementation in ROOT and it is useful to be able to run statistical analysis outside of the ROOT, RooFit, RooStats framework.
The `pyhf`

library is a pure-python implementation of that statistical model for multi-bin histogram-based analysis and its interval estimation is based on the asymptotic formulas of “Asymptotic formulae for likelihood-based tests of new physics”.
`pyhf`

supports modern computational graph libraries such as TensorFlow and PyTorch in order to make use of features such as autodifferentiation and GPU acceleration.

The goal of the project is to develop a benchmarking suite in Python to test and benchmark the performance increase of the hardware accelerated backends on GPUs and TPUs on openly published physics data from LHC experiments [10.17182/hepdata.89408, 10.17182/hepdata.92006].
The benchmarking suite would preferably be written as a `pytest`

module.

- Write a hardware acceleration benchmarking suite for the GPU enabled backends (TensorFlow, PyTorch, and JAX) in Python (
`pyhf`

Issues 301, 348). - Write comparison plot generation code in Python for the performance of the GPU enabled backends against each other and the CPU backends.
- Thoroughly document the performance benchmarking in the form of a case study.
- Evaluate the hardware acceleration test suite using Google TPUs.
- Profile the
`pyhf`

codebase to determine where the hardware acceleration is making the largest difference.

By the end of Summer 2020, we would like to have a benchmarking suite written in Python (preferably using `pytest`

) that can test and compare the performance of all the `pyhf`

computational backends in fitting openly published likelihoods from the LHC.
This will require modularity in the benchmarking suite to allow it to be used on new data.
There is particular interest in also having the student use the benchmarking suite they developed to evaluate the performance of hardware accelerated `pyhf`

on GPUs and TPUs, along with detailed documentation and a report for the `pyhf`

website.

Contact the mentors for a task that can be used to evaluate candidates.
Contributing a “good first issue” PR to `pyhf`

would be a rather advanced form of evaluation, but would also be an excellent test of how the student would work with the core developer team.

- Code in Python 3 and adhere to the Black code style
- Comfort with switching between Python machine learning frameworks (PyTorch, TensorFlow, JAX, NumPy)
- Basic understanding of functional minimization (e.g.
`scipy.optimize`

,`minuit`

, and autodifferentiation) - Basic understanding of hardware acceleration
- Ability to profile Python code