Multicœur et synchronisation

Quelle description d’un système NUMA (accès mémoire non uniforme) est correcte ?

  1. ATous les cœurs accèdent à toute la mémoire en un temps identique
  2. BIl existe des mémoires proches et éloignées d’un cœur, et l’accès à une mémoire éloignée prend plus de temps
  3. CChaque cœur ne peut lire que sa propre mémoire et ne peut pas utiliser celle des autres cœurs
Afficher la réponse et l'explication

Réponse : B. Il existe des mémoires proches et éloignées d’un cœur, et l’accès à une mémoire éloignée prend plus de temps

Dans un serveur à plusieurs sockets CPU, chaque socket dispose d’une mémoire directement reliée, et la mémoire des autres sockets est accessible via l’interconnexion entre sockets. La mémoire éloignée est donc plus lente et offre moins de bande passante que la mémoire proche. Toute la mémoire apparaît dans un espace d’adressage unique et les programmes fonctionnent tels quels, mais placer données et threads du même côté améliore les performances.

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

Autres questions sur Multicœur et synchronisation

  1. 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 ?
  2. 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 ?
  3. 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 ?
  4. 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 ?
  5. Quelle est la caractéristique d’un verrou lecteurs-rédacteurs (reader-writer lock) ?

Comparatifs sur ce thème