Mojo Academy · Lektion

Reducer memory-trafikken

Hold data tæt på beregningen.

Lektion 3 af 413 trin

Reducer memory-trafikken 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.

Hvorfor hukommelsen betyder noget

Moderne CPU'er beregner langt hurtigere, end de kan hente data. Ofte venter en kernel på hukommelsen, ikke på selve matematikken.

Hvad er hukommelsestrafik?

Hukommelses-trafik er det samlede antal bytes, som din kernel læser og skriver. Mindre trafik pr. resultat betyder normalt en hurtigere kernel.

Berør data én gang

Det spilder båndbredde at læse den samme værdi mange gange. Indlæs den én gang, udfør alt arbejdet, og genbrug den fra et register.

var x = a[i]
var y = x * x + x

Sammenflet dine løkker

To separate løkker over det samme array læser det to gange. Ved at sammenflette dem i ét gennemløb læses hvert element kun én gang.

for i in range(n):
    out[i] = a[i] * 2 + a[i]

Behold værdier i registre

En værdi i et CPU-register kræver ingen adgang til hukommelsen. Genbrug mellemresultater i stedet for at skrive dem ud og ind igen.

Undgå midlertidige buffere

Ekstra midlertidige arrays tilføjer både skrivninger og læsninger. Spring dem over, når du kan, og beregn direkte i det endelige output.

Stream sekventielt

Når hukommelsen læses i rækkefølge, kan CPU'en forhåndshente data. Spring rundt, og så modarbejder du forhåndshentningen og standser løkken.

for i in range(n):
    total += a[i]

Cachelinjer følges ad

Hukommelsen ankommer i faste cachelinjer. Hvis du bruger hver byte i en hentet linje, får du allerede indlæste data gratis.

Beregn mere pr. byte

Aritmetisk intensitet er det arbejde, der udføres pr. indlæst byte. Når du øger den, giver hver hentet værdi mere beregning, før du går videre.

Skriv én gang, hvis du kan

Skrivninger koster også båndbredde. Akkumulér i en lokal variabel, og skriv det endelige resultat én gang i stedet for gentagne gange at opdatere hukommelsen.

var acc = Float32(0)
for i in range(n):
    acc += a[i]
out[0] = acc

Mindre trafik, mere hastighed

Når kernellen venter på data, er det den største gevinst at reducere læsninger og skrivninger, ofte større end smarte justeringer af aritmetikken.

Hurtigt tjek

Din kernel læser det samme array i to separate løkker. Hvilken ene ændring reducerer dens hukommelsestrafik mest?

Opsummering

Reducer hukommelses-trafikken ved at berøre data én gang, sammenflette løkker, genbruge registre, streame i rækkefølge og kun skrive resultater én gang. 💾

Gratis at komme i gang

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 “Reducer memory-trafikken” gratis?

Ja — alle 3 lektioner i læringssporet Mojo Academy, inklusive “Reducer memory-trafikken”, 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 “Reducer memory-trafikken”?

Hold data tæt på beregningen. 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 “Reducer memory-trafikken”?

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

  1. En compute-kernels anatomi
  2. Kombinér SIMD med løkker
  3. Reducer memory-trafikken
  4. Tiling for cache-lokalitet
← Tilbage til Mojo Academy