Partitionner pour la localité du cache
Regroupez le travail pour l’adapter au cache.
Partitionner pour la localité du cache est une leçon Mojo Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Mojo Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Mojo Academy comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
The Cache Idea
The CPU keeps recently used data in a small, fast cache. Hits are quick; misses force a slow trip to main memory.
What Is Locality?
Cache locality means reusing data that is already nearby in the cache before it gets evicted to make room.
Big Data Spills the Cache
If your kernel sweeps a huge array, early elements are evicted before you reuse them, causing repeated cache misses.
Tile the Work
Tiling splits a big loop into small blocks that fit in cache, so each block's data stays hot while you use it.
alias tile = 64An Outer and Inner Loop
Tiling turns one loop into two: an outer loop over blocks and an inner loop over the elements inside each block.
for t in range(0, n, tile):
for i in range(t, min(t + tile, n)):
out[i] = a[i] * 2One Block at a Time
Each block is small enough to live in cache. You finish all its work before moving on, so reuse stays cheap.
Great for Matrices
Matrix multiply reuses rows and columns heavily. Blocking a matmul into tiles keeps reused data in cache and cuts misses.
Pick the Tile Size
The best tile fills the cache without overflowing it. Too small wastes reuse; too large spills, so you tune the size.
Tile Then Vectorize
Tiling and SIMD stack well. Vectorize the inner loop of each block to get cache locality and vector speed together.
for t in range(0, n, tile):
vectorize[body, width](min(tile, n - t))Mind the Edges
The last block may be smaller than a full tile. Clamp its range with min so you never read past the buffer.
var end = min(t + tile, n)Measure the Gain
Tiling can help a lot or a little depending on sizes. Always benchmark a few tile values on your real data to choose.
Quick Check
Your kernel keeps missing cache because it sweeps a huge array end to end. What technique helps?
Recap
Tiling blocks a big loop so each chunk fits in cache; tune the tile size, vectorize the inner loop, and clamp the edges. 🧱
Questions Fréquemment Posées
La leçon « Partitionner pour la localité du cache » est-elle gratuite ?
Oui — le texte complet de « Partitionner pour la localité du cache » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Mojo Academy, passe à CoddyKit PRO. Le cours Mojo Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Partitionner pour la localité du cache » ?
Regroupez le travail pour l’adapter au cache. Tu pratiques Mojo Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Mojo Academy ?
Aucune expérience préalable n'est requise. Mojo Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Partitionner pour la localité du cache » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Mojo Academy ?
Oui. Chaque leçon Mojo Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Anatomie d’un noyau de calcul
- Combiner SIMD et boucles
- Réduire le trafic mémoire
- Partitionner pour la localité du cache