23 auto operator()(sycl::device
const& dev)
const ->
int
25 return dev.is_cpu() ? 1 : -1;
30 struct SYCLDeviceSelector<
deviceKind::IntelGpu>
32 auto operator()(sycl::device
const& dev)
const ->
int
34 auto const& vendor = dev.get_info<sycl::info::device::vendor>();
35 auto const is_intel_gpu = dev.is_gpu() && (vendor.find(
"Intel(R) Corporation") != std::string::npos);
37 return is_intel_gpu ? 1 : -1;
42 struct SYCLDeviceSelector<
deviceKind::NvidiaGpu>
44 auto operator()(sycl::device
const& dev)
const ->
int
46 auto const& vendor = dev.get_info<sycl::info::device::vendor>();
47 auto const is_nvidia_gpu = dev.is_gpu() && (vendor.find(
"NVIDIA") != std::string::npos);
49 return is_nvidia_gpu ? 1 : -1;
56 auto operator()(sycl::device
const& dev)
const ->
int
58 auto const& vendor = dev.get_info<sycl::info::device::vendor>();
59 auto const is_amd_gpu = dev.is_gpu() && (vendor.find(
"AMD") != std::string::npos);
61 return is_amd_gpu ? 1 : -1;
71 template<alpaka::concepts::DeviceKind T_DeviceKind>
72 struct MakePlatform::Op<
api::OneApi, T_DeviceKind>
74 auto operator()(api::OneApi
const&, T_DeviceKind)
const
84 template<alpaka::concepts::DeviceKind T_DeviceKind>
85 struct GetApi::Op<onHost::syclGeneric::Platform<api::OneApi, T_DeviceKind>>
87 decltype(
auto)
operator()(
auto&& platform)
const
89 alpaka::unused(platform);
94 template<alpaka::concepts::DeviceKind T_DeviceKind>
95 struct GetDeviceType::Op<onHost::syclGeneric::Platform<api::OneApi, T_DeviceKind>>
97 decltype(
auto)
operator()(
auto&& platform)
const
99 alpaka::unused(platform);
100 return T_DeviceKind{};
106namespace alpaka::onHost::internal
108 template<alpaka::concepts::DeviceKind T_DeviceKind,
typename T_Any>
109 struct IsDataAccessible::SecondPath<
api::OneApi, T_DeviceKind, T_Any>
111 static void getPtrType(
auto deviceKind,
auto& sycl_data_alloc_type,
auto const& view)
117 auto sycl_context = platform->getContext();
118 auto sycl_alloc_type = get_pointer_type(Data::data(view), sycl_context);
120 if(sycl_alloc_type != sycl::usm::alloc::unknown)
121 sycl_data_alloc_type = sycl_alloc_type;
130 bool operator()(api::OneApi usedApi, T_DeviceKind deviceKind, T_Any
const& view)
const
133 auto sycl_data_alloc_type = sycl::usm::alloc::unknown;
135 [&sycl_data_alloc_type, &view](
auto... devKind)
136 { (getPtrType(devKind, sycl_data_alloc_type, view), ...); },
145 if(sycl_data_alloc_type == sycl::usm::alloc::shared || sycl_data_alloc_type == sycl::usm::alloc::host)
#define ALPAKA_TYPEOF(...)
Get the type of instance.
constexpr DeviceKind deviceKind
Functionality which is usable on the host CPU controller thread.
constexpr auto supportedDevices(auto const api)
auto make_sharedSingleton(T_Args &&... args)
ALPAKA_FN_INLINE constexpr decltype(auto) apply(T_Func &&func, T_TupleLike &&tuple)
Applies a function to the elements of a tuple-like object.