Superposer copie et calcul
Masquez les transferts derrière les noyaux.
Superposer copie et calcul 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.
L’idée essentielle
Les vrais gains de vitesse viennent de l’exécution simultanée de deux tâches : copier un bloc de données pendant que le GPU calcule sur un autre. 🔀
Des moteurs matériels distincts
Un GPU possède des moteurs de copie et des unités de calcul distincts. Le chevauchement fonctionne parce qu’ils peuvent s’exécuter véritablement en parallèle, au lieu de simplement se relayer.
La mémoire épinglée est obligatoire
Les copies asynchrones nécessitent une mémoire hôte épinglée obtenue avec cudaMallocHost. Une mémoire pageable ordinaire allouée avec malloc impose une copie bloquante qui ne peut pas se chevaucher.
cudaMallocHost(&h_data, bytes);Copies asynchrones
Utilisez cudaMemcpyAsync avec un flux afin que le transfert rende immédiatement la main et rejoigne la file de ce flux, à côté des noyaux.
cudaMemcpyAsync(d_in, h_in, bytes, cudaMemcpyHostToDevice, s);Découper les tâches
Divisez le tableau en morceaux et attribuez à chacun son propre flux. Pendant que le flux 0 calcule, le flux 1 peut déjà effectuer une copie.
Copier, calculer, recopier
Chaque morceau effectue les mêmes trois étapes dans son flux : transférer l’entrée, exécuter le noyau, puis rapatrier la sortie, le tout sans bloquer l’hôte.
cudaMemcpyAsync(d, h, n, H2D, s);
k<<<g, b, 0, s>>>(d);
cudaMemcpyAsync(h, d, n, D2H, s);Comment se forme le chevauchement
Comme les morceaux résident dans des flux différents, le GPU peut copier le deuxième morceau tout en calculant encore sur le premier. La chronologie se remplit. 📊
Masquer le coût de PCIe
Les transferts n’augmentent plus la durée totale : ils se dissimulent derrière les calculs. Idéalement, votre temps d’exécution se réduit à peu près à la plus longue des durées entre la copie et le noyau.
Surveillez le flux par défaut
Un seul appel imprévu au flux par défaut au milieu de la boucle peut tout sérialiser à nouveau. Associez chaque opération asynchrone à un véritable flux qui n’est pas le flux par défaut.
Vérifier avec un profileur
Ouvrez Nsight Systems et recherchez des voies de copie et de calcul qui se chevauchent dans le temps. Des voies superposées et actives indiquent que votre parallélisme est bien réel.
Synchroniser à la fin
Après avoir lancé tous les morceaux, appelez une fois cudaDeviceSynchronize afin que chaque flux se termine avant que vous ne lisiez les résultats finaux sur l’hôte.
cudaDeviceSynchronize();Vérification rapide
De quoi un transfert asynchrone a-t-il besoin pour se chevaucher avec les calculs ?
Récapitulatif
En répartissant les tâches sur plusieurs flux avec de la mémoire épinglée et des copies asynchrones, vous masquez les transferts derrière les calculs et maintenez le GPU véritablement actif. 🚀
Apprends C++ avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 30
- Leçons
- 120
Questions Fréquemment Posées
La leçon « Superposer copie et calcul » est-elle gratuite ?
Oui — le texte complet de « Superposer copie et 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 CUDA Academy, passe à CoddyKit PRO. Le cours CUDA Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Superposer copie et calcul » ?
Masquez les transferts derrière les noyaux. 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 « Superposer copie et 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 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