Multicœur et synchronisation

Parmi les causes suivantes expliquant que les performances d’un programme parallèle progressent moins que prévu avec l’ajout de cœurs, laquelle ne s’applique pas ?

  1. ALes synchronisations entre threads, comme l’attente de verrous, sont nombreuses
  2. BLa quantité de travail par thread est très déséquilibrée
  3. CChaque thread ne lit et n’écrit que ses propres données dédiées
Afficher la réponse et l'explication

Réponse : C. Chaque thread ne lit et n’écrit que ses propres données dédiées

Les principales causes qui limitent le gain de la parallélisation sont la partie non parallélisable (loi d’Amdahl), les attentes dues aux verrous et barrières, les allers-retours de lignes de cache dus aux données partagées et au faux partage, le déséquilibre de charge et l’insuffisance de bande passante mémoire. Si chaque thread ne manipule que ses propres données, il n’y a ni communication ni attente avec les autres threads, et l’on se rapproche d’une parallélisation idéale.

S'entraîner sur ce thème Retour au thème

Autres questions sur Multicœur et synchronisation

  1. Pour répartir les itérations d’une boucle entre plusieurs threads, quelle répartition convient lorsque la charge de calcul varie fortement d’une itération à l’autre ?
  2. Pour calculer avec plusieurs threads la somme de tous les éléments d’un tableau, quelle méthode convient du point de vue des performances ?
  3. Quelle est la caractéristique d’un verrou lecteurs-rédacteurs (reader-writer lock) ?
  4. Quelle est l’utilisation la plus appropriée d’un sémaphore à compteur ?
  5. Quelle est la différence entre cohérence de cache et modèle de cohérence mémoire ?

Comparatifs sur ce thème