Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
D DKS
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Analytics
    • Analytics
    • CI/CD
    • Code Review
    • Issue
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Uldis Locans
  • DKS
  • Wiki
  • extend dks

Last edited by Uldis Locans Aug 21, 2017
Page history

extend dks

Algorithms

All the algorithms implemented in DKS are defined in src/Algorithms using abstract base classes, which are then implemented using CUDA, OpenCL and OpenMP (for Intel MIC). The defined abstract classes are:

  • BaseFFT - contains all the methods to offload FFT execution on the device. Is implemented in CUDA (cuFFT library), OpenCL (clFFT library) and OpenMP (Intel MKL library)

class_base_f_f_t

  • CudaChiSquareRuntime - contains all the methods to offload chi square calculations on the device for musrfit. Is implemented using CUDA and OpenCL for offload on GPUs and CPUs.

class_chi_square_runtime

  • CollimatorPhysics - Base class to implement particle matter interaction for OPAL. Implemented in CUDA and OpenMP.

  • GreensFunction - Base class to implelment integrated greens function for OPALs FFT Poisson Solver (CUDA and OpenMP)

  • ImageReconstruction - Base class for PET image reconstruction (CUDA)

DKS modules

DKS modules (DKSOPAL, DKSBaseMuSR, DKSImageReconstruction) provide the API that host applications use, to invoke the implemented algorithms.

class_d_k_s_base__inherit__graph

Adding algorithms and frameworks to DKS

New algorithms that are defined in src/Algorithms and implemented in CUDA, OpenCL or MIC need to be added to one of the modules.

When a module is initialized and device that is used set DKS will chose the appropriate implementation of the algorithms to execute the code on the device.

When a new framework needs to be added to DKS, the algorithms need to be implemented using this framework and the module API need to be updated to use this implementation in case this framework is selected in DKS setup.

if (apiCuda()) {
  ierr = CUDA_SAFECALL( DKS_SUCCESS );
  chiSq = CUDA_SAFEINIT(new CudaChiSquareRuntime(getCudaBase()));
} else {
  ierr = OPENCL_SAFECALL( DKS_SUCCESS );
  chiSq = OPENCL_SAFECALL(new OpenCLChiSquareRuntime(getOpenCLBase()));
}
Clone repository
  • autotuning
  • build dks
    • dks 1.0.2
    • dks 1.1.2
  • dks modules
    • DKSBase
    • dksfft
    • dksmusrfit
    • dksopal
    • dkspet
  • extend dks
  • Home