alpaka
Abstraction Library for Parallel Kernel Acceleration
Loading...
Searching...
No Matches
alpaka::onHost::Device< T_Api, T_DeviceKind > Struct Template Reference

Description of a specific device that one can schedule kernels on. More...

#include <Device.hpp>

Public Types

using element_type = typename DeviceHandle::element_type

Public Member Functions

template<typename T_Device>
 Device (Handle< T_Device > &&internalDeviceHandle)
void _ ()
auto get () const
constexpr alpaka::concepts::Api auto getApi () const
constexpr auto getDeviceKind () const
DeviceProperties getDeviceProperties () const
 Properties of a given device.
size_t getFreeGlobalMemBytes () const
std::string getName () const
auto getNativeHandle () const
auto makeEvent ()
auto makeQueue ()
auto makeQueue (alpaka::concepts::QueueKind auto kind)
 Create a queue for this device.
bool operator!= (Device const &other) const
bool operator== (Device const &other) const
void wait ()
 Blocks the caller until the given handle executes all work.

Private Types

using DeviceHandle
using PlatformHandle = ALPAKA_TYPEOF(internal::makePlatform(T_Api{}, T_DeviceKind{}))

Private Attributes

DeviceHandle m_device

Friends

struct alpaka::internal::GetName
struct internal::GetNativeHandle

Detailed Description

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
struct alpaka::onHost::Device< T_Api, T_DeviceKind >

Description of a specific device that one can schedule kernels on.

A device is the combination of an alpaka::deviceKind::onHost::DeviceKind and an alpaka::concepts::Api, representing an entity that one can schedule work on.

Template Parameters
T_ApiThe Api powering this device.
T_DeviceKindThe kind of device it is.

Definition at line 31 of file Device.hpp.

Member Typedef Documentation

◆ DeviceHandle

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
using alpaka::onHost::Device< T_Api, T_DeviceKind >::DeviceHandle
private
Initial value:
*std::declval<PlatformHandle>().get(),
0u))
#define ALPAKA_TYPEOF(...)
Get the type of instance.
Definition common.hpp:154

Definition at line 35 of file Device.hpp.

◆ element_type

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
using alpaka::onHost::Device< T_Api, T_DeviceKind >::element_type = typename DeviceHandle::element_type

Definition at line 45 of file Device.hpp.

◆ PlatformHandle

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
using alpaka::onHost::Device< T_Api, T_DeviceKind >::PlatformHandle = ALPAKA_TYPEOF(internal::makePlatform(T_Api{}, T_DeviceKind{}))
private

Definition at line 34 of file Device.hpp.

Constructor & Destructor Documentation

◆ Device()

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
template<typename T_Device>
alpaka::onHost::Device< T_Api, T_DeviceKind >::Device ( Handle< T_Device< T_Api, T_DeviceKind > > && internalDeviceHandle)
inline

Definition at line 53 of file Device.hpp.

Member Function Documentation

◆ _()

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
void alpaka::onHost::Device< T_Api, T_DeviceKind >::_ ( )
inline

Definition at line 58 of file Device.hpp.

◆ get()

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
auto alpaka::onHost::Device< T_Api, T_DeviceKind >::get ( ) const
inline

Definition at line 47 of file Device.hpp.

◆ getApi()

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
alpaka::concepts::Api auto alpaka::onHost::Device< T_Api, T_DeviceKind >::getApi ( ) const
inlineconstexpr

Definition at line 146 of file Device.hpp.

◆ getDeviceKind()

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
auto alpaka::onHost::Device< T_Api, T_DeviceKind >::getDeviceKind ( ) const
inlineconstexpr

Definition at line 141 of file Device.hpp.

◆ getDeviceProperties()

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
DeviceProperties alpaka::onHost::Device< T_Api, T_DeviceKind >::getDeviceProperties ( ) const
inline

Properties of a given device.

Attention
Currently only a handful of entries is available. The object will be refactored soon and will become most likely a compile time dictionary tu support optional entries.

Definition at line 131 of file Device.hpp.

◆ getFreeGlobalMemBytes()

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
size_t alpaka::onHost::Device< T_Api, T_DeviceKind >::getFreeGlobalMemBytes ( ) const
inline

Definition at line 136 of file Device.hpp.

◆ getName()

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
std::string alpaka::onHost::Device< T_Api, T_DeviceKind >::getName ( ) const
inline

Definition at line 63 of file Device.hpp.

◆ getNativeHandle()

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
auto alpaka::onHost::Device< T_Api, T_DeviceKind >::getNativeHandle ( ) const
inlinenodiscard

Definition at line 68 of file Device.hpp.

◆ makeEvent()

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
auto alpaka::onHost::Device< T_Api, T_DeviceKind >::makeEvent ( )
inline

Definition at line 113 of file Device.hpp.

◆ makeQueue() [1/2]

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
auto alpaka::onHost::Device< T_Api, T_DeviceKind >::makeQueue ( )
inline

Definition at line 108 of file Device.hpp.

◆ makeQueue() [2/2]

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
auto alpaka::onHost::Device< T_Api, T_DeviceKind >::makeQueue ( alpaka::concepts::QueueKind auto kind)
inline

Create a queue for this device.

Attention
If you call this method multiple times it is allowed that you always get the same handle back. There is no guarantee that you will get independent queues.

Enqueuing tasks into two different queues does not guarantee that these tasks run in parallel. Running tasks from different tasks sequentially is valid behavior. Enqueuing into two individual queues only signifies that the tasks are independent of each other and their order of execution is independent.

Parameters
kindBlocking behaviour:
  • queueKind::nonBlocking (default): enqueue returns immediately; completion of the enqueued operation must be ensured via onHost::wait(queue) or by enqueuing dependent operations onto the same queue.
  • queueKind::blocking: each enqueue only returns after the operation is complete and its effects are host-visible.
Returns
A onHost::Queue that tasks and memory operations can be enqueued on.

Definition at line 101 of file Device.hpp.

◆ operator!=()

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
bool alpaka::onHost::Device< T_Api, T_DeviceKind >::operator!= ( Device< T_Api, T_DeviceKind > const & other) const
inline

Definition at line 78 of file Device.hpp.

◆ operator==()

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
bool alpaka::onHost::Device< T_Api, T_DeviceKind >::operator== ( Device< T_Api, T_DeviceKind > const & other) const
inline

Definition at line 73 of file Device.hpp.

◆ wait()

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
void alpaka::onHost::Device< T_Api, T_DeviceKind >::wait ( )
inline

Blocks the caller until the given handle executes all work.

Definition at line 120 of file Device.hpp.

◆ alpaka::internal::GetName

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
friend struct alpaka::internal::GetName
friend

Definition at line 42 of file Device.hpp.

◆ internal::GetNativeHandle

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
friend struct internal::GetNativeHandle
friend

Definition at line 43 of file Device.hpp.

Member Data Documentation

◆ m_device

template<alpaka::concepts::Api T_Api, alpaka::concepts::DeviceKind T_DeviceKind>
DeviceHandle alpaka::onHost::Device< T_Api, T_DeviceKind >::m_device
private

Definition at line 39 of file Device.hpp.


The documentation for this struct was generated from the following file: