Skip to content

Latest commit

History

921 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Virtual Molecule Screening benchmark

Virtual Molecule Screening (VMS) is a computational technique used in drug discovery that uses machine learning to predict if a chemical compound is likely to bind to a drug target.

This repo contains several implementations of VMS generated from a Matrix Factorization model built by SMURFF

  • vms/pure_c: pure C with OmpSs, OpenMP, MPI, GASPI, and ArgoDSM
  • vms/af_py: Python ArrayFire implementation for CUDA, OpenCL and MKL
  • vms/af_cpp: C++ ArrayFire implementation for CUDA, OpenCL and MKL
  • vms/openacc: OpenACC implementation, with and witouth OmpSs
  • vms/smurfference: Python NumPy, Tensorflow implementation
  • vms/fpga: Xilinx FPGA implementation, with OpenCL and with OmpSs@FPGA

Results

The paper Virtual Screening on FPGA: Performance and Energy versus Effort contains a comparison of VMS on FPGA, CPU and GPU.

Comparison of energy performance of the VMS application implemented on an Nvidia A100 GPU, an Intel Skylake CPU (24 cores @ 2.7Ghz) and a Xilinx Alveo U200 FPGA:

CPUGPUFPGA
Peak Performance (GF/s)307219500684
Achieved Performance (GF/s)4023265260
% of Peak Performance13%17%38%
Measured Power Drain (Watt)20520037
Energy Efficiency (GF/s/Watt)1.8103

1 billion compounds, on a A100 GPU, would take 33 minutes:

N (#samples)	100
K (latent dim)	64
F (#features/compound)	500
P (#proteins)	500
Flops/compound	6400000
achieved gflops/second	3265
compounds/second	510156
mega-compounds/second	0.510
seconds/billion compounds	1960
minutes/billion compounds	33

About

Virtual Molecule Screening benchmark

Resources

Stars

1 star

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages