parallelize-funksjonen
Kjør løkkeiterasjoner på tvers av tråder.
parallelize-funksjonen er en gratis leksjon i Mojo Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Mojo Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Mojo Academy inneholder totalt 4 leksjoner.
Én kjerne er ikke nok
En vanlig løkke kjører på én enkelt kjerne mens resten står ledige. Ved tungt arbeid sløser dette bort det meste av CPU-en Deres.
for i in range(n):
out[i] = heavy(i)Fordel arbeidet
Parallellitet betyr å gi ulike løkkeiterasjoner til forskjellige kjerner, slik at de alle arbeider samtidig. 🧵
Møt parallelize
Mojos hjelpefunksjon parallelize kjører løkkekroppen på tvers av mange tråder for Dem, slik at De slipper å håndtere trådene manuelt.
from algorithm import parallelizeArbeidsfunksjonen
De skriver en liten funksjon som utfører arbeidet for én indeks. Mojo kaller den mange ganger, én gang per iterasjon.
fn work(i: Int):
out[i] = heavy(i)Send funksjonen som en parameter
Funksjonen plasseres i hakeparenteser som en kompileringstids-parameter, ikke som et vanlig argument i et funksjonskall. Mojo spesialiserer koden basert på den.
parallelize[work](n)Antallet bestemmes under kjøring
Tallet i parentesene angir hvor mange arbeidselementer som skal kjøres. Dette antallet er en vanlig verdi som bestemmes under kjøring.
parallelize[work](num_items)Be maskinen om antall kjerner
Bruk num_physical_cores fra sys-modulen for å finne ut hvor mange fysiske kjerner De har å fordele arbeidet på.
from sys import num_physical_coresBegrens antallet arbeidere
Et valgfritt andre argument angir hvor mange arbeidere som kjører samtidig. Det fungerer ofte best å tilpasse dette til antallet kjerner.
parallelize[work](n, num_physical_cores())Hvert kall er uavhengig
parallelize antar at arbeidselementene ikke avhenger av rekkefølgen. Hvert kall bør kunne stå på egne ben.
Best for tunge løkker
Parallellitet fungerer best når hvert element utfører reelt arbeid. For små løkker kan trådenes overhead koste mer enn den sparer.
Mål hastighetsøkningen
Ta tiden på løkken før og etter at De gjør den parallell. En ordentlig benchmark viser om de ekstra trådene faktisk hjalp.
Hurtigsjekk
De ønsker å kjøre en løkkekropp på tvers av flere CPU-kjerner i Mojo.
Oppsummering
De importerer parallelize, sender en funksjon per element som parameter i hakeparenteser og antallet i parenteser, og tilpasser deretter antallet arbeidere til kjernene for å oppnå en reell hastighetsøkning. 🚀
Lær deg Mojo med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 30
- Leksjoner
- 120
Ofte stilte spørsmål
Er leksjonen «parallelize-funksjonen» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Mojo Academy, inkludert «parallelize-funksjonen», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Mojo Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «parallelize-funksjonen»?
Kjør løkkeiterasjoner på tvers av tråder. Du øver på Mojo Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Mojo Academy?
Ingen tidligere erfaring er nødvendig. Mojo Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «parallelize-funksjonen»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Mojo Academy-leksjonen?
Ja. Alle Mojo Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- parallelize-funksjonen
- Dele arbeidet i deler
- Kombinere parallellisering og vektorisering
- Unngå datakappløp