Précisions sur le projet de programmation multi-coeurs

Précisions sur le projet de programmation multi-coeurs

par PERRIN Matthieu,
Nombre de réponses : 0

Bonjour à tous,


Plusieurs d'entre vous m'ont posé des questions sur le sujet du projet, qui effectivement n'est pas très clair. 


Premièrement, il y a une différence entre l'algorithme dans le sujet et celui dans l'article en annexe : l'algorithme de l'article prend les verrous sur les objets accédés en lecture, alors que celui du sujet se contente de vérifier qu'ils n'ont pas déjà été pris. Ces deux stratégies sont équivalentes puisque, dans les deux algorithmes, s'il y a des lectures en concurrence avec des écritures, la transaction doit aborter (mais pas forcément au même moment dans les deux algorithmes).  L'algorithme TL2 original vérifie que les verrous ne sont pas pris, ce qui est un peu plus efficace (on aborte le plus tôt possible). L'article de l'annexe se concentre surtout sur la présentation de l'algorithme, pour en avoir une version la plus simple possible. Vous pouvez implémenter la version que vous voulez, mais je vous conseille d'implémenter celle du sujet (avec vérification sur les verrous en lecture).


Deuxièmement, la structure de données à implémenter pour tester votre mémoire transactionnelle doit contenir TOUTES les adresses explorées et à explorer. Dans le TP 3, ces adresses étaient disséminées entre le dictionnaire et la file d'attente du thread pool, vous devez donc concevoir une structure de données qui englobe les deux aspects. Il n'y a pas d'interface imposée. Les transactions doivent être utilisées dans l'implémentation des méthodes de cette structure de données. 


Bon courage,

Matthieu Perrin