Mojo Academy · Lektion

Kombinér parallelisering og vektorisering

Læg tråde oven på SIMD.

Lektion 3 af 413 trin

Kombinér parallelisering og vektorisering er en gratis Mojo Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Mojo Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Mojo Academy-kurset indeholder 4 lektioner i alt.

To slags hastighed

SIMD pakker mange værdier i én kernes instruktion. Tråde fordeler arbejdet på tværs af kerner. Når du kombinerer begge dele, får du mest muligt ud af dem. ⚡

Ydre lag: tråde

Brug parallelize på det ydre niveau, så hver kerne ejer en bid af dataene. Det er den grove opdeling på tværs af kerner.

parallelize[do_chunk](workers)

Indre lag: vektorer

Brug vectorize inde i hver bid, så én kerne behandler sit udsnit i SIMD-pakker. Det er den fine opdeling pr. kerne.

from algorithm import vectorize

Importér begge hjælpefunktioner

Begge værktøjer findes i modulet algorithm, så du kan hente dem ind sammen og kombinere dem i én funktion.

from algorithm import parallelize, vectorize

Bidarbejderen

Hver bidarbejder beregner sin start og slutning og giver derefter sit eget udsnit til vectorize til SIMD-gennemløbet.

fn do_chunk(c: Int):
    var start = c * chunk

Vektorisér det indre interval

Inde i arbejderen kalder du vectorize på længden af netop denne bid. SIMD-bredden bestemmer, hvor mange baner der kører på én gang.

vectorize[step, width](end - start)

Forskydning i dataene

Det indre trin får et lokalt indeks, så læg bidens start til for at nå det rigtige sted i det fulde array.

fn step[w: Int](i: Int):
    out.store[width=w](start + i, ...)

Vælg SIMD-bredden

Tilpas vektorbredden til maskinens baner med simdwidthof, så hver kerne udnytter sine registre fuldt ud.

alias width = simdwidthof[DType.float32]()

Kerner gange baner

Gevinsten multipliceres: mange kerner, der hver udfører mange baner pr. trin. Det er derfor, kombineret kode er så hurtig.

Hold bidder uafhængige

Denne kombination fungerer kun, fordi bidder aldrig rører hinandens data. Uafhængighed holder de to lag sikre.

Mål den samlede gevinst

Kør en benchmark af den skalar, den kun vektoriserede og den kombinerede version. Tallene viser, hvor meget hvert lag bidrager med.

Hurtigt tjek

Du kombinerer tråde og SIMD på den samme arbejdsbelastning.

Opsummering

Du lægger parallelize omkring bidder og kalder vectorize inde i hver bid. Ved at forskyde med bidens start multiplicerer kerner gange baner din gennemstrømning. 🚀

Gratis at komme i gang

Lær Mojo med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “Kombinér parallelisering og vektorisering” gratis?

Ja — alle 3 lektioner i læringssporet Mojo Academy, inklusive “Kombinér parallelisering og vektorisering”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Mojo Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Kombinér parallelisering og vektorisering”?

Læg tråde oven på SIMD. Du øver dig i Mojo Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Mojo Academy?

Der kræves ingen tidligere erfaring. Mojo Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Kombinér parallelisering og vektorisering”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Mojo Academy-lektion?

Ja. Alle Mojo Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. parallelize-funktionen
  2. Opdel arbejdet i bidder
  3. Kombinér parallelisering og vektorisering
  4. Undgå datakapløb
← Tilbage til Mojo Academy