Gromacs
2021.3
|
#include <string>
#include "gromacs/gpu_utils/device_context.h"
#include "gromacs/gpu_utils/device_stream.h"
#include "gromacs/gpu_utils/gmxopencl.h"
#include "gromacs/gpu_utils/gputraits_ocl.h"
#include "gromacs/utility/exceptions.h"
#include "gromacs/utility/fatalerror.h"
#include "gromacs/utility/gmxassert.h"
#include "gromacs/utility/stringutil.h"
Declare utility routines for OpenCL.
Functions | |
void | pmalloc (void **h_ptr, size_t nbytes) |
Allocate host memory in malloc style. More... | |
void | pfree (void *h_ptr) |
Free host memory in malloc style. More... | |
std::string | ocl_get_error_string (cl_int error) |
Convert error code to diagnostic string. | |
static bool | haveStreamTasksCompleted (const DeviceStream &) |
Pretend to synchronize an OpenCL stream (dummy implementation). More... | |
void | prepareGpuKernelArgument (cl_kernel kernel, const KernelLaunchConfig &config, size_t argIndex) |
A function for setting up a single OpenCL kernel argument. This is the tail of the compile-time recursive function below. It has to be seen by the compiler first. As NB kernels might be using dynamic local memory as the last argument, this function also manages that, using sharedMemorySize from config . More... | |
template<typename CurrentArg , typename... RemainingArgs> | |
void | prepareGpuKernelArgument (cl_kernel kernel, const KernelLaunchConfig &config, size_t argIndex, const CurrentArg *argPtr, const RemainingArgs *...otherArgsPtrs) |
Compile-time recursive function for setting up a single OpenCL kernel argument. This function uses one kernel argument pointer argPtr to call clSetKernelArg(), and calls itself on the next argument, eventually calling the tail function above. More... | |
template<typename... Args> | |
void * | prepareGpuKernelArguments (cl_kernel kernel, const KernelLaunchConfig &config, const Args *...argsPtrs) |
A wrapper function for setting up all the OpenCL kernel arguments. Calls the recursive functions above. More... | |
void | launchGpuKernel (cl_kernel kernel, const KernelLaunchConfig &config, const DeviceStream &deviceStream, CommandEvent *timingEvent, const char *kernelName, const void *) |
Launches the OpenCL kernel and handles the errors. More... | |
|
inlinestatic |
Pretend to synchronize an OpenCL stream (dummy implementation).
|
inline |
Launches the OpenCL kernel and handles the errors.
[in] | kernel | Kernel function handle |
[in] | config | Kernel configuration for launching |
[in] | deviceStream | GPU stream to launch kernel in |
[in] | timingEvent | Timing event, fetched from GpuRegionTimer |
[in] | kernelName | Human readable kernel description, for error handling only |
gmx::InternalError | on kernel launch failure |
void pfree | ( | void * | h_ptr | ) |
Free host memory in malloc style.
Free host memory in malloc style.
[in] | h_ptr | Buffer allocated with pmalloc that needs to be freed. |
void pmalloc | ( | void ** | h_ptr, |
size_t | nbytes | ||
) |
Allocate host memory in malloc style.
Allocate host memory in malloc style.
[in,out] | h_ptr | Pointer where to store the address of the newly allocated buffer. |
[in] | nbytes | Size in bytes of the buffer to be allocated. |
|
inline |
A function for setting up a single OpenCL kernel argument. This is the tail of the compile-time recursive function below. It has to be seen by the compiler first. As NB kernels might be using dynamic local memory as the last argument, this function also manages that, using sharedMemorySize from config
.
[in] | kernel | Kernel function handle |
[in] | config | Kernel configuration for launching |
[in] | argIndex | Index of the current argument |
void prepareGpuKernelArgument | ( | cl_kernel | kernel, |
const KernelLaunchConfig & | config, | ||
size_t | argIndex, | ||
const CurrentArg * | argPtr, | ||
const RemainingArgs *... | otherArgsPtrs | ||
) |
Compile-time recursive function for setting up a single OpenCL kernel argument. This function uses one kernel argument pointer argPtr
to call clSetKernelArg(), and calls itself on the next argument, eventually calling the tail function above.
CurrentArg | Type of the current argument |
RemainingArgs | Types of remaining arguments after the current one |
[in] | kernel | Kernel function handle |
[in] | config | Kernel configuration for launching |
[in] | argIndex | Index of the current argument |
[in] | argPtr | Pointer to the current argument |
[in] | otherArgsPtrs | Pack of pointers to arguments remaining to process after the current one |
void* prepareGpuKernelArguments | ( | cl_kernel | kernel, |
const KernelLaunchConfig & | config, | ||
const Args *... | argsPtrs | ||
) |
A wrapper function for setting up all the OpenCL kernel arguments. Calls the recursive functions above.
Args | Types of all the kernel arguments |
[in] | kernel | Kernel function handle |
[in] | config | Kernel configuration for launching |
[in] | argsPtrs | Pointers to all the kernel arguments |