File kernel.h¶
Kernel functions.
Functions
-
int GpuKernel_init(GpuKernel *k, gpucontext *ctx, unsigned int count, const char **strs, const size_t *lens, const char *name, unsigned int argcount, const int *types, int flags, char **err_str)¶
Initialize a kernel structure.
lens
holds the size of each source string. If is it NULL or an element has a value of 0 the length will be determined using strlen() or equivalent code.If
*err_str
is returned not NULL then it must be free()d by the caller- Parameters:
k – a kernel structure
ctx – context in which to build the kernel
count – number of source code strings
strs – C array of source code strings
lens – C array with the size of each string or NULL
name – name of the kernel function
argcount – number of kerner arguments
types – typecode for each argument
flags – kernel use flags (see ga_usefl)
err_str – (if not NULL) location to write GPU-backend provided debug info
- Returns:
GA_NO_ERROR if the operation is successful
- Returns:
any other value if an error occured
-
void GpuKernel_clear(GpuKernel *k)¶
Clear and release data associated with a kernel.
- Parameters:
k – the kernel to release
-
gpucontext *GpuKernel_context(GpuKernel *k)¶
Returns the context in which a kernel was built.
- Parameters:
k – a kernel
- Returns:
a context pointer
-
int GpuKernel_sched(GpuKernel *k, size_t n, size_t *gs, size_t *ls)¶
Do a scheduling of local and global size for a kernel.
This function will find an optimal grid and block size for the number of elements specified in n when running kernel k. The parameters may run a bit more instances than n for efficiency reasons, so your kernel must be ready to deal with that.
If either gs or ls is not 0 on entry its value will not be altered and will be taken into account when choosing the other value.
- Parameters:
k – the kernel to schedule for
n – number of elements to handle
gs – grid size (in/out)
ls – local size (in/out)
-
int GpuKernel_call(GpuKernel *k, unsigned int n, const size_t *gs, const size_t *ls, size_t shared, void **args)¶
Launch the execution of a kernel.
- Parameters:
k – the kernel to launch
n – dimensionality of the grid/blocks
gs – sizes of launch grid
ls – sizes of launch blocks
shared – amount of dynamic shared memory to allocate
args – table of pointers to arguments
-
struct GpuKernel¶
- #include <kernel.h>
Kernel information structure.