GPU-programmeren
Welke bewerking wordt op een GPU waarschijnlijk inefficiënt uitgevoerd?
- AEen gelinkte lijst van het begin af één voor één doorlopen, waarbij de volgende actie van de waarde van elk element afhangt
- BElementgewijze optelling van twee grote arrays
- CDe helderheid van alle pixels van een groot beeld verdubbelen
Antwoord en toelichting tonen
Antwoord: A. Een gelinkte lijst van het begin af één voor één doorlopen, waarbij de volgende actie van de waarde van elk element afhangt
Bij een gelinkte lijst is de plaats van het volgende element pas bekend nadat het vorige is gelezen, dus de lijst kan niet parallel worden doorlopen. Als de actie bovendien van de waarde afhangt, splitsen de sprongen zich binnen een bundel threads die met dezelfde instructie werken, waardoor de efficiëntie daalt. Ook liggen de geheugenplaatsen verspreid en kunnen ze niet gebundeld worden gelezen. Een GPU is geschikt voor werk waarbij elk element onafhankelijk is en dezelfde bewerking op data op opeenvolgende adressen wordt uitgevoerd.