Home

Awesome

AutoDock-GPU: AutoDock for GPUs and other accelerators

<img src="logo.png" width="200">

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

Operating systemCPUGPU
CentOS 6.7 & 6.8 / Ubuntu 14.04, 16.04, 20.04, 22.04Intel SDK for OpenCL 2017, oneAPI 2023.1AMD APP SDK v3.0 / CUDA 9, 10, and 11, 12 / oneAPI 2023.1
macOS Catalina 10.15.1Apple / IntelApple / Intel Iris, Radeon Vega 64, Radeon VII

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

Compilation

The first step is to set environmental variables GPU_INCLUDE_PATH and GPU_LIBRARY_PATH, as described here: https://github.com/ccsb-scripps/AutoDock-GPU/wiki/Guideline-for-users

For SYCL, setup the environment as described here: https://www.intel.com/content/www/us/en/docs/oneapi/programming-guide/2023-0/oneapi-development-environment-setup.html

make DEVICE=<TYPE> NUMWI=<NWI>
ParametersDescriptionValues
<TYPE>Accelerator chosenCPU, GPU, CUDA, OCLGPU, XeGPU
<NWI>work-group/thread block size1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024

When DEVICE=GPU is chosen, the Makefile will automatically tests if it can compile Cuda succesfully. To override, use DEVICE=CUDA or DEVICE=OCLGPU or DEVICE=XeGPU. The cpu target is only supported using OpenCL. Furthermore, an OpenMP-enabled overlapped pipeline (for setup and processing) can be compiled with OVERLAP=ON. Note that the version compiled with DEVICE=XeGPU can also run on CPUs. 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. Not all work-group sizes work with all accelerators. On macOS, use NUMWI=1 for CPUs.

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

Binary-name portionDescriptionValues
<type>Accelerator chosencpu, gpu, xegpu
<N>work-group/thread block size1, 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 optionsDescriptionValue
--ffile-MProtein file<protein>.maps.fld
--lfile-LLigand file<ligand>.pdbqt

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

./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

ArgumentDescriptionDefault value <tr><td colspan="4">INPUT</td></tr>
--lfile-LLigand pdbqt fileno default
--ffile-MGrid map files descriptor fld fileno default
--flexres-FFlexible residue pdbqt fileno default
--filelist-BBatch fileno default
--import_dpf-IImport AD4-type dpf input file (only partial support)no default
--xraylfile-Rreference ligand file for RMSD analysisligand file <tr><td colspan="4">CONVERSION</td></tr>
--xml2dlg-XOne (or many) AD-GPU xml file(s) to convert to dlg(s)no default <tr><td colspan="4">OUTPUT</td></tr>
--resnam-NName for docking output logligand basename
--contact_analysis-CPerform distance-based analysis (description below)0 (no)
--xmloutput-xSpecify if xml output format is wanted1 (yes)
--dlgoutput-dControl if dlg output is created1 (yes)
--dlg2stdout-2Write dlg file output to stdout (if not OVERLAP=ON)0 (no)
--rligePrint reference ligand energies0 (no)
--gfpopOutput all poses from all populations of each LGA run0 (no)
--npdb# pose pdbqt files from populations of each LGA run0
--gbestOutput single best pose as pdbqt file0 (no)
--clusteringOutput clustering analysis in dlg and/or xml file1 (yes)
--hsymHandle symmetry in RMSD calc.1 (yes)
--rmstolRMSD clustering tolerance2 (Å) <tr><td colspan="4">SETUP</td></tr>
--devnum-DOpenCL/Cuda device number (counting starts at 1)1
--loadxml-cLoad initial population from xml results fileno default
--seed-sRandom number seeds (up to three comma-sep. integers)time, process id <tr><td colspan="4">SEARCH</td></tr>
--heuristics-HLigand-based automatic search method and # evals1 (yes)
--heurmax-EAsymptotic heuristics # evals limit (smooth limit)12000000
--autostop-AAutomatic stopping criterion based on convergence1 (yes)
--asfreq-aAutoStop testing frequency (in # of generations)5
--nrun-n# LGA runs20
--nev-e# Score evaluations (max.) per LGA run2500000
--ngen-g# Generations (max.) per LGA run42000
--lsmet-lLocal-search methodad (ADADELTA)
--lsit-i# Local-search iterations (max.)300
--psize-pPopulation size150
--mratMutation rate2 (%)
--cratCrossover rate80 (%)
--lsratLocal-search rate100 (%)
--tratTournament (selection) rate60 (%)
--dmovMaximum LGA movement delta6 (Å)
--dangMaximum LGA angle delta90 (°)
--rholbSolis-Wets lower bound of rho parameter0.01
--lsmovSolis-Wets movement delta2 (Å)
--lsangSolis-Wets angle delta75 (°)
--cslimSolis-Wets cons. success/failure limit to adjust rho4
--stopstdAutoStop energy standard deviation tolerance0.15 (kcal/mol)
--initswgensInitial # generations of Solis-Wets instead of -lsmet0 (no) <tr><td colspan="4">SCORING</td></tr>
--derivtype-TDerivative atom types (e.g. C1,C2,C3=C/S4=S/H5=HD)no default
--modpair-PModify vdW pair params (e.g. C1:S4,1.60,1.200,13,7)no default
--ubmod-uUnbound model: 0 (bound), 1 (extended), 2 (compact)0 (same as bound)
--smoothSmoothing parameter for vdW interactions0.5 (Å)
--elecmindistMin. electrostatic potential distance (w/ dpf: 0.5 Å)0.01 (Å)
--modqpUse modified QASP from VirtualDrug or AD4 original0 (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:

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

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:

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.

Contributing