29 April 2014, 10:30 - 29 April 2014, 11:30 Salle/Bat : 465/PCRI-N
Contact : Frederic.Gruau@lri.fr
Activités de recherche : High-performance computing
Résumé :
On souhaite réaliser du calcul générique, sur un hardware composé d'un même élément de calcul, réparti de facon homogène dans l'espace, et communiquant localement. La localité et le grain fin permettent une scalabilité arbitraire, mais rendent la programmation générique directe impossible.
La programmation générique d'un milieu de calcul peut néanmoins s'obtenir via l'installation d'une machine virtuelle intermédiaire permettant de développer des réseaux d'agents . Un agent crée deux agent, puis 4 et ainsi de suite. Chaque agent est représenté par une région entière de l'espace disponible. La création d'un agent à partir d'un autre se fait en divisant sa région. Au fur et a mesure du développement, les frontières entre régions se ré-équilibre pour maintenir une répartition homogéne. Plus grand devient le réseau, plus petite deviennent les régions représentant chaque agent. Le développement spécifie aussi les connexions entre agents. Deux agent peuvent être connectés et communiquer, seulement si leur régions sont voisines sur le hardware. En particulier si le hardware est 2D, le réseau doit avoir un graphe planaire.
Programmer en utilisant un réseau auto-développant est un exercice nouveau, et amusant. Il ne faut pas seulement spécifier un circuit de donnée, mais également comment développer ce circuit. Il nécessite de prévoir à l'avance quel vont être les trajectoires des données, pour développer le réseau apte à les supporter. Chaque agent doit rester léger car son support se déplace sans cesse ; On suppose qu'il ne peut stoker pas plus qu'un seul scalaire, le développement est donc indispensable pour un calcul non trivial. Par exemple le tri de $n$ scalaire nécessite $n$ agents pour les stoker. Nous donnerons deux exemples de programmes auto-développant : le tri et le produit de matrices ;
L'aboutissement du projet doit permettre d'obtenir des performances théoriques optimales pour ces deux problèmes, sur des support hardware arbitrairement grands. Cela passe cependant par une phase de mise au point difficile : La simulation de la machine virtuelle d'auto développement nécessite la mise en place de règles d' automates cellulaires complexes, de plusieurs centaine de bits, et milliers de portes. L'automate est organisé en une hiérarchie de nombreuses couches programmée orienté objet. Nous en présenterons quelques unes.