Vina-GPU 2.1

October 1, 2024 · View on GitHub

Vina-GPU 2.1 further improves the virtual screening runtime and accuracy with the noval RILC-BFGS and GCS mthods based on Vina-GPU 2.0. Vina-GPU 2.1 includes AutoDock-Vina-GPU 2.1, QuickVina 2-GPU 2.1 and QuickVina-W-GPU 2.1. Vina-GPU2 1-arch

Virtual Screening Results

  • Runtime comparison of Vina-GPU 2.1 on Drugbank library (partial) runtime_all_drugbank

  • Accuracy comparison of Vina-GPU 2.1 on Drugbank library (partial) vs_accuracy_all_drugbank

Compiling and Running

Windows

Build from source file

Visual Studio 2019 is recommended for build Vina-GPU 2.1 from source

  1. install boost library (current version is 1.77.0)

  2. install CUDA Toolkit (current version: v12.2) if you are using NVIDIA GPU cards

    Note: the OpenCL library can be found in CUDA installation path for NVIDIA or in the driver installation path for AMD

  3. add $(ONE_OF_VINA_GPU_2_1_METHODS)/lib $(ONE_OF_VINA_GPU_2_1_METHODS)/OpenCL/inc $(YOUR_BOOST_LIBRARY_PATH) $(YOUR_BOOST_LIBRARY_PATH)/boost $(YOUR_CUDA_TOOLKIT_LIBRARY_PATH)/CUDA/v12.2/include in the include directories

  4. add $(YOUR_BOOST_LIBRARY_PATH)/stage/lib $(YOUR_CUDA_TOOLKIT_PATH)/CUDA/lib/x64in the addtional library

  5. add OpenCL.lib in the additional dependencies

  6. add --config=$(ONE_OF_VINA_GPU_2_1_METHODS)/input_file_example/2bm2_config.txt in the command arguments

  7. add NVIDIA_PLATFORM OPENCL_3_0 WINDOWS in the preprocessor definitions if necessary

  8. if you want to compile the binary kernel file on the fly, add BUILD_KERNEL_FROM_SOURCE in the preprocessor definitions

  9. build & run Note: ensure the line ending are CLRF

Linux

Note: At least 8M stack size is needed. To change the stack size, use ulimit -s 8192.

  1. install boost library (current version is 1.77.0)

  2. install CUDA Toolkit (current version: v12.2) if you are using NVIDIA GPU cards

    Note: OpenCL library can be usually in /usr/local/cuda (for NVIDIA GPU cards)

  3. cd into one of the three methods of Vina-GPU 2.1 ($(ONE_OF_VINA_GPU_2_1_METHODS))

  4. change the BOOST_LIB_PATH and OPENCL_LIB_PATH accordingly in Makefile

  5. set GPU platform GPU_PLATFORM and OpenCL version OPENCL_VERSION in Makefile. some options are given below:

    Note: -DOPENCL_3_0 is highly recommended in Linux, please avoid using -OPENCL_1_2 in the Makefile setting. To check the OpenCL version on a given platform, use clinfo.

    MacrosOptionsDescriptions
    GPU_PLATFORM-DNVIDIA_PLATFORM / -DAMD_PLATFORMNVIDIA / AMD GPU platform
    OPENCL_VERSION-DOPENCL_3_0 / -OPENCL_2_0OpenCL version 2.1 / 2.0
  6. type make clean and make source to build $(ONE_OF_VINA_GPU_2_1_METHODS) that compile the kernel files on the fly (this would take some time at the first use)

  7. after a successful compiling, $(ONE_OF_VINA_GPU_2_1_METHODS) can be seen in the directory

  8. change --opencl_binary_path in the ./input_file_example/2bm2_config.txt accordingly and type $(ONE_OF_VINA_GPU_2_1_METHODS) --config ./input_file_example/2bm2_config.txt to run one of the Vina-GPU 2.1 method

  9. once you successfully run $(ONE_OF_VINA_GPU_2_1_METHODS), its runtime can be further reduced by typing make clean and make to build it without compiling kernel files (but make sure the Kernel1_Opt.bin file and Kernel2_Opt.bin file is located in the dir specified by --opencl_binary_path)

  10. other compile options:

OptionsDescription
-gdebug
-DTIME_ANALYSISoutput runtime analysis in gpu_runtime.log
-DDISPLAY_ADDITION_INFOprint addition information

Enlarge the docking box

The docking box now can be enlarged by

  1. Change -DSMALL_BOX into -DLARGE_BOX in Makefile
  2. Type make source and $(ONE_OF_VINA_GPU_2_1_METHODS) --config ./input_file_example/2bm2_config.txt
  3. Once the tutorial docking is finished, type make clearn and make
  4. Now you can enlarge the docking box --size_x/y/z accordingly (see Limitation below)

Structure Optimization

OptimizationMethodsReferenceDocumentation
Receptor Preparationcross-dockingorigin paperDoc
Binding Pocket PredictionCOACH-Dorigin paperDoc
Ligand OptimizationGypsum-DLorigin paperDoc

Usage

ArgumentsDescriptionDefault value
--configthe config file (in .txt format) that contains all the following arguments for the convenience of useno default
--receptorthe recrptor file (in .pdbqt format)no default
--ligand_directorythis path specifies the directory of all the input ligands(in .pdbqt format)no default
--output_directorythis path specifies the directory of the output ligandsno default
--lbfgs--rilc_bfgs 0 turns off the RILC-BFGS, --rilc_bfgs 1 turns on the RILC-BFGS`--rilc_bfgs 1
--threadthe scale of parallelism5000 for quickvina2-gpu 2.1, 8000 for others
--search_depththe number of searching iterations in each docking laneheuristically determined
--center_x/y/zthe center of searching box in the receptorno default
--size_x/y/zthe volume of the searching boxno default
--opencl_binary_paththis path specifies the directory of the kernel pathno default

Limitation

ArgumentsDescriptionLimitation
--threadthe scale of parallelism (docking lanes)preferably less than 10000
--size_x/y/zthe volume of the searching boxless than 100/100/100 for AutoDock-Vina-GPU 2.1 and 70/70/70 for other two variants

Citation

  • Tang, Shidi, et al. "Vina-GPU 2.1: towards further optimizing docking speed and precision of AutoDock Vina and its derivatives." IEEE/ACM Transactions on Computational Biology and Bioinformatics (2024).
  • Ding, Ji, et al. "Vina-GPU 2.0: further accelerating AutoDock Vina and its derivatives with graphics processing units." Journal of chemical information and modeling 63.7 (2023): 1982-1998.
  • Tang, Shidi et al. “Accelerating AutoDock Vina with GPUs.” Molecules (Basel, Switzerland) vol. 27,9 3041. 9 May. 2022, doi:10.3390/molecules27093041
  • Trott, Oleg, and Arthur J. Olson. "AutoDock Vina: improving the speed and accuracy of docking with a new scoring function, efficient optimization, and multithreading." Journal of computational chemistry 31.2 (2010): 455-461.
  • Hassan, N. M. , et al. "Protein-Ligand Blind Docking Using QuickVina-W With Inter-Process Spatio-Temporal Integration." Scientific Reports 7.1(2017):15451.
  • Amr Alhossary, Stephanus Daniel Handoko, Yuguang Mu, and Chee-Keong Kwoh. "Fast, accurate, and reliable molecular docking with QuickVina 2. " Bioinformatics (2015): 2214–2216.