Le piège du flux par défaut
Découvrez comment le flux 0 sérialise tout.
Le piège du flux par défaut 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.
What Is a Stream?
A stream is an ordered queue of GPU work. Operations in the same stream run one after another, in the order you issued them. ⏳
The Default Stream
If you never name a stream, every call lands in the default stream, also called stream 0. It is where all your work has secretly been running.
Why It Is a Trap
The default stream is synchronizing: it blocks until other streams finish, and they wait for it. Nothing overlaps, so your GPU sits idle between steps.
Everything Serializes
Issue a copy, a kernel, then another copy on stream 0 and they run strictly back to back. The GPU can never start step two before step one ends.
cudaMemcpy(d_a, h_a, n, cudaMemcpyHostToDevice);
kernel<<<grid, block>>>(d_a);
cudaMemcpy(h_a, d_a, n, cudaMemcpyDeviceToHost);Wasted Hardware
Modern GPUs have separate engines for compute and for copying. On the default stream those engines take turns instead of working together.
The Hidden Cost of Copies
Data transfers over PCIe are slow. When copies cannot overlap with compute, that transfer time is added directly onto your total runtime.
Implicit Synchronization
Many default-stream calls are blocking on the host too. cudaMemcpy returns only after the copy is done, stalling your CPU.
The Legacy Behavior
By default, work in any stream waits for stream 0, and stream 0 waits for them. This legacy rule quietly destroys concurrency you thought you had.
A Telltale Profile
In a profiler the default-stream trap shows up as a single busy lane with gaps, while copy and compute engines sit idle waiting for each other.
The Way Out
The fix is to issue independent work on separate streams. Then copies and kernels can run at the same time and fill those idle gaps.
Per-Thread Default Streams
Compiling with --default-stream per-thread gives each host thread its own default stream, easing the trap without rewriting every call.
nvcc --default-stream per-thread app.cu -o appQuick Check
Why does putting all work on the default stream hurt performance?
Recap
The default stream serializes your GPU work and blocks overlap. To go faster, you will move independent tasks onto their own streams next. 🚀
Questions Fréquemment Posées
La leçon « Le piège du flux par défaut » est-elle gratuite ?
Oui — le texte complet de « Le piège du flux par défaut » 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 « Le piège du flux par défaut » ?
Découvrez comment le flux 0 sérialise tout. 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 « Le piège du flux par défaut » ?
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
- Le piège du flux par défaut
- Créer et utiliser des flux
- Événements pour le chronométrage et la synchronisation
- Superposer copie et calcul