Skip to content

Commit

Permalink
[SYCL][Graph] Regression Test for in-order queue submission
Browse files Browse the repository at this point in the history
  • Loading branch information
EwanC committed Dec 9, 2024
1 parent 6dd3525 commit 6902512
Showing 1 changed file with 60 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using UR_L0_LEAKS_DEBUG
// RUN: %if level_zero %{env SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=0 %{l0_leak_check} %{run} %t.out 2>&1 | FileCheck %s --implicit-check-not=LEAK %}
// Extra run to check for immediate-command-list in Level Zero
// RUN: %if level_zero %{env SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1 %{l0_leak_check} %{run} %t.out 2>&1 | FileCheck %s --implicit-check-not=LEAK %}

#include "../graph_common.hpp"

#include <sycl/properties/all_properties.hpp>

int main() {
queue Queue1{sycl::property::queue::in_order{}};
queue Queue2(Queue1.get_context(), Queue1.get_device(),
sycl::property::queue::in_order());
exp_ext::command_graph Graph{Queue1};

std::vector<float> Data(Size, 0.0f);

float *DevicePtr = sycl::malloc_device<float>(Size, Queue1);

Graph.begin_recording(Queue1);

Queue1.submit([&](handler &CGH) {
CGH.memcpy(DevicePtr, Data.data(), Size * sizeof(float));
});

Queue1.submit([&](handler &CGH) {
CGH.parallel_for(sycl::range<1>(Size),
[=](sycl::id<1> Id) { DevicePtr[Id] += 1.0f; });
});

Graph.end_recording(Queue1);

auto GraphExec = Graph.finalize();

auto Event = Queue1.ext_oneapi_graph(GraphExec);

Queue2.submit([&](sycl::handler &CGH) {
#if 1 // Setting to zero hides the fail
CGH.depends_on({Event});
#endif

#if 1 // Fail only appears with host-task
CGH.host_task([=]() { volatile float b = 3.0; });
#else
CGH.mem_advise(DevicePtr, Size * sizeof(float), 0);
#endif
});

std::vector<float> HostData(Size, 0.0f);
Queue1.memcpy(HostData.data(), DevicePtr, Size * sizeof(float)).wait();
for (size_t i = 0; i < Size; ++i) {
assert(HostData[i] == 1.0f);
}

sycl::free(DevicePtr, Queue1);

return 0;
}

0 comments on commit 6902512

Please sign in to comment.