12 #include <unordered_set>
15 inline namespace _V1 {
16 namespace ext::oneapi::experimental {
20 std::unordered_set<device> Composites;
21 auto Devs = sycl::device::get_devices();
22 for (
const auto &D : Devs) {
23 if (D.has(sycl::aspect::ext_oneapi_is_component)) {
24 auto Composite = D.get_info<info::device::composite_device>();
25 Composites.insert(Composite);
28 std::vector<device> Result;
30 Composites.begin(), Composites.end(), std::back_inserter(Result),
31 [&](
const device &Composite) {
32 auto Components = Composite.get_info<info::device::component_devices>();
36 Components.begin(), Components.end(), [&](const device &d) {
37 return std::find(Devs.begin(), Devs.end(), d) != Devs.end();
The SYCL device class encapsulates a single SYCL device on which kernels may be executed.
std::vector< device > get_composite_devices()