Mojo Academy · Les

Een lus vectoriseren

Maak van een scalaire lus vectorwerk

Les 4 van 413 stappen

Een lus vectoriseren is een gratis Mojo Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Mojo Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Mojo Academy bevat in totaal 4 lessen.

De scalaire lus

Een gewone lus verwerkt per stap één element. Dat is duidelijk, maar laat de vectorlanes van je CPU grotendeels ongebruikt.

for i in range(n):
    out[i] = a[i] + b[i]

Het vectoridee

Vectoriseren betekent dat elke stap van de lus een hele groep elementen verwerkt in plaats van één element. Je doet meer werk per iteratie.

Een blok laden

In plaats van één waarde laad je meerdere waarden tegelijk in een SIMD-vector. Met die ene laadbewerking haal je een deel van je gegevens op.

var chunk = a.load[width=4](i)

Het hele blok berekenen

Wanneer beide blokken de SIMD-vorm hebben, tel je ze in één elementgewijze stap bij elkaar op. De berekening omvat elke lane tegelijk.

var sum = a.load[width=4](i) + b.load[width=4](i)

Het resultaat opslaan

Schrijf het volledige SIMD-resultaat in één beweging terug met een vector-opslagbewerking. Eén schrijfhandeling omvat alle lanes die je hebt berekend.

out.store[width=4](i, sum)

Stappen met de breedte

Een gevectoriseerde lus gaat met de breedte vooruit, niet met één. Elke doorgang verwerkt een volledige groep elementen.

for i in range(0, n, 4):
    pass

Laat Mojo het aansturen

De vectorize-helper van Mojo voert een closure uit over het bereik in vectorstappen en regelt de administratie voor je.

from algorithm import vectorize

Een vectorize-closure

Je schrijft een kleine functie met parameters die één blok verwerkt. Mojo roept die aan met de juiste breedte terwijl het het bereik doorloopt.

fn work[w: Int](i: Int):
    out.store[width=w](i, a.load[width=w](i) + b.load[width=w](i))

vectorize uitvoeren

Roep vectorize aan met je blokfunctie, de breedte en de totale grootte. De functie regelt de lus en de staart voor je.

vectorize[work, 4](n)

Hetzelfde resultaat, veel sneller

De gevectoriseerde lus geeft dezelfde uitvoer als de scalaire lus, maar gaat in grote stappen door de gegevens en is daardoor eerder klaar.

Meten om te bevestigen

Meet altijd de tijd van beide versies. Vectorisatie wint meestal ruimschoots, maar een benchmark bewijst de winst op je echte gegevens.

Snelle controle

Je vervangt een lus die per stap één element verwerkt door SIMD-laad- en opslagbewerkingen. Hoe moet de lus vooruitgaan?

Samenvatting

Vectorisatie laadt en slaat volledige blokken op, stapt met de breedte vooruit en laat vectorize het doorlopen en de staart afhandelen, met hetzelfde resultaat maar veel sneller. 🚀

Gratis beginnen

Leer Mojo met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
30
Lessen
120

Veelgestelde vragen

Is de les “Een lus vectoriseren” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Mojo Academy, waaronder “Een lus vectoriseren”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Mojo Academy bevat in totaal 4 lessen.

Wat leer ik in “Een lus vectoriseren”?

Maak van een scalaire lus vectorwerk Je oefent met Mojo Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Mojo Academy te beginnen?

Ervaring vooraf is niet nodig. Mojo Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “Een lus vectoriseren”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Mojo Academy?

Ja. Elke les over Mojo Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Maak kennis met het SIMD-type
  2. Elementgewijze SIMD-wiskunde
  3. Een SIMD-breedte kiezen
  4. Een lus vectoriseren
← Terug naar Mojo Academy