Finn lekkasjer med memcheck
Grenser som overskrides og ugyldige enhetspekere
Finn lekkasjer med memcheck er en gratis leksjon i CUDA Academy på CoddyKit. Dette er leksjon 2 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.
Hvorfor memcheck finnes
GPU-minnefeil fører sjelden til tydelige krasj, så compute-sanitizer med memcheck-verktøyet overvåker hver tilgang og rapporterer problemet for deg. 🛡️
Den moderne kommandoen
Kjør programmet under memcheck-verktøyet ved å sette compute-sanitizer foran det. Dette er den moderne erstatningen for det gamle cuda-memcheck.
compute-sanitizer --tool memcheck ./vecaddLesing utenfor grensene
Den klassiske feilen memcheck fanger opp, er en tilgang utenfor grensene, der en tråd leser eller skriver forbi slutten av en enhetsmatrise.
En manglende grensekontroll
Hvis du glemmer vakten, kan ekstra tråder løpe fritt, slik at denne indeksen kan gå forbi n og utløse en ugyldig global skriving.
int i = blockIdx.x * blockDim.x + threadIdx.x;
out[i] = a[i] + b[i];Les rapporten
memcheck skriver ut feiltypen, den aktuelle adressen og tråden som forårsaket feilen, slik at du finner den problematiske tilgangen direkte.
Få linjenumre
Kompiler med -lineinfo, slik at memcheck kan knytte hver feil til den nøyaktige kildekodelinjen i stedet for en rå adresse.
nvcc -lineinfo vecadd.cu -o vecaddOppdag minnelekkasjer
Aktiver alternativet --leak-check, så rapporterer memcheck alt enhetsminne du har allokert, men ikke frigitt før avslutning.
compute-sanitizer --leak-check full ./vecaddEn klassisk lekkasje
Hvis du allokerer uten en tilsvarende free, lekker bufferen, og etter mange iterasjoner tømmer dette gradvis enhetsminnet.
cudaMalloc(&d_a, bytes);
// ...used, but cudaFree(d_a) is missingUgyldige enhetspekere
memcheck markerer også at du sender en vertspeker når kernelen forventer en enhetspeker, en feil som stille kan ødelegge resultatene.
Feiljustert tilgang
Noen innlastinger krever justerte adresser, så memcheck advarer om en feiljustert tilgang som ellers kunne gitt søppeldata eller en feil.
Rett opp og kjør på nytt
Kjør memcheck på nytt etter hver retting, helt til det rapporterer null feil. En ren kjøring viser at minnefeilene er borte.
Hurtigsjekk
Hvilken type feil er memcheck-verktøyet først og fremst laget for å finne?
Oppsummering
Du kjørte memcheck, la til -lineinfo for kildekodelinjer, aktiverte lekkasjekontroll og lærte om de vanligste feiltypene. Rene kjøringer betyr trygt minne. ✅
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 «Finn lekkasjer med memcheck» gratis?
Ja – hele teksten i «Finn lekkasjer med memcheck» 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 «Finn lekkasjer med memcheck»?
Grenser som overskrides og ugyldige enhetspekere 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 2 av 4.
Hvor lang tid tar leksjonen «Finn lekkasjer med memcheck»?
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
- Stepping gjennom kjerner i cuda-gdb
- Finn lekkasjer med memcheck
- Finn kappløp med racecheck
- Oppdag synkroniseringsfeil med synccheck