• Aucun résultat trouvé

Dans le modèle maître-esclave, un processus maître exécute une métaheuristique séquen- tielle et distribue le travail de certaines opérations sur plusieurs processus esclaves. Ces derniers effectuent alors les différents calculs et retournent les résultats au processus maître qui peut alors poursuivre son déroulement. Le comportement de l’algorithme n’est pas modifié et seule la diminution du temps d’exécution est visée. De ce fait, la qualité des solutions reste inchangée. Dans ce type d’approche, l’AEMO est généralement parallélisé au niveau de l’itération, selon la classification de Talbi (2018), puisque la population est évaluée de manière distribuée. L’extensibilité du modèle est alors limitée par le nombre d’individus de la population. Si l’évaluation d’une solution prend un temps excessivement long, l’AEMO peut être parallélisé au niveau de la solution. La granularité de l’algorithme et l’extensibilité du modèle dépendent alors étroitement du temps d’exécution des sous-fonctions nécessaires au calcul des fonctions objectif.

2.3.1 PARALLÉLISATION DES ÉVALUATIONS

Pour les métaheuristiques multi-objectifs, ce sont les évaluations des solutions qui sont généralement les plus coûteuses en temps (Veldhuizen et al., 2003). Les temps d’exécution des opérations spécifiques telles que les croisements ou les mutations sont souvent ignorés. Naturellement, les évaluations des fonctions objectif doivent être assez complexes et longues afin obtenir des accélérations significatives.

45 Il existe trois méthodes pour paralléliser la phase d’évaluation d’une population (Veldhuizen et al., 2003). Dans la première méthode, illustrée à la Figure 2.5a, la population est subdivisée et chaque processeur (de 1 à k) calcule l’ensemble des fonctions objectif des individus qui lui sont assignés. La seconde méthode associe chaque processeur P à une fonction objectif f unique (P1évalue f1, ..., PM évalue fM, avec M le nombre d’objectifs). Ainsi, un processeur

calcule une des fonctions objectif pour l’ensemble des solutions ou une partie d’entre elles. Cette méthode, illustrée à la Figure 2.5b, est seulement réalisable quand les fonctions objectif sont indépendantes les unes des autres. Enfin, la dernière méthode consiste à décomposer l’évaluation des fonctions objectif sur plusieurs processeurs. Chaque processeur calcule une partie d’une fonction objectif qui sera recombinée par le processus maître. Cette décomposition peut se faire par un découpage des données ou par un découpage fonctionnel.

(a) (b)

Figure 2.5: Schéma de fonctionnement de deux méthodes de parallélisation d’évaluation

Il y a quelques années, Durillo et al. (2008) ont étudié plusieurs méthodes pour paralléliser l’algorithme de référence NSGA-II en suivant le modèle maître-esclave. L’utilisation d’une version stationnaire de l’algorithme et l’implémentation de communications asynchrones permettent d’obtenir des accélérations importantes. En effet, sur un problème multi-objectifs gourmand en matière d’évaluation, une accélération de 106 est observée avec 286 processeurs. Ferringer et al. (2009) ont également proposé un modèle parallèle asynchrone LC-ε-NSGA-2 adapté à un algorithme multi-objectifs, en l’occurrence ε-NSGA-2, une version modifiée de NSGA-II. Dans LC-ε-NSGA-2, la population Enfant est composée de deux listes : la liste des individus restants à évaluer et la liste des individus déjà évalués. Lors de la phase de remplacement gérée par le processus maître, les individus de la population Parent et de la liste des individus Enfants déjà évalués sont considérés.

46

Mostaghim et al. (2008) décrivent une méthode our paralléliser efficacement un algorithme par essaim particulaire multi-objectifs avec des ressources hétérogènes. Le processus maître répartit les évaluations des solutions sur les différents processeurs. Dès qu’il reçoit un nombre Nsde solutions évaluées, il continue son travail et attend les prochaines évaluations. La phase d’expérimentation a révélé des gains de parallélisation importants. Cependant, cet algorithme nécessite de calibrer au mieux le nombre Ns afin d’obtenir les meilleures performances

possibles. Plus récemment, Depolli et al. (2013) proposent une méthode pour paralléliser efficacement un algorithme d’évolution différentielle. Des communications asynchrones sont utilisées pour évaluer les solutions dans une version stationnaire de l’algorithme. Une accélération presque linéaire est obtenue avec l’utilisation de quatre cœurs de processeur.

2.3.2 PARALLÉLISATION DES OPÉRATIONS SPÉCIFIQUES

Même si dans le paradigme maître-esclave, la majeure partie des travaux se concentrent sur la parallélisation des évaluations, il est possible d’accélérer d’autres opérations gourmandes en temps d’exécution. Les opérations spécifiques à la métaheuristique utilisée peuvent être parallélisées telles que les croisements pour les algorithmes évolutionnaires ou le calcul d’un nouveau voisin pour les algorithmes de recherche locale.

Dans le cadre des AEMO, une des parties les plus coûteuses en temps est l’étape d’as- signation du facteur de dominance (Talbi, 2009). Différents auteurs se sont intéressés à la parallélisation de la méthode d’assignation de rang. Tout d’abord, Lanˇcinskas et Žilinskas (2012) affirment que, lorsqu’il faut évaluer deux populations conjointes (Parent et Enfant), les comparaisons nécessaires à l’assignation de rang peuvent être fragmentées. Ainsi, ils proposent une approche dans laquelle chaque processeur à besoin de connaitre uniquement la population Parent. Pour distribuer la population Parent sur tous les processeurs et pour récupérer l’ensemble des résultats sur le processus maître, une topologie en hypercube peut être utilisée afin de réduire les temps de communication. D’après la phase d’expérimentation, cette méthode de parallélisation permet d’obtenir une accélération de 23 avec 64 processeurs pour un problème continu dont la phase d’évaluation est conséquente. Gupta et Tan (2015) ont proposé une implémentation parallèle sur GPU de l’algorithme NSGA-II en se focalisant sur l’assignation de rang. Dans celle-ci, chaque thread est en charge de calculer le rang d’un individu particulier. Moreno et al. (2017) ont également exploité la puissance de calcul des GPUs pour paralléliser une version améliorée de l’assignation de rang.

47 Par ailleurs, une des premières parallélisations d’un algorithme par essaim particulaire multi-objectifs sur GPU a été proposée par Zhou et Tan (2009). Dans celle-ci, ils utilisent une version modifiée de l’algorithme VEPSO (Parsopoulos et Vrahatis, 2002). La plupart des opérations (calcul de fitness, déplacement d’une particule, etc.) se font sur le GPU. Les résultats obtenus montrent une augmentation linéaire de l’accélération avec le nombre de particules utilisées. Cependant, l’utilisation d’un grand nombre de particules n’améliore plus la qualité des solutions.