The Dynamic Kernel Scheduler (DKS) is a slim software layer between the host application and the hardware accelerator. The aim of the DKS is to allow the creation of fast fine tuned kernels using device specific frameworks such as CUDA, OpenCL, OpenACC and OpenMP and accelerator libraries such as Thrust, Nvidia CUDA libraries, Intel MKL or others. On top of that, DKS allows the easy use of these kernels in host applications without providing any device or framework specific details. This approach facilitates the integration of different types of devices in the existing applications with minimal code changes and makes the device and the host code a lot more manageable.
The main parts of DKS are:
DKSBase - provides the basic communication functions between host application and hardware accelerators including memory manegement, data transfer and synchronization.
DKSOPAL - provides functions for Object Oriented Particle Accelerator library to offload FFTPoisson calculations and particle matter interaction using Monte Carlo simulations to GPU and Intel MIC
DKSBaseMuSR - provides functions to perform parameter fitting for musrfit on the GPU