Skip to content

Commit

Permalink
Move event resets from SignalCommandList to ComputeCommandList
Browse files Browse the repository at this point in the history
Moves the call to event reset for the WaitEvent and AllResetEvent
to the ComputeCommandList.

This fixes a potential race condition where, if the SignalCommandList
executes before the ComputeCommandList, the WaitEvent could be reset
before the ComputeCommandList can wait on it and, consequently,
create a deadlock.
  • Loading branch information
fabiomestre committed Dec 19, 2024
1 parent 39df031 commit 017d9cc
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions source/adapters/level_zero/command_buffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1683,25 +1683,28 @@ ur_result_t enqueueWaitEventPath(ur_exp_command_buffer_handle_t CommandBuffer,
(ZeCopyCommandQueue, 1, &CommandBuffer->ZeCopyCommandList, nullptr));
}

ZE2UR_CALL(zeCommandListAppendBarrier,
(SignalCommandList->first, nullptr, 1,
&(CommandBuffer->ExecutionFinishedEvent->ZeEvent)));

// Reset the wait-event for the UR command-buffer that is signaled when its
// submission dependencies have been satisfied.
ZE2UR_CALL(zeCommandListAppendEventReset,
(SignalCommandList->first, CommandBuffer->WaitEvent->ZeEvent));

// Reset the all-reset-event for the UR command-buffer that is signaled when
// all events of the main command-list have been reset.
ZE2UR_CALL(zeCommandListAppendEventReset,
(SignalCommandList->first, CommandBuffer->AllResetEvent->ZeEvent));

if (DoProfiling) {
UR_CALL(appendProfilingQueries(CommandBuffer, SignalCommandList->first,
*Event,
CommandBuffer->ExecutionFinishedEvent));
} else {
ZE2UR_CALL(zeCommandListAppendBarrier,
(SignalCommandList->first, (*Event)->ZeEvent, 1,
&(CommandBuffer->ExecutionFinishedEvent->ZeEvent)));
nullptr, nullptr));
}

ZE2UR_CALL(zeCommandListAppendBarrier,
(SignalCommandList->first, (*Event)->ZeEvent, 0, nullptr));

UR_CALL(Queue->executeCommandList(SignalCommandList, false /*IsBlocking*/,
false /*OKToBatchCommand*/));

Expand Down

0 comments on commit 017d9cc

Please sign in to comment.