La formule d’index classique
blockIdx.x * blockDim.x + threadIdx.x.
La formule d’index classique est une leçon CUDA 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 CUDA Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours CUDA Academy comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
One Thread, One Element
The whole point of a CUDA kernel is that every thread handles one piece of data. To do that, each thread needs a unique global index.
Why Local IDs Are Not Enough
Inside a block, threadIdx.x only counts 0 up to blockDim minus one. Many blocks reuse those same small numbers, so it cannot be your final index.
Blocks Sit Side by Side
Picture the grid as blocks laid end to end. Each block owns a contiguous slice of the array, and blockIdx.x tells you which slice you are in.
How Wide Is a Block?
blockDim.x is the number of threads per block. It is the width of each slice, so it scales your block offset to the right spot.
The Classic Formula
Combine the three: skip past earlier blocks, then add your position inside this block. That single line gives every thread a unique index.
int i = blockIdx.x * blockDim.x + threadIdx.x;Walking Through It
With 4 threads per block, block 0 covers 0 to 3, block 1 covers 4 to 7, block 2 covers 8 to 11. The offsets never overlap.
A Concrete Example
Thread 2 in block 3 with blockDim 256 lands at 3 times 256 plus 2, which is 770. That is its global position in the data.
// blockIdx.x=3, blockDim.x=256, threadIdx.x=2
int i = 3 * 256 + 2; // i == 770Using the Index
Once you have i, you treat it as an array subscript. Each thread reads and writes only its own element, with no overlap.
out[i] = a[i] + b[i];It Maps One to One
Launch n threads and the formula produces every value from 0 to n minus 1 exactly once. That is a perfect one-to-one cover of the array.
The Order Matters
Always multiply before you add. blockIdx.x * blockDim.x is the start of your slice, and threadIdx.x is the step inside it.
Beyond One Dimension
The same idea extends to 2D and 3D using the .y and .z members, but for flat arrays the .x formula is all you need. 🚀
Quick Check
Compute one thread's global index.
Recap
You learned the formula every kernel uses: blockIdx.x * blockDim.x + threadIdx.x. It hands each thread one unique slot in your array. 🎉
Questions Fréquemment Posées
La leçon « La formule d’index classique » est-elle gratuite ?
Oui — le texte complet de « La formule d’index classique » 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 CUDA Academy, passe à CoddyKit PRO. Le cours CUDA Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « La formule d’index classique » ?
blockIdx.x * blockDim.x + threadIdx.x. Tu pratiques CUDA 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 CUDA Academy ?
Aucune expérience préalable n'est requise. CUDA 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 « La formule d’index classique » ?
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 CUDA Academy ?
Oui. Chaque leçon CUDA 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
- La formule d’index classique
- Se protéger contre les dépassements de plage
- Arrondir le nombre de blocs vers le haut
- Boucles avec pas de grille