Multicore und Synchronisation

Welche Aufteilung eignet sich, wenn Schleifendurchläufe auf mehrere Threads verteilt werden und der Rechenaufwand je Durchlauf stark schwankt?

  1. AStatische Zuweisung, bei der zu Beginn gleichmäßig nach Zahl der Durchläufe aufgeteilt und danach nicht mehr angepasst wird
  2. BAlle Durchläufe einem einzigen Thread überlassen
  3. CDynamische Zuweisung, bei der die Arbeit in kleine Portionen unterteilt wird und freie Threads die nächste Portion holen
Antwort und Erläuterung anzeigen

Antwort: C. Dynamische Zuweisung, bei der die Arbeit in kleine Portionen unterteilt wird und freie Threads die nächste Portion holen

Statische Zuweisung ist aufwandsarm, doch sind die Durchläufe unterschiedlich schwer, hinkt nur der Thread hinterher, der die schweren Teile übernommen hat, und die anderen müssen warten. Bei dynamischer Zuweisung holen die Threads die nächste Arbeit z. B. von einem gemeinsamen Zähler, und früher fertige Threads übernehmen mehr, sodass die Last ausgeglichen wird. Sind die Portionen zu klein, steigt jedoch der Aufwand für das Holen, weshalb die Größe abzustimmen ist.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Multicore und Synchronisation

  1. Welche Methode eignet sich leistungsmäßig, um die Summe aller Elemente eines Arrays mit mehreren Threads zu bilden?
  2. Welches Merkmal von Lese-Schreib-Sperren (Reader-Writer-Lock) ist richtig?
  3. Welche Verwendung eines Semaphors mit Zähler ist am treffendsten?
  4. Welcher Unterschied zwischen Cache-Kohärenz und Speicherkonsistenzmodell ist richtig?
  5. Welche Idee steckt hinter Hardware Transactional Memory?

Vergleiche zu diesem Thema