Tutorial: Debugging with Intel® Distribution for GDB* on Linux* OS Host
Contents
Tutorial: Debugging with Intel® Distribution for GDB* on Linux* OS Host#
This tutorial describes the basic scenarios of debugging applications on a CPU, a GPU, and an FPGA emulator using Intel® Distribution for GDB*.
Prerequisites#
Check the Get Started Guide and complete all setup steps depending on whether you intend to debug on a CPU or a GPU.
Debugging a Kernel on CPU and GPU: Major Differences#
The behavior and commands of Intel Distribution for GDB are very close to the standard GDB. The CPU debugging experience is almost the same; however, there are differences in GPU debugging, coming from the architecture.
In comparison to debugging on a CPU, debugging a kernel on a GPU has a few differences:
Aspect |
Description |
CPU |
GPU |
---|---|---|---|
Threads and single instruction, multiple data (SIMD) lanes |
When the code is vectorized, threads process vectors of data elements in parallel. SIMD lane is a logical unit of execution for accessing data elements within an instruction. |
The debugger does not support SIMD lanes. Even if your code is vectorized, you cannot switch context to a non-default SIMD lane. |
The debugger supports threads and SIMD lanes. You can switch the context to a particular thread or SIMD lane during debugging. When kernels are compiled in debug mode, most SIMD instructions have 8 or 16 lanes (i.e. execution channels). To refer to a particular SIMD lane of a thread, use a SIMD lane identifier in the format thread ID:lane. To learn more about debugging programs with multiple threads, refer to Chapter 4.10 of Intel® Distribution for GDB* User Guide. |
The following commands behave differently during GPU debugging:
Command |
Description |
Modification |
Example/Comment |
---|---|---|---|
|
Disassemble the current function. |
GEN instructions and registers are shown. |
N/A |
|
|
SIMD lanes are supported and SIMD lane switches can occur. |
|
|
|
SIMD lanes are supported. |
|
|
Apply a command to the specified SIMD lane of the thread. |
SIMD lanes are supported. |
|
|
Display information about threads with ID, including their active SIMD lanes. |
SIMD lanes are supported. |
Use the |
|
Display information about the available devices. |
New command. |
N/A |
|
Specify a list of commands to execute when your program stops due to a particular breakpoint. |
SIMD lanes are supported. With the |
|
|
Create a breakpoint at a specified line. |
|
|
To start debugging, refer to the following sections: