• Aucun résultat trouvé

évolutionnaires (chapitre 2), et les algorithmes évolutionnaires parallèles exploitant les accélérateurs graphiques (chapitre 3). Une analyse sur le parallélisme existant dans notre problème a été menée au niveau du chapitre 4, suivie de notre Framework pEvoRNN, qui a exploré l’application du GPU Computing dans le domaine de la robotique évolutionnaire avec une mise en évidence des travaux les plus importants dans des sous-domaines divers qui utilisaient les GPUs afin d’accélérer la convergence des réseaux de neurones et des algorithmes évolutionnaires.

Une autre caractéristique intéressante des algorithmes évolutionnaires parallèles ré- side dans le fait qu’ils permettent d’utiliser efficacement les machines parallèles sur des problèmes inverses séquentiels et que plutôt que de devoir paralléliser l’évaluation d’un individu, ils exécutent des milliers d’évaluations, à l’origine séquentielles, en parallèle.

Cependant, l’utilisation efficace du paradigme GPGPU reste un défi, puisque le portage direct d’un algorithme sur ces architectures est conditionné par de nombreuses contraintes, car ces dispositifs informatiques sont très différents d’un processeur standard. Les tech- niques de programmation sont différentes et sont peu susceptibles d’être à la portée des chercheurs dans les sciences appliquées tels que les chimistes ou les physiciens.

En effet, la complexité de programmation rend très peu probable leur faculté d’être en mesure de reproduire les algorithmes décrits dans de nombreux articles publiés sur GPGPU.

Dans la majorité des implémentations, les auteurs ont comparé une mise en œuvre optimisée avec une mise en œuvre mono-thread non optimisée. Ceci dit, la plupart des implémentations ont atteint des taux d’accélérations considérables qui ne devraient en aucun cas être une surprise puisque de nombreux algorithmes dans la vie artificielle ont tendance à être intrinsèquement parallèles.

Le chapitre 5 a pris en considération les détails de la gestion de la mémoire ainsi que le mappage du problème sur le GPU. Le chapitre 6 et 7 représentent respectivement une étude comparative, et une conclusion de ce manuscrit en soulignant l’apport de la thèse, les limites de l’approche présentée ainsi que les perspectives entrevues. Une étude concernant les outils de calcul de performance et les modèles analytiques existants ont été présentés en annexe.

7.2

Discussions et Perspectives

Pour des orientations futures, les approches développées à l’occasion de cette thèse pourraient être intégrées à un Toolkit plus large, dont le but serait de gérer les techniques évolutionnistes utilisées dans la robotique évolutionnaire sous architectures GPU (d’autres types de réseaux de neurones avec d’autres types des techniques évolutionnistes).

D’autres perspectives sont liées aux évolutions récentes dans le contexte du calcul haute performance (HPC). En effet, le HPC se généralise au calcul basé Cloud, le logiciel prend conscience du facteur énergie, et les accélérateurs GPUs sont de plus en plus massivement parallèles.

En tant qu’orientations futures de recherche pour ce travail, nous avons identifié quelques perspectives pouvant considérées comme constituant des défis à relever, elles sont résumées ci-aprés :

1. Avec l’arrivée de ressources GPU dans les infrastructures du Cloud Computing, le défi consiste à revoir les approches que nous avons proposées sur les environnements

7.2. DISCUSSIONS ET PERSPECTIVES

virtualisés. Ceci est une première étape naturelle vers les économies d’énergie. Tou- tefois, le critère de consommation d’énergie devrait être explicitement pris en charge dans la conception et la mise en œuvre de nos approches.

2. Récemment, la technologie des GPUs a connu une évolution qui est arrivée avec de nouvelles générations de dispositifs, y compris de fonctionnalités avancées. Par exemple, les machines basés sur l’architecture Kepler permettent un parallélisme dynamique (NVidia GPUDirect). Le parallélisme dynamique consiste à permettre au GPU de générer de nouveaux travaux par lui-même, la synchronisation sur les résultats, et le contrôle de l’ordonnancement par des voies matérielles dédiées et accélérées, le tout en n’impliquant pas le CPU, ainsi nous envisageons l’exploration de ces techniques comme extension potentielle et intéressante à notre travail. 3. Dans cette thèse, et dans la prise en charge du problème étudié, nous avons consi-

déré une fonction d’évaluation linéaire dans les techniques évolutionnistes utilisées. Nous croyons que certaines fonctions pourraient être efficaces sur une architecture CPU monocœurs ou multicœurs, mais inefficace sur GPU vue la difficulté de leur parallélisation sur ce dispositif et vice versa. Une amélioration très encourageante dans le cadre de ce travail consiste à concevoir et mettre en œuvre une bibliothèque qui rassemble de nombreux types de fonctions utilisées pour le même problème sur des architectures mono et multicœurs CPU et GPU. En tant que niveau supplémen- taire d’adaptabilité, la technique évolutionniste utilisée choisit dynamiquement et automatiquement la mise en œuvre qui convient le mieux à la machine d’exécution sous-jacente.

7.2.1

Nouvelle vision pour une future démarche exploitant les

nouveaux accélérateurs graphiques

Dans les années qui suivirent le développement du Toolkit CUDA, il est indéniable que dans le monde computationnel, les GPUs ont pris de plus en plus d’importance, leurs structures ayant inspiré davantage les concepteurs de CPU.

Suite à l’étude élaborée dans cette thèse, et vu l’importance des algorithmes évolution- naires dans plusieurs domaines, nous nous proposons la construction d’une architecture GPU générique qui intègre toutes les phases d’un processus évolutionnaire et ce selon une approche câblée.

La construction d’une telle architecture est un grand défi, vu le nombre important de critères que l’on doit considérer, tels que :

1. Avoir la capacité de traiter différents types de problèmes.

2. Avoir la capacité de traiter différents types de fonctions d’évaluation (mono-objective, multi-objective).

3. Avoir la capacité de traiter différents opérateurs évolutionnaires.

4. Avoir la capacité d’automatiser la génération des paramètres sensitives pour les kernels élaborés.

Annexe : PEvoRNN Performance : Mesures

de performance d’un algorithme parallèle du

point de vue GPU

1

Introduction

Malgré la révolution constatée dans le domaine du parallélisme boostée par l’apparition des architectures multi-coeurs, très peu d’applications ont pu être optimisées pour ces systèmes, ceci étant dû au fait qu’il soit encore difficile de développer efficacement et de façon rentable des applications parallèles. Ces dernières années, de plus en plus de chercheurs dans le domaine du calcul hautement parallèle (HPC) ont eu davantage recours à l’exploitation des GPUs pour accélérer des applications parallélisables. Bien que peu d’effort soit nécessaire pour adapter de manière fonctionnelle les applications aux GPUs, les programmeurs doivent consacrer davantage de temps et d’effort pour optimiser leurs applications dans le but d’atteindre de meilleures performances en termes de temps de calcul.

Afin de mieux appréhender les résultats de performance et optimiser efficacement les applications sur GPU, plusieurs thématiques intéressantes ont été abordées par la commu- nauté GPGPU. Des modèles analytiques de performances ont été élaborés pour aider les développeurs à mieux analyser et comprendre les résultats de performances et localiser les différents goulots d’étranglement. La difficulté évidente pour l’analyse des performances des applications basées GPGPU réside dans le fait que l’architecture sous-jacente des GPUs est très peu documentée. La plupart des approches développées jusqu’à présent n’ont pas pu présenter un niveau d’optimisation efficace pour des applications du monde réel. Par ailleurs, l’architecture des GPUs évoluant très rapidement, la communauté doit fournir un effort soutenu à l’effet de perfectionner les modèles existants et développer de nouvelles approches qui permettraient aux développeurs de mieux optimiser les applica- tions basées GPU.

Considérant toutes ces raisons, et vu le nombre restreint d’applications dans le do- maine de la vie artificielle qui exploitent actuellement les GPUs, le processus consistant à estimer la performance des applications de ce domaine reste un défi tant l’estimation de performances dans son sens le plus large reste encore une question ouverte.

Dans cette partie, nous allons essayer de présenter les modèles analytiques existants dans le but d’étudier la possibilité d’en adapter un pour notre cas.

2. OUTILS D’ANALYSE DE PERFORMANCE DES APPLICATIONS CUDA

2

Outils d’analyse de performance des applications CUDA

Dans cette section, nous présentons quelques outils importants dont le rôle est d’as- sister les développeurs dans l’analyse des performances des applications développées sur la plateforme CUDA [26].