Compilers

Welk soort instructie wordt gebruikt bij automatische vectorisatie door een compiler?

  1. AInstructies die een interrupt veroorzaken
  2. BSIMD-instructies die meerdere gegevens tegelijk verwerken
  3. CInstructies die de inhoud van de cache in één keer volledig wissen
Antwoord en toelichting tonen

Antwoord: B. SIMD-instructies die meerdere gegevens tegelijk verwerken

Automatische vectorisatie is een optimalisatie waarbij lussen die per arrayelement dezelfde berekening uitvoeren worden herkend en vervangen door SIMD-instructies die meerdere elementen tegelijk verwerken. Met een 128-bits SIMD-register kunnen bijvoorbeeld vier getallen van 32 bit tegelijk worden opgeteld, zodat het aantal berekeningen van de lus bij succes een vierde wordt. Voorwaarden zijn dat er geen afhankelijkheid tussen iteraties is en dat de data aaneengesloten liggen; bij een mogelijke overlap van pointers wordt het soms achterwege gelaten. Interrupts of cache-instructies spelen geen rol.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Compilers

  1. Welke basisvoorwaarde moet een optimalisatie van een compiler respecteren?
  2. Welke uitspraak over instructieselectie (instruction selection), een van de fasen van codegeneratie, is juist?
  3. Welke uitspraak over een cross-compiler is juist?
  4. Als een met optimalisatie gecompileerd programma met een debugger wordt onderzocht, wordt de waarde van sommige variabelen soms als "niet beschikbaar" weergegeven. Wat is de belangrijkste reden?
  5. Welke uitspraak over de teruggegeven waarde en de resterende code van de bovenstaande functie is juist wanneer constant propagation, constant folding en verwijdering van dode code voldoende zijn toegepast?

Vergelijkingen bij dit onderwerp