Parallel Algorithmic Skeletons for Metaheuristics
Résumé
Designing parallel software is a difficult task, but it became essential in modern computing. This is notably true in Operational Research (OR) where many algorithms can benefit greatly from parallelization. It has led to the development of software frameworks that ease the parallel design of OR algorithms, based on object-oriented and template programming. New design possibilities arose with the advances of template metaprogramming, especially in the C++ language.
Our goal is to design a library able to produce efficient parallel implementations of an algorithm from the knowledge of its structure with no runtime overhead. We propose to use algorithmic skeletons in order to describe OR algorithms and make them ready for parallelization. For this purpose, metaprogramming techniques are used first to provide facilities to describe an OR algorithm as a composition of algorithmic skeletons, and secondly to analyze and transform the skeleton, at compile-time, into an efficient code to be executed at runtime. In a first step, we focus on metaheuristics because, as they are generic structures, they naturally adapt to algorithmic skeletons.
Our goal is to design a library able to produce efficient parallel implementations of an algorithm from the knowledge of its structure with no runtime overhead. We propose to use algorithmic skeletons in order to describe OR algorithms and make them ready for parallelization. For this purpose, metaprogramming techniques are used first to provide facilities to describe an OR algorithm as a composition of algorithmic skeletons, and secondly to analyze and transform the skeleton, at compile-time, into an efficient code to be executed at runtime. In a first step, we focus on metaheuristics because, as they are generic structures, they naturally adapt to algorithmic skeletons.
Origine | Fichiers produits par l'(les) auteur(s) |
---|
Loading...