0Pricing
CUDA Academy · Leçon

Dérouler les boucles avec #pragma unroll

Réduisez le coût des boucles et exposez l’ILP.

Dérouler les boucles avec #pragma unroll est une leçon CUDA Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.

Loops Have Hidden Costs

Every loop iteration spends work on the counter, the comparison, and the branch. This bookkeeping is called loop overhead, and it adds up in hot inner loops.

What Unrolling Does

Loop unrolling copies the body several times per iteration so the loop runs fewer times. You do the same work with less counting and branching.

for (int i = 0; i < n; i += 2) {
    out[i]     = in[i]     * 2;
    out[i + 1] = in[i + 1] * 2;
}

Let the Compiler Do It

CUDA gives you a hint so you do not hand-copy code. Place #pragma unroll right before a loop and the compiler unrolls it for you.

#pragma unroll
for (int i = 0; i < 4; i++)
    sum += a[i];

Pick a Specific Factor

You can ask for an exact amount by writing a number after the pragma. #pragma unroll 4 unrolls the loop four iterations at a time.

#pragma unroll 4
for (int i = 0; i < n; i++)
    acc += w[i] * x[i];

Turning Unrolling Off

Sometimes full unrolling bloats code or burns registers. Writing #pragma unroll 1 tells the compiler to leave the loop rolled exactly as written.

#pragma unroll 1
for (int i = 0; i < n; i++)
    process(i);

Constant Trip Counts Help

Unrolling works best when the iteration count is known at compile time. A fixed trip count lets the compiler fully unfold the loop into straight-line code.

Unrolling Exposes ILP

The copied iterations often have no dependency between them. That gives the scheduler more independent instructions to overlap, hiding latency for free.

Fewer Branches, Faster Path

With the loop unrolled, the hardware checks the exit condition less often. Fewer branches means a smoother, more predictable instruction stream.

The Register Tradeoff

More live values per iteration means more register usage. Aggressive unrolling can spill registers and actually lower occupancy, so it is not always a win.

Code Size Grows Too

Each unrolled copy enlarges the kernel. Bigger code can pressure the instruction cache, so unrolling huge loops fully may backfire on real hardware.

Measure Before You Trust It

Unrolling is a suggestion, not magic. Always let the profiler confirm a chosen factor really runs faster on your kernel and your GPU.

Quick Check

You want the compiler to fully unroll a small fixed loop. What do you write?

Recap: Trade Counting for Speed

You learned that #pragma unroll cuts loop overhead and exposes ILP, but watches its cost in registers and code size. Measure each factor to be sure. 🧩

Questions Fréquemment Posées

La leçon « Dérouler les boucles avec #pragma unroll » est-elle gratuite ?

Oui — le texte complet de « Dérouler les boucles avec #pragma unroll » 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 « Dérouler les boucles avec #pragma unroll » ?

Réduisez le coût des boucles et exposez l’ILP. 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 2 sur 4.

Combien de temps prend la leçon « Dérouler les boucles avec #pragma unroll » ?

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

  1. Parallélisme au niveau des instructions
  2. Dérouler les boucles avec #pragma unroll
  3. Chargements vectorisés avec float4
  4. Pression sur les registres et déversements
← Retour à CUDA Academy