nngn
|
Base class for computation back ends, which may be hardware-accelerated. More...
#include <compute.h>
Classes | |
struct | Buffer |
struct | DataArg |
Argument type for raw memory passed to the execution kernel "by value". More... | |
struct | Events |
Controls dependencies between operations. More... | |
struct | Handle |
Base class for handles to opaque compute objects. More... | |
struct | Image |
struct | Kernel |
struct | OpenCLParameters |
struct | Program |
struct | Sampler |
struct | Version |
Public Types | |
enum class | Backend : u8 { PSEUDOCOMP , OPENCL_BACKEND , PSEUDOCOMP , OPENCL_BACKEND } |
Indicates which type of back end to create. More... | |
enum class | DeviceType : u8 { CPU = 1u << 0 , GPU = 1u << 1 , 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 , 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 , READ_WRITE = 1u << 0 , WRITE_ONLY = 1u << 1 , READ_ONLY = 1u << 2 } |
Properties of memory blocks. More... | |
enum | ExecFlag : u8 { BLOCKING = 1u << 0 , BLOCKING = 1u << 0 } |
Kernel execution flags. More... | |
enum | Limit : u8 { COMPUTE_UNITS , WORK_GROUP_SIZE , LOCAL_MEMORY , N , 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 , 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... | |
enum class | Backend : u8 { PSEUDOCOMP , OPENCL_BACKEND , PSEUDOCOMP , OPENCL_BACKEND } |
Indicates which type of back end to create. More... | |
enum class | DeviceType : u8 { CPU = 1u << 0 , GPU = 1u << 1 , 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 , 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 , READ_WRITE = 1u << 0 , WRITE_ONLY = 1u << 1 , READ_ONLY = 1u << 2 } |
Properties of memory blocks. More... | |
enum | ExecFlag : u8 { BLOCKING = 1u << 0 , BLOCKING = 1u << 0 } |
Kernel execution flags. More... | |
enum | Limit : u8 { COMPUTE_UNITS , WORK_GROUP_SIZE , LOCAL_MEMORY , N , 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 , 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... | |
Public Member Functions | |
virtual bool | init ()=0 |
Must be called before the back end can be used. | |
virtual size_t | n_platforms () const =0 |
virtual size_t | n_devices () const =0 |
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 std::string | platform_name () const =0 |
virtual std::string | device_name () const =0 |
virtual Buffer | create_buffer (MemFlag flags, std::size_t n, const std::byte *p)=0 |
Create a buffer of the specified size. | |
virtual bool | read_buffer (Buffer b, std::size_t off, std::size_t n, std::byte *p, Events events) const =0 |
virtual bool | fill_buffer (Buffer b, std::size_t off, std::size_t n, std::byte v, Events events) const =0 |
Fills the buffer with n copies of v . | |
virtual 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 =0 |
Fills the buffer with n / pattern_size copies of pattern p . | |
virtual bool | write_buffer (Buffer b, std::size_t off, std::size_t n, const std::byte *p, Events events) const =0 |
virtual 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 =0 |
Writes a rectangular region of a buffer. | |
virtual void * | map_buffer (Buffer b, MemFlag flags, std::size_t off, std::size_t n, Events events) const =0 |
virtual bool | unmap_buffer (Buffer b, void *p, Events events) const =0 |
template<typename ... Ts> | |
bool | write_struct (Buffer b, Events events, Ts &&...ts) const |
Writes the variadic arguments sequentially to the buffer. | |
virtual bool | release_buffer (Buffer b)=0 |
virtual Image | create_image (Type type, std::size_t w, std::size_t h, MemFlag flags, const std::byte *p)=0 |
Create an image of the specified size. | |
virtual bool | read_image (Image i, std::size_t w, std::size_t h, std::byte *p, Events events) const =0 |
virtual bool | fill_image (Image i, std::size_t w, std::size_t h, const void *v, Events events) const =0 |
Fills the image with copies of v . | |
virtual bool | release_image (Image i)=0 |
virtual Sampler | create_sampler ()=0 |
virtual bool | release_sampler (Sampler s)=0 |
virtual Program | create_program (std::string_view src, const char *opts)=0 |
Compiles source into a program using compilation options opts . | |
virtual bool | release_program (Program p)=0 |
virtual 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)=0 |
virtual bool | release_kernel (Kernel k)=0 |
virtual std::size_t | n_events (std::size_t n, const Type *types) const =0 |
Number of events generated by execute for arguments types . | |
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 | wait (std::size_t n, const Event *const *v) const =0 |
Block until the given events have completed. | |
virtual bool | release_events (std::size_t n, const Event *const *v) const =0 |
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. | |
virtual bool | init ()=0 |
Must be called before the back end can be used. | |
virtual size_t | n_platforms () const =0 |
virtual size_t | n_devices () const =0 |
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 std::string | platform_name () const =0 |
virtual std::string | device_name () const =0 |
virtual Buffer | create_buffer (MemFlag flags, std::size_t n, const std::byte *p)=0 |
Create a buffer of the specified size. | |
virtual bool | read_buffer (Buffer b, std::size_t off, std::size_t n, std::byte *p, Events events) const =0 |
virtual bool | fill_buffer (Buffer b, std::size_t off, std::size_t n, std::byte v, Events events) const =0 |
Fills the buffer with n copies of v . | |
virtual 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 =0 |
Fills the buffer with n / pattern_size copies of pattern p . | |
virtual bool | write_buffer (Buffer b, std::size_t off, std::size_t n, const std::byte *p, Events events) const =0 |
virtual 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 =0 |
Writes a rectangular region of a buffer. | |
virtual void * | map_buffer (Buffer b, MemFlag flags, std::size_t off, std::size_t n, Events events) const =0 |
virtual bool | unmap_buffer (Buffer b, void *p, Events events) const =0 |
template<typename ... Ts> | |
bool | write_struct (Buffer b, Events events, Ts &&...ts) const |
Writes the variadic arguments sequentially to the buffer. | |
virtual bool | release_buffer (Buffer b)=0 |
virtual Image | create_image (Type type, std::size_t w, std::size_t h, MemFlag flags, const std::byte *p)=0 |
Create an image of the specified size. | |
virtual bool | read_image (Image i, std::size_t w, std::size_t h, std::byte *p, Events events) const =0 |
virtual bool | fill_image (Image i, std::size_t w, std::size_t h, const void *v, Events events) const =0 |
Fills the image with copies of v . | |
virtual bool | release_image (Image i)=0 |
virtual Sampler | create_sampler ()=0 |
virtual bool | release_sampler (Sampler s)=0 |
virtual Program | create_program (std::string_view src, const char *opts)=0 |
Compiles source into a program using compilation options opts . | |
virtual bool | release_program (Program p)=0 |
virtual 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)=0 |
virtual bool | release_kernel (Kernel k)=0 |
virtual std::size_t | n_events (std::size_t n, const Type *types) const =0 |
Number of events generated by execute for arguments types . | |
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 | wait (std::size_t n, const Event *const *v) const =0 |
Block until the given events have completed. | |
virtual bool | release_events (std::size_t n, const Event *const *v) const =0 |
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<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 |
Static Public Member Functions | |
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. | |
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 = T::type |
Maps supported types to the equivalent Type value. | |
template<> | |
constexpr auto | arg_type |
template<> | |
constexpr auto | arg_type |
template<> | |
constexpr auto | arg_type |
template<> | |
constexpr auto | arg_type |
template<> | |
constexpr auto | arg_type |
template<> | |
constexpr auto | arg_type |
template<> | |
constexpr auto | arg_type |
Static Public Attributes | |
template<typename T > | |
static constexpr Type | arg_type = Type::NONE |
Maps supported types to the equivalent Type value. | |
Base class for computation back ends, which may be hardware-accelerated.
|
strong |
Indicates which type of back end to create.
|
strong |
Indicates which type of back end to create.
|
strong |
|
strong |
enum nngn::Compute::ExecFlag : u8 |
Kernel execution flags.
Enumerator | |
---|---|
BLOCKING | Block the execution until the operation finishes. Note that if this flag is not set and no event data is provided (see Events), it will not be possible to determine when the operation finishes. |
BLOCKING | Block the execution until the operation finishes. Note that if this flag is not set and no event data is provided (see Events), it will not be possible to determine when the operation finishes. |
enum nngn::Compute::ExecFlag : u8 |
Kernel execution flags.
Enumerator | |
---|---|
BLOCKING | Block the execution until the operation finishes. Note that if this flag is not set and no event data is provided (see Events), it will not be possible to determine when the operation finishes. |
BLOCKING | Block the execution until the operation finishes. Note that if this flag is not set and no event data is provided (see Events), it will not be possible to determine when the operation finishes. |
enum nngn::Compute::Limit : u8 |
Indices for the values accessible via get_limits.
Enumerator | |
---|---|
COMPUTE_UNITS | |
WORK_GROUP_SIZE | |
LOCAL_MEMORY | |
N | |
COMPUTE_UNITS | |
WORK_GROUP_SIZE | |
LOCAL_MEMORY | |
N |
enum nngn::Compute::Limit : u8 |
Indices for the values accessible via get_limits.
Enumerator | |
---|---|
COMPUTE_UNITS | |
WORK_GROUP_SIZE | |
LOCAL_MEMORY | |
N | |
COMPUTE_UNITS | |
WORK_GROUP_SIZE | |
LOCAL_MEMORY | |
N |
enum nngn::Compute::MemFlag : u8 |
enum nngn::Compute::MemFlag : u8 |
enum nngn::Compute::ProfInfo : u8 |
enum nngn::Compute::ProfInfo : u8 |
|
strong |
Supported parameter types for kernel execution.
Enumerator | |
---|---|
NONE | Invalid value. |
LOCAL | Device-local memory. |
SCALAR_BEGIN | |
BYTE | |
INT | |
UINT | |
FLOAT | |
VECTOR_BEGIN | |
BYTEV | |
INTV | |
UINTV | |
FLOATV | |
VECTOR_END | |
DATA | Pointer to raw memory.
|
HANDLE_BEGIN | |
BUFFER | |
IMAGE | |
SAMPLER | |
HANDLE_END | |
N | |
NONE | Invalid value. |
LOCAL | Device-local memory. |
SCALAR_BEGIN | |
BYTE | |
INT | |
UINT | |
FLOAT | |
VECTOR_BEGIN | |
BYTEV | |
INTV | |
UINTV | |
FLOATV | |
VECTOR_END | |
DATA | Pointer to raw memory.
|
HANDLE_BEGIN | |
BUFFER | |
IMAGE | |
SAMPLER | |
HANDLE_END | |
N |
|
strong |
Supported parameter types for kernel execution.
Enumerator | |
---|---|
NONE | Invalid value. |
LOCAL | Device-local memory. |
SCALAR_BEGIN | |
BYTE | |
INT | |
UINT | |
FLOAT | |
VECTOR_BEGIN | |
BYTEV | |
INTV | |
UINTV | |
FLOATV | |
VECTOR_END | |
DATA | Pointer to raw memory.
|
HANDLE_BEGIN | |
BUFFER | |
IMAGE | |
SAMPLER | |
HANDLE_END | |
N | |
NONE | Invalid value. |
LOCAL | Device-local memory. |
SCALAR_BEGIN | |
BYTE | |
INT | |
UINT | |
FLOAT | |
VECTOR_BEGIN | |
BYTEV | |
INTV | |
UINTV | |
FLOATV | |
VECTOR_END | |
DATA | Pointer to raw memory.
|
HANDLE_BEGIN | |
BUFFER | |
IMAGE | |
SAMPLER | |
HANDLE_END | |
N |
|
staticconstexpr |
Maps supported types to the equivalent Type value.
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
static |
Creates a back end of the specified type.
The init
function must be called (and its return value checked) before it can be used.
|
static |
Creates a back end of the specified type.
The init
function must be called (and its return value checked) before it can be used.
|
pure virtual |
Create a buffer of the specified size.
Optionally fill it with n
bytes starting from p
, if not null.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, and anonymous_namespace{opencl.cpp}::OpenCLBackend.
|
pure virtual |
Create a buffer of the specified size.
Optionally fill it with n
bytes starting from p
, if not null.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, and anonymous_namespace{opencl.cpp}::OpenCLBackend.
|
pure virtual |
Create an image of the specified size.
Optionally fill it with w * h bytes
starting from p
, if not null.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
Create an image of the specified size.
Optionally fill it with w * h bytes
starting from p
, if not null.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
Kernel nngn::Compute::create_kernel | ( | Program | program, |
const char * | func, | ||
Events | events, | ||
Ts &&... | ts | ||
) |
Variadic interface for create_kernel.
Kernel nngn::Compute::create_kernel | ( | Program | program, |
const char * | func, | ||
Events | events, | ||
Ts &&... | ts | ||
) |
Variadic interface for create_kernel.
auto nngn::Compute::create_kernel | ( | Program | program, |
const char * | func, | ||
Events | events, | ||
Ts &&... | ts | ||
) | -> Kernel |
|
pure virtual |
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
Compiles source into a program using compilation options opts
.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
Compiles source into a program using compilation options opts
.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
|
pure virtual |
|
pure virtual |
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
|
pure virtual |
|
pure virtual |
bool nngn::Compute::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.
All arguments in common with the other function in the overload set have the same semantics.
ts | These values are used to create temporary (C) arrays that are used as the len , types , sizes , and data arguments of the original function. The values for those arrays are determined via the arg_type, detail::arg_size, and detail::arg_ptr functions, respectively, and must be of supported types (see the arg_type specializations). |
bool nngn::Compute::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.
All arguments in common with the other function in the overload set have the same semantics.
ts | These values are used to create temporary (C) arrays that are used as the len , types , sizes , and data arguments of the original function. The values for those arrays are determined via the arg_type, detail::arg_size, and detail::arg_ptr functions, respectively, and must be of supported types (see the arg_type specializations). |
|
pure virtual |
Execute a program with the given arguments.
func | Name of the function to be used as the entry point. |
n_dim | Number of dimensions in global_size and local_size . |
len | Length of types , sizes , and data . |
types | Type of each argument in data . |
sizes | Size of each argument in data . |
data | The argument data. Must have the correct type and size as determined by the corresponding values in types and sizes . |
events | Dependency information, see Events and n_events. |
|
pure virtual |
Execute a program with the given arguments.
func | Name of the function to be used as the entry point. |
n_dim | Number of dimensions in global_size and local_size . |
len | Length of types , sizes , and data . |
types | Type of each argument in data . |
sizes | Size of each argument in data . |
data | The argument data. Must have the correct type and size as determined by the corresponding values in types and sizes . |
events | Dependency information, see Events and n_events. |
|
pure virtual |
Fills the buffer with n
copies of v
.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
Fills the buffer with n
copies of v
.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
Fills the buffer with n / pattern_size
copies of pattern p
.
n
must be a multiple of pattern_size
.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
Fills the buffer with n / pattern_size
copies of pattern p
.
n
must be a multiple of pattern_size
.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
Fills the image with copies of v
.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
Fills the image with copies of v
.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
inline |
Convenience overload that allocates the required memory.
std::vector< u64 > nngn::Compute::get_limits | ( | ) | const |
Convenience overload that allocates the required memory.
|
pure virtual |
Writes the information described in Limit into p
.
|
pure virtual |
Writes the information described in Limit into p
.
|
pure virtual |
Must be called before the back end can be used.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
Must be called before the back end can be used.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
Determines is t
is one of the *V
vector values in Type.
|
pure virtual |
|
pure virtual |
|
pure virtual |
Number of events generated by execute for arguments types
.
Does not include the event generated by the execution itself.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
Number of events generated by execute for arguments types
.
Does not include the event generated by the execution itself.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
|
pure virtual |
|
pure virtual |
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
|
pure virtual |
Collect profiling information from n
events
.
The back end must have been created with debugging information enabled.
|
pure virtual |
Collect profiling information from n
events
.
The back end must have been created with debugging information enabled.
|
pure virtual |
|
pure virtual |
Transforms a scalar type into the equivalent vector type.
E.g. to_vector_type<INT> == INTV
. It is an error to apply this function to a non-scalar type.
Transforms a scalar type into the equivalent vector type.
E.g. to_vector_type<INT> == INTV
. It is an error to apply this function to a non-scalar type.
|
inlineconstexpr |
|
pure virtual |
Block until the given events
have completed.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
Block until the given events
have completed.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
Writes a rectangular region of a buffer.
Arguments are the same as the OpenCL function clEnqueueCopyBufferRect
.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
|
pure virtual |
Writes a rectangular region of a buffer.
Arguments are the same as the OpenCL function clEnqueueCopyBufferRect
.
Implemented in anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{opencl.cpp}::OpenCLBackend, anonymous_namespace{pseudo.cpp}::Pseudocomp, and anonymous_namespace{pseudo.cpp}::Pseudocomp.
bool nngn::Compute::write_struct | ( | Buffer | b, |
Events | events, | ||
Ts &&... | ts | ||
) | const |
Writes the variadic arguments sequentially to the buffer.
Supported arguments types are scalar and vector types described in execute.
bool nngn::Compute::write_struct | ( | Buffer | b, |
Events | events, | ||
Ts &&... | ts | ||
) | const |
Writes the variadic arguments sequentially to the buffer.
Supported arguments types are scalar and vector types described in execute.
Maps supported types to the equivalent Type value.