Wat is SIMD?

Afkorting van Single Instruction, Multiple Data. Methode waarbij één instructie dezelfde bewerking op meerdere data tegelijk uitvoert. Versnelt beeldverwerking en AI-berekeningen.

Japanse benaming: SIMD

“SIMD” komt voor in 7 oefenvragen uit 5 onderwerpen, bijv. Compilers, GPU-programmeren, CPU en architectuur.

Vakgebied: CPU en architectuur

Nu oefenen: vragen over SIMD

Welke uitspraak over het verschil tussen de SIMT-methode (single instruction, multiple threads) van de GPU en SIMD-instructies van de CPU is juist?

  1. ASIMT voert meerdere instructies tegelijk uit op één data-element en SIMD voert één instructie uit op één data-element
  2. BSIMT en SIMD zijn volledig hetzelfde en verschillen alleen in naam
  3. CBij SIMT kan elke thread als een onafhankelijk programma worden geschreven en handelt de hardware ook sprongen af, terwijl bij SIMD de programmeur of compiler expliciet vectorinstructies met vaste breedte gebruikt
Antwoord en toelichting tonen

Antwoord: C. Bij SIMT kan elke thread als een onafhankelijk programma worden geschreven en handelt de hardware ook sprongen af, terwijl bij SIMD de programmeur of compiler expliciet vectorinstructies met vaste breedte gebruikt

Bij SIMD van de CPU wordt één instructie toegepast op een vectorregister met bijvoorbeeld 4 of 8 data-elementen, dus het programma wordt geschreven met aandacht voor de vectorbreedte. Bij SIMT van de GPU schrijft de programmeur de bewerking van één thread gewoon uit, en bundelt de hardware die in groepen van 32 en voert ze met dezelfde instructie uit. Threads mogen individueel vertakken, en de hardware voert de gesplitste paden na elkaar uit, maar dan daalt de efficiëntie.

“SIMD” in de toelichting

Vragen met “SIMD” (7)

  1. Wat is de belangrijkste reden dat de bovenstaande lus moeilijk te vectoriseren is met SIMD-instructies?
  2. Welke uitspraak over het verschil tussen de SIMT-methode (single instruction, multiple threads) van de GPU en SIMD-instructies van de CPU is juist?
  3. Welke methode voert met één instructie dezelfde bewerking tegelijk uit op meerdere gegevens?
  4. Welke uitspraak over verzadigingsrekenkunde (saturating arithmetic), zoals gebruikt in signaalverwerking, is juist?
  5. Welk soort instructie wordt gebruikt bij automatische vectorisatie door een compiler?
  6. Waarom wordt een bewerking die alleen de x-coördinaten optelt vaak sneller wanneer een array van structuren wordt omgeschreven tot een structuur van arrays (elke component in een eigen array)?
  7. Welke rangschikking is voordelig voor coalesced geheugentoegang wanneer data van deeltjes met posities x, y en z op een GPU wordt verwerkt?

Vergelijkingen met deze term

Verwante termen

Vectorisatie GPU SIMT Numerieke apertuur (NA) Verzadigingsrekenkunde (saturating arithmetic) Cachecoherentie Cachegeheugen DMA (direct memory access) DVFS (dynamic voltage and frequency scaling) Instructiesetarchitectuur (ISA)

Naar de woordenlijst