From 8bd083f29387681e635fc40d787a9a1926099fdd Mon Sep 17 00:00:00 2001 From: Oleksandr Pavlyk Date: Tue, 28 Sep 2021 13:18:06 -0500 Subject: [PATCH 1/4] Removed sycl::vector_class, use std::vector throughout sycl::vector_class is deprecated in 2021.4, and completly removed in open source compiler. The packages compiles using open source SYCL compiler after these changes. --- .../source/dpctl_sycl_context_interface.cpp | 9 +++++---- .../source/dpctl_sycl_device_interface.cpp | 17 +++++++++-------- dpctl-capi/source/dpctl_sycl_device_manager.cpp | 5 +++-- .../dpctl_sycl_device_selector_interface.cpp | 2 +- .../source/dpctl_sycl_event_interface.cpp | 5 +++-- .../source/dpctl_sycl_platform_interface.cpp | 7 ++++--- dpctl-capi/source/dpctl_sycl_queue_manager.cpp | 2 +- dpctl-capi/source/dpctl_vector_templ.cpp | 11 ++++++----- .../tests/test_sycl_context_interface.cpp | 3 ++- dpctl-capi/tests/test_sycl_event_interface.cpp | 3 ++- .../tests/test_sycl_platform_interface.cpp | 3 ++- 11 files changed, 38 insertions(+), 29 deletions(-) diff --git a/dpctl-capi/source/dpctl_sycl_context_interface.cpp b/dpctl-capi/source/dpctl_sycl_context_interface.cpp index 42c24b4e4d..e26f6ed49c 100644 --- a/dpctl-capi/source/dpctl_sycl_context_interface.cpp +++ b/dpctl-capi/source/dpctl_sycl_context_interface.cpp @@ -28,6 +28,7 @@ #include "../helper/include/dpctl_async_error_handler.h" #include "Support/CBindingWrapping.h" #include +#include using namespace cl::sycl; @@ -36,7 +37,7 @@ namespace // Create wrappers for C Binding types (see CBindingWrapping.h). DEFINE_SIMPLE_CONVERSION_FUNCTIONS(context, DPCTLSyclContextRef) DEFINE_SIMPLE_CONVERSION_FUNCTIONS(device, DPCTLSyclDeviceRef) -DEFINE_SIMPLE_CONVERSION_FUNCTIONS(vector_class, +DEFINE_SIMPLE_CONVERSION_FUNCTIONS(std::vector, DPCTLDeviceVectorRef) } /* end of anonymous namespace */ @@ -67,7 +68,7 @@ DPCTLContext_CreateFromDevices(__dpctl_keep const DPCTLDeviceVectorRef DVRef, int /**/) { DPCTLSyclContextRef CRef = nullptr; - vector_class Devices; + std::vector Devices; auto DeviceRefs = unwrap(DVRef); if (!DeviceRefs) return CRef; @@ -125,9 +126,9 @@ DPCTLContext_GetDevices(__dpctl_keep const DPCTLSyclContextRef CRef) "input is a nullptr\n"; return nullptr; } - vector_class *DevicesVectorPtr = nullptr; + std::vector *DevicesVectorPtr = nullptr; try { - DevicesVectorPtr = new vector_class(); + DevicesVectorPtr = new std::vector(); } catch (std::bad_alloc const &ba) { // \todo log error std::cerr << ba.what() << '\n'; diff --git a/dpctl-capi/source/dpctl_sycl_device_interface.cpp b/dpctl-capi/source/dpctl_sycl_device_interface.cpp index 8ef71b65c4..cb8c2d2746 100644 --- a/dpctl-capi/source/dpctl_sycl_device_interface.cpp +++ b/dpctl-capi/source/dpctl_sycl_device_interface.cpp @@ -31,6 +31,7 @@ #include /* SYCL headers */ #include #include +#include using namespace cl::sycl; @@ -40,7 +41,7 @@ namespace DEFINE_SIMPLE_CONVERSION_FUNCTIONS(device, DPCTLSyclDeviceRef) DEFINE_SIMPLE_CONVERSION_FUNCTIONS(device_selector, DPCTLSyclDeviceSelectorRef) DEFINE_SIMPLE_CONVERSION_FUNCTIONS(platform, DPCTLSyclPlatformRef) -DEFINE_SIMPLE_CONVERSION_FUNCTIONS(vector_class, +DEFINE_SIMPLE_CONVERSION_FUNCTIONS(std::vector, DPCTLDeviceVectorRef) } /* end of anonymous namespace */ @@ -608,7 +609,7 @@ __dpctl_give DPCTLDeviceVectorRef DPCTLDevice_CreateSubDevicesEqually(__dpctl_keep const DPCTLSyclDeviceRef DRef, size_t count) { - vector_class *Devices = nullptr; + std::vector *Devices = nullptr; if (DRef) { if (count == 0) { std::cerr << "Can not create sub-devices with zero compute units" @@ -619,7 +620,7 @@ DPCTLDevice_CreateSubDevicesEqually(__dpctl_keep const DPCTLSyclDeviceRef DRef, try { auto subDevices = D->create_sub_devices< info::partition_property::partition_equally>(count); - Devices = new vector_class(); + Devices = new std::vector(); for (const auto &sd : subDevices) { Devices->emplace_back(wrap(new device(sd))); } @@ -646,7 +647,7 @@ DPCTLDevice_CreateSubDevicesByCounts(__dpctl_keep const DPCTLSyclDeviceRef DRef, __dpctl_keep size_t *counts, size_t ncounts) { - vector_class *Devices = nullptr; + std::vector *Devices = nullptr; std::vector vcounts(ncounts); vcounts.assign(counts, counts + ncounts); size_t min_elem = *std::min_element(vcounts.begin(), vcounts.end()); @@ -657,7 +658,7 @@ DPCTLDevice_CreateSubDevicesByCounts(__dpctl_keep const DPCTLSyclDeviceRef DRef, } if (DRef) { auto D = unwrap(DRef); - vector_class::type> subDevices; + std::vector::type> subDevices; try { subDevices = D->create_sub_devices< info::partition_property::partition_by_counts>(vcounts); @@ -670,7 +671,7 @@ DPCTLDevice_CreateSubDevicesByCounts(__dpctl_keep const DPCTLSyclDeviceRef DRef, return nullptr; } try { - Devices = new vector_class(); + Devices = new std::vector(); for (const auto &sd : subDevices) { Devices->emplace_back(wrap(new device(sd))); } @@ -692,7 +693,7 @@ __dpctl_give DPCTLDeviceVectorRef DPCTLDevice_CreateSubDevicesByAffinity( __dpctl_keep const DPCTLSyclDeviceRef DRef, DPCTLPartitionAffinityDomainType PartitionAffinityDomainTy) { - vector_class *Devices = nullptr; + std::vector *Devices = nullptr; auto D = unwrap(DRef); if (D) { try { @@ -700,7 +701,7 @@ __dpctl_give DPCTLDeviceVectorRef DPCTLDevice_CreateSubDevicesByAffinity( PartitionAffinityDomainTy); auto subDevices = D->create_sub_devices< info::partition_property::partition_by_affinity_domain>(domain); - Devices = new vector_class(); + Devices = new std::vector(); for (const auto &sd : subDevices) { Devices->emplace_back(wrap(new device(sd))); } diff --git a/dpctl-capi/source/dpctl_sycl_device_manager.cpp b/dpctl-capi/source/dpctl_sycl_device_manager.cpp index 392056dd09..844d8293b4 100644 --- a/dpctl-capi/source/dpctl_sycl_device_manager.cpp +++ b/dpctl-capi/source/dpctl_sycl_device_manager.cpp @@ -31,6 +31,7 @@ #include #include #include +#include using namespace cl::sycl; @@ -142,10 +143,10 @@ DPCTLDeviceMgr_GetCachedContext(__dpctl_keep const DPCTLSyclDeviceRef DRef) __dpctl_give DPCTLDeviceVectorRef DPCTLDeviceMgr_GetDevices(int device_identifier) { - vector_class *Devices = nullptr; + std::vector *Devices = nullptr; try { - Devices = new vector_class(); + Devices = new std::vector(); } catch (std::bad_alloc const &ba) { delete Devices; return nullptr; diff --git a/dpctl-capi/source/dpctl_sycl_device_selector_interface.cpp b/dpctl-capi/source/dpctl_sycl_device_selector_interface.cpp index fe1bd201b0..00065bf799 100644 --- a/dpctl-capi/source/dpctl_sycl_device_selector_interface.cpp +++ b/dpctl-capi/source/dpctl_sycl_device_selector_interface.cpp @@ -83,7 +83,7 @@ __dpctl_give DPCTLSyclDeviceSelectorRef DPCTLFilterSelector_Create(__dpctl_keep const char *filter_str) { try { - auto Selector = new ONEAPI::filter_selector(filter_str); + auto Selector = new ext::oneapi::filter_selector(filter_str); return wrap(Selector); } catch (std::bad_alloc &ba) { std::cerr << ba.what() << '\n'; diff --git a/dpctl-capi/source/dpctl_sycl_event_interface.cpp b/dpctl-capi/source/dpctl_sycl_event_interface.cpp index 7e09e60f48..5d36ef3dee 100644 --- a/dpctl-capi/source/dpctl_sycl_event_interface.cpp +++ b/dpctl-capi/source/dpctl_sycl_event_interface.cpp @@ -28,6 +28,7 @@ #include "../helper/include/dpctl_utils_helper.h" #include "Support/CBindingWrapping.h" #include /* SYCL headers */ +#include using namespace cl::sycl; @@ -196,9 +197,9 @@ DPCTLEvent_GetWaitList(__dpctl_keep DPCTLSyclEventRef ERef) std::cerr << "Cannot get wait list as input is a nullptr\n"; return nullptr; } - vector_class *EventsVectorPtr = nullptr; + std::vector *EventsVectorPtr = nullptr; try { - EventsVectorPtr = new vector_class(); + EventsVectorPtr = new std::vector(); } catch (std::bad_alloc const &ba) { // \todo log error std::cerr << ba.what() << '\n'; diff --git a/dpctl-capi/source/dpctl_sycl_platform_interface.cpp b/dpctl-capi/source/dpctl_sycl_platform_interface.cpp index 56e3fd4a50..f4e8c1c9e4 100644 --- a/dpctl-capi/source/dpctl_sycl_platform_interface.cpp +++ b/dpctl-capi/source/dpctl_sycl_platform_interface.cpp @@ -32,6 +32,7 @@ #include #include #include +#include using namespace cl::sycl; @@ -39,7 +40,7 @@ namespace { DEFINE_SIMPLE_CONVERSION_FUNCTIONS(platform, DPCTLSyclPlatformRef); DEFINE_SIMPLE_CONVERSION_FUNCTIONS(device_selector, DPCTLSyclDeviceSelectorRef); -DEFINE_SIMPLE_CONVERSION_FUNCTIONS(vector_class, +DEFINE_SIMPLE_CONVERSION_FUNCTIONS(std::vector, DPCTLPlatformVectorRef); } // namespace @@ -207,12 +208,12 @@ DPCTLPlatform_GetVersion(__dpctl_keep const DPCTLSyclPlatformRef PRef) __dpctl_give DPCTLPlatformVectorRef DPCTLPlatform_GetPlatforms() { - vector_class *Platforms = nullptr; + std::vector *Platforms = nullptr; auto platforms = platform::get_platforms(); try { - Platforms = new vector_class(); + Platforms = new std::vector(); Platforms->reserve(platforms.size()); } catch (std::bad_alloc const &ba) { return nullptr; diff --git a/dpctl-capi/source/dpctl_sycl_queue_manager.cpp b/dpctl-capi/source/dpctl_sycl_queue_manager.cpp index 76e035c8ee..c43f364cf9 100644 --- a/dpctl-capi/source/dpctl_sycl_queue_manager.cpp +++ b/dpctl-capi/source/dpctl_sycl_queue_manager.cpp @@ -43,7 +43,7 @@ DEFINE_SIMPLE_CONVERSION_FUNCTIONS(context, DPCTLSyclContextRef) struct QueueManager { - using QueueStack = vector_class; + using QueueStack = std::vector; static QueueStack &getQueueStack() { thread_local static QueueStack *activeQueues = new QueueStack([] { diff --git a/dpctl-capi/source/dpctl_vector_templ.cpp b/dpctl-capi/source/dpctl_vector_templ.cpp index cdea1c646b..36e1bd4e65 100644 --- a/dpctl-capi/source/dpctl_vector_templ.cpp +++ b/dpctl-capi/source/dpctl_vector_templ.cpp @@ -26,10 +26,11 @@ #include "../helper/include/dpctl_vector_macros.h" #include "Support/MemOwnershipAttrs.h" #include +#include namespace { -DEFINE_SIMPLE_CONVERSION_FUNCTIONS(vector_class, VECTOR(EL)) +DEFINE_SIMPLE_CONVERSION_FUNCTIONS(std::vector, VECTOR(EL)) } /*! @@ -39,9 +40,9 @@ DEFINE_SIMPLE_CONVERSION_FUNCTIONS(vector_class, VECTOR(EL)) */ __dpctl_give VECTOR(EL) FN(EL, Create)() { - vector_class *Vec = nullptr; + std::vector *Vec = nullptr; try { - Vec = new vector_class(); + Vec = new std::vector(); return wrap(Vec); } catch (std::bad_alloc const &ba) { delete Vec; @@ -58,9 +59,9 @@ __dpctl_give VECTOR(EL) FN(EL, Create)() __dpctl_give VECTOR(EL) FN(EL, CreateFromArray)(size_t n, __dpctl_keep SYCLREF(EL) * elems) { - vector_class *Vec = nullptr; + std::vector *Vec = nullptr; try { - Vec = new vector_class(); + Vec = new std::vector(); for (size_t i = 0; i < n; ++i) { auto Ref = unwrap(elems[i]); Vec->emplace_back( diff --git a/dpctl-capi/tests/test_sycl_context_interface.cpp b/dpctl-capi/tests/test_sycl_context_interface.cpp index 76431bef9d..a80c066c04 100644 --- a/dpctl-capi/tests/test_sycl_context_interface.cpp +++ b/dpctl-capi/tests/test_sycl_context_interface.cpp @@ -31,13 +31,14 @@ #include "dpctl_sycl_types.h" #include #include +#include using namespace cl::sycl; namespace { DEFINE_SIMPLE_CONVERSION_FUNCTIONS(sycl::device, DPCTLSyclDeviceRef); -DEFINE_SIMPLE_CONVERSION_FUNCTIONS(vector_class, +DEFINE_SIMPLE_CONVERSION_FUNCTIONS(std::vector, DPCTLDeviceVectorRef) } // namespace diff --git a/dpctl-capi/tests/test_sycl_event_interface.cpp b/dpctl-capi/tests/test_sycl_event_interface.cpp index a41f2dc31b..6cbf935c08 100644 --- a/dpctl-capi/tests/test_sycl_event_interface.cpp +++ b/dpctl-capi/tests/test_sycl_event_interface.cpp @@ -29,13 +29,14 @@ #include "dpctl_sycl_types.h" #include #include +#include using namespace cl::sycl; namespace { DEFINE_SIMPLE_CONVERSION_FUNCTIONS(event, DPCTLSyclEventRef); -DEFINE_SIMPLE_CONVERSION_FUNCTIONS(vector_class, +DEFINE_SIMPLE_CONVERSION_FUNCTIONS(std::vector, DPCTLEventVectorRef); #ifndef DPCTL_COVERAGE diff --git a/dpctl-capi/tests/test_sycl_platform_interface.cpp b/dpctl-capi/tests/test_sycl_platform_interface.cpp index 3333f563be..fad1c41416 100644 --- a/dpctl-capi/tests/test_sycl_platform_interface.cpp +++ b/dpctl-capi/tests/test_sycl_platform_interface.cpp @@ -31,12 +31,13 @@ #include "dpctl_utils.h" #include #include +#include using namespace cl::sycl; namespace { -DEFINE_SIMPLE_CONVERSION_FUNCTIONS(vector_class, +DEFINE_SIMPLE_CONVERSION_FUNCTIONS(std::vector, DPCTLPlatformVectorRef); void check_platform_name(__dpctl_keep const DPCTLSyclPlatformRef PRef) From bd751338bb67b41079489f38d857474cca6738b2 Mon Sep 17 00:00:00 2001 From: Oleksandr Pavlyk Date: Fri, 1 Oct 2021 12:57:21 -0500 Subject: [PATCH 2/4] Use preprocessor to be able to build dpctl with oneAPI 2021.3 In oneAPI 2021.3 the namespace of filter_selector class is different --- dpctl-capi/source/dpctl_sycl_device_selector_interface.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dpctl-capi/source/dpctl_sycl_device_selector_interface.cpp b/dpctl-capi/source/dpctl_sycl_device_selector_interface.cpp index 00065bf799..1193e11cee 100644 --- a/dpctl-capi/source/dpctl_sycl_device_selector_interface.cpp +++ b/dpctl-capi/source/dpctl_sycl_device_selector_interface.cpp @@ -82,8 +82,13 @@ __dpctl_give DPCTLSyclDeviceSelectorRef DPCTLCPUSelector_Create() __dpctl_give DPCTLSyclDeviceSelectorRef DPCTLFilterSelector_Create(__dpctl_keep const char *filter_str) { +#if __SYCL_COMPILER_VERSION < 20210925 + using filter_selector_t = sycl::ONEAPI::filter_selector; +#else + using filter_selector_t = sycl::ext::oneapi::filter_selector; +#endif try { - auto Selector = new ext::oneapi::filter_selector(filter_str); + auto Selector = new filter_selector_t(filter_str); return wrap(Selector); } catch (std::bad_alloc &ba) { std::cerr << ba.what() << '\n'; From 26fc7d9b7f1de0cca1823b8350184a4d5ab1ebf4 Mon Sep 17 00:00:00 2001 From: Oleksandr Pavlyk Date: Fri, 1 Oct 2021 13:34:06 -0500 Subject: [PATCH 3/4] Remove unused declaration of data conversions Remove all uses of type conversions of Vector and underlyng C++ classes Used DPCTLDevice_CreateSubDevicesEqually instead of building the vector explicitly and casting it to DPCTLDeviceVectorRef. --- .../tests/test_sycl_context_interface.cpp | 57 ++++++------------- .../tests/test_sycl_event_interface.cpp | 4 -- .../tests/test_sycl_platform_interface.cpp | 2 - 3 files changed, 18 insertions(+), 45 deletions(-) diff --git a/dpctl-capi/tests/test_sycl_context_interface.cpp b/dpctl-capi/tests/test_sycl_context_interface.cpp index a80c066c04..fb42725f23 100644 --- a/dpctl-capi/tests/test_sycl_context_interface.cpp +++ b/dpctl-capi/tests/test_sycl_context_interface.cpp @@ -37,9 +37,6 @@ using namespace cl::sycl; namespace { -DEFINE_SIMPLE_CONVERSION_FUNCTIONS(sycl::device, DPCTLSyclDeviceRef); -DEFINE_SIMPLE_CONVERSION_FUNCTIONS(std::vector, - DPCTLDeviceVectorRef) } // namespace struct TestDPCTLContextInterface : public ::testing::TestWithParam @@ -84,25 +81,16 @@ TEST_P(TestDPCTLContextInterface, ChkCreateWithDevices) DPCTLSyclContextRef CRef = nullptr; DPCTLDeviceVectorRef DVRef = nullptr; - /* TODO: Once we have wrappers for sub-device creation let us use those - * functions. - */ EXPECT_NO_FATAL_FAILURE(nCUs = DPCTLDevice_GetMaxComputeUnits(DRef)); - if (nCUs) { - auto D = unwrap(DRef); - try { - auto subDevices = D->create_sub_devices< - info::partition_property::partition_equally>(nCUs / 2); - EXPECT_NO_FATAL_FAILURE(DVRef = DPCTLDeviceVector_Create()); - for (auto &sd : subDevices) { - unwrap(DVRef)->emplace_back(wrap(new device(sd))); - } - EXPECT_NO_FATAL_FAILURE( - CRef = DPCTLContext_CreateFromDevices(DVRef, nullptr, 0)); - ASSERT_TRUE(CRef); - } catch (feature_not_supported const &fnse) { + if (nCUs > 1) { + EXPECT_NO_FATAL_FAILURE( + DVRef = DPCTLDevice_CreateSubDevicesEqually(DRef, nCUs / 2)); + if (!DVRef) { GTEST_SKIP_("Skipping creating context for sub-devices"); } + EXPECT_NO_FATAL_FAILURE( + CRef = DPCTLContext_CreateFromDevices(DVRef, nullptr, 0)); + ASSERT_TRUE(CRef); } EXPECT_NO_FATAL_FAILURE(DPCTLDeviceVector_Delete(DVRef)); EXPECT_NO_FATAL_FAILURE(DPCTLContext_Delete(CRef)); @@ -119,28 +107,19 @@ TEST_P(TestDPCTLContextInterface, ChkCreateWithDevicesGetDevices) * functions. */ EXPECT_NO_FATAL_FAILURE(nCUs = DPCTLDevice_GetMaxComputeUnits(DRef)); - if (nCUs) { - auto D = unwrap(DRef); - try { - auto subDevices = D->create_sub_devices< - info::partition_property::partition_equally>(nCUs / 2); - const size_t len = subDevices.size(); - auto ar = new DPCTLSyclDeviceRef[len]; - for (size_t i = 0; i < len; ++i) { - ar[i] = wrap(&subDevices.at(i)); - } - EXPECT_NO_FATAL_FAILURE( - DVRef = DPCTLDeviceVector_CreateFromArray(len, ar)); - EXPECT_NO_FATAL_FAILURE( - CRef = DPCTLContext_CreateFromDevices(DVRef, nullptr, 0)); - ASSERT_TRUE(CRef); - ASSERT_TRUE(DPCTLContext_DeviceCount(CRef) == len); - EXPECT_NO_FATAL_FAILURE(Res_DVRef = DPCTLContext_GetDevices(CRef)); - ASSERT_TRUE(DPCTLDeviceVector_Size(Res_DVRef) == len); - delete[] ar; - } catch (feature_not_supported const &fnse) { + if (nCUs > 1) { + EXPECT_NO_FATAL_FAILURE( + DVRef = DPCTLDevice_CreateSubDevicesEqually(DRef, nCUs / 2)); + if (!DVRef) { GTEST_SKIP_("Skipping creating context for sub-devices"); } + EXPECT_NO_FATAL_FAILURE( + CRef = DPCTLContext_CreateFromDevices(DVRef, nullptr, 0)); + ASSERT_TRUE(CRef); + const size_t len = DPCTLDeviceVector_Size(DVRef); + ASSERT_TRUE(DPCTLContext_DeviceCount(CRef) == len); + EXPECT_NO_FATAL_FAILURE(Res_DVRef = DPCTLContext_GetDevices(CRef)); + ASSERT_TRUE(DPCTLDeviceVector_Size(Res_DVRef) == len); } EXPECT_NO_FATAL_FAILURE(DPCTLDeviceVector_Delete(DVRef)); EXPECT_NO_FATAL_FAILURE(DPCTLContext_Delete(CRef)); diff --git a/dpctl-capi/tests/test_sycl_event_interface.cpp b/dpctl-capi/tests/test_sycl_event_interface.cpp index 6cbf935c08..7662056009 100644 --- a/dpctl-capi/tests/test_sycl_event_interface.cpp +++ b/dpctl-capi/tests/test_sycl_event_interface.cpp @@ -35,10 +35,6 @@ using namespace cl::sycl; namespace { -DEFINE_SIMPLE_CONVERSION_FUNCTIONS(event, DPCTLSyclEventRef); -DEFINE_SIMPLE_CONVERSION_FUNCTIONS(std::vector, - DPCTLEventVectorRef); - #ifndef DPCTL_COVERAGE sycl::event produce_event(sycl::queue &Q, sycl::buffer &data) { diff --git a/dpctl-capi/tests/test_sycl_platform_interface.cpp b/dpctl-capi/tests/test_sycl_platform_interface.cpp index fad1c41416..95eaec4ee1 100644 --- a/dpctl-capi/tests/test_sycl_platform_interface.cpp +++ b/dpctl-capi/tests/test_sycl_platform_interface.cpp @@ -37,8 +37,6 @@ using namespace cl::sycl; namespace { -DEFINE_SIMPLE_CONVERSION_FUNCTIONS(std::vector, - DPCTLPlatformVectorRef); void check_platform_name(__dpctl_keep const DPCTLSyclPlatformRef PRef) { From ab07506bd38c6dde26e4055b517c083c7aec31d7 Mon Sep 17 00:00:00 2001 From: Oleksandr Pavlyk Date: Mon, 4 Oct 2021 14:16:08 -0500 Subject: [PATCH 4/4] Bumped up minimal required DPC++ version --- dpctl-capi/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dpctl-capi/CMakeLists.txt b/dpctl-capi/CMakeLists.txt index 20c6a83b38..bb921b8603 100644 --- a/dpctl-capi/CMakeLists.txt +++ b/dpctl-capi/CMakeLists.txt @@ -41,7 +41,7 @@ option(DPCTL_BUILD_CAPI_TESTS # Minimum version requirement only when oneAPI dpcpp is used. if(DPCTL_DPCPP_FROM_ONEAPI) - find_package(IntelSycl 2021.2.0 REQUIRED) + find_package(IntelSycl 2021.3.0 REQUIRED) else() find_package(IntelSycl REQUIRED) endif()