Skriv en GPU-kernelfunktion
Udtryk device-kode i Mojo.
Skriv en GPU-kernelfunktion 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.
Hvad en kerne er
En GPU-kerne er den funktion, som hver tråd kører. Du skriver arbejdet for ét element, og hardwaren gentager det på tværs af mange elementer.
Tænk på én tråd
Tricket er at skrive en kerne set fra én enkelt tråds perspektiv. Hver tråd udfører sin egen lille del af arbejdet.
En kerne er bare en fn
I Mojo er en kerne en almindelig fn. Dens strikse, typede natur er netop det, enhedskode skal bruge for at blive kompileret hurtigt.
fn add_kernel():
passOverførsel af buffere
En kerne tager pegere til enhedshukommelse som parametre. Disse buffere indeholder inputtene og det output, som den skal udfylde.
fn add_kernel(a: UnsafePointer[Float32], out: UnsafePointer[Float32]):
passSådan finder tråden sit indeks
Inde i kernen beregner hver tråd først sin egen position. Dette indeks vælger, hvilket element den skal behandle.
var i = block_idx.x * block_dim.x + thread_idx.xBeskyttelse af grænserne
Tjek altid indekset, før du tilgår hukommelsen. Et grænse-tjek forhindrer vildfarne tråde i at læse efter arrayets slutning.
if i < n:
out[i] = a[i] + b[i]Udførelse af elementets arbejde
Brødteksten er kort: læs input, beregn, og skriv ét resultat. Hele kernen kan ofte rummes på én enkelt linje matematik.
out[i] = a[i] * b[i]Start af kernen
Du starter den ved at vælge et gitter og en blokstørrelse. Starten spreder din kode for én tråd ud over hele gitteret.
ctx.enqueue_function[add_kernel](grid_dim=blocks, block_dim=256)Ingen returværdi
Kerner returnerer ikke resultater til den kaldende kode. De skriver til outputbufferen, som du læser tilbage bagefter.
Hold antallet af forgreninger nede
Tråde fungerer bedst i låsetakt. Kraftige forgreninger får lanes til at afvige og vente, så hold kernens logik enkel og ensartet.
Samme idé i enorm skala
Én kort kerne plus et stort gitter giver millioner af resultater. Skalaen kommer fra starten, ikke fra længere kode.
Hurtigt tjek
Du skriver brødteksten til en GPU-kerne for én tråd.
Opsummering
En kerne er en fn for én tråd: find dit indeks, beskyt grænserne, udfør beregningen for ét element, og start derefter over et gitter. ⚡
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 “Skriv en GPU-kernelfunktion” gratis?
Ja — alle 3 lektioner i læringssporet Mojo Academy, inklusive “Skriv en GPU-kernelfunktion”, 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 “Skriv en GPU-kernelfunktion”?
Udtryk device-kode i Mojo. 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 “Skriv en GPU-kernelfunktion”?
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
- Hvorfor GPU'er til AI-arbejdsbelastninger
- Tråde, blokke og grids
- Skriv en GPU-kernelfunktion
- Flyt data til og fra enheden