image
Emmanuel Hermellin
TurtleKit & SMA on GPU
Emmanuel Hermellin


TurtleKit & SMA on GPU

Simulations multi-agents sur architectures massivement parallèles

Présentation de TurtleKit

TurtleKit est une plate-forme de développement qui utilise un modèle multi-agent spatialisé où l'environnement est discrétisé sous la forme d'une grille de cellules. Implémentée en Java à l'aide de la librairie de développement multi-agent MaDKit, TurtleKit repose sur des modèles d'agents et d'environnements inspirés par le langage de programmation Logo. L'un des objectifs principaux de TurtleKit est de fournir aux utilisateurs finaux une API facilement accessible et extensible. En particulier, l'API de TurtleKit est orientée objet et son utilisation repose sur l'héritage de classes prédéfinies.

Références

[Michel et al., 2005] Michel, F., Beurier, G., and Ferber, J. (2005). The TurtleKit Simulation Platform : Application to Complex Systems. In Akono, A., Tonyé, E., Dipanda, A., and Yétongnon, K., editors, Workshops Sessions of the Proceedings of the 1st International Conference on Signal-Image Technology and Internet-Based Systems, SITIS 2005, November 27 - December 1, 2005, Yaoundé, Cameroon, pages 122–128. IEEE.
[Gutknecht and Ferber, 2001] Gutknecht, O. and Ferber, J. (2001). MadKit : a generic multi-agent platform. In Agents,pages 78–79.

Fabien Michel
Emmanuel Hermellin

http://www.turtlekit.org

Simulations multi-agents et GPGPU

De par la conception de TurtleKit et l'objectif poursuivi dans nos travaux de recherche, l'intégration du GPGPU dans TurtleKit a suivi une approche hybride qui consiste à intégrer, de manière itérative, des modules utilisant de la programmation GPU tout en conservant inchangée l'API de TurtleKit. Cependant, implémenter un programme orienté GPGPU nécessite de définir à la fois des kernels (noyaux de calcul GPU), qui s'exécuteront sur le GPU, mais aussi des procédures, destinées à être exécutées par le CPU pour organiser l'exécution des kernels et récupérer les données ainsi produites. La partie programmation GPU utilise CUDA alors que la partie CPU conserve Java comme langage principal pour TurtleKit. La liaison entre ces deux parties (Java et CUDA) est réalisée par la librairie JCUDA (Java bindings for Cuda) qui permet d'utiliser directement CUDA dans Java (modulo le changement de syntaxe lié au langage Java).

Le choix d'utiliser la technologie CUDA pour intégrer le GPGPU dans TurlteKit est motivé par son antériorité et sa qualité reconnue qui lui permet de posséder la plus grande des communautés d'utilisateurs (en comparaison à OpenCL). De plus, bien que la portabilité offerte par la technologie OpenCL soit un atout majeur de cette dernière, elle a cependant pour conséquence de limiter les optimisations possibles lorsqu'on rentre dans le détail de la programmation d'un kernel. Notamment en ce qui concerne la gestion des différentes parties de la mémoire, CUDA propose depuis toujours des primitives qui permettent de gérer finement les différents types de mémoire qui peuvent être utilisés (privée au niveau des threads (les fils d'exécutions) , locale à un bloc, globale, etc.). Enfin, CUDA n'abstrait aucun détail de l'architecture matérielle et permet d'avoir une idée précise des différentes possibilités d'optimisation offertes par le GPGPU.

Ainsi, durant ces trois dernières années, plusieurs simulations multi-agents ont été implémentées grâce à TurtleKit et à sa version GPGPU. Ce sont ces expérimentations qui nous ont permis de développer la méthodologie présentée dans mon manuscrit de thèse.

Les simulations multi-agents implémentées sont les suivantes : Multi-Level Emergence, Reynolds boids, Game Of Life, Segregation, Fire, DLA, Heatbugs, Prey Predator.

Fabien Michel
Emmanuel Hermellin

Boids de Reynolds

MABS et GPGPU