Trouver les fuites avec memcheck
Accès hors limites et pointeurs d’appareil incorrects
Trouver les fuites avec memcheck 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.
Pourquoi memcheck existe
Les bogues de mémoire du GPU provoquent rarement un plantage visible ; compute-sanitizer, avec l'outil memcheck, surveille donc chaque accès et vous signale les problèmes. 🛡️
La commande moderne
Exécutez votre programme avec l'outil memcheck en le préfixant par compute-sanitizer, le remplaçant moderne de l'ancien cuda-memcheck.
compute-sanitizer --tool memcheck ./vecaddLectures hors limites
Le bogue classique détecté par memcheck est un accès hors limites, lorsqu'un thread lit ou écrit au-delà de la fin d'un tableau du périphérique.
Un contrôle de limites manquant
Oublier la protection laisse les threads supplémentaires s'exécuter sans contrôle ; cet indice peut donc dépasser n et provoquer une écriture globale invalide.
int i = blockIdx.x * blockDim.x + threadIdx.x;
out[i] = a[i] + b[i];Lire le rapport
memcheck affiche le type d'erreur, l'adresse fautive et le thread qui l'a provoquée, vous dirigeant directement vers le mauvais accès.
Obtenir les numéros de ligne
Compilez avec -lineinfo afin que memcheck puisse relier chaque erreur à la ligne exacte du code source plutôt qu'à une adresse brute.
nvcc -lineinfo vecadd.cu -o vecaddDétecter les fuites
Activez l'option --leak-check : memcheck signalera toute mémoire du périphérique que vous avez allouée mais jamais libérée avant la fin du programme.
compute-sanitizer --leak-check full ./vecaddUne fuite classique
Allouer un tampon sans libération correspondante provoque une fuite et, au fil de nombreuses itérations, épuise progressivement la mémoire du périphérique.
cudaMalloc(&d_a, bytes);
// ...used, but cudaFree(d_a) is missingPointeurs de périphérique invalides
memcheck signale également le passage d'un pointeur hôte là où le kernel attend un pointeur de périphérique, une erreur qui corrompt silencieusement les résultats.
Accès mal aligné
Certains chargements exigent des adresses alignées ; memcheck signale donc un accès mal aligné qui produirait autrement des données incohérentes ou une erreur.
Corrigez et relancez
Après chaque correction, relancez memcheck jusqu'à ce qu'il signale zéro erreur. Une exécution propre indique que les bogues de mémoire ont disparu.
Vérification rapide
Quel type de bogue l'outil memcheck est-il principalement conçu pour détecter ?
Récapitulatif
Vous avez exécuté memcheck, ajouté -lineinfo pour obtenir les lignes du code source, activé la vérification des fuites et appris ses types d'erreurs courants. Une exécution propre signifie que la mémoire est sûre. ✅
Questions Fréquemment Posées
La leçon « Trouver les fuites avec memcheck » est-elle gratuite ?
Oui — le texte complet de « Trouver les fuites avec memcheck » 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 « Trouver les fuites avec memcheck » ?
Accès hors limites et pointeurs d’appareil incorrects 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 « Trouver les fuites avec memcheck » ?
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
- Parcourir les noyaux pas à pas dans cuda-gdb
- Trouver les fuites avec memcheck
- Traquer les courses avec racecheck
- Détecter les erreurs de synchronisation avec synccheck