Skip to content

Guideline for developers

Leonardo Solis V edited this page Nov 16, 2020 · 11 revisions

Repository description

% tree  -L 1
.
├── bin
├── common
├── device
├── examples
├── host
├── input
├── wrapcl
├── Makefile
├── ...

Folders and files description

bin/: Linux binary files are placed here once compiled.

File Description
autodock_<type>_<N>wi Binary file for <type> (cpu, gpu) device with <N> (16, 32, 64, 128, 256) work items

common/: common header files for host and device.

File Description
calcenergy_basic.h Basic defines and macros for energy calculation
defines.h Basic defines for energy calculation and kernels optimization

device/: source files containing kernels.

File Description
auxiliary_genetic.cl Auxiliary functions for energy calculation
calcenergy.cl Main function for score (binding energy) calculation
calcgradient.cl Main function for gradient calculation
calcMergedEneGrad.cl Score and gradient merged calculation
kernel1.cl gpu_calc_initpop: calculates the scores of initial population
kernel2.cl gpu_sum_evals: sums the evaluation counter states
kernel3.cl perform_LS: performs the Solis-Wets local search
kernel4.cl gpu_gen_and_eval_newpops: performs the genetic generation or global search
kernel_sd.cl gradient_minSD: performs the Steepest-Descent local search
kernel_fire.cl gradient_minFire: performs the Steepest-Descent local search
kernel_ad.cl gradient_minAD: performs the ADADELTA local search

examples/output/: examples of docking log files.

host/: host source files.

File Description
calcenergy[.h][.cpp] Auxiliary functions for parallel energy-calculation
getparameters[.h][.cpp] Functions for processing program input arguments
miscellaneous[.h][.cpp] General-purpose functions
main.cpp Main source file
performdocking[.h][.cpp] Entry point for OpenCL-platform setup and kernels execution
processgrid[.h][.cpp] Functions for processing and converting the energy grids
processligand[.h][.cpp] Functions for performing operations in the ligand
processresult[.h][.cpp] Functions for processing docking results

input/: chemical compounds taken from PDB.

Ligan-receptor complex Description
1stp Structural origins of high-affinity biotin binding to streptavidin
3ce3 Crystal structure of the tyrosine kinase domain of the hepatocyte growth factor receptor C-MET in complex with a Pyrrolopyridinepyridone based inhibitor

For both complexes, the containing folder has a similar structure.

wrapcl/: custom wrapper functions for OpenCL API calls (compliant to OpenCL 1.2).

File Description
BufferObjects[.h][.cpp] Functions for allocating, mapping, copying, and querying info of buffers
CommandQueues[.h][.cpp] Functions for creating and querying info of command queues
commonMacros.h Header with defines to enable features and display of info of OpenCL elements (platform, devices, etc)
Contexts[.h][.cpp] Functions for creating and querying info of contexts
Devices[.h][.cpp] Functions for detecting available devices and querying their attributes
ImportBinary[.h][.cpp] Functions for loading kernel code and transforming (offline) it into device programs
ImportSource[.h][.cpp] Functions for loading kernel code and transforming (online) it into device programs
Kernels[.h][.cpp] Functions for setting kernel arguments, dispatching kernels, and querying kernel attributes
listAttributes[.h][.cpp] Definitions of OpenCL attributes
Platforms[.h][.cpp] Functions for detecting installed platforms and querying their attributes
Programs[.h][.cpp] Functions for querying program's info

Compilation

Basic

make DEVICE=<TYPE>
Parameters Description Values
<TYPE> Accelerator chosen CPU, GPU

After successful compilation, the host binary autodock_<type>_<N>wi is placed under bin.

Binary-name portion Description Values
<type> Accelerator chosen cpu, gpu

All available options

make DEVICE=<TYPE> NUMWI=<NWI> CONFIG=<CFG> REPRO=<Y/N>
Argument Description Possible values
DEVICE OpenCL device type <TYPE>: CPU, GPU
NUMWI Number of work items per work group <NWI> : 16, 32, 64, 128, 256
CONFIG Host configuration <CFG> : RELEASE, LDEBUG (light), FDEBUG (full)

Configuration file

Check the configurations in the project's Makefile.

Further reading

Go to Wiki home.