cudaMalloc og cudaFree
Reserver og frigjør globalt minne
cudaMalloc og cudaFree er en gratis leksjon i CUDA Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i CUDA Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i CUDA Academy inneholder totalt 4 leksjoner.
GPU-en har sitt eget RAM
GPU-en låner ikke datamaskinens hovedminne. Den har en separat minnepool kalt globalt minne som kjerner leser fra og skriver til. 🧠
De må be om det
Før en kernel kan bruke enhetsminne, må De selv reservere en del av det. Funksjonen som reserverer minnet, er cudaMalloc.
Signaturen til cudaMalloc
cudaMalloc tar adressen til en peker og et antall byte. Den fyller pekeren med en ny enhetsadresse.
float* d_data;
cudaMalloc(&d_data, n * sizeof(float));Hvorfor en peker til en peker
De sender &d_data, slik at cudaMalloc kan skrive den nye adressen tilbake til variabelen. Returverdien er reservert for en feilkode.
Tell alltid i byte
cudaMalloc tenker i rå byte, ikke elementer. Multipliser antallet elementer med sizeof(type), slik at bufferen får riktig størrelse.
cudaMalloc(&d_arr, count * sizeof(int));Gi det tilbake med cudaFree
Når De er ferdig med en buffer, gir De den tilbake til GPU-en med cudaFree. Dette frigjør det globale minnet for annet arbeid.
cudaFree(d_data);Par, som lås og nøkkel
Se på cudaMalloc og cudaFree som et par. Hver allokering De gjør, skal ha nøyaktig én tilsvarende frigjøring.
Minnet er uinitialisert
Nytt minne fra cudaMalloc inneholder søppelverdier. Hvis De leser det før De skriver eller kopierer data, får De uforutsigbare resultater.
Allokering kan mislykkes
Hvis GPU-en går tom for minne, returnerer cudaMalloc en feil i stedet for å krasje. Sjekk alltid denne returverdien i ekte kode.
Globalt minne er stort, men tregt
Buffere fra cudaMalloc ligger i globalt minne: gigabyte med plass, men samtidig det tregeste nivået på brikken. Bruk det rikelig, men tenk på tilgangsmønstrene.
Rytmen i alle programmer
Nesten alle CUDA-programmer følger samme rytme: cudaMalloc, kopier data inn, start en kernel, kopier resultatene ut, og kall deretter cudaFree.
Hurtigsjekk
La oss bekrefte hvordan cudaMalloc mottar målpekeren sin.
Oppsummering
De har lært å reservere GPU-minne med cudaMalloc, målt i byte, og å frigjøre det med cudaFree i par. 🎉
Lær deg C++ 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 «cudaMalloc og cudaFree» gratis?
Ja – hele teksten i «cudaMalloc og cudaFree» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av CUDA Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i CUDA Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «cudaMalloc og cudaFree»?
Reserver og frigjør globalt minne Du øver på CUDA 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 CUDA Academy?
Ingen tidligere erfaring er nødvendig. CUDA 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 «cudaMalloc og cudaFree»?
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 CUDA Academy-leksjonen?
Ja. Alle CUDA 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
- cudaMalloc og cudaFree
- Pekere til GPU-minne
- cudaMemset for initialisering
- Unngå minnelekkasjer og dobbel frigjøring