Floating point error analysis in the LLVM compiler

  • Floating point error analysis in the LLVM compiler
EEECS Summer Research Internships 2018

Proposed Project Title:

  • Floating point error analysis in the LLVM compiler

Principal Supervisor(s):
  • Hans Vandierendonck and Giorgis Georgakoudis


Project Description:

Scientific applications of  High Performance Computing (HPC)  use floating point numbers  to  perform  computations.  Floating  point  numbers  approximate  real numbers by rounding  decimals with a fixed precision,  which introduces rounding errors during computations.  Higher precisions result in  higher accuracy (lower error) but they execute slowly. The  HPC community researches ways to reduce the precision  of  floating  computations   for  faster  execution  while  obtaining accurate  results.  Although  application  developers can  specify  the  desired accuracy for  the end result, they  cannot exactly specify the  needed precision for the computations,  because errors propagate and  accumulate subtly.

Recently, a  set of  tools  (Daisy[1],  FPTuner[2]) has  been  developed to  automatically analyse floating point computations with  a given precision and provide rigorous bounds  on errors.  Through  this error  analysis  it is  possible  to find  the minimum precision for accurate computations. However,  those tools are language specific -- Daisy and Rosa target the Scala  language, FPTuner targets pseudocode --  and that  limits their  usability on  scientific codes  which are usually written in C/C++ or FORTRAN.

For this  project, the  intern will  develop the  algorithms for  error analysis found  in  existing   tools  (Daisy, FPTuner)  in   the  LLVM  compiler.  Specifically, the error analysis will  operate on the language-agnostic Internal Representation (IR)  of the compiler to  compute error bounds of  floating point computations. This  enables error  analysis on  a large number  of codes  in any language compilable by LLVM.

Skills: C/C++, compilers, numerical analysis

References:

1. https://github.com/malyzajko/daisy
2. https://github.com/soarlab/FPTuner


Objectives:
  1. Develop state-of-the-art algorithms for error analysis in the LLVM compiler
  2. Use error analysis to select the precision data type for floating point numbers in LLVM

Academic Requirements:

The scheme is open to all EEECS Undergraduates (apart from students on the BIT degree pathway and students who are due to graduate this summer)


General Information:

Each internship will last between 6-8 weeks and will pay a weekly stipend of £250.

Accommodation and travel costs are not provided under this scheme.

Start date: 01/06/18

Duration:  8 (Weeks)

Location: CSB

Further information available at: http://www.qub.ac.uk/schools/eeecs/Research/


Contact details:

Supervisor Name: Hans Vandierendonck
Address:

Queens University of Belfast
School of EEECS,
Computer Science Building,
18 Malone Road,
Belfast
BT9 5BN

Email: h.vandierendonck@qub.ac.uk
Tel: +44 (0)28 9097 4654