SparkleDock: 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.5
cuda/11.8.0
gcc/11.3.0
cmake/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 |
Execute the SparkleDock
Single GPU execution
Here is an example of the docking on single GPU.
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.
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.
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
Files
(490.4 MB)
| Name | Size | |
|---|---|---|
|
md5:a6adb59bac0667011a98f4baff28f9f1
|
490.4 MB | Download |