|
| | OpenCLBackend (OpenCLParameters p) |
| |
| | ~OpenCLBackend (void) final |
| |
| bool | init () final |
| | Must be called before the back end can be used.
|
| |
| std::size_t | n_platforms () const final |
| |
| std::size_t | n_devices () const final |
| |
| void | get_limits (u64 *p) const final |
| |
| std::string | platform_name () const final |
| |
| std::string | device_name () const final |
| |
| Buffer | create_buffer (MemFlag flags, std::size_t n, const std::byte *p) final |
| | Create a buffer of the specified size.
|
| |
| bool | read_buffer (Buffer b, std::size_t off, std::size_t n, std::byte *p, Events events) const final |
| |
| bool | fill_buffer (Buffer b, std::size_t off, std::size_t n, std::byte v, Events events) const final |
| | Fills the buffer with n copies of v.
|
| |
| bool | fill_buffer (Buffer b, std::size_t off, std::size_t n, std::size_t pattern_size, const std::byte *p, Events events) const final |
| | Fills the buffer with n / pattern_size copies of pattern p.
|
| |
| bool | write_buffer (Buffer b, std::size_t off, std::size_t n, const std::byte *p, Events events) const final |
| |
| bool | write_buffer_rect (Buffer b, std::array< std::size_t, 3 > buffer_origin, std::array< std::size_t, 3 > host_origin, std::array< std::size_t, 3 > region, std::size_t buffer_row_pitch, std::size_t buffer_slice_pitch, std::size_t host_row_pitch, std::size_t host_slice_pitch, const std::byte *p, Events events) const final |
| | Writes a rectangular region of a buffer.
|
| |
| void * | map_buffer (Buffer b, MemFlag flags, std::size_t off, std::size_t n, Events events) const final |
| |
| bool | unmap_buffer (Buffer b, void *p, Events events) const final |
| |
| bool | release_buffer (Buffer b) final |
| |
| Image | create_image (Type type, std::size_t w, std::size_t h, MemFlag flags, const std::byte *p) final |
| | Create an image of the specified size.
|
| |
| bool | read_image (Image i, std::size_t w, std::size_t h, std::byte *p, Events events) const final |
| |
| bool | fill_image (Image i, std::size_t w, std::size_t h, const void *v, Events events) const override |
| | Fills the image with copies of v.
|
| |
| bool | release_image (Image i) final |
| |
| Sampler | create_sampler () final |
| |
| bool | release_sampler (Sampler s) final |
| |
| Program | create_program (std::string_view src, const char *opts) final |
| | Compiles source into a program using compilation options opts.
|
| |
| bool | release_program (Program p) final |
| |
| Kernel | create_kernel (Program program, const char *func, std::size_t len, const Type *types, const std::size_t *sizes, const std::byte *const *data, Events events) final |
| |
| bool | release_kernel (Kernel k) final |
| |
| std::size_t | n_events (std::size_t n, const Type *types) const final |
| | Number of events generated by execute for arguments types.
|
| |
| bool | prof_info (ProfInfo info, std::size_t n, const Event *const *events, u64 *out) const final |
| |
| bool | wait (std::size_t n, const Event *const *e) const final |
| | Block until the given events have completed.
|
| |
| bool | release_events (std::size_t n, const Event *const *v) const final |
| |
| bool | execute (Kernel kernel, ExecFlag flags, u32 n_dim, const std::size_t *global_size, const std::size_t *local_size, Events events) const final |
| |
| 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 final |
| |
| 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.
|
| |
| 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.
|
| |