Anatomie d’un noyau de calcul
La boucle interne critique qui effectue le travail.
Anatomie d’un noyau de calcul est une leçon Mojo Academy gratuite sur CoddyKit. Ceci est la leçon 1 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.
What Is a Kernel?
A compute kernel is the small, focused routine that does the real numerical work, like adding two arrays element by element.
The Hot Inner Loop
Most of a kernel's time lives in one tight inner loop. Speed up that loop and you speed up the whole program.
for i in range(n):
out[i] = a[i] + b[i]Inputs and Outputs
A clean kernel takes its data buffers as parameters, so the same routine can run on any arrays you pass in.
fn add(a: UnsafePointer[Float32], b: UnsafePointer[Float32], out: UnsafePointer[Float32], n: Int):
passUse fn for Strictness
Kernels are written with fn, not def. The strict, typed style lets Mojo compile tight machine code with no surprises.
fn kernel(n: Int):
passKeep the Body Small
The fastest kernels do one thing. A short, predictable inner body is easy for the compiler to optimize aggressively.
No Surprises Inside
Avoid heavy work like allocation or I/O in the hot loop. Each iteration should be cheap and uniform for peak throughput.
Count the Work
Think in terms of total operations. A kernel over n elements does roughly n units of work, so n drives the cost.
Memory Is the Limit
Many kernels are not compute-bound but memory-bound. They wait on data, so how you move bytes often matters most.
Plan to Vectorize
Design the loop so each step can later process many elements with SIMD. A regular access pattern makes vectorizing easy.
A Tiny Saxpy Kernel
A classic kernel is saxpy: out = scale times a plus b. It is small, regular, and a great baseline to optimize.
for i in range(n):
out[i] = scale * a[i] + b[i]Measure Before You Tune
Start with the simple correct version and time it. That number is your baseline for every optimization that follows.
Quick Check
You are about to optimize a kernel. Where does almost all of its time go?
Recap
A kernel is a small fn whose tight inner loop does the work; keep it uniform, mind memory, and measure a baseline first. 🔧
Questions Fréquemment Posées
La leçon « Anatomie d’un noyau de calcul » est-elle gratuite ?
Oui — le texte complet de « Anatomie d’un noyau de calcul » 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 « Anatomie d’un noyau de calcul » ?
La boucle interne critique qui effectue le travail. 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 1 sur 4.
Combien de temps prend la leçon « Anatomie d’un noyau de calcul » ?
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