|
| Pseudocomp ()=default |
|
bool | init () override |
| Must be called before the back end can be used.
|
|
size_t | n_platforms () const override |
|
size_t | n_devices () const override |
|
void | get_limits (u64 *p) const override |
|
std::string | platform_name () const override |
|
std::string | device_name () const override |
|
Buffer | create_buffer (MemFlag, size_t, const std::byte *) override |
|
bool | read_buffer (Buffer, std::size_t, std::size_t, std::byte *, Events) const override |
|
bool | fill_buffer (Buffer, std::size_t, std::size_t, std::byte, Events) const override |
| Fills the buffer with n copies of v .
|
|
bool | fill_buffer (Buffer, std::size_t, std::size_t, std::size_t, const std::byte *, Events) const override |
| Fills the buffer with n / pattern_size copies of pattern p .
|
|
bool | write_buffer (Buffer, std::size_t, std::size_t, const std::byte *, Events) const override |
|
bool | write_buffer_rect (Buffer, std::array< std::size_t, 3 >, std::array< std::size_t, 3 >, std::array< std::size_t, 3 >, std::size_t, std::size_t, std::size_t, std::size_t, const std::byte *, Events) const override |
| Writes a rectangular region of a buffer.
|
|
void * | map_buffer (Buffer, MemFlag, std::size_t, std::size_t, Events) const override |
|
bool | unmap_buffer (Buffer, void *, Events) const override |
|
bool | release_buffer (Buffer) override |
|
Image | create_image (Type, std::size_t, std::size_t, MemFlag, const std::byte *) override |
| Create an image of the specified size.
|
|
bool | read_image (Image, std::size_t, std::size_t, std::byte *, Events) const override |
|
bool | fill_image (Image, std::size_t, std::size_t, const void *, Events) const override |
| Fills the image with copies of v .
|
|
bool | release_image (Image) override |
|
Sampler | create_sampler () override |
|
bool | release_sampler (Sampler) override |
|
Program | create_program (std::string_view, const char *) override |
| Compiles source into a program using compilation options opts .
|
|
bool | release_program (Program) override |
|
Kernel | create_kernel (Program, const char *, std::size_t, const Type *, const std::size_t *, const std::byte *const *, Events) override |
|
bool | release_kernel (Kernel) override |
|
std::size_t | n_events (std::size_t, const Type *) const override |
| Number of events generated by execute for arguments types .
|
|
bool | prof_info (ProfInfo, std::size_t, const Event *const *, u64 *) const override |
|
bool | wait (std::size_t, const Event *const *) const override |
| Block until the given events have completed.
|
|
bool | release_events (std::size_t, const Event *const *) const override |
|
bool | execute (Kernel, ExecFlag, u32, const std::size_t *, const std::size_t *, Events) const override |
|
bool | execute (Program, const std::string &, ExecFlag, u32, const std::size_t *, const std::size_t *, std::size_t, const Type *, const std::size_t *, const std::byte *const *, Events) const override |
|
virtual void | get_limits (u64 *p) const =0 |
| Writes the information described in Limit into p .
|
|
std::vector< u64 > | get_limits () const |
| Convenience overload that allocates the required memory.
|
|
virtual Buffer | create_buffer (MemFlag flags, std::size_t n, const std::byte *p)=0 |
| Create a buffer of the specified size.
|
|
template<typename ... Ts> |
bool | write_struct (Buffer b, Events events, Ts &&...ts) const |
| Writes the variadic arguments sequentially to the buffer.
|
|
virtual bool | prof_info (ProfInfo info, std::size_t n, const Event *const *events, u64 *out) const =0 |
| Collect profiling information from n events .
|
|
virtual bool | execute (Kernel kernel, ExecFlag flags, u32 n_dim, const std::size_t *global_size, const std::size_t *local_size, Events events) const =0 |
|
virtual bool | execute (Program program, const std::string &func, ExecFlag flags, u32 n_dim, const std::size_t *global_size, const std::size_t *local_size, std::size_t len, const Type *types, const std::size_t *sizes, const std::byte *const *data, Events events) const =0 |
| Execute a program with the given arguments.
|
|
template<typename ... Ts> |
Kernel | create_kernel (Program program, const char *func, Events events, Ts &&...ts) |
| Variadic interface for create_kernel.
|
|
template<typename ... Ts> |
bool | execute (Program program, const std::string &func, ExecFlag flags, u32 n_dim, const std::size_t *global_size, const std::size_t *local_size, Events events, Ts &&...ts) |
| Variadic interface for execute.
|
|
template<std::derived_from< Compute::Handle > T> |
constexpr auto | arg_type |
|
template<Compute::Type t> |
constexpr auto | to_vector_type () -> Type |
|
template<typename ... Ts> |
auto | create_kernel (Program program, const char *func, Events events, Ts &&...ts) -> Kernel |
|
|
enum class | Backend : u8 { PSEUDOCOMP
, OPENCL_BACKEND
} |
| Indicates which type of back end to create. More...
|
|
enum class | DeviceType : u8 { CPU = 1u << 0
, GPU = 1u << 1
} |
|
enum class | Type : u8 {
NONE
, LOCAL
, SCALAR_BEGIN
, BYTE = SCALAR_BEGIN
,
INT
, UINT
, FLOAT
, VECTOR_BEGIN
,
BYTEV = VECTOR_BEGIN
, INTV
, UINTV
, FLOATV
,
VECTOR_END = FLOATV
, DATA
, HANDLE_BEGIN
, BUFFER = HANDLE_BEGIN
,
IMAGE
, SAMPLER
, HANDLE_END = SAMPLER
, N
} |
| Supported parameter types for kernel execution. More...
|
|
enum | MemFlag : u8 { READ_WRITE = 1u << 0
, WRITE_ONLY = 1u << 1
, READ_ONLY = 1u << 2
} |
| Properties of memory blocks. More...
|
|
enum | ExecFlag : u8 { BLOCKING = 1u << 0
} |
| Kernel execution flags. More...
|
|
enum | Limit : u8 { COMPUTE_UNITS
, WORK_GROUP_SIZE
, LOCAL_MEMORY
, N
} |
| Indices for the values accessible via get_limits. More...
|
|
enum | ProfInfo : u8 {
QUEUED = 1u << 0
, SUBMIT = 1u << 1
, START = 1u << 2
, END = 1u << 3
,
PROF_INFO_MAX = END
, PROF_INFO_ALL = QUEUED | SUBMIT | START | END
} |
| Bit mask indicating which profiling data to collect/return. More...
|
|
static constexpr bool | is_vector_type (Type t) |
| Determines is t is one of the *V vector values in Type.
|
|
static constexpr bool | is_handle_type (Type t) |
|
template<Type t> |
static constexpr Type | to_vector_type () |
| Transforms a scalar type into the equivalent vector type.
|
|
static std::unique_ptr< Compute > | create (Backend b, const void *params=nullptr) |
| Creates a back end of the specified type.
|
|
template<> |
constexpr auto | arg_type |
|
template<> |
constexpr auto | arg_type |
|
template<> |
constexpr auto | arg_type |
|
template<> |
constexpr auto | arg_type |
|
template<typename T > |
static constexpr Type | arg_type = Type::NONE |
| Maps supported types to the equivalent Type value.
|
|