Multicore en synchronisatie

Welke methode is geschikt voor de prestaties bij het berekenen van de som van alle elementen van een array met meerdere threads?

  1. AAlle threads nemen per element een lock op één gedeelde variabele en tellen erbij op
  2. BAlle threads tellen per element zonder synchronisatie bij één gedeelde variabele op
  3. CElke thread telt zijn eigen deel op met een lokale variabele en de resultaten worden aan het eind één keer per thread bij elkaar opgeteld
Antwoord en toelichting tonen

Antwoord: C. Elke thread telt zijn eigen deel op met een lokale variabele en de resultaten worden aan het eind één keer per thread bij elkaar opgeteld

Als per element een gedeelde variabele wordt bijgewerkt, wordt het zeer traag door het wachten op locks en atomaire instructies en door het heen en weer gaan van cacheregels. Als elke thread in een register of lokale variabele een deelsom bepaalt en de totale som aan het eind met zoveel optellingen als er threads zijn wordt bepaald, zijn er zeer weinig gedeelde schrijfacties. Deze methode heet reductie en is ook ingebouwd in parallelliseringsmechanismen zoals OpenMP.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Multicore en synchronisatie

  1. Welke eigenschap van een lees-schrijflock (reader-writer lock) is juist?
  2. Wat is het meest passende gebruik van een tellende semafoor?
  3. Welk verschil tussen cachecoherentie en een geheugenconsistentiemodel is juist?
  4. Welke uitleg van het idee van hardware transactional memory is juist?
  5. Waarom wordt bij een conditievariabele, wanneer wordt gewacht tot de wachtrij niet meer leeg is, na het ontwaken de voorwaarde opnieuw gecontroleerd met een while-lus in plaats van een if-opdracht?

Vergelijkingen bij dit onderwerp