Files
DKS/ReadMe.first
2020-06-09 12:55:55 +02:00

90 lines
3.2 KiB
Plaintext

##################################################################
#
# Name: Dynamic Kernel Scheduler
# Version: 1.1
# Author: Uldis Locans
# Contacts: locans.uldis@psi.ch
#
##################################################################
Dynamic Kernel Scheduler is a library that provides a software layer between host application
and hardware accelerators. DKS handles communication between host and device and schedules task
execution using predefined algorithms writen using CUDA and OpenCL for GPUs, and OpenMP with
offload pragmas for IntelMIC. See DKSBase class documentation for full list of functions provided
by DKS.
#####Requirements#####
cmake 3.2 or higher
gcc 4.8.4 or higher
boost 1.55 or higher
#Optional
OpenMPI (Cuda aware OpenMPI enabled for full compatability)
icpc compiler for compatability with Intel MIC
Cuda 7.0 or higher (optional)
Nvidia or Intel OpenCL SDK (optional)
Intel MIC compilers (optional)
######Source######
https://gitlab.psi.ch/uldis_l/DKS
######Changes from DKS-1.0.x version######
DKS is split into three modules that can be enabled/disabled at compile time depending on which software it is used for.
By default only DKSBase and DKSFFT modules are enabled. In order to install other modules the necessary otion needs to be enabled.
Supported options are:
-DENABLE_OPAL option should be enabled if DKS will be used for OPAL
-DENABLE_MUSR option should be enable if DKS will be used for musrfit
-DENABLE_PET option should be enabled if DKS will be used for PET image reconstruction
See install instructions for more details on how to enable the necessary options in DKS
######Install######
#consult the https://gitlab.psi.ch/uldis_l/DKS/wikis/home for full install isntructions
#clone DKS
git clone git@gitlab.psi.ch:uldis_l/DKS.git DKS
#switch to the desired version (OPTIONAL)
git checkout DKS-1.1.0
#configure installation in build directory
#enable DKS modules to compile -DENABLE_OPAL, -DENABLE_MUSR, -DENABLE_PET
CXX=<c++ compiler> CC=<c compiler> -DCMAKE_INSTALL_PREFIX=<install dir> <path to DKS source> [-DENABLE_OPAL=1 -DENABLE_MUSR=1 -DENABLE_PET=1]
#install DKS
make
make install
######DKS usage######
Make install copies the include files and library files to $DKS_BUILD_DIR/build folder, lib folder
in the build directory contains libdks.a and libdksshared.so, on of these libraries can be used to link
with DKS. All the necessary include files are located in $DKS_BUILD_DIR/build/include.
Additional flags needed for CUDA and OpenCL mode:
-lcudart -lcufft -lcublas -lnvToolsExt -lOpenCL -lnvrtc -lcuda -DDKS_CUDA -DDKS_OPENCL
Additional flags needed for IntelMIC and OpenCL mode:
-offload -mkl -openmp -lOpenCL -DDKS_MIC -DDKS_OPENCL
Note: always run make install, during runtime OpenCL and CUDA will search for kernel files in
$DKS_INSTALL_DIR/build/include directory for runtime compilation.
######Running DKS######
#running with cuda
#nvidia multi process service started for better CUDA and MPI execution
#to start mps service (if multiple users use DKS start MPS as root)
nvidia-cuda-mps-control -d
#to stop mps service
echo quit | nvidia-cuda-mps-control
#runnign dks with MIC
#Intel Manycore Platform Software Stack (mpss) service started
#to start mpss
service mpss start