Faculté informatique et communications IC, Section d'informatique, Institut des systèmes informatiques et multimédias ISIM (Laboratoire de réalité virtuelle VRLAB)

A multitasking and data-driven architecture for multi-agents simulations

Schertenleib, Sébastien ; Thalmann, Daniel (Dir.)

Thèse sciences Ecole polytechnique fédérale de Lausanne EPFL : 2006 ; no 3545.

Ajouter à la liste personnelle
    Summary
    The expansion of 3D real-time simulations (3DRTS) into millions of homes together with the technical progress of computers hardware force to approach software developments for 3DRTS from different perspectives. From an historical standpoint, 3DRTS started principally as homebrew developments. The underlined consequences are the lack of standardization for producing such applications. Nowadays, computers hardware can reproduce close to photo-realism 3D images within interactive environments. This was made possible with the continuous improvements in computers hardware. During many years, the hardware evolution was following vertical speed-up improvements, by increasing CPU clocks speed and memory bandwidth. Today, we are reaching the limits of this approach from a power consumption, heat, and intrinsic materials characteristics perspectives. As an outcome, the next-generation of computer hardware and home consoles are presenting multitasking architectures. This obliges to re-think software development for 3DRTS, moving from the serial and single-threaded approach to a concurrent design. We explore conceptual designs handling the current scale and complexity offered by 3DRTS developments by adopting stronger engineering practices. This is needed to control the underlined complexity and rising developments costs. The direct consequence of being able to generate highly detailed virtual worlds is to involve more deeply artists and designers in the development process. We propose mechanisms that free developers from common low-levels problematic, such as memory management or data synchronization issues. Our architecture relies on extending the Component Based Development (CBD) model for multitasking architectures. This obliges to define specific patterns either directly inspired by other fields in computer science or dedicated for 3DRTS. This includes promoting multi-layer design where the low-level routines are tightly connected to computer hardware by describing the importance of conceiving hardware-oblivious systems. This is important, as memory bandwidth is becoming the principal bottleneck in current applications. Another fundamental aspect consists to move from the single iterative global loop commonly found in single-threaded systems, by incorporating mechanisms for balancing the workflow more accurately. If those optimizations and evolutions are required for assuring efficient real-time performance, they do not allow non-programmers to interact with the system with ease. Our method consists to promote high-level languages and concurrent model relying on Microthreads. This gives the ability to develop and execute scripts in a multitasking environment without the common C/C++ issues. This is primordial to let designers experiment with ideas in a safer and efficient environment. This will leads to adopt the data-driven paradigm to control agents in our simulations, by clearly separating the logic and data layers. This offer better flexibility and reduce the existence of simulation specific code. In addition, we illustrate that the best technology and designs have a limited meaning, if they do not come with a complete production pipeline for managing and controlling simulation assets. This also affects fine tuning parameters where different hardware may perform better in some areas or worse in other. Finally, different use-cases demonstrate the strong and weakness aspects of our approach.
    Résumé
    L'intégration de simulations 3D temps réel dans des millions de foyers associés avec les progrès techniques dans le matériel informatique force d'approcher la conception de logiciels sous d'autres angles. D'un point de vue historique, le développement d'applications 3D temps réel a principalement débuté au travers de développements individuels. La conséquence directe est le manque de standardisation pour la production de telles applications. De nos jours, les ordinateurs sont capables de reproduire des images 3D photo réalistes dans des environnements interactifs. Cela a été possible grâce au développement continu du matériel informatique. Durant des années, l'évolution du matériel suivait une amélioration verticale en augmentant la fréquence des processeurs ainsi que des transfert des données. Aujourd'hui, nous atteignons les limites de cette approche pour des raisons de consommation d'énergie, de dégagement de chaleur, ainsi que des caractéristiques intrinsèques des matériaux. En conséquence, les futures générations de PCs et de consoles de jeux présentent une architecture multi-tâches. Ceci oblige à re-penser le processus de développement pour les applications 3D temps réel, en modifiant l'approche classique et sérielle, par une approche concurrente. Nous explorons les concepts permettant de manager la taille et la complexité des applications 3D temps réel en adoptant de plus strictes méthodes d'ingénierie. Ceci est absolument nécessaire pour contrôler, à la fois la complexité et les coûts de développements. La conséquence directe étant d'être en mesure de générer des mondes virtuels détaillés afin d'intégrer les artistes et designers dans le processus de développement. Nous proposons des mécanismes qui libèrent les développeurs des habituels problèmes de bas niveaux, tels que la gestion de la mémoire ou la synchronisation des données. Notre architecture repose dans l'extension du modèle "Component Based Development" (CBD) pour des architectures multi-tâches. Ceci requière de définir des patrons spécifiques, soit directement inspirés d'autres domaines ou directement dédiés aux applications 3D temps réel. Ceci inclut aussi de promouvoir un design multicouche ou les fonctions de bas niveaux sont directement connectées aux matériels en décrivant l'importance de concevoir des systèmes capables d'exploiter le matériel à disposition. Ceci est primordial, car les transferts de données sont le principal goulet d'étranglement dans les applications actuelles. Un autre aspect fondamental consiste à ne plus se reposer sur une approche itérative en y incorporant des mécanismes pour répartir les tâches. Si toutes ces optimisations et évolutions sont requises pour assurer des performances optimales, elles ne permettent pas aux personnes non qualifiées d'interagir facilement avec le système. Notre méthode consiste à promouvoir des langages de hauts niveaux ainsi que des modèles de programmations concurrentes basées sur le concept de Microthreads. Cela offre l'opportunité de développer et d'exécuter des scripts dans un environnent multi-tâches en évitant les problèmes du C/C++. C'est primordial pour permettre aux designers d'expérimenter leurs idées dans un environnement sécurisé et efficace. Ceci entraîne l'adoption de méthodes permettant le contrôle des personnages virtuels aux travers des données, en séparant la logique et les données. Cela accroît la flexibilité et réduit l'existence de code spécifique à une simulation. De plus, nous illustrons que les meilleures technologies et designs, n'ont qu'un intérêt limité, sans l'accompagnement d'outils de productions efficaces. Ceci inclut des outils de paramétrisations permettant d'adapter les simulations aux différents matériaux existants. Finalement, certains exemples démontrent les points forts et faibles de notre approche.