Open
Description
While debugging a Julia/oneAPI.jl-related issue, I was using a debug build of the compute-runtime. Doing so however triggers a debug break with the following seemingly innocuous Level Zero operations:
julia> using oneAPI, .oneL0
julia> pool = ZeEventPool(context(), 1)
ZeEventPool(Ptr{oneAPI.oneL0._ze_event_pool_handle_t} @0x000000000321a480, ZeContext(Ptr{oneAPI.oneL0._ze_context_handle_t} @0x000000000629c060, ZeDriver(00000000-0000-0000-1757-e436010363f9)))
julia> event = pool[1]
ZeEvent(Ptr{oneAPI.oneL0._ze_event_handle_t} @0x0000000006b2b5f0, ZeEventPool(Ptr{oneAPI.oneL0._ze_event_pool_handle_t} @0x000000000321a480, ZeContext(Ptr{oneAPI.oneL0._ze_context_handle_t} @0x000000000629c060, ZeDriver(00000000-0000-0000-1757-e436010363f9))))
julia> signal(event)
julia> group = first(compute_groups(device()))
oneAPI.oneL0.ZeCommandQueueGroup(oneAPI.oneL0.ZeCommandQueueGroups(ZeDevice(GPU, vendor 0x8086, device 0x56a0)), 1)
julia> ZeCommandList(context(), device(), group.ordinal) do list
append_signal!(list, event)
end
Assert was called at 6379 line in file:
/workspace/srcdir/compute-runtime/shared/source/generated/xe_hpg_core/hw_cmds_generated_xe_hpg_core.inl
julia: /workspace/srcdir/compute-runtime/shared/source/helpers/debug_helpers.cpp:21: void NEO::debugBreak(int, const char*): Assertion `false' failed.
signal (6): Aborted
in expression starting at REPL[9]:1
unknown function (ip: 0x7f623e6c38ec)
gsignal at /usr/lib/libc.so.6 (unknown line)
abort at /usr/lib/libc.so.6 (unknown line)
unknown function (ip: 0x7f623e65e45b)
__assert_fail at /usr/lib/libc.so.6 (unknown line)
debugBreak at /workspace/srcdir/compute-runtime/shared/source/helpers/debug_helpers.cpp:21
setAddress at /workspace/srcdir/compute-runtime/shared/source/generated/xe_hpg_core/hw_cmds_generated_xe_hpg_core.inl:6379
programStoreDataImm at /workspace/srcdir/compute-runtime/shared/source/command_container/command_encoder_xehp_and_later.inl:774
programStoreDataImm at /workspace/srcdir/compute-runtime/shared/source/command_container/command_encoder.inl:1026
dispatchPostSyncCompute at /workspace/srcdir/compute-runtime/level_zero/core/source/cmdlist/cmdlist_hw.inl:2789
dispatchPostSyncCommands at /workspace/srcdir/compute-runtime/level_zero/core/source/cmdlist/cmdlist_hw.inl:2811
dispatchEventPostSyncOperation at /workspace/srcdir/compute-runtime/level_zero/core/source/cmdlist/cmdlist_hw.inl:2845
appendSignalEvent at /workspace/srcdir/compute-runtime/level_zero/core/source/cmdlist/cmdlist_hw.inl:1960
zeCommandListAppendSignalEvent at /workspace/srcdir/compute-runtime/level_zero/api/core/ze_event_api_entrypoints.h:61
macro expansion at /home/tim/Julia/pkg/oneAPI/lib/level-zero/libze.jl:1816 [inlined]
macro expansion at /home/tim/Julia/pkg/oneAPI/lib/level-zero/utils.jl:5 [inlined]
macro expansion at /home/tim/Julia/pkg/oneAPI/lib/level-zero/libze.jl:13 [inlined]
zeCommandListAppendSignalEvent at /home/tim/Julia/pkg/oneAPI/lib/utils/call.jl:24
append_signal! at /home/tim/Julia/pkg/oneAPI/lib/level-zero/event.jl:57 [inlined]
That's the following debug break:
What's the purpose of that debug break? Is my code doing anything wrong? I was hoping to have a CI job on oneAPI.jl run with a debug build of compute-runtime and IGC in order to spot any failed assertions (as these checks aren't present in release mode).
cc @pengtu