Utilisation du GPU

Remarque

Visual Studio Graphics Diagnostics n’est pas pris en charge sur ARM64 Visual Studio.

Utilisez l’outil Utilisation du GPU dans le Profileur de performances pour mieux comprendre l’utilisation du matériel de pointe par votre application Direct3D. Il vous aide à déterminer si les performances de votre application sont liées à l’UC ou au GPU, et à mieux comprendre comment tirer plus efficacement parti du matériel de la plateforme. L’outil Utilisation du GPU prend en charge les applications qui utilisent Direct3D 12, Direct3D 11 et Direct3D 10. Il ne prend pas en charge d’autres API graphiques, telles que Direct2D ou OpenGL.

Voici à quoi ressemble la fenêtre Rapport d’utilisation du GPU :

Screenshot of GPU Usage Report, with CPU and GPU timelines

Configuration requise

Voici les conditions requises pour utiliser l’outil Utilisation du GPU, en plus de celles de Graphics Diagnostics :

  • GPU et pilote qui prennent en charge l'instrumentation de minutage nécessaire.

    Notes

    Pour plus d’informations sur le matériel et les pilotes pris en charge, consultez Prise en charge du matériel et des pilotes à la fin de ce document.

Pour plus d’informations sur les conditions requises par Graphics Diagnostics, consultez Bien démarrer.

Utiliser l’outil Utilisation du GPU

Lorsque vous exécutez votre application sous l’outil Utilisation du GPU, Visual Studio crée une session de diagnostic. Cette session présente des graphiques d’informations générales sur les performances de rendu et l’utilisation du GPU de votre application en temps réel.

Pour démarrer l'outil Utilisation du GPU :

  1. Dans le menu principal, choisissez Déboguer>Performances et diagnostics (ou, sur le clavier, appuyez sur Alt+F2).

  2. Dans le hub Performances et diagnostics, cochez la case en regard de l’option Utilisation du GPU. Vous pouvez éventuellement cocher les cases en regard des autres outils qui vous intéressent. Vous pouvez exécuter simultanément plusieurs outils de performance et diagnostic pour obtenir une image plus complète des performances de votre application.

    Screenshot of the Performance Profiler, with GPU Usage selected

    Note

    Tous les outils de performance et diagnostic peuvent être utilisés en même temps.

  3. Dans la partie inférieure du hub Performances et diagnostics, sélectionnez Démarrer pour exécuter votre application à l’aide des outils sélectionnés.

Les informations générales qui s’affichent en temps réel incluent la chronologie des images, la fréquence d’images et l’utilisation du GPU. Chacune de ces informations est représentée de façon indépendante sous forme de graphique, mais selon une échelle de temps commune, ce qui vous permet de comprendre facilement les relations.

Les graphiques Durée de l’image (ms) et Images par seconde (IPS) contiennent deux lignes rouges horizontales chacun qui représentent les performances cibles de 60 et de 30 images par seconde. Dans le graphique Durée de frame, votre application dépasse les performances cibles quand la courbe est en dessous de la ligne, et n’atteint pas la cible quand la courbe est au-dessus de la ligne. Pour le graphique Images par seconde, c’est le contraire : votre application dépasse les performances cibles quand la courbe est au-dessus de la ligne, et n’atteint pas la cible quand la courbe est en dessous de la ligne. Vous utilisez principalement ces graphiques pour avoir une idée générale des performances de votre application et pour identifier les ralentissements que vous souhaiterez peut-être examiner. Par exemple, un examen plus approfondi peut être justifié si vous constatez une baisse soudaine de la fréquence d’images ou un pic d’utilisation du GPU.

Pendant que votre application s’exécute dans l’outil Utilisation du GPU, la session de diagnostic collecte également des informations détaillées sur les événements graphiques exécutés sur le GPU. Vous utilisez ces informations pour générer un rapport plus précis de la manière dont votre application utilise le matériel. Dans la mesure où ce rapport prend un certain temps pour générer les résultats à partir des informations collectées, il est disponible uniquement à la fin de la collecte d’informations de la session de diagnostic.

Quand vous souhaitez examiner plus attentivement un problème de performances ou d’utilisation, arrêtez de collecter les informations de performances pour que le rapport puisse être généré.

Pour générer et afficher le rapport d’utilisation du GPU :

  1. Dans la partie inférieure de la fenêtre de session de diagnostic, choisissez le lien Arrêter la collecte ou cliquez sur Arrêter dans le coin supérieur gauche.

    Screenshot of a diagnostics session window in the GPU Usage tool, showing Frames per second, GPU utilization, the Stop button, and the Stop collection link.

  2. Dans la partie supérieure du rapport, sélectionnez une section dans l'un des graphiques qui illustre le problème à examiner. Votre sélection peut prendre jusqu’à 3 secondes. Les sections plus longues sont tronquées vers le début.

    Screenshot of a diagnostics session window in the GPU Usage tool with part of the diagnostic session timeline selected.

  3. Dans la partie inférieure du rapport, dans le message ... cliquez ici pour afficher les détails de l’utilisation du GPU pour cette plage, sélectionnez Afficher les détails afin d’afficher une chronologie détaillée de votre sélection.

    Screenshot of the diagnostics session window, with range selected

Cette sélection ouvre un nouveau document avec onglets qui contient le rapport. Le rapport Utilisation du GPU vous aide à identifier le moment où un événement graphique démarre sur l’UC et le moment où il atteint le GPU, ainsi que sa durée d’exécution par le GPU. Ces informations peuvent vous aider à identifier les goulots d’étranglement et les opportunités d’augmentation du parallélisme dans votre code.

Exporter vers GPUView ou Windows Performance Analyzer

À compter de Visual Studio 2017, vous pouvez ouvrir ces données avec GPUView et Windows Performance Analyzer. Sélectionnez simplement les liens Ouvrir dans GpuView ou Ouvrir dans WPA situés dans le coin inférieur droit de la session de diagnostic.

Screenshot of the diagnostics session window, with links highlighted

Utiliser le rapport Utilisation du GPU

La partie supérieure du rapport Utilisation du GPU montre les chronologies de l’activité de traitement de l’UC, de l’activité de rendu du GPU et de l’activité de copie du GPU. Ces chronologies sont séparées par des barres verticales gris clair qui indiquent la synchronisation verticale (vsync) de l’affichage. La fréquence des barres correspond à la fréquence de rafraîchissement de l’un des affichages (sélectionné dans la liste déroulante Affichage) à partir duquel les données d’utilisation du GPU ont été collectées.

Dans la mesure où l’affichage peut avoir une fréquence de rafraîchissement plus élevée que les performances cibles de votre application, il est possible qu’il n’existe pas de relation 1 à 1 entre le VSync et la fréquence d’images que votre application doit atteindre. Pour atteindre ses performances cibles, une application doit effectuer tous les traitements, effectuer le rendu et faire un appel Present() à la fréquence d’images ciblée. L’image rendue ne s’affiche cependant pas avant la vsync suivant Present().

La partie inférieure du rapport Utilisation du GPU affiche une liste des événements graphiques qui se sont produits pendant l’exécution du rapport. Quand vous sélectionnez un événement, un marqueur apparaît pour les événements correspondants dans les chronologies concernées. En règle générale, un événement sur un thread d’UC montre l’appel de l’API, tandis qu’un autre événement sur une des chronologies du GPU apparaît quand le GPU a terminé la tâche. De même, quand vous sélectionnez un événement dans une chronologie, le rapport met en évidence l’événement graphique correspondant dans la partie inférieure du rapport.

Quand vous effectuez un zoom arrière des chronologies dans la partie supérieure du rapport, seuls les événements les plus longs sont visibles. Pour afficher les événements qui ont une durée plus courte, effectuez un zoom avant des chronologies en appuyant sur la touche Ctrl et en utilisant la roulette de votre dispositif de pointage, ou via le contrôle de mise à l’échelle situé dans le coin inférieur gauche du panneau supérieur. Vous pouvez également faire glisser le contenu du panneau de chronologie pour parcourir les événements enregistrés.

Pour trouver plus facilement ce que vous cherchez, filtrez le rapport Utilisation du GPU en fonction des noms de processus, des ID de thread et du nom d’événement. En outre, vous pouvez choisir la fréquence d’actualisation de l’affichage qui détermine les lignes de VSync. Vous pouvez trier les événements hiérarchiquement si votre application utilise l’interface ID3DUserDefinedAnnotation pour regrouper les commandes de rendu.

Voici des informations détaillées concernant ces options :

Contrôle de filtre Description
Processus Le nom du processus qui vous intéresse. Tous les processus qui ont utilisé le GPU pendant la session de diagnostic sont inclus dans cette liste déroulante. La couleur associée au processus est la couleur de l’activité du thread dans les chronologies.
Thread L’ID de thread qui vous intéresse. Dans une application multithread, ces informations peuvent vous aider à isoler des threads particuliers qui appartiennent au processus qui vous intéresse. Les événements associés au thread sélectionné sont mis en surbrillance dans chaque chronologie.
Affichage Le numéro de l’affichage dont la fréquence de rafraîchissement est indiquée. Certains pilotes peuvent être configurés pour présenter plusieurs affichages physiques sous forme d'un affichage virtuel unique, de grande taille. Vous ne verrez peut-être qu'un seul affichage dans la liste, même si l'ordinateur possède plusieurs affichages attachés.
Filter Les mots clés qui vous intéressent. Les événements de la partie inférieure du rapport incluent seulement ceux qui correspondent complètement ou partiellement à un mot clé. Vous pouvez spécifier plusieurs mots clés en les séparant par des virgules.
Tri des hiérarchies Une case à cocher qui indique si les hiérarchies d’événements, définies via des marqueurs utilisateur, sont conservées ou ignorées.

La liste des événements dans la partie inférieure du rapport Utilisation du GPU qui affiche les détails de chaque événement.

Colonne Description
Nom de l’événement Nom de l'événement graphique. Un événement correspond généralement à un événement dans une chronologie de threads de l’UC et à un événement d’une chronologie du GPU. Des noms d’événements peuvent être non attribués si la fonctionnalité Utilisation du GPU n’a pas pu déterminer le nom d’un événement. Pour plus d’informations, consultez la remarque sous ce tableau.
Début UC (ns) Heure à laquelle l'événement a débuté sur l'UC en appelant une API Direct3D. Le temps est mesuré en nanosecondes, par rapport au moment où l'application a démarré.
Début GPU (ns) Heure à laquelle l'événement a débuté sur le GPU. Le temps est mesuré en nanosecondes, par rapport au moment où l'application a démarré.
Durée GPU (ns) La durée d’exécution de l’événement sur le GPU, en nanosecondes.
Nom du processus Nom de l'application d'où provient l'événement.
ID de thread ID de thread d'où provient l'événement.

Important

Si votre GPU ou pilote ne prend pas en charge les fonctionnalités d’instrumentation nécessaires, tous les événements s’affichent comme étant non attribués. Veillez à mettre à jour votre GPU/pilote, puis réessayez, si vous rencontrez ce problème. Pour plus d’informations, consultez Prise en charge du matériel et des pilotes à la fin de ce document.

Paramètres d'utilisation du GPU

Vous pouvez configurer l'outil Utilisation du GPU pour reporter la collecte des informations de profilage, au lieu de commencer à collecter les informations dès le démarrage de l'application. Dans la mesure où la taille des informations de profilage peut être significative, cette action est utile quand vous savez que des ralentissements des performances de votre application n’apparaîtront pas avant longtemps.

Pour reporter le profilage au démarrage de l'application :

  1. Dans le menu principal, choisissez Déboguer>Performances et diagnostics (ou, sur le clavier, appuyez sur Alt+F2).

  2. Dans le hub Performances et diagnostics, suivez le lien Paramètres à côté de l’option Utilisation du GPU.

  3. Sous Configuration du profilage GPU, dans la page de propriétés Général, décochez la case Commencer le profilage au démarrage de l’application pour reporter le profilage.

    Screenshot of Object Property Pages, showing collection options

Important

Pour le moment, vous ne pouvez pas reporter le profilage pour les applications Direct3D 12.

Après l’exécution de votre application dans l’outil Utilisation du GPU, un lien supplémentaire devient disponible dans la partie inférieure de la fenêtre de l’outil Utilisation du GPU. Pour commencer à collecter des informations de profilage, choisissez le lien Démarrer dans le message Commencer à collecter des données détaillées d’utilisation GPU supplémentaires.

Prise en charge du matériel et des pilotes

Le matériel et les pilotes GPU suivants sont pris en charge :

Fournisseur Description du GPU Version de pilote nécessaire
Intel® 4e génération des processeurs Intel® Core (« Haswell »)

– Intel® HD Graphics (GT1)
– Intel® HD Graphics 4200 (GT2)
– Intel® HD Graphics 4400 (GT2)
– Intel® HD Graphics 4600 (GT2)
– Intel® HD Graphics P4600 (GT2)
– Intel® HD Graphics P4700 (GT2)
– Intel® HD Graphics 5000 (GT3)
– Intel® Iris™ Graphics 5100 (GT3)
– Intel® Iris™ Pro Graphics 5200 (GT3e)
(utilisez les derniers pilotes)
AMD® La plupart, à partir d’AMD Radeon™ HD série 7000 (sauf AMD Radeon™ HD 7350-7670)

GPU AMD Radeon™, GPU AMD FirePro™ et accélérateurs GPU AMD FirePro incluant l’architecture Graphics Core Next (GCN)

Unités de traitement accéléré (APU) AMD® série E et AMD série A incluant l’architecture Graphics Core Next (GCN) - (« Kaveri », « Kabini », « Temash », « Beema », « Mullins »)
14.7 RC3 ou version ultérieure
NVIDIA® La plupart, à partir de NVIDIA® GeForce® série 400

GPU NVIDIA® GeForce®, GPU NVIDIA Quadro® et accélérateurs GPU NVIDIA® Tesla™ incluant l’architecture Fermi™, Kepler™ ou Maxwell™
343.37 ou version ultérieure

Les configurations à plusieurs GPU, comme NVIDIA® SLI™ et AMD Crossfire™, ne sont pas prises en charge pour l’instant. Les configurations graphiques hybrides, telles que NVIDIA® Optimus™ et AMD Enduro™, sont prises en charge.