Premiers pas avec la distribution Intel® pour GDB* sur l'hôte du système d'exploitation Linux*

Commencez à utiliser la distribution Intel® pour GDB* pour le débogage des applications. Suivez les instructions ci-dessous pour configurer le débogueur afin de déboguer les applications avec les noyaux déchargés sur les périphériques CPU et GPU.

La distribution Intel® pour GDB* est disponible dans le cadre de la boîte à outils de base Intel® oneAPI. Pour plus d'informations sur les kits d'outils oneAPI, visitez le page produit.

Visitez le Notes de mise à jour pour plus d'informations sur les fonctionnalités clés, les nouvelles fonctionnalités et les problèmes connus.

Vous pouvez utiliser un SYCL* sample code, Array Transform, pour démarrer avec la distribution Intel® pour GDB*. Le sampLe fichier ne génère pas d'erreurs et illustre simplement les fonctionnalités du débogueur. Le code traite les éléments du tableau d'entrée selon qu'ils sont pairs ou impairs et produit un tableau de sortie. Vous pouvez utiliser le sample pour déboguer à la fois sur le CPU ou sur le GPU, en spécifiant le périphérique choisi via un argument de ligne de commande. Notez cependant que le débogage GPU peut nécessiter deux systèmes et une configuration supplémentaire pour le débogage à distance.

Prérequis

Si vous souhaitez déboguer sur GPU, installez les derniers pilotes GPU et configurez votre système pour les utiliser. Se référer au Guide d'installation des kits d'outils Intel® oneAPI pour le système d'exploitation Linux*. Suivez les instructions Installer les pilotes de processeur graphique Intel pour installer les pilotes GPU correspondant à votre système.

De plus, vous pouvez installer une extension pour Visual Studio Code* pour le débogage du GPU avec Intel® Distribution for GDB*. Se référer au Guide d'utilisation de Visual Studio Code avec les kits d'outils Intel® oneAPI.

Configurer le débogueur GPU

Pour configurer le débogueur GPU, vous devez disposer d'un accès root.


NOTE Pendant le débogage du noyau, le GPU est arrêté et la sortie vidéo n'est pas disponible sur votre machine cible. Pour cette raison, vous ne pouvez pas déboguer le GPU du système cible si la carte GPU du système est également utilisée pour la sortie graphique. Dans ce cas, connectez-vous à la machine via ssh.


1. Si vous souhaitez déboguer sur GPU, un noyau Linux prenant en charge le débogage GPU est nécessaire.

a. Suivez les instructions sur Logiciel Intel® pour les capacités GPU à usage général pour télécharger et installer les pilotes nécessaires.
b. Activez la prise en charge du débogage i915 dans le noyau :

a. Ouvrir un terminal.
b. Ouvrir la bouffe file dans /etc/default.
c. Dans la bouffe file, recherchez la ligne GRUB_CMDLINE_LINUX_DEFAULT="".
d. Entrez le texte suivant entre les guillemets ("") :

i915.debug_eu=1


NOTE Par défaut, le pilote GPU n'autorise pas les charges de travail à s'exécuter sur un GPU plus longtemps qu'un certain laps de temps. Le pilote tue ces charges de travail de longue durée en réinitialisant le GPU pour éviter les blocages. Le mécanisme de contrôle de blocage du pilote est désactivé si l'application s'exécute sous le débogueur. Si vous prévoyez d'exécuter de longues charges de travail de calcul également sans qu'un débogueur soit attaché, envisagez d'appliquer GPU : désactiver Hangcheck en ajoutant

i915.enable_hangcheck=0

à la même Ligne GRUB_CMDLINE_LINUX_DEFAULT.

c. Mettez à jour GRUB pour que ces modifications prennent effet :

sudo update-grub

d. Redémarrer.

2. Configurez votre environnement CLI en vous procurant le script setvars situé à la racine de l'installation de votre kit d'outils.

Linux (sudo) :

source /opt/intel/oneapi/setvars.sh

Linux (utilisateur) :

source ~/intel/oneapi/setvars.sh

3. Environnement de configuration
Utilisez les variables d'environnement suivantes pour activer la prise en charge du débogueur pour Intel® oneAPI niveau zéro :

exporter ZET_ENABLE_PROGRAM_DEBUGGING=1
exporter IGC_EnableGTLocationDebugging=1

4. Vérification du système
Lorsque tout est prêt, veuillez exécuter la commande suivante pour confirmer que la configuration du système est fiable :

python3 /path/to/intel/oneapi/diagnostics/latest/diagnostics.py –filter debugger_sys_check -force

Une sortie possible d'un système bien configuré est la suivante :


Vérifie les résultats :
=================================================== ================================
Nom de la vérification : debugger_sys_check
Description : cette vérification vérifie si l'environnement est prêt à utiliser gdb (distribution Intel(R) pour GDB*).
État du résultat : RÉUSSI
Débogueur trouvé.
libipt trouvé.
libiga trouvé.
Le débogage i915 est activé.
Variables environnementales correctes. ================================================= ================================

1 CONTRÔLE : 1 RÉUSSITE, 0 ÉCHEC, 0 AVERTISSEMENTS, 0 ERREURS

Sortie console file: /path/to/logs/diagnostics_filter_debugger_sys_check_force.txt Sortie JSON file: /chemin/vers/diagnostics/logs/diagnostics_filter_debugger_sys_check_force.json …

Compiler le programme avec les informations de débogage

Vous pouvez utiliser le sample projet Array Transform, pour démarrer rapidement avec le débogueur d'application.

1. Pour obtenir le sample, choisissez l'une des méthodes suivantes :

2. Accédez au src du sample projet :

transformation de tableau cd/src

3. Compilez l'application en activant les informations de débogage (indicateur -g) et en désactivant les optimisations (indicateur -O0).
La désactivation de l'optimisation est recommandée pour un environnement de débogage stable et précis. Cela permet d'éviter toute confusion causée par les modifications apportées au code après les optimisations du compilateur.


NOTE Vous pouvez toujours compiler le programme avec l'optimisation activée (indicateur -O2), ce qui peut être utile si vous visez le débogage de l'assemblage GPU.


Vous pouvez compiler le programme de plusieurs manières. Les options 1 et 2 utilisent la compilation juste-à-temps (JIT), qui est recommandée pour déboguer le sample. L'option 3 utilise la compilation anticipée (AOT).

  • Option 1. Vous pouvez utiliser CMake file pour configurer et construire l'application. Se référer au LISEZ-MOI des sample pour les instructions.

NOTE Le CMake file fourni avec le sample passe déjà les drapeaux -g -O0.


  • Option 2. Pour compiler les array-transform.cpp sampl'application sans CMake file, émettez les commandes suivantes :

icpx -fsycl -g -O0 array-transform.cpp -o array-transform

Si la compilation et la liaison sont effectuées séparément, conservez les indicateurs -g -O0 à l'étape de liaison. L'étape de liaison correspond au moment où icpx traduit ces drapeaux pour les transmettre au compilateur de périphérique lors de l'exécution. Example:

icpx -fsycl -g -O0 -c tableau-transform.cpp
icpx -fsycl -g -O0 transformation-tableau.o -o transformation-tableau

  • Option 3. Vous pouvez utiliser la compilation AOT pour éviter des durées de compilation JIT plus longues lors de l'exécution. La compilation JIT peut prendre beaucoup plus de temps pour les gros noyaux sous le débogueur. Pour utiliser le mode de compilation Ahead-of-Time :

• Pour le débogage sur un GPU :
Spécifiez le périphérique que vous utiliserez pour l'exécution du programme. Par exempleample, -device dg2-g10 pour les graphiques Intel® Data Center GPU Flex 140. Pour la liste des options prises en charge et plus d'informations sur la compilation AOT, reportez-vous au Guide et référence du développeur du compilateur Intel® oneAPI DPC++.
Par exempleample:

icpx -fsycl -g -O0 -fsycl-targets=spir64_gen -Xs "-device dg2-g10" array-transform.cpp -o arraytransform

La compilation anticipée nécessite le compilateur hors ligne OpenCLTM (OC Compiler LOC). Pour plus d'informations, reportez-vous à la section « Install OpenCLTM Offline Compiler (OCLOC) » du Guide d'installation.

• Pour le débogage sur un CPU :

icpx -fsycl -g -O0 -fsycl-targets=spir64_x86_64 array-transform.cpp -o array-transform

Démarrer une session de débogage

Démarrez la session de débogage :

1. Démarrez Intel® Distribution pour GDB* comme suit :

transformation de tableau gdb-oneapi

Vous devriez voir l'invite (gdb).

2. Pour vous assurer que le noyau est déchargé sur le bon périphérique, procédez comme suit. Lorsque vous exécutez la commande run à partir de l'invite (gdb), transmettez processeur, processeur graphique or accélérateur argument:

  • Pour le débogage sur le CPU :

exécuter le processeur

Example résultat :

[SYCL] Utilisation de l'appareil : [CPU Intel(R) Core(TM) i7-9750H à 2.60 GHz] de [Intel(R) OpenCL]
  • Pour le débogage sur le GPU :

exécuter le processeur graphique

Example résultat :

[SYCL] Utilisation de l'appareil : [Intel(R) Data Center GPU Flex Series 140 [0x56c1]] de [Intel(R) LevelZero]
  • Pour le débogage sur l'émulateur FPGA :

accélérateur de course

Example résultat :

[SYCL] Utilisation de l'appareil : [Intel(R) FPGA Emulation Device] à partir de [Intel(R) FPGA Emulation Platform for OpenCL(TM) software]

NOTE Les paramètres cpu, gpu et accelerator sont spécifiques à l'application Array Transform.


3. Pour quitter la distribution Intel® pour GDB* :

quitter

Pour votre commodité, les commandes communes Intel® Distribution pour GDB* sont fournies dans le Fiche de référence.

Pour déboguer les Array Transform sample et en savoir plus sur la distribution Intel® pour GDB *, parcourir les scénarios de débogage de base à l'aide du Tutoriel.

Apprendre encore plus
Document Description
Tutoriel : débogage avec la distribution Intel® pour GDB* Ce document décrit les scénarios de base à suivre lors du débogage de SYCL* et OpenCL avec Intel® Distribution pour GDB*.
Guide de l'utilisateur de la distribution Intel® pour GDB* Ce document décrit toutes les tâches courantes que vous pouvez effectuer avec Intel® Distribution pour GDB* et fournit les détails techniques nécessaires.
Notes de publication de la distribution Intel® pour GDB* Les notes contiennent des informations sur les fonctionnalités clés, les nouvelles fonctionnalités et les problèmes connus d'Intel® Distribution pour GDB*.
Page produit oneAPI Cette page contient une brève introduction sur les kits d'outils oneAPI et des liens vers des ressources utiles.
Fiche de référence de la distribution Intel® pour GDB* Ce document d'une page décrit brièvement les prérequis et les commandes utiles de la distribution Intel® pour GDB*.
Jacobi Sample Cette petite application SYCL* a deux versions : buggée et corrigée. Utilisez le sample pour exercer le débogage d'application avec Intel® Distribution for GDB*.
Avis et avis de non-responsabilité

Les technologies Intel peuvent nécessiter une activation matérielle, logicielle ou de service activée.

Aucun produit ou composant ne peut être absolument sûr.

Vos coûts et vos résultats peuvent varier.

©Intel Corporation. Intel, le logo Intel et les autres marques Intel sont des marques commerciales d'Intel Corporation ou de ses filiales. D'autres noms et marques peuvent être revendiqués comme la propriété d'autrui.

Aucune licence (expresse ou implicite, par préclusion ou autre) sur aucun droit de propriété intellectuelle n'est accordée par ce document.

Les produits décrits peuvent contenir des défauts de conception ou des erreurs appelés errata qui peuvent entraîner un écart par rapport aux spécifications publiées. Les errata caractérisés actuels sont disponibles sur demande.

Intel décline toute garantie expresse et implicite, y compris, sans s'y limiter, les garanties implicites de qualité marchande, d'adéquation à un usage particulier et d'absence de contrefaçon, ainsi que toute garantie découlant du cours des performances, du cours des transactions ou de l'utilisation dans le commerce.

OpenCL et le logo OpenCL sont des marques commerciales d'Apple Inc. utilisées avec l'autorisation de Khronos.

Documents / Ressources

Intel Distribution pour GDB sur l'hôte du système d'exploitation Linux [pdf] Guide de l'utilisateur
Distribution pour GDB sur l'hôte du système d'exploitation Linux, GDB sur l'hôte du système d'exploitation Linux, hôte du système d'exploitation Linux, hôte du système d'exploitation, hôte

Références

Laisser un commentaire

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués *