0Pricing
CUDA Academy · Leçon

Le pipeline à double tampon

Découpez les données pour alimenter continuellement le GPU.

Le pipeline à double tampon est une leçon CUDA 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 CUDA Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours CUDA Academy comprend 4 leçons au total.

Le problème du GPU inactif

Copiez un grand tableau, exécutez ensuite un noyau, puis recopiez les données. Pendant chaque copie, le GPU reste inactif, et pendant les calculs, les moteurs de transfert sont inactifs.

Divisez le travail

La solution commence par découper le grand tableau en plus petits blocs. Chaque bloc peut être copié et traité séparément, ce qui ouvre la voie au chevauchement.

Deux tampons, deux voies

Le double tampon utilise deux tampons sur le périphérique et deux flux. Pendant que le flux A calcule sur un bloc, le flux B copie le suivant.

Chevauchez copie et calcul

La magie vient de l’exécution concurrente : un transfert et un noyau s’exécutent en même temps sur des blocs différents. Le calcul utile masque la durée du transfert.

Mémoire épinglée requise

Cela ne fonctionne que si les données hôtes résident dans une mémoire épinglée. Les tampons paginables imposent des copies bloquantes et tout le pipeline redevient séquentiel.

La boucle du pipeline

Vous parcourez les blocs et, à chaque étape, vous lancez une copie asynchrone vers le périphérique, un noyau, puis une copie asynchrone en retour, le tout dans le même flux.

cudaMemcpyAsync(d_in, h_in + off, csz, H2D, s);
proc<<<g, b, 0, s>>>(d_in, d_out);
cudaMemcpyAsync(h_out + off, d_out, csz, D2H, s);

Alternez les flux

Attribuez chaque bloc à un flux en les alternant. Les blocs pairs vont dans le flux 0 et les blocs impairs dans le flux 1, afin que les blocs voisins se chevauchent correctement.

cudaStream_t s = streams[i % 2];

Pourquoi deux suffisent

Deux flux suffisent déjà à faire chevaucher copie et calcul. Ajouter des tampons augmente la profondeur, mais apporte des gains décroissants et consomme davantage de mémoire : commencez donc par deux.

Videz les files à la fin

Après avoir mis tous les blocs en file d’attente, attendez la fin de tout le travail avant de lire les résultats. Un simple cudaDeviceSynchronize vide tous les flux en une seule fois.

cudaDeviceSynchronize();

Le gain de vitesse

Lorsque la copie est masquée par le calcul, la durée totale tend vers le coût du plus long des deux, et non vers leur somme. C’est là le véritable gain. 🚀

Quand le gain est maximal

Le double tampon est particulièrement efficace lorsque la durée du transfert et celle du calcul sont à peu près équilibrées. Si l’une domine largement, concentrez d’abord vos efforts sur sa réduction.

Vérification rapide

Quel est l’avantage essentiel d’un pipeline à double tampon ?

Récapitulatif

Découpez les données, utilisez deux tampons et deux flux épinglés, puis faites chevaucher copie et calcul. Synchronisez à la fin et regardez le temps de transfert disparaître. 🎉

Questions Fréquemment Posées

La leçon « Le pipeline à double tampon » est-elle gratuite ?

Oui — le texte complet de « Le pipeline à double tampon » 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 pipeline à double tampon » ?

Découpez les données pour alimenter continuellement le GPU. 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 4 sur 4.

Combien de temps prend la leçon « Le pipeline à double tampon » ?

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. Pourquoi la mémoire paginable est lente
  2. Mémoire épinglée avec cudaMallocHost
  3. cudaMemcpyAsync dans un flux
  4. Le pipeline à double tampon
← Retour à CUDA Academy