Skip to content

Commit 2ec35d1

Browse files
[SYCL] If the enqueue type is blocking we should enqueue dependencies
1 parent 9ddd1ed commit 2ec35d1

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

sycl/source/detail/scheduler/graph_processor.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ bool Scheduler::GraphProcessor::enqueueCommand(Command *Cmd,
5858
if (!Cmd || Cmd->isSuccessfullyEnqueued())
5959
return true;
6060

61-
if (Cmd->isEnqueueBlocked()) {
61+
// Exit early if the command is blocked and the enqueue type is non-blocking
62+
if (Cmd->isEnqueueBlocked() && !Blocking) {
6263
EnqueueResult = EnqueueResultT(EnqueueResultT::SyclEnqueueBlocked, Cmd);
6364
return false;
6465
}

sycl/unittests/scheduler/BlockedCommands.cpp

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ TEST_F(SchedulerTest, EnqueueBlockedCommandEarlyExit) {
9898
A.MIsBlockable = true;
9999

100100
MockCommand B(detail::getSyclObjImpl(MQueue));
101-
B.MEnqueueStatus = detail::EnqueueResultT::SyclEnqueueBlocked;
102-
B.MIsBlockable = true;
101+
B.MEnqueueStatus = detail::EnqueueResultT::SyclEnqueueReady;
102+
B.MRetVal = CL_OUT_OF_RESOURCES;
103103

104104
addEdge(&A, &B, nullptr);
105105

@@ -118,4 +118,15 @@ TEST_F(SchedulerTest, EnqueueBlockedCommandEarlyExit) {
118118
ASSERT_EQ(detail::EnqueueResultT::SyclEnqueueBlocked, Res.MResult)
119119
<< "Result of enqueueing blocked command should be BLOCKED.\n";
120120
ASSERT_EQ(&A, Res.MCmd) << "Expected different failed command.\n";
121+
122+
// But if the enqueue type is blocking we should not exit early.
123+
124+
EXPECT_CALL(A, enqueue(_, _)).Times(0);
125+
EXPECT_CALL(B, enqueue(_, _)).Times(1);
126+
127+
Enqueued = MockScheduler::enqueueCommand(&A, Res, detail::BLOCKING);
128+
ASSERT_FALSE(Enqueued) << "Blocked command should not be enqueued\n";
129+
ASSERT_EQ(detail::EnqueueResultT::SyclEnqueueFailed, Res.MResult)
130+
<< "Result of enqueueing blocked command should be BLOCKED.\n";
131+
ASSERT_EQ(&B, Res.MCmd) << "Expected different failed command.\n";
121132
}

0 commit comments

Comments
 (0)