Programmation graphique TD 4 : le retour du Jedi

Transcription

Programmation graphique TD 4 : le retour du Jedi
Programmation graphique TD 4 :
le retour du Jedi
7 mai 2009
Le but de ce TD est d’analyser l’évolution du côté obscur de la Force chez Anakin Skywalker. La force est
constituée de midichloriens répartis un peu partout dans l’univers. On peut considérer une zone de l’espace (par
exemple le corps d’Anakin) comme une grille de cases régulièrement espacées en deux dimensions. Chaque case
de la grille peut contenir ou non un midichlorien.
La grille est repliée sur elle-même à la manière d’un tore. Ainsi, le voisin de droite de la dernière case est la
première case.
D’anciens holocrons retrouvés dans les archives de l’ordre Jedi[1] décrivent l’évolution des midichloriens par
les règles suivantes :
– un midichlorien entouré de moins de deux autres midichloriens dans les cases immédiatement adjacentes
disparait,
– un midichlorien entouré du plus de trois voisins disparait aussi,
– un midichlorien entouré de deux ou trois voisins survit,
– un midichlorien apparait dans une case vide entourée d’exactement trois voisins.
On distinguera deux sortes de midichloriens, selon qu’ils appartiennent au côté obscur ou non.
1. Récupérer le squelette par la commande :
scp -r elsa2:/home/enseign/scollang/graphique/2009/td4/ .
On représente chaque cellule du tableau par un entier. 0 signifie cellule vide, 1 signifie midichlorien clair et 2
midichlorien obscur.
2. Programmer la simulation sans optimiser les accès mémoire. On utilise la fonction lire ligne pour accéder
aux cases voisines.
La moitié des lectures se font en mode non-coalesced, ce qui diminue la bande passante mémoire.
3. Comment modifier la fonction lire ligne pour augmenter le nombre d’accés coalesced ?
Les valeurs stockées dans les cases de la grille ne peuvent être que 0, 1 ou 2. Utiliser des int pour les stocker
va donc gâcher de la place et de la bande passante mémoire. Cependant, les GPU que nous utilisons ne permettent
pas d’accéder en mode coalesced à des données de taille inférieure à 32 bits.
Nous allons donc continuer à lire des mots de 32 bits depuis la mémoire, mais en intégrant plusieurs cellules
dans un mot.
Comme on modifie le format de la grille, il faudra aussi modifier aussi le code d’initialisation et de comptage.
4. Programmer cela et comparer les temps d’exécution.
Références
[1] http ://fr.wikipedia.org/wiki/Jeu de la vie
1