Kombinér parallelisering og vektorisering
Læg tråde oven på SIMD.
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 vectorizeImporté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, vectorizeBidarbejderen
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 * chunkVektorisé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. 🚀
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
- parallelize-funktionen
- Opdel arbejdet i bidder
- Kombinér parallelisering og vektorisering
- Undgå datakapløb