Share via


Débogage du code GPU

Vous pouvez déboguer le code C++ qui s'exécute sur les graphiques de l'unité (GPU).La prise en charge du débogage de GPU dans Visual Studio inclut la détection de course, l'activation des processus et l'attachement à eux, et à l'intégration dans les fenêtres de débogage.

Plateformes prises en charge

Le débogage en charge sur Windows 7, Windows 8, Windows Server 2008 R2, et Windows Server 2012.Pour déboguer sur l'émulateur de logiciels, Windows 8, ou Windows Server 2012 est requis.Pour déboguer sur le matériel, vous devez installer les pilotes de votre carte graphique.Tous les logiciels du matériel implémentent toutes les fonctionnalités du débogueur.Consultez la documentation de constructeur pour les limitations.

[!REMARQUE]

Les fabricants de matériel qui souhaitent prendre en charge le débogage de GPU dans Visual Studio doivent créer une DLL qui implémente l'interface de VSD3DDebug et cible leurs propres pilotes.

Configurer le débogage de GPU

Le débogueur ne peut pas arrêter dans le code de l'UC et le code de GPU dans la même opération d'application.Par défaut, le débogueur s'arrête dans le code de l'UC.Pour déboguer le code de GPU, utilisez l'une de ces deux étapes :

  • Dans la liste Déboguez le type dans la barre d'outils Standard, choisissez GPU uniquement.

  • Dans Explorateur de solutions, dans le menu contextuel du projet, choisissez Propriétés.Dans la boîte de dialogue Pages de propriétés, sélectionnez Débogage, puis sélectionnez GPU uniquement dans la liste Type de débogueur .

Activer et se lier aux applications

Vous pouvez utiliser les commandes de débogage de Visual Studio pour démarrer et arrêter le débogage de GPU.Pour plus d'informations, consultez Démarrer, interrompre, parcourir et arrêter le débogueur Visual Studio.Vous pouvez également attacher le débogueur de GPU à un processus en cours de exécution, mais uniquement si ce processus exécute le code de GPU.Pour plus d'informations, consultez Comment : attacher à un processus en cours d'exécution.

Exécutez la mosaïque actuelle du curseur et exécutés au curseur

Lorsque vous déboguez sur le GPU, vous avez deux possibilités pour exécuter à l'emplacement du curseur.Les commandes pour les deux options sont disponibles dans le menu contextuel de l'éditeur de code.

  1. L'ordre Exécuter jusqu'au curseur exécute votre application jusqu'à ce qu'il atteigne l'emplacement puis les instructions break du curseur.Cela n'implique pas que le thread s'exécute au curseur ; au contraire, cela signifie que le premier thread qui atteint le point de curseur déclenche l'arrêt.Pour plus d'informations, consultez [NIB] 12/13 Comment : exécuter jusqu'à l'emplacement du curseur.

  2. L'ordre Exécuter le tile actuel au curseur exécute votre application jusqu'à ce que tous les threads de la mosaïque active atteignent le curseur puis les instructions break.

Fenêtres de débogage

En utilisant certaines fenêtres de débogage, vous pouvez examiner, indicateur, et geler des threads de GPU.Pour plus d'informations, consultez :

Exceptions de synchronisation de données

Le débogueur peut identifier plusieurs rapports de synchronisation de données pendant l'exécution.Lorsqu'une condition est détectée, le débogueur entre dans l'état d'arrêt.Vous avez deux possibilitésArrêter ou Continuer.À l'aide de la boîte de dialogue Exceptions, vous pouvez configurer si le débogueur détecte ces conditions et également les conditions qu'elle s'arrête pour.Pour plus d'informations, consultez Gestion des exceptions (débogage).Vous pouvez également utiliser la boîte de dialogue Options pour spécifier que le débogueur doit ignorer des exceptions si les données qui sont écrites ne modifiez pas la valeur des données.Pour plus d'informations, consultez Général, Débogage, boîte de dialogue Options.

Dépannage

Hh873126.collapse_all(fr-fr,VS.110).gifSpécifier un accélérateur

Les points d'arrêt dans le code de GPU sont atteints uniquement si le code s'exécute sur l'accélérateur d' accelerator::direct3d_ref (CURSOR).Si vous ne spécifiez pas un accélérateur dans votre code, l'accélérateur de CURSOR est automatiquement sélectionné comme Type d'accélérateur de débogage dans les propriétés du projet.Si votre code sélectionne explicitement un accélérateur, l'accélérateur de CURSOR n'est pas utilisé pendant le débogage et les points d'arrêt ne sont pas atteints à moins que votre matériel de GPU a la prise en charge du débogage.Vous pouvez remédier à cela en écrivant votre code afin qu'il utilise l'accélérateur de CURSOR pendant le débogage.Pour plus d'informations, consultez les propriétés du projet et l' Utilisation des objets accelerator et accelerator_view et le Paramètres de projet pour une configuration Debug C++.

Hh873126.collapse_all(fr-fr,VS.110).gifPoints d'arrêt conditionnels

Les points d'arrêt conditionnels dans le code de GPU en charge, mais chaque expression peut être évaluée sur le périphérique.Lorsqu'une expression ne peut pas être évaluée sur le périphérique, elle est évaluée dans le débogueur.Le débogueur risque de s'exécuter plus lentement que le périphérique.

Hh873126.collapse_all(fr-fr,VS.110).gifErreur : Il y a un problème de configuration avec le type sélectionné d'accélérateur de débogage. 

Cette erreur se produit lors d'une incohérence entre les paramètres du projet et la configuration de PC que vous déboguez sur.Pour plus d'informations, consultez Paramètres de projet pour une configuration Debug C++.

Hh873126.collapse_all(fr-fr,VS.110).gifErreur : Le pilote de débogage pour le type sélectionné d'accélérateur de débogage n'est pas installé sur l'ordinateur cible.

Cette erreur se produit si vous déboguez sur un ordinateur distant.Le débogueur ne peut pas déterminer qu'au moment de l'exécution si les pilotes installés sur l'ordinateur distant.Les pilotes sont disponibles dans le constructeur de la carte graphique.

Hh873126.collapse_all(fr-fr,VS.110).gifErreur : La détection de délai d'attente et le redémarrage (TDR) doivent être désactivées au site distant.

Il est possible que les calculs C++ ampère dépassent l'intervalle de temps par défaut défini par la détection du délai d'attente windows et le processus de récupération (TDR).Lorsque cela se produit, le calcul est annulé et les données sont perdues.Pour plus d'informations, consultez Gestion TDRs dans C++ ampère.

Voir aussi

Tâches

Procédure pas-à-pas : débogage d'une application C++ AMP

Référence

Paramètres de projet pour une configuration Debug C++

Autres ressources

Commencez le débogage de GPU dans Visual Studio