Information About a Frame
See GDB* documentation.
info args
Test numba_dpex/tests/debugging/test_info.py:test_info_args
.
Note
Requires Numba 0.55 or higher.
In previous versions info args
always returns No arguments.
.
Example
Source code numba_dpex/examples/debug/side-by-side.py
:
24def common_loop_body(param_a, param_b):
25 param_c = param_a + 10 # Set breakpoint here
26 param_d = param_b * 0.5
27 result = param_c + param_d
28 return result
Debug session:
$ NUMBA_OPT=0 gdb-oneapi -q python
...
(gdb) break side-by-side.py:25
...
(gdb) run numba_dpex/examples/debug/side-by-side.py --api=numba-dpex-kernel
...
Thread 2.1 hit Breakpoint 1, with SIMD lanes [0-7], __main__::common_loop_body (param_a=0, param_b=0) at side-by-side.py:25
25 param_c = param_a + 10 # Set breakpoint here
(gdb) info args
param_a = 0
param_b = 0
info locals
Test numba_dpex/tests/debugging/test_info.py:test_info_locals
.
Note
Requires Numba 0.55 or higher.
Example
Source code sum_local_vars.py
:
15import dpctl
16import numpy as np
17
18import numba_dpex as dppy
19
20
21@dppy.kernel(debug=True)
22def data_parallel_sum(a, b, c):
23 i = dppy.get_global_id(0)
24 l1 = a[i] + 2.5
25 l2 = b[i] * 0.3
26 c[i] = l1 + l2
27
28
29global_size = 10
30N = global_size
31
32a = np.array(np.random.random(N), dtype=np.float32)
33b = np.array(np.random.random(N), dtype=np.float32)
34c = np.ones_like(a)
35
36device = dpctl.SyclDevice("opencl:gpu")
37with dpctl.device_context(device):
38 data_parallel_sum[global_size, dppy.DEFAULT_LOCAL_SIZE](a, b, c)
39
40print("Done...")
Run the debugger with NUMBA_OPT=0
:
$ NUMBA_OPT=0 gdb-oneapi -q python
(gdb) set breakpoint pending on
(gdb) break sum_local_vars.py:22
(gdb) run sum_local_vars.py
...
Thread 2.2 hit Breakpoint 1, with SIMD lanes [0-7], __main__::data_parallel_sum () at sum_local_vars.py:22
Use info locals
.
Note that uninitialized variables are zeros:
(gdb) info locals
a = '\000' <repeats 55 times>
b = '\000' <repeats 55 times>
c = '\000' <repeats 55 times>
i = 0
l1 = 0
l2 = 0
__ocl_dbg_gid0 = 0
__ocl_dbg_gid1 = 0
__ocl_dbg_gid2 = 0
__ocl_dbg_lid0 = 0
__ocl_dbg_lid1 = 0
__ocl_dbg_lid2 = 0
__ocl_dbg_grid0 = 0
__ocl_dbg_grid1 = 0
__ocl_dbg_grid2 = 0
(gdb) next
Thread 2.3 hit Breakpoint 1, with SIMD lanes [0-1], __main__::data_parallel_sum () at sum_local_vars.py:22
22 i = dppy.get_global_id(0)
(gdb) next
23 l1 = a[i] + 2.5
(gdb) next
24 l2 = b[i] * 0.3
(gdb) info locals
a = '\000' <repeats 55 times>
b = '\000' <repeats 16 times>, "\n\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\240\016XUU\000\000\n\000\000\000\000\000\000\000\004\000\000\000\000\000\000"
c = '\000' <repeats 16 times>, "\n\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000@\256WUU\000\000\n\000\000\000\000\000\000\000\004\000\000\000\000\000\000"
i = 8
l1 = 2.5931931659579277
l2 = 0
__ocl_dbg_gid0 = 0
__ocl_dbg_gid1 = 0
__ocl_dbg_gid2 = 0
__ocl_dbg_lid0 = 42949672970
__ocl_dbg_lid1 = 0
__ocl_dbg_lid2 = 93825037590528
__ocl_dbg_grid0 = 4612811918334230528
__ocl_dbg_grid1 = 0
__ocl_dbg_grid2 = 0
(gdb) next
25 c[i] = l1 + l2