Programming Languages

Automatic locality-friendly array interface extension of numerical functions through C++ template metaprogramming

Assigned to Selim Arslanbek.

Numerical functions often need be invoked on views of vectors or matrixes, derived by selecting some elements or by pre-transforming them. For instance, one might want to prescale matrix elements before applying an existing FFT algorithm on them. Often this must be done by copying the elements to a separate array, and then invoking the original FFT algorithm, but this procedure is not efficient because it uses additional space and therefore has higher impact on data caches.

Hess et al. (2014) proposed, instead, to transform existing functions to generalize them, to produce functions that preprocess data while reading it. They implemented their idea using a custom source-to-source transformation tool.

In this thesis, one should explore whether it is possible to implement this idea without excessive overhead using existing metaprogramming technologies. We envision that C++ templates might be sufficient for this goal.

Further information


Paolo Giarrusso

Klaus Ostermann