0Pricing
Mojo Academy · Lektion

Tiling für Cache-Lokalität

Teilen Sie die Arbeit so auf, dass sie in den Cache passt.

Tiling für Cache-Lokalität ist eine kostenlose Mojo Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Mojo Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Mojo Academy-Kurs umfasst insgesamt 4 Lektionen.

Das Cache-Konzept

Die CPU hält kürzlich verwendete Daten in einem kleinen, schnellen Cache. Treffer sind schnell; bei Fehlschlägen ist ein langsamer Zugriff auf den Hauptspeicher erforderlich.

Was ist Lokalität?

Cache-Lokalität bedeutet, Daten wiederzuverwenden, die sich bereits in der Nähe im Cache befinden, bevor sie verdrängt werden, um Platz zu schaffen.

Große Datenmengen verdrängen den Cache

Wenn Ihr Kernel ein riesiges Array durchläuft, werden frühe Elemente verdrängt, bevor Sie sie wiederverwenden können. Das führt zu wiederholten Cache-Fehlzugriffen.

Teilen Sie die Arbeit in Kacheln auf

Tiling teilt eine große Schleife in kleine Blöcke auf, die in den Cache passen, sodass die Daten jedes Blocks während der Verarbeitung im Cache bleiben.

alias tile = 64

Eine äußere und eine innere Schleife

Tiling macht aus einer Schleife zwei: eine äußere Schleife über Blöcke und eine innere Schleife über die Elemente in jedem Block.

for t in range(0, n, tile):
    for i in range(t, min(t + tile, n)):
        out[i] = a[i] * 2

Ein Block nach dem anderen

Jeder Block ist klein genug, um im Cache zu bleiben. Sie erledigen seine gesamte Arbeit, bevor Sie fortfahren, sodass die Wiederverwendung kostengünstig bleibt.

Ideal für Matrizen

Bei der Matrizenmultiplikation werden Zeilen und Spalten intensiv wiederverwendet. Blocking einer matmul in Kacheln hält wiederverwendete Daten im Cache und reduziert Cache-Fehlzugriffe.

Die Kachelgröße auswählen

Die beste Kachel füllt den Cache, ohne ihn zu überlaufen. Eine zu kleine Kachel nutzt die Wiederverwendung nicht effizient, eine zu große führt zum Auslagern – deshalb müssen Sie die Größe abstimmen.

Erst tilen, dann vektorisieren

Tiling und SIMD ergänzen sich gut. Vektorisieren Sie die innere Schleife jedes Blocks, um gleichzeitig Cache-Lokalität und Vektorgeschwindigkeit zu erhalten.

for t in range(0, n, tile):
    vectorize[body, width](min(tile, n - t))

Die Ränder beachten

Der letzte Block ist möglicherweise kleiner als eine vollständige Kachel. Begrenzen Sie seinen Bereich mit min, damit Sie nie über den Puffer hinauslesen.

var end = min(t + tile, n)

Den Gewinn messen

Tiling kann je nach Größen sehr viel oder nur wenig bringen. Führen Sie mit Ihren echten Daten immer einen Benchmark für einige Kachelgrößen aus, um die passende Größe zu wählen.

Schnelltest

Ihr Kernel verfehlt den Cache ständig, weil er ein riesiges Array von Anfang bis Ende durchläuft. Welche Technik hilft?

Zusammenfassung

Tiling teilt eine große Schleife auf, sodass jeder Abschnitt in den Cache passt. Stimmen Sie die Kachelgröße ab, vektorisieren Sie die innere Schleife und begrenzen Sie die Ränder. 🧱

Häufig gestellte Fragen

Ist die Lektion „Tiling für Cache-Lokalität“ kostenlos?

Ja — der vollständige Text von „Tiling für Cache-Lokalität“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Mojo Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Mojo Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Tiling für Cache-Lokalität“?

Teilen Sie die Arbeit so auf, dass sie in den Cache passt. Du übst Mojo Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Mojo Academy zu starten?

Keine Vorkenntnisse erforderlich. Mojo Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Tiling für Cache-Lokalität“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Mojo Academy-Lektion Code schreiben und ausführen?

Ja. Jede Mojo Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Anatomie eines Compute-Kernels
  2. SIMD mit Schleifen kombinieren
  3. Speicherverkehr reduzieren
  4. Tiling für Cache-Lokalität
← Zurück zu Mojo Academy