Software Abstractions for Parallel Architectures
Abstractions Logicielles pour Architectures Parallèles
Abstract
Performing large, intensive or non-trivial computing on array like data
structures is one of the most common task in scientific computing, video game
development and other fields. This matter of fact is backed up by the large number
of tools, languages and libraries to perform such tasks. If we restrict ourselves to
C++ based solutions, more than a dozen such libraries exists from BLAS/LAPACK
C++ binding to template meta-programming based Blitz++ or Eigen.
If all of these libraries provide good performance or good abstraction, none of
them seems to fit the need of so many different user types. Moreover, as parallel
system complexity grows, the need to maintain all those components quickly
become unwieldy. This thesis explores various software design techniques - like
Generative Programming, MetaProgramming and Generic Programming - and their
application to the implementation of various parallel computing libraries in such a
way that abstraction and expressiveness are maximized while efficiency overhead is
minimized.
Un nombre croissant de domaines applicatifs allant du calcul scientifique
au jeu vidéo reposent sur la manipulation efficace et non triviale de structure
de données de type tableau. Cet état de fait est d’autant plus criant au vu du
nombre d’outils libres ou propriétaires visant á simplifier le développement de telles
applications. En se limitant á C++ , plus d’une douzaine de telles bibliothèques
sont disponibles comme Blitz ou Eigen.
Si toutes ces bibliothèques fournissent ou un bon niveau d’abstraction ou des
performances élevées, il leur est difficile d’accommoder un tel spectre d’utilisateurs.
De plus, devant la multiplication et la complexification des systèmes de calculs par-
allèles, il devient difficile de maintenir et de développer de nouvelles fonctionalistes
tirant parties de ce matériel.
Cette thèse explore comment des techniques de développement logiciel comme la
programmation generative, la programmation générique et la méta-programmation
peuvent être utilisées afin de proposer une nouvelle méthode de développe-
ment adaptées á ce type de contraintes et permettant de concilier haut niveau
d’abstraction et haut niveau de performance.
Loading...