Mojo Academy · leksjon

parallelize-funksjonen

Kjør løkkeiterasjoner på tvers av tråder.

Leksjon 1 av 413 trinn

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 parallelize

Arbeidsfunksjonen

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_cores

Begrens 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. 🚀

Gratis å komme i gang

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

  1. parallelize-funksjonen
  2. Dele arbeidet i deler
  3. Kombinere parallellisering og vektorisering
  4. Unngå datakappløp
← Tilbake til Mojo Academy