Skip to content

[SYCL][Graph] Adding experimental implementation of SYCL Command Graph extension #9375

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 67 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
2ae2368
[SYCL][Graphs] Squashed commit of remaining runtime changes
Bensuo Jun 22, 2023
4f9ea64
[SYCL][Graph] Remove unused CommandType value
Bensuo Jun 22, 2023
67475ca
[SYCL][Graph] Revert change to isInteropHostTask
Bensuo Jun 22, 2023
b4c24ba
[SYCL][Graph] Fix formatting in graph_impl.hpp
Bensuo Jun 22, 2023
be7c202
Merge pull request #237 from reble/julianmi/fix-double-root-nodes
julianmi Jun 26, 2023
3d01d48
Expand unittests
julianmi Jun 27, 2023
8c88084
[SYCL][Graph] Support for read and write for one-dimensional and 2d b…
mfrancepillois Jun 27, 2023
8578f21
[SYCL] Fix clang build (#242)
EwanC Jun 27, 2023
4a09be0
Replace `RT` namespace with `sycl::detail::pi`
EwanC Jun 29, 2023
d170f32
Fix clang-10 compilation issue
EwanC Jun 29, 2023
727b234
Restore scheduler regression test
EwanC Jun 29, 2023
e7c8edd
Merge branch 'sycl' into sycl-graph-patch-3
EwanC Jun 29, 2023
0b9c175
Merge branch 'sycl' into sycl-graph-patch-3
EwanC Jul 4, 2023
4d780af
Remove std::move on temporary
EwanC Jul 4, 2023
6e4d3f9
Fix issues from merge
EwanC Jul 4, 2023
8951bca
Fix clang-format issue
EwanC Jul 4, 2023
64b8eb9
Update windows symbols test
EwanC Jul 5, 2023
65e8143
Fixup PI inaccuracies
EwanC Jul 5, 2023
0dfdf4f
Missing offsets in Level Zero command-buffr buffer copy
EwanC Jul 5, 2023
63cb32c
Remove characters incorrectly copy/pasted
EwanC Jul 5, 2023
f98fd78
Merge branch 'sycl' into sycl-graph-patch-3
EwanC Jul 5, 2023
e4f89c1
[SYCL][Graphs] Squashed commit of E2E tests
Bensuo Jul 5, 2023
cb05754
Report "ur_exp_command_buffer" as Level Zero device extension
EwanC Jul 5, 2023
f6a9b16
[SYCL][Graph] Fix in_order queue with empty nodes
mfrancepillois Jul 5, 2023
21ae184
Fixup formatting and doxy comments
EwanC Jul 5, 2023
de12fa0
Fix clang-format
EwanC Jul 5, 2023
d7a78c8
[SYCL][Graph] Add event and inorder/empty tests
Bensuo Jul 5, 2023
911a67d
Merge branch 'sycl' into sycl-graph-patch-3
EwanC Jul 6, 2023
732cb04
clang-format pi_level_zero.cpp
EwanC Jul 6, 2023
4bcf0ff
[SYCL][Graph] Fix In-order queue unitests single context bug
mfrancepillois Jul 6, 2023
3ee7743
[SYCL][Graph] Implement exeption throwing for inconsistent context or…
mfrancepillois Jul 6, 2023
e614936
[SYCL][Graph] Add exceptions on invalid event and queue usage
Bensuo Jul 6, 2023
547fdac
Update Windows Symbols
EwanC Jul 7, 2023
eadc0c1
Update unittest `CommandGraphTest.BeginEndRecording`
EwanC Jul 7, 2023
b054c63
Merge branch 'sycl' into sycl-graph-patch-3
EwanC Jul 11, 2023
575384d
Merge remote-tracking branch 'origin/sycl' into sycl-graph-patch-4
Bensuo Jul 11, 2023
83b5453
[SYCL][Graph] Add new tests
Bensuo Jul 11, 2023
74e7203
[SYCL] Change `graph_support_level` namespace (#256)
EwanC Jul 12, 2023
58efbfd
[SYCL][Graph] Address reviewer feedback
Bensuo Jul 12, 2023
9b86e94
[SYCL][Graph] Fix clang-format for e2e tests (#261)
reble Jul 12, 2023
44610bf
Merge remote-tracking branch 'origin/sycl-graph-patch-3' into sycl-gr…
reble Jul 13, 2023
d029eef
Merge remote-tracking branch 'origin/sycl' into sycl-graph-release-2
reble Jul 13, 2023
86fd94f
[SYCL] Change `graph_support_level` namespace (#256)
Bensuo Jul 14, 2023
e7a996b
[SYCL][Graph] Fix issue with CUDA device in E2E test (#259)
Bensuo Jul 13, 2023
f6d2310
Merge branch 'sycl-graph-patch-4' into sycl-graph-release
Bensuo Jul 14, 2023
b6015c3
Merge branch 'sycl' into sycl-graph-patch-4
EwanC Jul 17, 2023
b78844b
[SYCL] Disable failing Windows tests
EwanC Jul 17, 2023
39e3fdb
[SYCL][Graph] Deleting unsupported tests (#266)
reble Jul 18, 2023
c7fff4e
[SYCL][Graph] Removed outdated test
EwanC Jul 18, 2023
b1a5b47
[SYCL][Graph] Use same context for e2e queues
EwanC Jul 18, 2023
cfada17
[SYCL][Graph] Unify tests which uses common header kernel functions
Bensuo Jul 19, 2023
5cc245a
[SYCL][Graph] Remove mention of API from input comments
Bensuo Jul 19, 2023
760c672
[SYCL][Graph] Update test comments
Bensuo Jul 19, 2023
83f3edb
[SYCL][Graph] Fix add_node failing to compile with no Deps passed
Bensuo Jul 19, 2023
33e6d76
Merge remote-tracking branch 'origin/sycl' into sycl-graph-release
reble Jul 19, 2023
3a67069
Merge remote-tracking branch 'origin/ben/unify-tests' into sycl-graph…
reble Jul 19, 2023
0cc284a
[SYCL][Graph] Deleting unsupported tests (#266)
reble Jul 18, 2023
340861e
Fix issues introduced by merge 33e6d76
reble Jul 19, 2023
cad1b15
[SYCL][Graph] Unify tests which uses common header kernel functions
Bensuo Jul 19, 2023
c71078c
[SYCL][Graph] Remove mention of API from input comments
Bensuo Jul 19, 2023
fd34dde
[SYCL][Graph] Update test comments
Bensuo Jul 19, 2023
78e47ca
[SYCL][Graph] Fix add_node failing to compile with no Deps passed
Bensuo Jul 19, 2023
682899a
[SYCL][Graph] Remove extra debug run comment
Bensuo Jul 19, 2023
324616c
[SYCL] Unify more tests
Bensuo Jul 20, 2023
e3a4106
[SYCL][Graph] Replace warning with assert in add_node(s)
Bensuo Jul 24, 2023
7778432
[SYCL][Graph] Unify more tests
Bensuo Jul 24, 2023
b5c10c3
Merge remote-tracking branch 'origin/ben/unify-tests' into sycl-graph…
reble Jul 25, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/add_nodes_after_finalize.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/add_nodes_after_finalize.cpp"
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/basic_buffer.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/basic_buffer.cpp"
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/basic_usm.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/basic_usm.cpp"
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/basic_usm_host.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/basic_usm_host.cpp"
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/basic_usm_mixed.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/basic_usm_mixed.cpp"
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/basic_usm_shared.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/basic_usm_shared.cpp"
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/basic_usm_system.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/basic_usm_system.cpp"
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/buffer_copy.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/buffer_copy.cpp"
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/buffer_copy_2d.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/buffer_copy_2d.cpp"
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/buffer_copy_host2target.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/buffer_copy_host2target.cpp"
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/buffer_copy_host2target_2d.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/buffer_copy_host2target_2d.cpp"
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/buffer_copy_host2target_offset.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/buffer_copy_host2target_offset.cpp"
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/buffer_copy_offsets.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/buffer_copy_offsets.cpp"
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/buffer_copy_target2host.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/buffer_copy_target2host.cpp"
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/buffer_copy_target2host_2d.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/buffer_copy_target2host_2d.cpp"
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/buffer_copy_target2host_offset.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/buffer_copy_target2host_offset.cpp"
11 changes: 11 additions & 0 deletions sycl/test-e2e/Graph/Explicit/buffer_ordering.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/buffer_ordering.cpp"
49 changes: 49 additions & 0 deletions sycl/test-e2e/Graph/Explicit/depends_on.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

// Tests that an event returned from adding a graph node using the queue
// recording API can be passed to `handler::depends_on` inside a node
// added using the explicit API. This should create a graph edge.

#include "../graph_common.hpp"

int main() {

queue Queue{gpu_selector_v};

exp_ext::command_graph Graph{Queue.get_context(), Queue.get_device()};

const size_t N = 10;
float *Arr = malloc_device<float>(N, Queue);

Graph.begin_recording(Queue);
// `Event` corresponds to a graph node
event Event = Queue.submit([&](handler &CGH) {
CGH.parallel_for(range<1>{N}, [=](id<1> idx) { Arr[idx] = 42.0f; });
});
Graph.end_recording(Queue);

Graph.add([&](handler &CGH) {
CGH.depends_on(Event); // creates edge to recorded graph node
CGH.parallel_for(range<1>{N}, [=](id<1> idx) { Arr[idx] *= 2.0f; });
});

auto ExecGraph = Graph.finalize();

Queue.submit([&](handler &CGH) { CGH.ext_oneapi_graph(ExecGraph); }).wait();

constexpr float ref = 42.0f * 2.0f;
std::vector<float> Output(N);
Queue.memcpy(Output.data(), Arr, N * sizeof(float)).wait();
for (int i = 0; i < N; i++)
assert(Output[i] == ref);

sycl::free(Arr, Queue);

return 0;
}
14 changes: 14 additions & 0 deletions sycl/test-e2e/Graph/Explicit/dotp_buffer_reduction.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

// Expected fail as reduction support is not complete.
// XFAIL: *

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/dotp_buffer_reduction.cpp"
82 changes: 82 additions & 0 deletions sycl/test-e2e/Graph/Explicit/dotp_usm_reduction.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

// Expected fail as reduction support is not complete.
// XFAIL: *

// Tests constructing a graph using the explicit API to perform a dotp
// operation which uses a sycl reduction with USM memory.

#include "../graph_common.hpp"

int main() {
queue Queue{gpu_selector_v};

exp_ext::command_graph Graph{Queue.get_context(), Queue.get_device()};

float *Dotp = malloc_device<float>(1, Queue);

const size_t N = 10;
float *X = malloc_device<float>(N, Queue);
float *Y = malloc_device<float>(N, Queue);
float *Z = malloc_device<float>(N, Queue);

auto NodeI = Graph.add([&](handler &CGH) {
CGH.parallel_for(N, [=](id<1> it) {
const size_t i = it[0];
X[i] = 1.0f;
Y[i] = 2.0f;
Z[i] = 3.0f;
});
});

auto NodeA = Graph.add(
[&](handler &CGH) {
CGH.parallel_for(range<1>{N}, [=](id<1> it) {
const size_t i = it[0];
X[i] = Alpha * X[i] + Beta * Y[i];
});
},
{exp_ext::property::node::depends_on(NodeI)});

auto NodeB = Graph.add(
[&](handler &CGH) {
CGH.parallel_for(range<1>{N}, [=](id<1> it) {
const size_t i = it[0];
Z[i] = Gamma * Z[i] + Beta * Y[i];
});
},
{exp_ext::property::node::depends_on(NodeI)});

auto NodeC = Graph.add(
[&](handler &CGH) {
CGH.parallel_for(range<1>{N}, reduction(Dotp, 0.0f, std::plus()),
[=](id<1> it, auto &Sum) {
const size_t i = it[0];
Sum += X[i] * Z[i];
});
},
{exp_ext::property::node::depends_on(NodeA, NodeB)});

auto ExecGraph = Graph.finalize();

// Using shortcut for executing a graph of commands
Queue.ext_oneapi_graph(ExecGraph).wait();

float Output;
Queue.memcpy(&Output, Dotp, sizeof(float)).wait();

assert(Output == dotp_reference_result(N));

sycl::free(Dotp, Queue);
sycl::free(X, Queue);
sycl::free(Y, Queue);
sycl::free(Z, Queue);

return 0;
}
14 changes: 14 additions & 0 deletions sycl/test-e2e/Graph/Explicit/double_buffer.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// REQUIRES: level_zero, gpu
// RUN: %{build} -o %t.out
// RUN: %{run} %t.out
// Extra run to check for leaks in Level Zero using ZE_DEBUG
// RUN: %if ext_oneapi_level_zero %{env ZE_DEBUG=4 %{run} %t.out 2>&1 | FileCheck %s %}
//
// CHECK-NOT: LEAK

// Expected fail as executable graph update isn't implemented yet
// XFAIL: *

#define GRAPH_E2E_EXPLICIT

#include "../Inputs/double_buffer.cpp"
Loading