CUDA Academy · Lektion

Problemet med dataåteranvändning

Varför naiva kernels läser om globalt minne.

Lektion 1 av 413 steg

Problemet med dataåteranvändning är en gratis lektion i CUDA Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för CUDA Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i CUDA Academy innehåller totalt 4 lektioner.

Den dolda kostnaden

En kernel kan vara korrekt men ändå långsam eftersom den om och om igen hämtar samma data från långsamt globalt minne. 🐢

Minnet är flaskhalsen

På GPU:n är aritmetik billig, men åtkomst till globalt minne är dyr. Många kernlar väntar betydligt mer på minnet än de beräknar.

Vad dataåteranvändning innebär

Dataåteranvändning innebär att ett värde som har lästs från globalt minne används i många beräkningar i stället för att läsas igen varje gång.

En naiv stencil

Föreställ dig att du suddar en bild. Varje utdatapixel beräknas som medelvärdet av sina grannar, så varje indatapixel läses av flera olika trådar.

out[i] = (in[i-1] + in[i] + in[i+1]) / 3.0f;

Räkna läsningarna

I den suddningen läses värdet in[i] av trådarna i-1, i och i+1. Samma byte färdas tre gånger över den långsamma PCIe-bussen.

Överflödiga läsningar samlas

Med ett bredare fönster eller ett 2D-rutnät kan varje element läsas om dussintals gånger. Denna överflödiga datatrafik dominerar körtiden.

Bandbredden är begränsad

Globalt minne har en fast maximal bandbredd. Att läsa samma data upprepade gånger slösar den bandbredden på byte du redan har.

Beräkningsenheterna står stilla

Medan warps väntar på upprepade läsningar från globalt minne står beräkningsenheterna stilla. Du har betalat för kärnor som knappt används. 😴

Aritmetisk intensitet

Aritmetisk intensitet är förhållandet mellan matematiska operationer och flyttade byte. Låg intensitet innebär att minnet, inte beräkningarna, begränsar dig.

Målet: läs en gång

Lösningen är att läsa in varje värde som behövs en gång i snabbt minne på chippet och sedan låta många trådar återanvända det därifrån.

Nu kommer delat minne

Det snabba minnet på chippet är delat minne. Att mellanlagra data där är grunden för alla kommande optimeringar med tiles.

Snabb kontroll

Varför är en naiv stencil-kernel ofta långsam?

Sammanfattning

Naiva kernlar läser om delade data från globalt minne, vilket slösar bandbredd och får beräkningsenheterna att vänta. Tiling finns för att läsa in data en gång och återanvända den. ✅

Gratis att börja

Lär dig C++ med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”Problemet med dataåteranvändning” gratis?

Ja – hela texten till ”Problemet med dataåteranvändning” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i CUDA Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i CUDA Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Problemet med dataåteranvändning”?

Varför naiva kernels läser om globalt minne. Ni övar på CUDA Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig CUDA Academy?

Du behöver inga förkunskaper. Utbildningen i CUDA Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Problemet med dataåteranvändning”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här CUDA Academy-lektionen?

Ja. Varje CUDA Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Problemet med dataåteranvändning
  2. Mönstret läs–synkronisera–beräkna
  3. Stencil och glidande fönster
  4. Hantera kantblock
← Tillbaka till CUDA Academy