Parallélisation massive des algorithmes de branchement
Publication date
2021Author(s)
Pastrana Cruz, Andres
Subject
Équilibrage de chargeAbstract
Les problèmes d'optimisation et de recherche sont souvent NP-complets et des techniques de force brute doivent généralement être mises en œuvre pour trouver des solutions exactes. Des problèmes tels que le regroupement de gènes en bio-informatique ou la recherche de routes optimales dans les réseaux de distribution peuvent être résolus en temps exponentiel à l'aide de stratégies de branchement récursif. Néanmoins, ces algorithmes deviennent peu pratiques au-delà de certaines tailles d'instances en raison du grand nombre de scénarios à explorer, pour lesquels des techniques de parallélisation sont nécessaires pour améliorer les performances.
Dans des travaux antérieurs, des techniques centralisées et décentralisées ont été mises en œuvre afin d'augmenter le parallélisme des algorithmes de branchement tout en essayant de réduire les coûts de communication, qui jouent un rôle important dans les implémentations massivement parallèles en raison des messages passant entre les processus.
Ainsi, notre travail consiste à développer une bibliothèque entièrement générique en C++, nommée GemPBA, pour accélérer presque tous les algorithmes de branchement avec une parallélisation massive, ainsi que le développement d'un outil novateur et simpliste d'équilibrage de charge dynamique pour réduire le nombre de messages transmis en envoyant les tâches prioritaires en premier. Notre approche utilise une stratégie hybride centralisée-décentralisée, qui fait appel à un processus central chargé d'attribuer les rôles des travailleurs par des messages de quelques bits,
telles que les tâches n'ont pas besoin de passer par un processeur central.
De plus, un processeur en fonctionnement génère de nouvelles tâches si et seulement s'il y a des processeurs disponibles pour les recevoir, garantissant ainsi leur transfert, ce qui réduit considérablement les coûts de communication.
Nous avons réalisé nos expériences sur le problème de la couverture minimale de sommets, qui a montré des résultats remarquables, étant capable de résoudre même les graphes DIMACS les plus difficiles avec un simple algorithme MVC. Abstract: Optimization and search problems are often NP-complete, and brute-force techniques
must typically be implemented to find exact solutions. Problems such as clustering
genes in bioinformatics or finding optimal routes in delivery networks can be
solved in exponential-time using recursive branching strategies. Nevertheless, these
algorithms become impractical above certain instance sizes due to the large number of
scenarios that need to be explored, for which parallelization techniques are necessary
to improve the performance.
In previous works, centralized and decentralized techniques have been implemented
aiming to scale up parallelism on branching algorithms whilst attempting to
reduce communication overhead, which plays a significant role in massively parallel
implementations due to the messages passing across processes.
Thus, our work consists of the development of a fully generic library in C++,
named GemPBA, to speed up almost any branching algorithms with massive parallelization,
along with the development of a novel and simplistic Dynamic Load Balancing
tool to reduce the number of passed messages by sending high priority tasks
first. Our approach uses a hybrid centralized-decentralized strategy, which makes use
of a center process in charge of assigning worker roles by messages of a few bits of
size, such that tasks do not need to pass through a center processor.
Also, a working processor will spawn new tasks if and only if there are available
processors to receive them, thus, guaranteeing its transfer, and thereby the communication
overhead is notably decreased.
We performed our experiments on the Minimum Vertex Cover problem, which showed
remarkable results, being capable of solving even the toughest DIMACS graphs
with a simple MVC algorithm.
Collection
- Moissonnage BAC [4521]
- Sciences – Mémoires [1785]