Exploitation pratique et efficace du parallélisme sur processeurs multi-coeurs
Institution:
Paris 11Disciplines:
Directors:
Abstract EN:
This thesis treats of the notion of conditional division, which allows an efficient exploitation of multi-cores architecture parallelism. This operation allows the developer to ask the system or the processor for an additional thread. On its side, the system is free to deny the creation of the new thread. Thereby, the system is able to control the program and adapt it dynamically to available resources. So, the developer describes the potential parallelism while the processor decides how to execute the software. The first part of this thesis describes hardware modifications enabling a conditional division instruction. This work showed that it was possible to obtain dynamic behaviours similar to those obtained through complex optimisations but without having for the developer to understand the underlying architecture. A software version has been created, which provides a language level support for the division. This thesis shows that it is, in fact, possible to implement the conditional division without any hardware support, without noticeable performance hit, in both parallel and sequential cases. A memory model is described too. This model leverages common habits in parallel programming to propose the notion of cell. Cells give an explicit view to the system and the processor of the software data structure elements.
Abstract FR:
Cette thèse propose la notion de division conditionnelle, permettant d'exploiter efficacement le parallélisme offert par les architectures multi-coeurs. Cette opération permet programmeur de demander au système ou au processeur la création d'un nouveau thread. Le système est libre de refuser la création de ce thread additionnel. Cela permet au système de contrôler le programme et ainsi de l'adapter aux ressources disponibles. Le programmeur doit donc décrire le parallélisme potentiel, laissant le processeur prendre des décisions vis-à-vis des caractéristiques à l'exécution du programme. La première partie développée au sein de cette thèse est un ensemble de modifications matérielles, offrant une instruction de division conditionnelle. Cela permet de montrer qu'il est possible d'obtenir des comportements similaires aux comportements obtenus à l'aide d'optimisations complexes, mais sans nécessiter de la part du programmeur une compréhension précise de l'architecture. Une implémentation logicielle a également développée, afin d'offrir un support de la division au niveau du langage. Cette thèse montre qu'il est également possible d'implémenter une division conditionnelle sans support matériel, sans provoquer de perte notable de performance, aussi bien dans les cas parallèles que séquentiels. Enfin, un modèle mémoire a été conçu. Ce modèle tire parti des habitudes existantes en programmation parallèle et propose la notion de cellule. Les cellules rendent explicite pour le système et pour le processeur les éléments de structure de données que le programme manipule.