14 template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
20 "Invalid combination of device kind and api. The api does not know how to talk to the device or the "
21 "required dependencies to enable the api are not fulfilled.");
72 template<alpaka::concepts::DeviceSpec T_DeviceSpec>
77 template<alpaka::concepts::DeviceSpec T_DeviceSpec>
88 template<
typename deferEvaluation =
void>
#define ALPAKA_TYPEOF(...)
Get the type of instance.
Concept to check for APIs.
Concept to check if something is a device kind.
Concept to check that a device specification with an API and device kind can be extracted.
static auto makePlatform(auto api, alpaka::concepts::DeviceKind auto deviceType)
Functionality which is usable on the host CPU controller thread.
DeviceSelector(T_DeviceSpec const &deviceSpec) -> DeviceSelector< ALPAKA_TYPEOF(getApi(deviceSpec)), ALPAKA_TYPEOF(getDeviceKind(deviceSpec))>
auto makeDeviceSelector(T_DeviceSpec deviceSpec)
create an object to get access to devices
constexpr decltype(auto) getDeviceKind(auto &&any)
Get the device type of an object.
constexpr decltype(auto) getApi(auto &&any)
Get the API an object depends on.
auto makeDevice(uint32_t idx)
Get a device.
uint32_t getDeviceCount() const
Get the number of available devices for the given api and device kind.
DeviceProperties getDeviceProperties(uint32_t idx) const
constexpr DeviceSelector(T_Api api, T_DeviceKind devType)
constexpr DeviceSelector(alpaka::concepts::DeviceSpec auto deviceSpec)
ALPAKA_TYPEOF(internal::makePlatform(T_Api{}, T_DeviceKind{})) m_platform
DeviceSpec< T_Api, T_DeviceKind > m_deviceSpec
Concept for a combination of an API and device kind.
static constexpr bool isValid()
Checks if the device kind and api combination is valid.
Description of a specific device that one can schedule kernels on.