Multicœur et synchronisation

Quelle description de la synchronisation par barrière utilisée dans les programmes parallèles est correcte ?

  1. AElle crée une partie dans laquelle un seul thread peut entrer à la fois
  2. BElle fait attendre les threads arrivés en premier jusqu’à ce que tous les threads aient atteint ce point
  3. CC’est une instruction qui empêche le réordonnancement des opérations mémoire
Afficher la réponse et l'explication

Réponse : B. Elle fait attendre les threads arrivés en premier jusqu’à ce que tous les threads aient atteint ce point

Dans une simulation par exemple, tous les threads doivent achever le calcul d’une étape avant de passer à la suivante. Avec une barrière, chaque thread s’arrête au point de barrière, et tous repartent lorsque le dernier thread arrive. Si la charge de calcul est déséquilibrée, les threads rapides attendent plus longtemps les threads lents ; répartir le travail équitablement est donc essentiel aux performances.

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

Autres questions sur Multicœur et synchronisation

  1. Si 64 cœurs mettent à jour en continu et simultanément un compteur partagé unique par instruction atomique, l’ajout de cœurs n’accélère pas le traitement. Quelle en est la raison principale ?
  2. Quelle description d’un système NUMA (accès mémoire non uniforme) est correcte ?
  3. Avec la politique de premier contact (first touch) couramment utilisée sur les systèmes NUMA sous Linux (la page est placée dans la mémoire du nœud où s’exécute le thread qui y écrit en premier), à quoi faut-il prendre garde ?
  4. 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 ?
  5. 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 ?

Comparatifs sur ce thème