Sequential and Parallel BSA Algorithm Mathieu Brévilliers, Omar Abdelkafi, Lhassane Idoumghar Université de Haute-Alsace (UHA) LMIA (E.A. 3993), 4 rue des frères Lumière, 68093 Mulhouse, France {mathieu.brevilliers, omar.abdelkafi, lhassane.idoumghar}@uha.fr Mots-clés : métaheuristique, algorithme évolutionnaire, GPU, CUDA. 1 Introduction L’algorithme BSA (Backtracking Search Optimization Algorithm) [1] est un algorithme évo- lutionnaire conçu pour résoudre des problèmes d’optimisation continue. Une des particularités de BSA réside dans l’utilisation d’une mémoire, pour conserver une population antérieure, qui intervient dans l’opérateur de mutation mis en oeuvre. Il est par ailleurs conçu autour d’un unique paramètre de contrôle qui est utilisé au cours du processus de croisement. La structure de BSA est simple, et les opérateurs de mutation et de croisement utilisés lui permettent de s’adapter à des problèmes variés et de les résoudre efficacement. L’algorithme BSA a été testé sur de nombreux benchmarks mathématiques largement utilisés dans la littérature, et il s’est montré généralement meilleur que de nombreux autres algorithmes de la littérature (SPSO2011, CMAES, ABC, JDE, CLPSO et SADE). Depuis sa publication en 2013, l’algorithme BSA a été utilisé dans divers domaines d’application et a fait l’objet de plusieurs évolutions [2]. 2 Modification de BSA Parmi les améliorations apportées à l’algorithme BSA, on peut citer les suivantes : – Nous avons introduit un critère de diversification qui consiste à regénérer les deux tiers de la population si au bout de 100 itérations, on n’observe pas d’amélioration. – Le générateur de nombres aléatoires basé sur la distribution normale est remplacé par le générateur rand53 issu de Mersenne Twister. – Dans l’opérateur de croisement, le masque s’applique avec une probalité 0, 5. L’analyse des résultats donnés dans le Tableau 1 montre qu’on améliore la qualité des solu- tions sur plusieurs benchmarks mathématiques. 3 Implémentation sur GPU Les algorithmes à base de population sont particulièrement adaptés au parallélisme et peuvent être implémentés efficacement en utilisant les processeurs des cartes graphiques ré- centes (GPU) [3]. Plus particulièrement, la technolgie CUDA développée par NVIDIA permet d’exécuter des calculs généraux en profitant de l’architecture parallèle de ses cartes graphiques. Nous avons implémenté l’algorithme BSA avec CUDA et nous l’avons testé sur un ordinateur muni d’un processeur central Intel Core i5-3330 cadencé à 3 GHz, de 4 Go de RAM, et d’une carte graphique NVIDIA GeForce GTX 680. Nous avons choisi d’évaluer les performances de la version GPU de BSA sur des benchmarks mathématiques couramment utilisés, et nous les avons traités en grandes dimensions avec des populations de grandes tailles. Le Tableau 2 donne un aperçu des résultats obtenus avec les fonctions Ackley, Michalewicz et Rastrigin : l’analyse des accélérations obtenues montre que l’algorithme BSA s’exécute entre 3 et 10 fois plus vite sur GPU que sur CPU. 4 Conclusions et perspectives Ce travail montre que notre version de l’algorithme BSA permet d’améliorer la qualité des solutions obtenues sur quelques benchmarks mathématiques. Nous avons également montré