Erste Schritte mit der Intel® Distribution für GDB* auf einem Linux* OS-Host

Beginnen Sie mit der Verwendung der Intel® Distribution für GDB* zum Debuggen von Anwendungen. Befolgen Sie die nachstehenden Anweisungen, um den Debugger zum Debuggen von Anwendungen mit auf CPU- und GPU-Geräte ausgelagerten Kerneln einzurichten.

Intel® Distribution für GDB* ist als Teil des Intel® oneAPI Base Toolkits verfügbar. Weitere Informationen zu oneAPI-Toolkits finden Sie auf der Produktseite.

Besuchen Sie die Versionshinweise Seite für Informationen zu wichtigen Funktionen, neuen Features und bekannten Problemen.

Sie können ein SYCL* s verwendenample-Code, Array Transform, um mit der Intel® Distribution für GDB* zu beginnen. Die sample erzeugt keine Fehler und veranschaulicht lediglich Debugger-Funktionen. Der Code verarbeitet Elemente des Eingabearrays abhängig davon, ob sie gerade oder ungerade sind, und erzeugt ein Ausgabearray. Sie können das s verwendenample zum Debuggen sowohl auf der CPU als auch auf der GPU, wobei das gewählte Gerät über ein Befehlszeilenargument angegeben wird. Beachten Sie jedoch, dass das GPU-Debuggen möglicherweise zwei Systeme und zusätzliche Konfigurationen für das Remote-Debuggen erfordert.

Voraussetzungen

Wenn Sie auf GPU debuggen möchten, installieren Sie die neuesten GPU-Treiber und konfigurieren Sie Ihr System für deren Verwendung. Weitere Informationen finden Sie im Installationshandbuch für Intel® oneAPI Toolkits für Linux*-Betriebssysteme. Folge den Anweisungen Installieren Sie die Intel GPU-Treiber um GPU-Treiber zu installieren, die zu Ihrem System passen.

Darüber hinaus können Sie eine Erweiterung für Visual Studio Code* installieren, um GPUs mit Intel® Distribution für GDB* zu debuggen. Weitere Informationen finden Sie im Leitfaden zur Verwendung von Visual Studio Code mit Intel® oneAPI Toolkits.

Einrichten des GPU-Debuggers

Um den GPU-Debugger einzurichten, müssen Sie über Root-Zugriff verfügen.


NOTIZ Während des Kernel-Debuggens wird die GPU angehalten und die Videoausgabe ist auf Ihrem Zielcomputer nicht verfügbar. Aus diesem Grund können Sie die GPU nicht vom Zielsystem aus debuggen, wenn die GPU-Karte des Systems auch für die grafische Ausgabe verwendet wird. Stellen Sie in diesem Fall per SSH eine Verbindung zum Computer her.


1. Wenn Sie auf der GPU debuggen möchten, benötigen Sie einen Linux-Kernel, der GPU-Debugging unterstützt.

a. Folgen Sie den Anweisungen unter Intel® Software für allgemeine GPU-Funktionen um die erforderlichen Treiber herunterzuladen und zu installieren.
b. Aktivieren Sie die i915-Debugunterstützung im Kernel:

a. Öffnen Sie ein Terminal.
b. Öffnen Sie den Grub file in /etc/default.
c. Im Grub file, finden Sie die Zeile GRUB_CMDLINE_LINUX_DEFAULT="".
d. Geben Sie den folgenden Text zwischen den Anführungszeichen („“) ein:

i915.debug_eu=1


NOTIZ Standardmäßig lässt der GPU-Treiber nicht zu, dass Workloads länger als eine bestimmte Zeit auf einer GPU ausgeführt werden. Der Treiber beendet solche lang laufenden Workloads, indem er die GPU zurücksetzt, um ein Hängen zu verhindern. Der Hangcheck-Mechanismus des Treibers ist deaktiviert, wenn die Anwendung unter dem Debugger ausgeführt wird. Wenn Sie vorhaben, lange Rechen-Workloads auch ohne angeschlossenen Debugger auszuführen, sollten Sie Folgendes in Betracht ziehen: GPU: Hangcheck deaktivieren durch Hinzufügen

i915.enable_hangcheck=0

zum Selben Zeile GRUB_CMDLINE_LINUX_DEFAULT.

c. Aktualisieren Sie GRUB, damit diese Änderungen wirksam werden:

sudo update-grub

d. Neustart.

2. Richten Sie Ihre CLI-Umgebung ein, indem Sie das Setvars-Skript im Stammverzeichnis Ihrer Toolkit-Installation herunterladen.

Linux (sudo):

Quelle /opt/intel/oneapi/setvars.sh

Linux (Benutzer):

Quelle ~/intel/oneapi/setvars.sh

3. Setup-Umgebung
Verwenden Sie die folgenden Umgebungsvariablen, um die Debugger-Unterstützung für Intel® oneAPI Level Zero zu aktivieren:

exportiere ZET_ENABLE_PROGRAM_DEBUGGING=1
export IGC_EnableGTLocationDebugging=1

4. Systemprüfung
Wenn alles bereit ist, führen Sie bitte den folgenden Befehl aus, um zu bestätigen, dass die Systemkonfiguration zuverlässig ist:

python3 /Pfad/zu/Intel/OneAPI/diagnostics/latest/diagnostics.py –Filter Debugger_sys_check -Force

Eine mögliche Ausgabe eines gut konfigurierten Systems ist wie folgt:


Prüfergebnisse:
=============================================== ===============================
Prüfname: debugger_sys_check
Beschreibung: Diese Prüfung überprüft, ob die Umgebung zur Verwendung von gdb (Intel(R) Distribution for GDB*) bereit ist.
Ergebnisstatus: BESTANDEN
Debugger gefunden.
Libipt gefunden.
Libiga gefunden.
i915-Debug ist aktiviert.
Umgebungsvariablen korrekt. ===================================================================================

1 PRÜFUNG: 1 BESTANDEN, 0 NICHT BESTANDEN, 0 WARNUNGEN, 0 FEHLER

Konsolenausgabe file: /Pfad/zu/logs/diagnostics_filter_debugger_sys_check_force.txt JSON-Ausgabe file: /Pfad/zu/diagnostics/logs/diagnostics_filter_debugger_sys_check_force.json …

Kompilieren Sie das Programm mit Debuginformationen

Sie können die sample-Projekt, Array Transform, um schnell mit dem Anwendungsdebugger zu beginnen.

1. Um die s zu bekommenampWählen Sie dazu eine der folgenden Möglichkeiten:

2. Navigieren Sie zur Quelle der sampdas Projekt:

CD Array-Transformation/Quelle

3. Kompilieren Sie die Anwendung, indem Sie die Debug-Informationen aktivieren (Flag -g) und Optimierungen deaktivieren (Flag -O0).
Für eine stabile und genaue Debugumgebung wird empfohlen, die Optimierung zu deaktivieren. Dadurch wird verhindert, dass durch Codeänderungen nach Compileroptimierungen Verwirrung entsteht.


NOTIZ Sie können das Programm weiterhin mit aktivierter Optimierung (Flag -O2) kompilieren, was hilfreich sein kann, wenn Sie auf das Debuggen der GPU-Assembly abzielen.


Sie können das Programm auf verschiedene Arten kompilieren. Bei den Optionen 1 und 2 wird die Just-in-Time-Kompilierung (JIT) verwendet, die zum Debuggen des Programms empfohlen wird.ample. Option 3 verwendet die Ahead-of-Time-Kompilierung (AOT).

  • Option 1. Sie können CMake verwenden file um die Anwendung zu konfigurieren und zu erstellen. Weitere Informationen finden Sie im README der sampDie Anleitung finden Sie in der Datei.

NOTIZ Das CMake file mit dem s versehenample übergibt bereits die Flags -g -O0.


  • Option 2. So kompilieren Sie array-transform.cpp sampDateianwendung ohne CMake filegeben Sie die folgenden Befehle ein:

icpx -fsycl -g -O0 Array-Transformation.cpp -o Array-Transformation

Wenn Kompilierung und Linken getrennt erfolgen, behalten Sie die Flags -g -O0 im Link-Schritt bei. Im Link-Schritt übersetzt icpx diese Flags, um sie zur Laufzeit an den Gerätecompiler zu übergeben. Beispiel:ampauf:

icpx -fsycl -g -O0 -c array-transform.cpp
icpx -fsycl -g -O0 Array-Transformation.o -o Array-Transformation

  • Option 3. Sie können die AOT-Kompilierung verwenden, um längere JIT-Kompilierungszeiten zur Laufzeit zu vermeiden. Die JIT-Kompilierung kann bei großen Kerneln unter dem Debugger erheblich länger dauern. So verwenden Sie den Ahead-of-Time-Kompilierungsmodus:

• Zum Debuggen auf einer GPU:
Geben Sie das Gerät an, das Sie für die Programmausführung verwenden möchten. Zum Beispielample, -device dg2-g10 für Intel® Data Center GPU Flex 140 Graphics. Eine Liste der unterstützten Optionen und weitere Informationen zur AOT-Kompilierung finden Sie im Entwicklerhandbuch und Referenz für den Intel® oneAPI DPC++ Compiler.
Zum Beispielampauf:

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

Für die Ahead-of-Time-Kompilierung ist der OpenCLTM Offline Compiler (OC Compiler LOC) erforderlich. Weitere Informationen finden Sie im Abschnitt „Install OpenCLTM Offline Compiler (OCLOC)“ des Installationshandbuch.

• Zum Debuggen auf einer CPU:

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

Starten einer Debugsitzung

Starten Sie die Debugsitzung:

1. Starten Sie die Intel® Distribution für GDB* wie folgt:

gdb-oneapi Array-Transformation

Sie sollten die Eingabeaufforderung (gdb) sehen.

2. Um sicherzustellen, dass der Kernel auf das richtige Gerät ausgelagert wird, führen Sie die folgenden Schritte aus. Wenn Sie den Befehl „run“ von der (gdb)-Eingabeaufforderung aus ausführen, übergeben Sie den CPU, grafikkarte or Beschleuniger Argument:

  • Zum Debuggen auf der CPU:

CPU ausführen

Example ausgabe:

[SYCL] Verwendetes Gerät: [Intel(R) Core(TM) i7-9750H CPU @ 2.60 GHz] von [Intel(R) OpenCL]
  • Zum Debuggen auf der GPU:

GPU ausführen

Example ausgabe:

[SYCL] Verwendetes Gerät: [Intel(R) Data Center GPU Flex Series 140 [0x56c1]] von [Intel(R) LevelZero]
  • Zum Debuggen auf dem FPGA-Emulator:

Beschleuniger ausführen

Example ausgabe:

[SYCL] Verwendetes Gerät: [Intel(R) FPGA Emulation Device] von [Intel(R) FPGA Emulation Platform for OpenCL(TM) software]

NOTIZ Die CPU-, GPU- und Beschleunigerparameter sind spezifisch für die Array Transform-Anwendung.


3. So beenden Sie die Intel® Distribution für GDB*:

aufhören

Zu Ihrer Information finden Sie allgemeine Intel® Distribution für GDB*-Befehle im Referenzblatt.

So debuggen Sie die Array-TransformationampErfahren Sie mehr über die Intel® Distribution für GDB*, lernen Sie grundlegende Debugging-Szenarien kennen und nutzen Sie die Lernprogramm.

Mehr erfahren
Dokumentieren Beschreibung
Tutorial: Debuggen mit Intel® Distribution für GDB* Dieses Dokument beschreibt die grundlegenden Szenarien, die beim Debuggen von SYCL* und OpenCL mit Intel® Distribution für GDB* zu befolgen sind.
Intel® Distribution für GDB* Benutzerhandbuch Dieses Dokument beschreibt alle allgemeinen Aufgaben, die Sie mit der Intel® Distribution für GDB* erledigen können, und stellt die notwendigen technischen Details bereit.
Intel® Distribution für GDB* Versionshinweise Die Hinweise enthalten Informationen zu wichtigen Funktionen, neuen Funktionen und bekannten Problemen der Intel® Distribution für GDB*.
oneAPI-Produktseite Diese Seite enthält eine kurze Einführung in die oneAPI-Toolkits und Links zu nützlichen Ressourcen.
Referenzblatt zur Intel® Distribution für GDB* Dieses einseitige Dokument beschreibt kurz die Voraussetzungen und nützlichen Befehle der Intel® Distribution für GDB*.
Jakobi Sample Diese kleine SYCL*-Anwendung hat zwei Versionen: fehlerhaft und behoben. Benutze das sampDatei zum Debuggen von Anwendungen mit Intel® Distribution für GDB*.
Hinweise und Haftungsausschlüsse

Für Intel-Technologien ist möglicherweise eine aktivierte Hardware-, Software- oder Dienstaktivierung erforderlich.

Kein Produkt oder keine Komponente kann absolut sicher sein.

Ihre Kosten und Ergebnisse können variieren.

© Intel Corporation. Intel, das Intel-Logo und andere Intel-Marken sind Marken der Intel Corporation oder ihrer Tochtergesellschaften. Andere Namen und Marken können als Eigentum anderer beansprucht werden.

Durch dieses Dokument wird keine Lizenz (weder ausdrücklich noch stillschweigend, durch Rechtsverwirkung oder auf andere Weise) an geistigen Eigentumsrechten gewährt.

Die beschriebenen Produkte können Konstruktionsfehler oder Fehler (sogenannte Errata) enthalten, die dazu führen können, dass das Produkt von den veröffentlichten Spezifikationen abweicht. Aktuelle gekennzeichnete Errata sind auf Anfrage erhältlich.

Intel schließt alle ausdrücklichen und stillschweigenden Gewährleistungen aus, einschließlich, aber nicht beschränkt auf die stillschweigenden Gewährleistungen der Marktgängigkeit, der Eignung für einen bestimmten Zweck und der Nichtverletzung von Rechten Dritter, sowie jegliche Gewährleistung, die sich aus dem Verlauf der Leistung, dem Geschäftsverlauf oder der Verwendung im Handel ergibt.

OpenCL und das OpenCL-Logo sind Marken von Apple Inc. und werden mit Genehmigung von Khronos verwendet.

Dokumente / Ressourcen

Intel-Distribution für GDB auf Linux OS Host [pdf] Benutzerhandbuch
Distribution für GDB auf Linux OS Host, GDB auf Linux OS Host, Linux OS Host, OS Host, Host

Verweise

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind markiert *