TP-systemes-concurrents/TP1/reponses.md

20 lines
2 KiB
Markdown
Raw Normal View History

2023-06-21 18:19:26 +00:00
## Efficacité de la parallélisation
1. On peut espérer que avec N threads le programme ira N fois plus vite (accélération linéaire).
2. On trace l'exécution réelle en fonction de N
1. La différence s'explique du fait que le processeur passe du temps à changer d'états (stacks) plutôt que de passer du temps à réelement calculer (ici incrémenter un compteur)
2. L'accélération est nettement visible pour un nombre faible de threads, celle-ci semble ensuite redevenir linéaire. On peut supposer que le mode synchronisé deviendrait plus lent que le mode séquentiel pour un très grand nombre de threads. (cf fig.png)
## Coût de la cohérence
1. Pour chaque le thread n°i on a alors "part de : NB_IT x NB_IT_INTERNES x i", "finit à NB_IT x NB_IT_INTERNES x (i+1)".
2. Si les thread sont commutés lors de leur exécution, alors il est peu probable d'obtenir les résultats de la questions précédente, surtout si le quanta est d'une durée inférieur à l'execution complète du thread. (On obtient des résultat ~proche de la question précédente, mais qui empirent avec le nombre de threads)
3. La deuxième solution semble être celle utilisée par Java.
4. La valeur finale diverge légèrement de la valeur théorique de NB_IT x NB_IT_INTERNES x nbActivités puisque, pour contourner les optimisations du compilateur on ajoute à chaque itération j/j à cpt au lieu de j. Cela introduit parfois des erreurs de calculs qui s'accumulent lors de l'execution globale du programme.
5. On essaie de rajouter synchronised à plusieurs endroits du code
1. on obtient de résultat escompté mais le temps d'execution du programme est décuplé.
2. on n'obtient pas le résultat escompté, les valeurs finales sont toujours différentes.
6. en utilisant AtomicLong les différences entre les départs et les arrivés des compteurs sont réduites mais subsistent toujours
7. Tout comme l'utilsation de synchronised sur l'incrémentation, déclarer la variable servant de compteur comme volatile permet d'obtenir un résultat correcte.
8. It Depends ™