dopt.cuda

This is the main interface for the dopt CUDA backend.

The APIs in this module allow users to evaluate operation graphs on GPUs through the use of CUDA. There is also functionality to register CUDA implementations of custom operations.

In future, this module will also have an interface allowing the user to register their own optimisation passes to be called when constructing a plan.

Modules

nvrtc
module dopt.cuda.nvrtc

Members

Classes

CUDABuffer
class CUDABuffer

A class that encapsulates the CUDA memory allocation/deallocation process.

CUDAPlan
class CUDAPlan

A Plan stores all the resources (preallocated buffers, custom CUDA kernels) required to evaluate nodes from the Operation graph.

Functions

deregisterCUDAKernel
void deregisterCUDAKernel(string opType)

Deregisters a kernel constructor associated with the given operation type.

evaluateCUDA
Buffer[] evaluateCUDA(Operation[] ops, Buffer[Operation] args = null)

Used for performing a one-off evaluation of a set of operations.

evaluateCUDA
Buffer evaluateCUDA(Operation op, Buffer[Operation] args = null)

A convenience overload that evaluates a single operation and returns a single Buffer.

listCUDAOperations
string[] listCUDAOperations()

Provides a list of all operation types supported by the CUDA backend.

registerCUDAKernel
void registerCUDAKernel(string opName, CUDAKernelCtr kernelCtr)

Registers a CUDA kernel constructor for a given operation type.

Interfaces

CUDAKernel
interface CUDAKernel

Provides a common interface for CUDA kernels.

Meta

Authors

Henry Gouk