Multicore und Synchronisation

Aktualisieren 64 Kerne einen einzigen gemeinsamen Zähler fortwährend gleichzeitig mit atomaren Befehlen, wird es auch mit mehr Kernen nicht schneller. Was ist der Hauptgrund?

  1. AWeil atomare Befehle nur auf einem Kern ausgeführt werden können
  2. BWeil der Zählerwert bei vielen Kernen automatisch kleiner wird
  3. CWeil die Cache-Zeile des Zählers ständig zwischen den Kernen wandert und Aktualisierungen nur nacheinander erfolgen
Antwort und Erläuterung anzeigen

Antwort: C. Weil die Cache-Zeile des Zählers ständig zwischen den Kernen wandert und Aktualisierungen nur nacheinander erfolgen

Für eine atomare Aktualisierung muss der Kern die Zeile im M-Zustand besitzen, sodass die Zeile bei jeder Aktualisierung zu einem anderen Kern wandert. Die Wanderung kostet Kommunikationszeit zwischen den Kernen, und da zu einem Zeitpunkt nur ein Kern aktualisieren kann, verlängert sich mit mehr Kernen nur die Wartezeit. Nötig sind Maßnahmen zur Verringerung gemeinsamer Schreibvorgänge, etwa dass jeder Kern an seiner eigenen Stelle zählt und am Ende summiert wird.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Multicore und Synchronisation

  1. Welche Aussage zu NUMA-Systemen (Non-Uniform Memory Access) ist richtig?
  2. Was ist bei der unter Linux in NUMA-Systemen häufig verwendeten First-Touch-Strategie (die Seite wird im Speicher des Knotens abgelegt, auf dem der Thread läuft, der sie als Erster beschreibt) zu beachten?
  3. Was trifft nicht als Ursache zu, dass die Leistung eines parallelen Programms bei mehr Kernen nicht wie erwartet steigt?
  4. Welche Aufteilung eignet sich, wenn Schleifendurchläufe auf mehrere Threads verteilt werden und der Rechenaufwand je Durchlauf stark schwankt?
  5. Welche Methode eignet sich leistungsmäßig, um die Summe aller Elemente eines Arrays mit mehreren Threads zu bilden?

Vergleiche zu diesem Thema