• Aucun résultat trouvé

Les quatres aspects d’un modèle de simulation multi-agent d’après [Michel, 2004]

Toutes ces spécificités et caractéristiques propres aux plates-formes sont donc à prendre en considération car l’utilisation de chacune d’entre elles va nécessiter un temps d’adaptation (mal- gré les ressources disponibles) et d’apprentissage pouvant limiter leur accessibilité. De plus, la réutilisabilité d’un modèle entre ces plates-formes est fortement contraint (voir impossible) du

fait de leurs particularités techniques et de leur champ d’application, ce qui réduit fortement la généricité des modèles créés.

Ainsi, nous identifions trois critères permettant d’évaluer les outils et solutions dans le cadre du développement de simulations multi-agents : la généricité, l’accessibilité et la réutilisabilité. Voici leur définition dans le contexte de ce document :

Définition 1. Généricité

La généricité caractérise la capacité de la solution considérée à prendre en compte (à pouvoir être appliquée sur) une grande variété de modèles multi-agents.

Définition 2. Accessibilité

L’accessibilité fait référence à la simplicité de programmation ainsi qu’à la facilité de prise en main de la solution considérée.

Définition 3. Réutilisabilité

La réutilisabilité souligne la capacité de la solution considérée à promouvoir des outils ou des éléments facilement réutilisables pour d’autres modèles que ceux pour lesquels ils ont été créés.

Nous verrons, dans les chapitres suivants, que le problème d’accessibilité (mais aussi de réuti- lisabilité) déjà présent pour l’implémentation de simulations multi-agents avec des plates-formes dédiées (sur des architectures séquentielles) sera bien plus important lorsque nous considére- rons l’utilisation d’architectures matérielles différentes (telles des architectures parallèles) pour résoudre les problèmes de performances énoncés ci-dessus. Ainsi, la généricité, l’accessibilité et la réutilisabilité deviendront des critères essentiels dans la suite de ce document aussi bien pour comparer les travaux présentés (dans l’état de l’art au chapitre 3) que pour évaluer nos propres développements (dans la partie II de ce document).

1.3 Résumé du chapitre et objectifs premiers de la thèse

Les systèmes multi-agents sont des systèmes composés d’un ensemble d’entités appelés agents, potentiellement organisés partageant un environnement commun dans lequel ils peuvent inter- agir [Ferber, 1995]. Ils sont donc basés sur un certain nombre de principes et concepts avec no- tamment les agents et l’environnement.

La simulation multi-agent est un sous-domaine des systèmes multi-agents basée sur une ap- proche individu-centrée [Michel et al., 2009] qui modélise non seulement les individus et leurs comportements, mais aussi les interactions qui se déroulent entre ces individus. Elle considère ainsi que la dynamique globale d’un système, au niveau macroscopique, résulte directement des interactions entre les individus qui composent ce système au niveau microscopique. Ainsi, alors que les modèles classiques modélisent les relations qui existent entre les différentes entités iden- tifiées d’un système à l’aide d’équations mathématiques (EBM), l’approche multi-agent modélise directement les interactions engendrées par des comportements individuels.

Nous avons vu dans ce chapitre que les simulations multi-agents nécessitent des ressources de calcul importantes. Malgré cette demande en constante augmentation, la proportion d’outils proposant des solutions visant à améliorer les performances de ces simulations restent extrême- ment faible. Il apparait donc clairement, à l’heure actuelle, que la question des performances reste un des verrous majeurs pour la simulation multi-agent.

Dans ce contexte, nos objectifs pour ce travail de thèse sont de répondre à ces problèmes de performance et de trouver des solutions pour permettre des simulations multi-agents à plus large échelle. Pour ce faire, nous explorerons l’idée d’utiliser le calcul haute performance (HPC, de l’an- glais High Performance Computing) que nous présentons au chapitre 2. Cependant, il nous faudra

1.3. Résumé du chapitre et objectifs premiers de la thèse

aussi prendre en compte que l’utilisation du HPC s’accompagne d’architectures matérielles par- ticulières et de paradigmes de programmation complexes. Ainsi, alors que le développement de simulations multi-agents souffre déjà d’un manque d’accessibilité et de réutilisabilité, il y a fort à parier que tous ces problèmes vont être exacerbés dès lors que nous considérerons d’implémenter des simulations multi-agents sur des architectures matérielles différentes. Comme nous le verrons au chapitre 3, toute la difficulté va être de trouver des solutions d’implémentation de simulations multi-agents dans un contexte HPC respectant nos trois critères d’évaluation (généricité, accessi- bilité et réutilisabilité) définis dans ce chapitre.

CHAPITRE2

CALCUL HAUTE PERFORMANCE ET

GPGPU

Sommaire

2.1 Une réponse à des besoins de calculs . . . 20 2.2 Le parallélisme . . . 21

2.2.1 La taxonomie de Flynn . . . 21 2.2.2 Efficacité du parallélisme . . . 21 2.2.3 Solutions de parallélisation . . . 22 2.2.4 Les cartes graphiques : une alternative intéressante pour le calcul intensif . 23

2.3 General-Purpose computing on Graphics Processing Units . . . 24

2.3.1 Historique et évolution des capacités des GPU . . . 24 2.3.2 Une nouvelle architecture d’exécution . . . 25 2.3.3 Modèle de programmation . . . 26 2.3.4 Exemple d’implémentation . . . 28 2.3.5 Aspects importants autour de la programmation GPU . . . 30

2.4 Résumé du chapitre et début de problématique . . . 31

Le calcul haute performance (aussi appelé calcul intensif) fait référence au domaine dédié au développement des architectures matérielles capables d’exécuter plusieurs milliards d’opérations à la seconde ainsi qu’aux méthodes et techniques de programmation massivement parallèles qui leurs sont associées. Parmi les architectures dédiées au HPC, les super-ordinateurs peuvent être vus comme un grand nombre de machines (e.g. des serveurs de calcul) composées de plusieurs milliers de processeurs reliés entres eux par des réseaux à très haut débit et capables de pouvoir traiter plus rapidement :

— Une simulation donnée en partageant sur un ensemble de serveurs le travail à réaliser (en parallélisant le calcul) ;

— Un grand nombre de simulations exécutées sur l’ensemble des serveurs de calcul en fai- sant varier par exemple des paramètres d’entrées comme la température ou la pression d’un fluide, la déformation d’un solide, la volatilité d’un produit dérivé financier, etc.

Ainsi, un calcul qui s’exécute en 24 heures sur un PC (de l’anglais Personnal Computer) clas- sique ne prendrait que quelques minutes sur un super-ordinateur. Ces gains en temps permettent de réduire les coûts à chaque étape de la vie d’un produit ou d’un process (conception, optimisa- tion, validation) et concernent potentiellement de nombreux domaines de recherche et applicatifs industriels tels que l’environnement, l’automobile, l’aéronautique et le spatial, la chimie, la méde- cine et la biologie, les matériaux, l’énergie, la finance, le traitement massif de données multimédia, etc.

2.1 Une réponse à des besoins de calculs

Les super-ordinateurs sont devenus des outils omniprésents dans le monde de la recherche et du développement car ils offrent la possibilité d’évaluer des situations, d’expérimenter mais aussi de réaliser des expériences qui ne peuvent être menées en laboratoire à cause de coûts trop élevés, de danger, ou d’impossibilité physique de mise en œuvre.

Ainsi, la puissance disponible au sein des super-ordinateurs a augmenté parallèlement aux progrès de l’électronique et suit la théorie énoncée par Gordon MOORE. Cette dernière énonce un doublement de la puissance disponible tous les 18 mois. Pour mesurer cette puissance, il est usuel d’utiliser une unité dédiée : le Flops (de l’anglais Floating point Operations Per Second). La figure 2.1 présente une évolution de l’évolution de cette puissance1pour les 500 meilleurs super- calculateurs de 1993 à 2014.

FIGURE2.1 – Évolution de la puissance des super-calculateurs (source : www.top500.org).

Pour atteindre de telles capacités de calcul, les super-ordinateurs sont obligés d’utiliser un grand nombre de processeurs (plusieurs milliers), aussi appelés CPU (de l’anglais Central Proces- sing Unit), qui vont fonctionner de manière conjointe. Cette utilisation parallèle des CPU est une spécificité introduite par ces super-ordinateurs.

En effet, avant l’émergence de ce mouvement de parallélisation, les ordinateurs ne conte- naient qu’un seul CPU dont la fréquence de fonctionnement était la seule caractéristique per- mettant d’évaluer la performance de la machine. La règle était alors relativement simple : plus la fréquence était élevée, plus le CPU était rapide. Ainsi, il était alors possible de permettre à un pro- gramme limité par la vitesse du CPU de s’exécuter plus rapidement sans la moindre adaptation (un CPU plus rapide permet d’effectuer plus d’opérations par seconde).

Cependant, l’augmentation de la fréquence au sein d’un CPU est limitée par l’apparition de multiple obstacles physiques, notamment en termes de miniaturisation (finesse de gravure du CPU) et de dissipation thermique. Le parallélisme est donc apparu comme la solution pour contour- ner ces difficultés afin d’augmenter les performances des ordinateurs. L’accroissement de la puis-

1. Sum représente la puissance combinée des 500 plus gros super-calculateurs, N = 1 la puissance du super- calculateur le plus rapide et N = 500 la puissance du super-calculateur se trouvant à la place 500.

2.2. Le parallélisme

sance de calcul est alors réalisée grâce à la multiplication du nombre de CPU et du nombre de cœurs d’exécution (processeur multi-cœurs) et/ou par une interconnexion entre de nombreuses machines (serveurs de calcul).

2.2 Le parallélisme

Les architectures parallèles sont devenues omniprésentes et chaque ordinateur possède main- tenant un processeur reposant sur ce type d’architecture matérielle. Le parallélisme consiste à utiliser ces architectures parallèles pour traiter des informations et des données de manière si- multanée dans le but de réaliser le plus grand nombre d’opérations par seconde.

2.2.1 La taxonomie de Flynn

La taxonomie établie par Michael J. FLYNN [Flynn, 1972] est l’un des premiers systèmes de classification qui classe les architectures des ordinateurs selon le type d’organisation du flux de données et du flux d’instructions qu’ils utilisent. Il référence ainsi quatre types différents d’archi- tecture qui vont du plus simple traitant uniquement une donnée à la fois, ils sont dits séquentiels, aux plus complexes traitant de nombreuses données et instructions en simultané, ils sont qualifiés de parallèles. La figure 2.2 présente cette classification :

— Architecture SISD (Single instruction Single Data) : systèmes séquentiels qui traitent une donnée à la fois.

— Architecture SIMD (Single instruction Multiple Data) : systèmes parallèles traitant de grandes quantités de données d’une manière uniforme.

— Architecture MIMD (Multiple instruction Multiple Data) : systèmes parallèles traitant de grandes quantités de données de manières hétérogènes.

— Architecture MISD (Multiple instruction Single Data) : systèmes parallèles traitant une seule donnée de manière hétérogène.