parallelize-funktionen
Kør løkkeiterationer på tværs af tråde.
parallelize-funktionen er en gratis Mojo Academy-lektion på CoddyKit. Dette er lektion 1 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.
Én kerne er ikke nok
En almindelig løkke kører på én kerne, mens resten er inaktive. Ved tungt arbejde spilder det det meste af din CPU.
for i in range(n):
out[i] = heavy(i)Fordel arbejdet
Parallelisme betyder, at forskellige iterationer af løkken gives til forskellige kerner, så de alle arbejder på samme tidspunkt. 🧵
Mød parallelize
Mojos parallelize-hjælpefunktion kører løkkens krop på tværs af mange tråde for dig, så du slipper for selv at håndtere trådene.
from algorithm import parallelizeArbejdsfunktionen
Du skriver en lille funktion, der udfører arbejdet for ét indeks. Mojo kalder den mange gange, én gang pr. iteration.
fn work(i: Int):
out[i] = heavy(i)Giv funktionen som parameter
Funktionen placeres i firkantede parenteser som en kompileringstids-parameter, ikke som et normalt argument til et kald. Mojo specialiserer sig ud fra den.
parallelize[work](n)Antallet bestemmes under kørsel
Tallet i parenteserne angiver, hvor mange arbejdselementer der skal køres. Antallet er en almindelig værdi ved kørsel.
parallelize[work](num_items)Bed maskinen om antallet af kerner
Brug num_physical_cores fra modulet sys for at finde ud af, hvor mange fysiske kerner du har at fordele arbejdet på.
from sys import num_physical_coresBegræns antallet af arbejdere
Et valgfrit andet argument angiver, hvor mange arbejdere der kører samtidig. Det fungerer ofte bedst at matche antallet med dine kerner.
parallelize[work](n, num_physical_cores())Hvert kald er uafhængigt
parallelize antager, at arbejdselementerne ikke afhænger af hinandens rækkefølge. Hvert kald skal kunne stå på egne ben.
Bedst til tunge løkker
Parallelisme gør størst forskel, når hvert element udfører reelt arbejde. For små løkker kan trådenes overhead koste mere, end den sparer.
Mål hastighedsforøgelsen
Mål tiden for løkken før og efter parallelisering. En reel benchmark viser, om de ekstra tråde faktisk hjalp.
Hurtigt tjek
Du vil køre en løkkes krop på tværs af flere CPU-kerner i Mojo.
Opsummering
Du importerer parallelize, giver en funktion pr. element som parameter i firkantede parenteser og antallet i parenteser, og tilpasser derefter antallet af arbejdere til dine kerner for at opnå en reel hastighedsforøgelse. 🚀
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 “parallelize-funktionen” gratis?
Ja — alle 3 lektioner i læringssporet Mojo Academy, inklusive “parallelize-funktionen”, 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 “parallelize-funktionen”?
Kør løkkeiterationer på tværs af tråde. 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 1 af 4.
Hvor lang tid tager lektionen “parallelize-funktionen”?
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