Skip to content

Commit 7eed02c

Browse files
author
Ivan Karachun
committed
[SYCL] Enqueue leaves after host accessor destruction
Need to enqueue all leaves of the graph to start execution after unblocking. Signed-off-by: Ivan Karachun <[email protected]>
1 parent ccbe51e commit 7eed02c

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

sycl/source/detail/scheduler/scheduler.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,19 @@ EventImplPtr Scheduler::addHostAccessor(Requirement *Req) {
145145

146146
void Scheduler::releaseHostAccessor(Requirement *Req) {
147147
Req->MBlockedCmd->MCanEnqueue = true;
148+
MemObjRecord* Record = Req->MSYCLMemObj->MRecord.get();
149+
for (Command *Cmd : Record->MReadLeafs) {
150+
EnqueueResultT Res;
151+
bool Enqueued = GraphProcessor::enqueueCommand(Cmd, Res);
152+
if (!Enqueued && EnqueueResultT::FAILED == Res.MResult)
153+
throw runtime_error("Enqueue process failed.");
154+
}
155+
for (Command *Cmd : Record->MWriteLeafs) {
156+
EnqueueResultT Res;
157+
bool Enqueued = GraphProcessor::enqueueCommand(Cmd, Res);
158+
if (!Enqueued && EnqueueResultT::FAILED == Res.MResult)
159+
throw runtime_error("Enqueue process failed.");
160+
}
148161
}
149162

150163
Scheduler::Scheduler() {

0 commit comments

Comments
 (0)