Abstractions Logicielles pour Architectures Parallèles (original) (raw)

Performing large, intensive or non-trivial computing on array like datastructures is one of the most common task in scientific computing, video gamedevelopment and other fields. This matter of fact is backed up by the large numberof tools, languages and libraries to perform such tasks. If we restrict ourselves toC++ based solutions, more than a dozen such libraries exists from BLAS/LAPACKC++ binding to template meta-programming based Blitz++ or Eigen.If all of these libraries provide good performance or good abstraction, none ofthem seems to fit the need of so many different user types. Moreover, as parallelsystem complexity grows, the need to maintain all those components quicklybecome unwieldy. This thesis explores various software design techniques - likeGenerative Programming, MetaProgramming and Generic Programming - and theirapplication to the implementation of various parallel computing libraries in such away that abstraction and expressiveness are maximized while efficiency ...