diff --git a/sycl/include/sycl/ext/oneapi/backend/level_zero.hpp b/sycl/include/sycl/ext/oneapi/backend/level_zero.hpp index 08c1ccf159610..6e3977ee733bb 100644 --- a/sycl/include/sycl/ext/oneapi/backend/level_zero.hpp +++ b/sycl/include/sycl/ext/oneapi/backend/level_zero.hpp @@ -64,12 +64,16 @@ inline context make_context( } namespace detail { -inline std::optional find_matching_descendent_device( - sycl::device d, +inline bool find_matching_descendent_device( + const sycl::device &d, const backend_input_t - &BackendObject) { - if (get_native(d) == BackendObject) - return d; + &BackendObject, + sycl::device &Out) { + if (get_native(d) == BackendObject) { + Out = d; + return true; + } + std::vector partition_props = d.get_info(); @@ -79,14 +83,13 @@ inline std::optional find_matching_descendent_device( info::partition_property::partition_by_affinity_domain>( info::partition_affinity_domain::next_partitionable); for (auto &sub_dev : sub_devices) { - if (auto maybe_device = - find_matching_descendent_device(sub_dev, BackendObject)) - return maybe_device; + if (find_matching_descendent_device(sub_dev, BackendObject, Out)) + return true; } } } - return {}; + return false; } } // namespace detail @@ -113,9 +116,10 @@ inline device make_device( continue; for (auto &d : p.get_devices()) { - if (auto maybe_device = - detail::find_matching_descendent_device(d, BackendObject)) - return *maybe_device; + sycl::device FoundDevice; + if (detail::find_matching_descendent_device(d, BackendObject, + FoundDevice)) + return FoundDevice; } }