Designing parallel software is a difficult task, but it became essential in modern computing. This is notably true in operations research where many algorithms can benefit greatly from parallelization. It has led to the development of software frameworks that ease the parallel design of operations research 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 operations research algorithms and make them ready for parallelization. For this purpose, metaprogramming techniques are used, first to provide the facilities to describe an operations research algorithm as a composition of algorithmic skeletons, and secondly, at compile-time, to analyze and transform the skeleton into an efficient code at runtime. In a first step, we focus on metaheuristics because, as they are generic structures, they naturally adapt to algorithmic skeletons. |