Skip to content

[SYCL][Graph] Deprecate dynamic_parameter constructors that take a graph #18199

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

Open
wants to merge 3 commits into
base: sycl
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,10 @@ dynamic_parameter(command_graph<graph_state::modifiable> graph,
|Constructs a dynamic parameter object that can be registered with command graph
nodes with an initial value.

[Note: This constructor which takes a graph has been deprecated and will be
replaced in the next ABI breaking window. The new constructor will not associate
a dynamic parameter with any specific graph. -- end note]

Parameters:

* `graph` - Graph containing the nodes which will have dynamic parameters.
Expand Down Expand Up @@ -1936,10 +1940,6 @@ a command-group submitted to a queue with is currently recording to a graph.
* Throws synchronously with error code `invalid` if this function is called from
a normal SYCL command-group submission.

* Throws synchronously with error code `invalid` if the graph which will be
associated with the graph node resulting from this command-group submission is
different from the one with which `dynamicParameterAcc` was created.

|
[source,c++]
----
Expand All @@ -1966,10 +1966,6 @@ a command-group submitted to a queue with is currently recording to a graph.
* Throws synchronously with error code `invalid` if this function is called from
a normal SYCL command-group submission.

* Throws synchronously with error code `invalid` if the graph which will be
associated with the graph node resulting from this command-group submission is
different from the one with which the dynamic_parameter was created.

|===

=== Thread Safety
Expand Down
40 changes: 40 additions & 0 deletions sycl/include/sycl/ext/oneapi/experimental/graph.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -504,10 +504,17 @@ class command_graph<graph_state::executable>
namespace detail {
class __SYCL_EXPORT dynamic_parameter_base {
public:
#ifdef __INTEL_PREVIEW_BREAKING_CHANGES
dynamic_parameter_base(size_t ParamSize, const void *Data);
dynamic_parameter_base();
#else
dynamic_parameter_base() = default;
#endif

dynamic_parameter_base(
sycl::ext::oneapi::experimental::command_graph<graph_state::modifiable>
Graph);

dynamic_parameter_base(
sycl::ext::oneapi::experimental::command_graph<graph_state::modifiable>
Graph,
Expand Down Expand Up @@ -550,10 +557,17 @@ class dynamic_work_group_memory_base
public:
dynamic_work_group_memory_base() = default;
#ifndef __SYCL_DEVICE_ONLY__
#ifdef __INTEL_PREVIEW_BREAKING_CHANGES

dynamic_work_group_memory_base(size_t Size)
: dynamic_parameter_base(), BufferSize(Size) {}
#endif
// TODO: Remove in next ABI breaking window
dynamic_work_group_memory_base(
experimental::command_graph<graph_state::modifiable> Graph, size_t Size)
: dynamic_parameter_base(Graph), BufferSize(Size) {}
#else
dynamic_work_group_memory_base(size_t Size) : BufferSize(Size) {}
dynamic_work_group_memory_base(
experimental::command_graph<graph_state::modifiable> /*Graph*/,
size_t Size)
Expand Down Expand Up @@ -586,6 +600,19 @@ __SYCL_TYPE(dynamic_work_group_memory) dynamic_work_group_memory
// closed.
dynamic_work_group_memory() = default;

#ifdef __INTEL_PREVIEW_BREAKING_CHANGES
/// Constructs a new dynamic_work_group_memory object.
/// @param Num Number of elements in the unbounded array DataT.
dynamic_work_group_memory(size_t Num)
: detail::dynamic_work_group_memory_base(
Num * sizeof(std::remove_extent_t<DataT>)) {}
#endif

#ifndef __INTEL_PREVIEW_BREAKING_CHANGES
__SYCL_DEPRECATED("Dynamic_work_group_memory constructors taking a graph "
"object have been deprecated "
"and will be removed in the next ABI breaking window.")
#endif
/// Constructs a new dynamic_work_group_memory object.
/// @param Graph The graph associated with this object.
/// @param Num Number of elements in the unbounded array DataT.
Expand Down Expand Up @@ -636,6 +663,19 @@ class dynamic_parameter : public detail::dynamic_parameter_base {
: sycl::detail::kernel_param_kind_t::kind_std_layout;

public:
#ifdef __INTEL_PREVIEW_BREAKING_CHANGES
/// Constructs a new dynamic parameter.
/// @param Graph The graph associated with this parameter.
/// @param Param A reference value for this parameter used for CTAD.
dynamic_parameter(const ValueT &Param)
: detail::dynamic_parameter_base(sizeof(ValueT), &Param) {}
#endif

#ifndef __INTEL_PREVIEW_BREAKING_CHANGES
__SYCL_DEPRECATED("Dynamic_parameter constructors taking a graph object have "
"been deprecated "
"and will be removed in the next ABI breaking window.")
#endif
/// Constructs a new dynamic parameter.
/// @param Graph The graph associated with this parameter.
/// @param Param A reference value for this parameter used for CTAD.
Expand Down
18 changes: 10 additions & 8 deletions sycl/source/detail/graph_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1969,16 +1969,18 @@ void executable_command_graph::update(const std::vector<node> &Nodes) {
impl->update(NodeImpls);
}

dynamic_parameter_base::dynamic_parameter_base(
command_graph<graph_state::modifiable> Graph)
: impl(std::make_shared<dynamic_parameter_impl>(
sycl::detail::getSyclObjImpl(Graph))) {}
#ifdef __INTEL_PREVIEW_BREAKING_CHANGES

dynamic_parameter_base::dynamic_parameter_base()
: impl(std::make_shared<dynamic_parameter_impl>()) {}
#endif

dynamic_parameter_base::dynamic_parameter_base(
command_graph<graph_state::modifiable>)
: impl(std::make_shared<dynamic_parameter_impl>()) {}
dynamic_parameter_base::dynamic_parameter_base(
command_graph<graph_state::modifiable> Graph, size_t ParamSize,
const void *Data)
: impl(std::make_shared<dynamic_parameter_impl>(
sycl::detail::getSyclObjImpl(Graph), ParamSize, Data)) {}
command_graph<graph_state::modifiable>, size_t ParamSize, const void *Data)
: impl(std::make_shared<dynamic_parameter_impl>(ParamSize, Data)) {}

void dynamic_parameter_base::updateValue(const void *NewValue, size_t Size) {
impl->updateValue(NewValue, Size);
Expand Down
18 changes: 6 additions & 12 deletions sycl/source/detail/graph_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1485,23 +1485,19 @@ class exec_graph_impl {

class dynamic_parameter_impl {
public:
dynamic_parameter_impl(std::shared_ptr<graph_impl> GraphImpl)
: MGraph(GraphImpl),
MID(NextAvailableID.fetch_add(1, std::memory_order_relaxed)) {}
dynamic_parameter_impl()
: MID(NextAvailableID.fetch_add(1, std::memory_order_relaxed)) {}

dynamic_parameter_impl(std::shared_ptr<graph_impl> GraphImpl,
size_t ParamSize, const void *Data)
: MGraph(GraphImpl), MValueStorage(ParamSize),
dynamic_parameter_impl(size_t ParamSize, const void *Data)
: MValueStorage(ParamSize),
MID(NextAvailableID.fetch_add(1, std::memory_order_relaxed)) {
std::memcpy(MValueStorage.data(), Data, ParamSize);
}

/// sycl_ext_oneapi_raw_kernel_arg constructor
/// Parameter size is taken from member of raw_kernel_arg object.
dynamic_parameter_impl(std::shared_ptr<graph_impl> GraphImpl, size_t,
raw_kernel_arg *Data)
: MGraph(GraphImpl),
MID(NextAvailableID.fetch_add(1, std::memory_order_relaxed)) {
dynamic_parameter_impl(size_t, raw_kernel_arg *Data)
: MID(NextAvailableID.fetch_add(1, std::memory_order_relaxed)) {
size_t RawArgSize = Data->MArgSize;
const void *RawArgData = Data->MArgData;
MValueStorage.reserve(RawArgSize);
Expand Down Expand Up @@ -1594,8 +1590,6 @@ class dynamic_parameter_impl {
std::vector<std::pair<std::weak_ptr<node_impl>, int>> MNodes;
// Dynamic command-groups which will be updated
std::vector<DynamicCGInfo> MDynCGs;

std::weak_ptr<graph_impl> MGraph;
std::vector<std::byte> MValueStorage;

private:
Expand Down
6 changes: 0 additions & 6 deletions sycl/source/handler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2158,12 +2158,6 @@ void handler::registerDynamicParameter(
}

auto Paraimpl = detail::getSyclObjImpl(DynamicParamBase);
if (Paraimpl->MGraph.lock() != this->impl->MGraph) {
throw sycl::exception(
make_error_code(errc::invalid),
"Cannot use a Dynamic Parameter with a node associated with a graph "
"other than the one it was created with.");
}
impl->MDynamicParameters.emplace_back(Paraimpl.get(), ArgIndex);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}

// Requires constructors that don't take a graph which is currently guarded by
// the breaking changes macro
// REQUIRES: preview-mode

// Tests using dynamic_work_group_memory in a whole graph update graph.

#include "../graph_common.hpp"
#include <sycl/group_barrier.hpp>

int main() {
queue Queue{};

using T = int;
constexpr int LocalSize{16};

T *Ptr = malloc_device<T>(Size, Queue);
std::vector<T> HostData(Size);
std::vector<T> HostOutputCompare(Size, LocalSize * LocalSize);

Queue.memset(Ptr, 0, Size * sizeof(T)).wait();

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

exp_ext::dynamic_work_group_memory<T[]> DynLocalMem(LocalSize);

auto KernelLambda = [=](nd_item<1> Item) {
size_t GlobalID = Item.get_global_id();
auto LocalRange = Item.get_local_range(0);

auto LocalMem = DynLocalMem.get();

LocalMem[Item.get_local_id()] = LocalRange;
group_barrier(Item.get_group());

for (size_t i{0}; i < LocalRange; ++i) {
Ptr[GlobalID] += LocalMem[i];
}
};

nd_range<1> NDrangeA{Size, LocalSize};
GraphA.add([&](handler &CGH) { CGH.parallel_for(NDrangeA, KernelLambda); });

auto GraphExecA = GraphA.finalize();
Queue.ext_oneapi_graph(GraphExecA).wait();

Queue.copy(Ptr, HostData.data(), Size).wait();
for (size_t i = 0; i < Size; i++) {
assert(check_value(i, HostData[i], HostOutputCompare[i], "HostData"));
}

constexpr int NewLocalSize{64};
DynLocalMem.update(NewLocalSize);
exp_ext::command_graph GraphB{Queue.get_context(), Queue.get_device()};

nd_range<1> NDrangeB{Size, NewLocalSize};
GraphB.add([&](handler &CGH) { CGH.parallel_for(NDrangeB, KernelLambda); });

auto GraphExecB = GraphB.finalize(exp_ext::property::graph::updatable{});
GraphExecB.update(GraphA);

Queue.memset(Ptr, 0, Size * sizeof(T)).wait();
Queue.ext_oneapi_graph(GraphExecB).wait();

Queue.copy(Ptr, HostData.data(), Size).wait();
for (size_t i = 0; i < Size; i++) {
assert(check_value(i, HostData[i], HostOutputCompare[i], "HostData"));
}

return 0;
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
2 changes: 1 addition & 1 deletion sycl/test-e2e/Graph/Update/update_before_finalize.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
2 changes: 1 addition & 1 deletion sycl/test-e2e/Graph/Update/update_nullptr.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %{build} -o %t.out
// RUN: %{build} -Wno-error=deprecated-declarations -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 %}
Expand Down
Loading