All Projects → ccsb-scripps → Autodock Gpu

ccsb-scripps / Autodock Gpu

Licence: other
AutoDock for GPUs and other accelerators

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Autodock Gpu

Hipsycl
Implementation of SYCL for CPUs, AMD GPUs, NVIDIA GPUs
Stars: ✭ 377 (+480%)
Mutual labels:  opencl, cuda, gpu-computing
Luxcore
LuxCore source repository
Stars: ✭ 601 (+824.62%)
Mutual labels:  opencl, cuda, gpu-computing
Bayadera
High-performance Bayesian Data Analysis on the GPU in Clojure
Stars: ✭ 342 (+426.15%)
Mutual labels:  opencl, cuda, gpu-computing
Neanderthal
Fast Clojure Matrix Library
Stars: ✭ 927 (+1326.15%)
Mutual labels:  opencl, cuda, gpu-computing
Arraymancer
A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU and embedded devices via OpenMP, Cuda and OpenCL backends
Stars: ✭ 793 (+1120%)
Mutual labels:  opencl, cuda, gpu-computing
Arrayfire Rust
Rust wrapper for ArrayFire
Stars: ✭ 525 (+707.69%)
Mutual labels:  opencl, cuda
Stdgpu
stdgpu: Efficient STL-like Data Structures on the GPU
Stars: ✭ 531 (+716.92%)
Mutual labels:  cuda, gpu-computing
Vexcl
VexCL is a C++ vector expression template library for OpenCL/CUDA/OpenMP
Stars: ✭ 626 (+863.08%)
Mutual labels:  opencl, cuda
Pycuda
CUDA integration for Python, plus shiny features
Stars: ✭ 1,112 (+1610.77%)
Mutual labels:  cuda, gpu-computing
Juice
The Hacker's Machine Learning Engine
Stars: ✭ 743 (+1043.08%)
Mutual labels:  opencl, cuda
Pyopencl
OpenCL integration for Python, plus shiny features
Stars: ✭ 790 (+1115.38%)
Mutual labels:  opencl, cuda
Xray Oxygen
🌀 Oxygen Engine 2.0. [Preview] Discord: https://discord.gg/P3aMf66
Stars: ✭ 481 (+640%)
Mutual labels:  opencl, cuda
Bitcracker
BitCracker is the first open source password cracking tool for memory units encrypted with BitLocker
Stars: ✭ 463 (+612.31%)
Mutual labels:  opencl, cuda
Ktt
Kernel Tuning Toolkit
Stars: ✭ 33 (-49.23%)
Mutual labels:  opencl, cuda
Nvidia libs test
Tests and benchmarks for cudnn (and in the future, other nvidia libraries)
Stars: ✭ 36 (-44.62%)
Mutual labels:  cuda, gpu-computing
Amgcl
C++ library for solving large sparse linear systems with algebraic multigrid method
Stars: ✭ 390 (+500%)
Mutual labels:  opencl, cuda
Accelerate
Embedded language for high-performance array computations
Stars: ✭ 751 (+1055.38%)
Mutual labels:  cuda, gpu-computing
Loopy
A code generator for array-based code on CPUs and GPUs
Stars: ✭ 367 (+464.62%)
Mutual labels:  opencl, cuda
Ilgpu
ILGPU JIT Compiler for high-performance .Net GPU programs
Stars: ✭ 374 (+475.38%)
Mutual labels:  opencl, cuda
Sixtyfour
How fast can we brute force a 64-bit comparison?
Stars: ✭ 41 (-36.92%)
Mutual labels:  cuda, gpu-computing

AutoDock-GPU: AutoDock for GPUs and other accelerators

About

  • OpenCL and Cuda accelerated version of AutoDock4.2.6. It leverages its embarrasingly parallelizable LGA by processing ligand-receptor poses in parallel over multiple compute units.
  • The OpenCL version was developed in collaboration with TU-Darmstadt and is able to target CPU, GPU, and FPGA architectures.
  • The Cuda version was developed in collaboration with Nvidia to run AutoDock-GPU on the Oak Ridge National Laboratory's (ORNL) Summit, and it included a batched ligand pipeline developed by Aaron Scheinberg from Jubilee Development.

Citation

Accelerating AutoDock4 with GPUs and Gradient-Based Local Search, J. Chem. Theory Comput. 2021, 10.1021/acs.jctc.0c01006

See more relevant papers

Features

  • Gradient-based local search methods (e.g. ADADELTA), as well as an improved version of Solis-Wets from AutoDock 4.
  • It targets platforms based on GPU as well as multicore CPU accelerators.
  • Observed speedups of up to 4x (quad-core CPU) and 56x (GPU) over the original serial AutoDock 4.2 (Solis-Wets) on CPU. The Cuda version is currently even faster than the OpenCL version.
  • A batched ligand pipeline to run virtual screenings on the same receptor (both OpenCL and Cuda)

Setup

Operating system CPU GPU
CentOS 6.7 & 6.8 / Ubuntu 14.04 & 16.04 Intel SDK for OpenCL 2017 AMD APP SDK v3.0 / CUDA v8.0, v9.0, and v10.0
macOS Catalina 10.15.1 Apple / Intel Apple / Intel Iris, Radeon Vega 64, Radeon VII

Other environments or configurations likely work as well, but are untested.

Compilation

make DEVICE=<TYPE> NUMWI=<NWI>
Parameters Description Values
<TYPE> Accelerator chosen CPU, GPU, CUDA, OCLGPU
<NWI> work-group/thread block size 1, 2, 4, 8, 16, 32, 64, 128, 256

When DEVICE=GPU is chosen, the Makefile will automatically tests if it can compile Cuda succesfully. To override, use DEVICE=CUDA or DEVICE=OCLGPU. The cpu target is only supported using OpenCL. Hints: The best work-group size depends on the GPU and workload. Try NUMWI=128 or NUMWI=64 for modern cards with the example workloads. On macOS, use NUMWI=1 for CPUs.

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

Binary-name portion Description Values
<type> Accelerator chosen cpu, gpu
<N> work-group/thread block size 1, 2, 4, 8,16, 32, 64, 128, 256

Usage

Basic command

./bin/autodock_<type>_<N>wi \
-ffile <protein>.maps.fld \
-lfile <ligand>.pdbqt \
-nrun <nruns>
Mandatory options Description Value
-ffile Protein file <protein>.maps.fld
-lfile Ligand file <ligand>.pdbqt

Example

./bin/autodock_gpu_64wi \
-ffile ./input/1stp/derived/1stp_protein.maps.fld \
-lfile ./input/1stp/derived/1stp_ligand.pdbqt

By default the output log file is written in the current working folder. Examples of output logs can be found under examples/output.

Supported arguments

Argument Description Default value
-nrun # LGA runs 20
-nev # Score evaluations (max.) per LGA run 2500000
-ngen # Generations (max.) per LGA run 42000
-lsmet Local-search method ad (ADADELTA)
-lsit # Local-search iterations (max.) 300
-psize Population size 150
-mrat Mutation rate 2 (%)
-crat Crossover rate 80 (%)
-lsrat Local-search rate 100 (%)
-trat Tournament (selection) rate 60 (%)
-resnam Name for docking output log ligand basename
-hsym Handle symmetry in RMSD calc. 1 (yes)
-devnum OpenCL/Cuda device number (counting starts at 1) 1
-cgmaps Use individual maps for CG-G0 instead of the same one 0 (use same map)
-heuristics Ligand-based automatic search method and # evals 1 (yes)
-heurmax Asymptotic heuristics # evals limit (smooth limit) 12000000
-autostop Automatic stopping criterion based on convergence 1 (yes)
-asfreq Autostop testing frequency (in # of generations) 5
-initswgens Initial # generations of Solis-Wets instead of -lsmet 0 (no)
-filelist Batch file no default
-xmloutput Specify if xml output format is wanted 1 (yes)

Autostop is ON by default since v1.4. The collective distribution of scores among all LGA populations is tested for convergence every <asfreq> generations, and docking is stopped if the top-scored poses exhibit a small variance. This avoids wasting computation after the best docking solutions have been found. The heuristics set the number of evaluations at a generously large number. They are a function of the number of rotatable bonds. It prevents unreasonably long dockings in cases where autostop fails to detect convergence. In our experience -heuristics 1 and -autostop 1 allow sufficient score evaluations for searching the energy landscape accurately. For molecules with many rotatable bonds (e.g. about 15 or more) it may be advisable to increase -heurmax.

When the heuristics is used and -nev <max evals> is provided as a command line argument it provides the (hard) upper # of evals limit to the value the heuristics suggests. Conversely, -heurmax is the rolling-off type asymptotic limit to the heuristic's # of evals formula and should only be changed with caution. The batch file is a text file containing the parameters to -ffile, -lfile, and -resnam each on an individual line. It is possible to only use one line to specify the Protein grid map file which means it will be used for all ligands. Here is an example:

./receptor1.maps.fld
./ligand1.pdbqt
Ligand 1
./receptor2.maps.fld
./ligand2.pdbqt
Ligand 2
./receptor3.maps.fld
./ligand3.pdbqt
Ligand 3

For a complete list of available arguments and their default values, check getparameters.cpp.

Documentation

Visit the project Wiki.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].