This project is financed by ANR and the consortium is made of INRIA/AriC, UPMC/LIP6, LIRMM and CERN, worldwide leaders in elementary functions, offering a number of expertises covering filters and control, a wide range of technological targets, and scientific and industrial applications.
Ideas for external contributors
Improve CptnHook Web Reports and Hooking Mechanism
Floating point operations represent a considerable fraction of the computing time of scientientific applications. For HEP, percentages between 10% and 20% have been measured for standard CMS data reconstruction. In order to optimise these functions, a first step consists in understanding how these mathematical functions are invoked, therefore their input value and the stacktrace which lead to the call. CptnHook is a profiler to investigate the usage patterns of mathematical functions capturing the input values and the stacktraces which lead to it. The tool is able to produce web reports which illustrate the main features of the usage patterns such as number of calls, minimum and maximum input values, stack frames.
- Floating point arithmetic
- Web technologies
The Jupyter Notebook is a web application that allows you to create and share documents that contain live code, equations, visualizations and explanatory text. Uses include: data cleaning and transformation, numerical simulation, statistical modeling or machine learning. Sollya is both a tool environment and a library for safe floating-point code development. It is particularily targeted to the automatized implementation of mathematical floating-point libraries (libm). Amongst other features, it offers a certified infinity (supremum) norm and a fast Remez algorithm.
This project aims to deliver a "Jupyter Kernel" which would allow to create Sollya Notebooks or to use Sollya via a web service. The Kernel will use the C++ api of Sollya and allow to simplify the creation of mathematical function and their testing, also producing plots via notebook aware libraries such as ROOT or mathplotlib.
- Python and IPython
- Expertise with Sollya and floating point computation is considered a plus
Improvement of the VDT Mathematical Library
The VDT mathematical library is a collection of optimised, inline and vectorisable mathematical functions. Its adoption allowed to reduce remarkably the runtime of the data processing workflows of CMS experiment at the LHC.
This project aims to further expand the functionality of the VDT mathematical library. Two main areas can be explored, namely:
1. Integration with OMP4 and support for simd vectors
The VDT functions can be enhanced in order to support the OpenMP4 programming interface relative to vectorisation. In additon, by templating the VDT functions, the explicit vectorisation through the usage of array types such as the gcc and clang built-in types or the Vc array types.
2. Integration of existing limited precision/domain function implementations
Often the usage of a certain mathematical function requires the support of a limited domain or a limited precision. This activity aims to complement the existing VDT functions implementations with others characterized by a reduced precision or input range. An appropriate formulation of the interfaces of these functions has to be adopted, for example adopting generic programming principles through the usage of templates.
- CMake and packaging is a plus