AutoDock-GPU: AutoDock for GPUs and other accelerators
About
AutoDock-GPU is developed by the Forli lab at Scripps Research.
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. This version itself was based on work done by Imre Pechan from evopro Innovation Kft.
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.
A SYCL version, which also supports recent Intel GPUs, is under development as a joint work of TUDa and Intel Link here.
Gradient-based local search methods (e.g. ADADELTA), as well as an improved version of Solis-Wets from AutoDock 4.
Cuda and OpenCL paths to support a wide variety of target 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.
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
OpenCL / CUDA >= 11
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. AutoDock-GPU since commit 846dc2b requires a C++17-capable compiler, which in practice means GCC >= 9. This also means the minimum version supported for Cuda-compilation is Cuda 11, however, since all versions of Cuda also come with OpenCL older versions can still be used using the OpenCL code path (DEVICE=OCLGPU).
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. Furthermore, an OpenMP-enabled overlapped pipeline (for setup and processing) can be compiled with OVERLAP=ON.
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.
Both options can alternatively be provided in the contents of the files specified with --filelist (-B) (see below for format) and --import_dpf (-I) (AD4 dpf file format).
Min. electrostatic potential distance (w/ dpf: 0.5 Å)
0.01 (Å)
–modqp
Use modified QASP from VirtualDrug or AD4 original
0 (no, use AD4)
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:
When the distance-based analysis is used (--contact_analysis 1 or --contact_analysis <R_cutoff>,<H_cutoff>,<V_cutoff>),
the ligand poses of a given run (either after a docking run or even when --xml2dlg <xml file(s)> is used) are analyzed in
terms of their individual atom distances to the target protein with individual cutoffs for:
Reactive (default: 2.1 Å): These are interactions between modified atom types numbered 1, 4, or 7 (i.e. between C1 and S4)
Hydrogen bonds (default: 3.7 Å): Interactions between Hydrogen-bond donor (closest N,O,S to an HD, or HD otherwise) and acceptor atom types (NA,NS,OA,OS,SA atom types).
Van der Waals (default: 4.0 Å): All other interactions not fulfilling the above criteria.
The contact analysis results for each pose are output in dlg lines starting with ANALYSIS: and/or in <contact_analysis> blocks in xml file output.
AutoDock-GPU requires Meeko for
preparing the receptor and ligands, and
autogrid for calculating the
affinity grid maps, including the file ending in .maps.fld that is passed
to option -M or --ffile.
Visit the Meeko documentation for more
information and tutorials covering AutoDock-GPU usage.
Contributing
If you have a bug report, please check the open issues, and if it has not been reported yet, open a new one.
If you want to add a new feature, pull/fork the code and submit a pull request.
AutoDock-GPU: AutoDock for GPUs and other accelerators
About
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
Setup
Other environments or configurations likely work as well, but are untested. AutoDock-GPU since commit 846dc2b requires a C++17-capable compiler, which in practice means GCC >= 9. This also means the minimum version supported for Cuda-compilation is Cuda 11, however, since all versions of Cuda also come with OpenCL older versions can still be used using the OpenCL code path (
DEVICE=OCLGPU).Compilation
The first step is to set environmental variables
GPU_INCLUDE_PATHandGPU_LIBRARY_PATH, as described here: https://github.com/ccsb-scripps/AutoDock-GPU/wiki/Guideline-for-users<TYPE>CPU,GPU,CUDA,OCLGPU,OPENCL<NWI>1,2,4,8,16,32,64,128,256When
DEVICE=GPUis chosen, the Makefile will automatically tests if it can compile Cuda succesfully. To override, useDEVICE=CUDAorDEVICE=OCLGPU. The cpu target is only supported using OpenCL. Furthermore, an OpenMP-enabled overlapped pipeline (for setup and processing) can be compiled withOVERLAP=ON. Hints: The best work-group size depends on the GPU and workload. TryNUMWI=128orNUMWI=64for modern cards with the example workloads. On macOS, useNUMWI=1for CPUs.After successful compilation, the host binary autodock_<type>_<N>wi is placed under bin.
cpu,gpu1,2,4,8,16,32,64,128,256Usage
Basic command
Both options can alternatively be provided in the contents of the files specified with
--filelist (-B)(see below for format) and--import_dpf (-I)(AD4 dpf file format).Example
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
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 1and--autostop 1allow 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,--heurmaxis 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--resnameach 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:When the distance-based analysis is used (
--contact_analysis 1or--contact_analysis <R_cutoff>,<H_cutoff>,<V_cutoff>), the ligand poses of a given run (either after a docking run or even when--xml2dlg <xml file(s)>is used) are analyzed in terms of their individual atom distances to the target protein with individual cutoffs for:Reactive (default: 2.1 Å): These are interactions between modified atom types numbered 1, 4, or 7 (i.e. between C1 and S4)Hydrogen bonds (default: 3.7 Å): Interactions between Hydrogen-bond donor (closest N,O,S to an HD, or HD otherwise) and acceptor atom types (NA,NS,OA,OS,SA atom types).Van der Waals (default: 4.0 Å): All other interactions not fulfilling the above criteria.The contact analysis results for each pose are output in dlg lines starting with
ANALYSIS:and/or in<contact_analysis>blocks in xml file output.Documentation
Visit the project Wiki.
AutoDock-GPU requires Meeko for preparing the receptor and ligands, and autogrid for calculating the affinity grid maps, including the file ending in
.maps.fldthat is passed to option-Mor--ffile.Visit the Meeko documentation for more information and tutorials covering AutoDock-GPU usage.
Contributing