SparkleDock: For AD/AE
Authors/Creators
Description
Overview
SparkleDock is a GPU-native Glowworm Swarm Optimization (GSO) docking system, enabling large-scale flexible macromolecule docking. It supports:
-
-
TensorCore-accelerated CUDA kernel design to enhance the computing efficiency.
-
Efficient MPI design to adaptively scale across multi-GPU systems.
SparkleDock can accelerate the macromolecule docking by over two orders of magnitude compared to the existing flexible macromolecule docking.
Install SparkleDock
Requirements
software requirements
openmpi/4.1.5cuda/11.8.0gcc/11.3.0cmake/3.16.5
Hardware requirements
NVIDIA GPU or multi-GPU supercomputers.
Benchmark dataset
The table below shows the benchmark dataset from The Protein-Protein Benchmark 5 and Affinity Benchmark Version 2 (BM5). The Category denotes the macromolecule type: antibody-antigen (A); enzyme–inhibitor (EI); enzyme–substrate (ES); enzyme complex with a regulatory or accessory chain (ER); others, G-protein containing (OG); others, receptor containing (OR); others, miscellaneous (OX). The Swarms denotes the calculated swarm number by GSO. The Rec Atoms and Lig Atoms denote the backbone atom number.
| Complex | Category | Swarms | Rec Atoms | Lig Atoms |
|---|---|---|---|---|
| 2VXT | A | 402 | 3002 | 1274 |
| 3VLB | EI | 336 | 3052 | 1658 |
| 2A1A | ES | 271 | 2039 | 1440 |
| 2GTP | OG | 298 | 2516 | 1061 |
| 2X9A | OR | 130 | 757 | 481 |
| 1RKE | OX | 294 | 2030 | 1256 |
| 3LVK | ER | 620 | 6143 | 633 |
| 4GAM | ER | 1245 | 17307 | 1125 |
| 4JCV | OX | 695 | 6032 | 1766 |
| 4LW4 | ES | 558 | 6058 | 1138 |
Build the SparkleDock
Here is the build script
cmake -S source -B build
cmake --build build --parallel 8 --verbose
cmake --install build
We also provide a build script, as shown in build.sh.
Execute the SparkleDock
Single GPU execution
Here is an example of the docking on a single GPU.
#!/bin/bash
dock_home=`pwd`
if [ -z $dock_home ]
then
echo "not found envoriment variable : dock_home"
fi
set -ex
declare -a stringArray
stringArray=("4LW4" "2VXT" "1RKE" "2A1A" "2GTP" "2X9A" "3LVK" "3VLB" "4GAM" "4JCV")
HOME=$dock_home/bm/
STEPS=100
export LD_LIBRARY_PATH=$dock_home/lib:$LD_LIBRARY_PATH
export NUM_THREADS=32
export USE_CUDA=1
for str in "${stringArray[@]}"; do
echo "prepare $str" >> ${HOME}measure.txt
COMPLEX=$str
echo ${HOME}${COMPLEX}
cd ${HOME}${COMPLEX}
mpirun -np 1 $dock_home/bin/sparkledock -f setup.json -s $STEPS -l 1 >> ${HOME}measure.txt
done
multi-GPU execution
Here is an example of the SparkleDock on multi-GPUs. {NPROC} denotes the number of GPUs in a single node.
#!/bin/bash
dock_home=`pwd`
if [ -z $dock_home ]
then
echo "not found envoriment variable : dock_home"
fi
set -ex
declare -a stringArray
stringArray=("4LW4" "2VXT" "1RKE" "2A1A" "2GTP" "2X9A" "3LVK" "3VLB" "4GAM" "4JCV")
HOME=$dock_home/bm/
STEPS=100
export LD_LIBRARY_PATH=$dock_home/lib:$LD_LIBRARY_PATH
export NUM_THREADS=32
export USE_CUDA=1
for str in "${stringArray[@]}"; do
echo "prepare $str" >> ${HOME}measure.txt
COMPLEX=$str
echo ${HOME}${COMPLEX}
cd ${HOME}${COMPLEX}
# # Setup
rm -rf lightdock* init/ swarm_*
mpirun -np ${NPROC} $dock_home/bin/sparkledock -f setup.json -s $STEPS -l 1 >> ${HOME}measure.txt
done
load balance evaluation
Here is the load balance evaluation.
#!/bin/bash
dock_home=`pwd`
if [ -z $dock_home ]
then
echo "not found envoriment variable : dock_home"
fi
set -ex
declare -a stringArray
stringArray=("4LW4" "2VXT" "1RKE" "2A1A" "2GTP" "2X9A" "3LVK" "3VLB" "4GAM" "4JCV")
HOME=$dock_home/bm/
STEPS=100
export LD_LIBRARY_PATH=$dock_home/lib:$LD_LIBRARY_PATH
export NUM_THREADS=32
export USE_CUDA=1
for str in "${stringArray[@]}"; do
echo "prepare $str" >> ${HOME}measure.txt
COMPLEX=$str
echo ${HOME}${COMPLEX}
cd ${HOME}${COMPLEX}
# # Setup
rm -rf lightdock* init/ swarm_*
mpirun -np ${NPROC} $dock_home/bin/sparkledock_lb -f setup.json -s $STEPS -l 1 >> ${HOME}measure.txt
done
Files
SparkleDockae.zip
Files
(7.6 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:93868ae9ff6e7493ffb44190ce8324ae
|
7.6 MB | Preview Download |