From caa70586c85d40f524500100c4550a84b5e4e80c Mon Sep 17 00:00:00 2001 From: Maxime France-Pillois Date: Thu, 21 Dec 2023 16:21:41 +0000 Subject: [PATCH 01/12] [SYCL][Graph] HIP Support testing Co-authored-by: Andrey Alekseenko --- sycl/plugins/unified_runtime/CMakeLists.txt | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/sycl/plugins/unified_runtime/CMakeLists.txt b/sycl/plugins/unified_runtime/CMakeLists.txt index 1ce7db18e0025..7a0b2042521a4 100644 --- a/sycl/plugins/unified_runtime/CMakeLists.txt +++ b/sycl/plugins/unified_runtime/CMakeLists.txt @@ -56,14 +56,9 @@ endif() if(SYCL_PI_UR_USE_FETCH_CONTENT) include(FetchContent) - set(UNIFIED_RUNTIME_REPO "https://github.com/oneapi-src/unified-runtime.git") - # commit 8d1486a607666763413fea3c70b74a3dd8f73c0d - # Author: aarongreig - # Date: Mon Dec 18 13:15:43 2023 +0000 - # Merge pull request #939 from steffenlarsen/steffen/virtual_mem_adapters - # [UR][CUDA][L0][HIP] Add virtual memory adapter implementations - set(UNIFIED_RUNTIME_TAG 8d1486a607666763413fea3c70b74a3dd8f73c0d) - + set(UNIFIED_RUNTIME_REPO "https://github.com/bensuo/unified-runtime.git") + set(UNIFIED_RUNTIME_TAG cmdbuf-hip-support) + if(SYCL_PI_UR_OVERRIDE_FETCH_CONTENT_REPO) set(UNIFIED_RUNTIME_REPO "${SYCL_PI_UR_OVERRIDE_FETCH_CONTENT_REPO}") endif() From 816cfd3986bd98482c21fda8d011f21c7c24b4bc Mon Sep 17 00:00:00 2001 From: Maxime France-Pillois Date: Thu, 21 Dec 2023 15:08:53 +0000 Subject: [PATCH 02/12] [SYCL][Graph] Fix OpenCL backend test fails with CPU device Adds missing variable initializations. Temporary disable `work_group_size_prop.cpp` because the failure results from a bug in the emulation layer. --- sycl/test-e2e/Graph/Explicit/work_group_size_prop.cpp | 8 ++++++-- sycl/test-e2e/Graph/RecordReplay/dotp_in_order.cpp | 1 + .../Graph/RecordReplay/dotp_in_order_with_empty_nodes.cpp | 1 + sycl/test-e2e/Graph/RecordReplay/dotp_multiple_queues.cpp | 1 + sycl/test-e2e/Graph/RecordReplay/work_group_size_prop.cpp | 8 ++++++-- 5 files changed, 15 insertions(+), 4 deletions(-) diff --git a/sycl/test-e2e/Graph/Explicit/work_group_size_prop.cpp b/sycl/test-e2e/Graph/Explicit/work_group_size_prop.cpp index efc03f077856e..60cdb64545aea 100644 --- a/sycl/test-e2e/Graph/Explicit/work_group_size_prop.cpp +++ b/sycl/test-e2e/Graph/Explicit/work_group_size_prop.cpp @@ -5,8 +5,12 @@ // // CHECK-NOT: LEAK -// Temporarily disabled for CUDA. -// XFAIL: cuda +// Temporarily disabled for CUDA and OpenCL +// The OpenCL emulation layer does not return `CL_INVALID_WORK_GROUP_SIZE` as it +// should. So the Sycl graph support cannot correctly catch the error and throw +// the approriate exception for negative test. An issue has been reported +// https://github.com/bashbaug/SimpleOpenCLSamples/issues/95 +// XFAIL: cuda, opencl // Note: failing negative test with HIP in the original test // TODO: disable hip when HIP backend will be supported by Graph diff --git a/sycl/test-e2e/Graph/RecordReplay/dotp_in_order.cpp b/sycl/test-e2e/Graph/RecordReplay/dotp_in_order.cpp index 9e7bd6ff6125d..6797d32d18290 100644 --- a/sycl/test-e2e/Graph/RecordReplay/dotp_in_order.cpp +++ b/sycl/test-e2e/Graph/RecordReplay/dotp_in_order.cpp @@ -22,6 +22,7 @@ int main() { exp_ext::command_graph Graph{Queue.get_context(), Queue.get_device()}; int *Dotp = malloc_device(1, Queue); + Queue.memset(Dotp, 0, sizeof(int)).wait(); const size_t N = 10; int *X = malloc_device(N, Queue); diff --git a/sycl/test-e2e/Graph/RecordReplay/dotp_in_order_with_empty_nodes.cpp b/sycl/test-e2e/Graph/RecordReplay/dotp_in_order_with_empty_nodes.cpp index 9abf37bdaf01b..01ff2476b845a 100644 --- a/sycl/test-e2e/Graph/RecordReplay/dotp_in_order_with_empty_nodes.cpp +++ b/sycl/test-e2e/Graph/RecordReplay/dotp_in_order_with_empty_nodes.cpp @@ -24,6 +24,7 @@ int main() { exp_ext::command_graph Graph{Queue.get_context(), Queue.get_device()}; int *Dotp = malloc_device(1, Queue); + Queue.memset(Dotp, 0, sizeof(int)).wait(); const size_t N = 10; int *X = malloc_device(N, Queue); diff --git a/sycl/test-e2e/Graph/RecordReplay/dotp_multiple_queues.cpp b/sycl/test-e2e/Graph/RecordReplay/dotp_multiple_queues.cpp index c9bc113cc9abc..f518f5f0e4b53 100644 --- a/sycl/test-e2e/Graph/RecordReplay/dotp_multiple_queues.cpp +++ b/sycl/test-e2e/Graph/RecordReplay/dotp_multiple_queues.cpp @@ -24,6 +24,7 @@ int main() { exp_ext::command_graph Graph{QueueA.get_context(), QueueA.get_device()}; int *Dotp = malloc_device(1, QueueA); + QueueA.memset(Dotp, 0, sizeof(int)).wait(); const size_t N = 10; int *X = malloc_device(N, QueueA); diff --git a/sycl/test-e2e/Graph/RecordReplay/work_group_size_prop.cpp b/sycl/test-e2e/Graph/RecordReplay/work_group_size_prop.cpp index 40c7f1d16e2fc..b0e9121806fa6 100644 --- a/sycl/test-e2e/Graph/RecordReplay/work_group_size_prop.cpp +++ b/sycl/test-e2e/Graph/RecordReplay/work_group_size_prop.cpp @@ -5,8 +5,12 @@ // // CHECK-NOT: LEAK -// Temporarily disabled for CUDA. -// XFAIL: cuda +// Temporarily disabled for CUDA and OpenCL +// The OpenCL emulation layer does not return `CL_INVALID_WORK_GROUP_SIZE` as it +// should. So the Sycl graph support cannot correctly catch the error and throw +// the approriate exception for negative test. An issue has been reported +// https://github.com/bashbaug/SimpleOpenCLSamples/issues/95 +// XFAIL: cuda, opencl // Note: failing negative test with HIP in the original test // TODO: disable hip when HIP backend will be supported by Graph From 9ed12b6ef70a4042195c6f995a125fee6afba700 Mon Sep 17 00:00:00 2001 From: Maxime France-Pillois Date: Fri, 22 Dec 2023 11:10:11 +0000 Subject: [PATCH 03/12] Disables unsupported test for hip + adds hip as supported in the test that checks backend support --- sycl/test-e2e/Graph/Explicit/work_group_size_prop.cpp | 3 +-- sycl/test-e2e/Graph/RecordReplay/work_group_size_prop.cpp | 3 +-- sycl/test-e2e/Graph/device_query.cpp | 3 ++- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/sycl/test-e2e/Graph/Explicit/work_group_size_prop.cpp b/sycl/test-e2e/Graph/Explicit/work_group_size_prop.cpp index 60cdb64545aea..ab28e4a90e1e6 100644 --- a/sycl/test-e2e/Graph/Explicit/work_group_size_prop.cpp +++ b/sycl/test-e2e/Graph/Explicit/work_group_size_prop.cpp @@ -10,9 +10,8 @@ // should. So the Sycl graph support cannot correctly catch the error and throw // the approriate exception for negative test. An issue has been reported // https://github.com/bashbaug/SimpleOpenCLSamples/issues/95 -// XFAIL: cuda, opencl +// XFAIL: cuda, opencl, hip // Note: failing negative test with HIP in the original test -// TODO: disable hip when HIP backend will be supported by Graph #define GRAPH_E2E_EXPLICIT diff --git a/sycl/test-e2e/Graph/RecordReplay/work_group_size_prop.cpp b/sycl/test-e2e/Graph/RecordReplay/work_group_size_prop.cpp index b0e9121806fa6..82c631a43f254 100644 --- a/sycl/test-e2e/Graph/RecordReplay/work_group_size_prop.cpp +++ b/sycl/test-e2e/Graph/RecordReplay/work_group_size_prop.cpp @@ -10,9 +10,8 @@ // should. So the Sycl graph support cannot correctly catch the error and throw // the approriate exception for negative test. An issue has been reported // https://github.com/bashbaug/SimpleOpenCLSamples/issues/95 -// XFAIL: cuda, opencl +// XFAIL: cuda, opencl, hip // Note: failing negative test with HIP in the original test -// TODO: disable hip when HIP backend will be supported by Graph #define GRAPH_E2E_RECORD_REPLAY diff --git a/sycl/test-e2e/Graph/device_query.cpp b/sycl/test-e2e/Graph/device_query.cpp index f1f2e680c323a..68dc85fce9332 100644 --- a/sycl/test-e2e/Graph/device_query.cpp +++ b/sycl/test-e2e/Graph/device_query.cpp @@ -20,7 +20,8 @@ int main() { auto Backend = Device.get_backend(); if ((Backend == backend::ext_oneapi_level_zero) || - (Backend == backend::ext_oneapi_cuda)) { + (Backend == backend::ext_oneapi_cuda) || + (Backend == backend::hip) { assert(SupportsGraphs == exp_ext::graph_support_level::native); } else if (Backend == backend::opencl) { // OpenCL backend support is conditional on the cl_khr_command_buffer From 8a15fa62daabc9b487d58b736fc202443cd073d5 Mon Sep 17 00:00:00 2001 From: Maxime France-Pillois Date: Fri, 22 Dec 2023 14:31:27 +0000 Subject: [PATCH 04/12] Fix hip backend name --- sycl/test-e2e/Graph/device_query.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sycl/test-e2e/Graph/device_query.cpp b/sycl/test-e2e/Graph/device_query.cpp index 68dc85fce9332..1d740242c8b2b 100644 --- a/sycl/test-e2e/Graph/device_query.cpp +++ b/sycl/test-e2e/Graph/device_query.cpp @@ -21,7 +21,7 @@ int main() { if ((Backend == backend::ext_oneapi_level_zero) || (Backend == backend::ext_oneapi_cuda) || - (Backend == backend::hip) { + (Backend == backend::ext_oneapi_hip) { assert(SupportsGraphs == exp_ext::graph_support_level::native); } else if (Backend == backend::opencl) { // OpenCL backend support is conditional on the cl_khr_command_buffer From 4954403cf329283dbb52af52e8ea4a6ade06ed6a Mon Sep 17 00:00:00 2001 From: Maxime France-Pillois Date: Fri, 22 Dec 2023 15:09:06 +0000 Subject: [PATCH 05/12] Typo --- sycl/test-e2e/Graph/device_query.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sycl/test-e2e/Graph/device_query.cpp b/sycl/test-e2e/Graph/device_query.cpp index 1d740242c8b2b..3513aa74fa5b7 100644 --- a/sycl/test-e2e/Graph/device_query.cpp +++ b/sycl/test-e2e/Graph/device_query.cpp @@ -21,7 +21,7 @@ int main() { if ((Backend == backend::ext_oneapi_level_zero) || (Backend == backend::ext_oneapi_cuda) || - (Backend == backend::ext_oneapi_hip) { + (Backend == backend::ext_oneapi_hip)) { assert(SupportsGraphs == exp_ext::graph_support_level::native); } else if (Backend == backend::opencl) { // OpenCL backend support is conditional on the cl_khr_command_buffer From 68bf06e5084b9a15e7281adb3d07ae5fe2dd1d23 Mon Sep 17 00:00:00 2001 From: Maxime France-Pillois Date: Tue, 2 Jan 2024 11:12:37 +0000 Subject: [PATCH 06/12] Updates design doc --- sycl/doc/design/CommandGraph.md | 23 ++++++++++++++++++- .../design/images/SYCL-Graph-Architecture.svg | 2 +- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/sycl/doc/design/CommandGraph.md b/sycl/doc/design/CommandGraph.md index 7c405d5ca791b..a2e635a5a95b0 100644 --- a/sycl/doc/design/CommandGraph.md +++ b/sycl/doc/design/CommandGraph.md @@ -208,7 +208,7 @@ Implementation of UR command-buffers for each of the supported SYCL 2020 backends. Backends which are implemented currently are: [Level Zero](#level-zero), -[CUDA](#cuda), and partial support for [OpenCL](#opencl). +[CUDA](#cuda), [HIP](#hip) and partial support for [OpenCL](#opencl). ### Level Zero @@ -312,6 +312,27 @@ An executable CUDA Graph, which contains all commands and synchronization information, is saved in the UR command-buffer to allow for efficient graph resubmission. +### HIP + +The HIP backend offers a Graph managemenet API very similar to CUDA Graph +feature for batching series of operations. +The SYCL Graph HIP backend implementation is therefore very similar to that of CUDA. + +UR commands (e.g. kernels) are mapped as graph nodes using the +[HIP Management API](https://docs.amd.com/projects/HIP/en/docs-5.5.0/doxygen/html/group___graph.html). +Synchronization between commands (UR sync-points) is implemented +using graph dependencies. +Executable HIP Graphs can be submitted to a HIP stream +in the same way as regular kernels. +The HIP backend enables enqueuing events to wait for into a stream. +It also allows signaling the completion of a submission with an event. +Therefore, submitting a UR command-buffer consists only of submitting to a stream +the executable HIP Graph that represent this series of operations. + +An executable HIP Graph, which contains all commands and synchronization +information, is saved in the UR command-buffer to allow for efficient +graph resubmission. + ### OpenCL SYCL-Graph is only enabled for an OpenCL backend when the diff --git a/sycl/doc/design/images/SYCL-Graph-Architecture.svg b/sycl/doc/design/images/SYCL-Graph-Architecture.svg index c554391f6544d..ffd3035495071 100644 --- a/sycl/doc/design/images/SYCL-Graph-Architecture.svg +++ b/sycl/doc/design/images/SYCL-Graph-Architecture.svg @@ -1,4 +1,4 @@ -
Application
Application
SYCL-Graph Extension API
SYCL-Graph Extension API
SYCL Runtime
SYCL Runtime
Unified Runtime + Command Buffer Extension
Unified Runtime + Command Buffer Extension
CUDA
CUDA
NVIDIA GPU
NVIDIA GPU
Level Zero
Level Zero
Intel CPU, GPU, FPGA, ...
Intel CPU, GPU,...
HIP
HIP
OpenCL cl_khr_command_buffer
OpenCL cl_khr_command_b...
AMD GPU
AMD GPU
CPU, GPU, FPGA, ...
CPU, GPU, FPG...
SYCL-Graph Architecture
SYCL-Graph Architecture


Application Layer
Application Layer
Implemented Backend
Implemented Backend
SYCL Runtime
SYCL Runtime
Future Backend Support
Future Backend Support
Legend
Legend
Partial Backend Support
Partial Backend Support
Text is not SVG - cannot display
\ No newline at end of file +
Application
Application
SYCL-Graph Extension API
SYCL-Graph Extension API
SYCL Runtime
SYCL Runtime
Unified Runtime + Command Buffer Extension
Unified Runtime + Command Buffer Extension
CUDA
CUDA
NVIDIA GPU
NVIDIA GPU
Level Zero
Level Zero
Intel CPU, GPU, FPGA, ...
Intel CPU, GPU,...
HIP
HIP
OpenCL cl_khr_command_buffer
OpenCL cl_khr_command_b...
AMD GPU
AMD GPU
CPU, GPU, FPGA, ...
CPU, GPU, FPG...
SYCL-Graph Architecture
SYCL-Graph Architecture


Application Layer
Application Layer
Implemented Backend
Implemented Backend
SYCL Runtime
SYCL Runtime
Legend
Legend
Partial Backend Support
Partial Backend Support
Text is not SVG - cannot display
\ No newline at end of file From 156b4b7d63843074348e3d7d3e9720ca72c148e1 Mon Sep 17 00:00:00 2001 From: Maxime France-Pillois Date: Mon, 15 Jan 2024 17:04:01 +0000 Subject: [PATCH 07/12] Adds debug print --- sycl/test-e2e/Graph/Inputs/buffer_fill.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sycl/test-e2e/Graph/Inputs/buffer_fill.cpp b/sycl/test-e2e/Graph/Inputs/buffer_fill.cpp index 351194dadda0f..5303df20436ff 100644 --- a/sycl/test-e2e/Graph/Inputs/buffer_fill.cpp +++ b/sycl/test-e2e/Graph/Inputs/buffer_fill.cpp @@ -78,6 +78,10 @@ int main() { host_accessor HostDataI8(BufferI8); for (int i = 0; i < N; i++) { assert(HostData[i] == Pattern); + if (HostDataI64[i] != PatternI64) { + std::cout << "HostDataI64[" << i << "] = " << HostDataI64[i] + << " == PatternI64 = " << PatternI64 << std::endl; + } assert(HostDataI64[i] == PatternI64); assert(HostDataI32[i] == PatternI32); assert(HostDataI16[i] == PatternI16); From 24b67d818a54cc5dc5791068c8d3883c7ac7edfe Mon Sep 17 00:00:00 2001 From: Maxime France-Pillois Date: Tue, 16 Jan 2024 10:20:30 +0000 Subject: [PATCH 08/12] Removes debug print --- sycl/test-e2e/Graph/Inputs/buffer_fill.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sycl/test-e2e/Graph/Inputs/buffer_fill.cpp b/sycl/test-e2e/Graph/Inputs/buffer_fill.cpp index 5303df20436ff..351194dadda0f 100644 --- a/sycl/test-e2e/Graph/Inputs/buffer_fill.cpp +++ b/sycl/test-e2e/Graph/Inputs/buffer_fill.cpp @@ -78,10 +78,6 @@ int main() { host_accessor HostDataI8(BufferI8); for (int i = 0; i < N; i++) { assert(HostData[i] == Pattern); - if (HostDataI64[i] != PatternI64) { - std::cout << "HostDataI64[" << i << "] = " << HostDataI64[i] - << " == PatternI64 = " << PatternI64 << std::endl; - } assert(HostDataI64[i] == PatternI64); assert(HostDataI32[i] == PatternI32); assert(HostDataI16[i] == PatternI16); From 05d24936d1b32ef28ebf012d088beb75d2a2bc08 Mon Sep 17 00:00:00 2001 From: Maxime France-Pillois Date: Tue, 16 Jan 2024 12:13:32 +0000 Subject: [PATCH 09/12] Update UR CMakeFile --- sycl/plugins/unified_runtime/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sycl/plugins/unified_runtime/CMakeLists.txt b/sycl/plugins/unified_runtime/CMakeLists.txt index c651a04e2a469..7ffacb41a766f 100644 --- a/sycl/plugins/unified_runtime/CMakeLists.txt +++ b/sycl/plugins/unified_runtime/CMakeLists.txt @@ -57,7 +57,7 @@ if(SYCL_PI_UR_USE_FETCH_CONTENT) include(FetchContent) set(UNIFIED_RUNTIME_REPO "https://github.com/bensuo/unified-runtime.git") - set(UNIFIED_RUNTIME_TAG cmdbuf-hip-support) + set(UNIFIED_RUNTIME_TAG cmdbuf-support-hip) if(SYCL_PI_UR_OVERRIDE_FETCH_CONTENT_REPO) set(UNIFIED_RUNTIME_REPO "${SYCL_PI_UR_OVERRIDE_FETCH_CONTENT_REPO}") From 0a2c4852feed37b7429989cd1c7e889b392fa09d Mon Sep 17 00:00:00 2001 From: Maxime France-Pillois Date: Fri, 19 Jan 2024 12:26:16 +0000 Subject: [PATCH 10/12] Fixes merge issue --- sycl/test-e2e/Graph/Explicit/work_group_size_prop.cpp | 2 +- sycl/test-e2e/Graph/RecordReplay/work_group_size_prop.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sycl/test-e2e/Graph/Explicit/work_group_size_prop.cpp b/sycl/test-e2e/Graph/Explicit/work_group_size_prop.cpp index 505b5e78c49eb..f41d29264d6f7 100644 --- a/sycl/test-e2e/Graph/Explicit/work_group_size_prop.cpp +++ b/sycl/test-e2e/Graph/Explicit/work_group_size_prop.cpp @@ -10,7 +10,7 @@ // should. So the Sycl graph support cannot correctly catch the error and throw // the approriate exception for negative test. An issue has been reported // https://github.com/bashbaug/SimpleOpenCLSamples/issues/95 -// XFAIL: cuda +// XFAIL: cuda, hip // UNSUPPORTED: opencl // Note: failing negative test with HIP in the original test diff --git a/sycl/test-e2e/Graph/RecordReplay/work_group_size_prop.cpp b/sycl/test-e2e/Graph/RecordReplay/work_group_size_prop.cpp index 2970b7efa3260..ae5929d9541e7 100644 --- a/sycl/test-e2e/Graph/RecordReplay/work_group_size_prop.cpp +++ b/sycl/test-e2e/Graph/RecordReplay/work_group_size_prop.cpp @@ -10,7 +10,7 @@ // should. So the Sycl graph support cannot correctly catch the error and throw // the approriate exception for negative test. An issue has been reported // https://github.com/bashbaug/SimpleOpenCLSamples/issues/95 -// XFAIL: cuda +// XFAIL: cuda, hip // UNSUPPORTED: opencl // Note: failing negative test with HIP in the original test From 6dea501db095579769b0092e4244f8689cb8d304 Mon Sep 17 00:00:00 2001 From: Ewan Crawford Date: Mon, 19 Feb 2024 12:42:19 +0000 Subject: [PATCH 11/12] Check for shared allocation support --- sycl/test-e2e/Graph/Explicit/enqueue_ordering.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sycl/test-e2e/Graph/Explicit/enqueue_ordering.cpp b/sycl/test-e2e/Graph/Explicit/enqueue_ordering.cpp index 04da3eaa5414b..46e3c2b850007 100644 --- a/sycl/test-e2e/Graph/Explicit/enqueue_ordering.cpp +++ b/sycl/test-e2e/Graph/Explicit/enqueue_ordering.cpp @@ -18,6 +18,10 @@ int main() { return 0; } + if (!Queue.get_device().has(sycl::aspect::usm_shared_allocations)) { + return 0; + } + exp_ext::command_graph Graph{Queue.get_context(), Queue.get_device()}; const size_t N = 10; From de18a505acb24bd2ec9ecc5a3f0f22838b35870f Mon Sep 17 00:00:00 2001 From: Maxime France-Pillois Date: Thu, 29 Feb 2024 12:22:29 +0000 Subject: [PATCH 12/12] Add REQUIRES to check usm_shared_allocations aspect --- sycl/test-e2e/Graph/Explicit/enqueue_ordering.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/sycl/test-e2e/Graph/Explicit/enqueue_ordering.cpp b/sycl/test-e2e/Graph/Explicit/enqueue_ordering.cpp index 46e3c2b850007..da3ccd2329ec9 100644 --- a/sycl/test-e2e/Graph/Explicit/enqueue_ordering.cpp +++ b/sycl/test-e2e/Graph/Explicit/enqueue_ordering.cpp @@ -1,3 +1,4 @@ +// REQUIRES: aspect-usm_shared_allocations // RUN: %{build} -o %t.out // RUN: %{run} %t.out // Extra run to check for leaks in Level Zero using UR_L0_LEAKS_DEBUG @@ -18,10 +19,6 @@ int main() { return 0; } - if (!Queue.get_device().has(sycl::aspect::usm_shared_allocations)) { - return 0; - } - exp_ext::command_graph Graph{Queue.get_context(), Queue.get_device()}; const size_t N = 10;