There is a newer version of the record available.

Published April 20, 2026 | Version v7

SparkleDock: AD/AE

Authors/Creators

Description

SparkleDock: Scalable High-fidelity Macromolecular Docking for GPU-accelerated Supercomputers

Overview

SparkleDock is a GPU-native Glowworm Swarm Optimization (GSO) docking system, enabling large-scale flexible macromolecule docking. It supports:

  • A fine-grained, glowworm-level parallelization to match the SM in GPU.

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

#!/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

Files (490.4 MB)

Name Size
md5:a6adb59bac0667011a98f4baff28f9f1
490.4 MB Download