MDBenchmark — quickly generate, start and analyze benchmarks for your molecular dynamics simulations.
MDBenchmark is a tool to squeeze the maximum out of your limited computing resources. It tries to make it as easy as possible to set up systems on varying numbers of nodes and compare their performances to each other.
You can also create a plot to get a quick overview of the possible performance (and also show of to your friends)! The plot below shows the performance of a molecular dynamics system on up to five nodes with and without GPUs.
You can install mdbenchmark
via pip
, conda
or pipenv
:
pip install mdbenchmark
conda install -c conda-forge mdbenchmark
pipenv install mdbenchmark
After installation MDBenchmark is accessible on your command-line via mdbenchmark
:
$ mdbenchmark Usage: mdbenchmark [OPTIONS] COMMAND [ARGS]... Generate and run benchmark jobs for GROMACS simulations. Options: --version Show the version and exit. --help Show this message and exit. Commands: analyze analyze finished benchmark. generate Generate benchmark queuing jobs. submit Start benchmark simulations.
- Generates benchmarks for GROMACS and NAMD simulations (contributions for other MD engines are welcome!).
- Automatically detects the queuing system on your high-performance cluster and submits jobs accordingly.
- Grabs performance from the output logs and creates a fancy plot.
- Benchmarks systems on CPUs and/or GPUs.
The following shows a short usage reference for MDBenchmark. Please consult the documentation for a complete guide.
Assuming you want to benchmark GROMACS version 2016.4 and your TPR file is
called protein.tpr
, run the following command:
mdbenchmark generate --name protein --module gromacs/2016.4
To run benchmarks on GPUs simply add the --gpu
flag:
mdbenchmark generate --name protein --module gromacs/2016.4 --gpu
After you generated your benchmarks, you can submit them at once:
mdbenchmark submit
As soon as the benchmarks have been submitted you can run the analysis via
mdbenchmark analysis
. When at least one system has finished, the script will
produce a .csv
output file or a plot for direct usage (via the --plot
option).
Note: The plotting function currently only allows to plot a CPU and GPU
benchmark from the same module. This will be fixed in an upcoming version and
is already implemented in the develop branch. If you want to
compare different modules with each other, either use the --directory
option
to generate separate plots or create your own plot from the provided CSV file.
$ mdbenchmark analyze gromacs nodes ns/day run time [min] gpu host ncores 0 gromacs/5.1.4-plumed2.3 1 10.878 15 False draco 32 1 gromacs/5.1.4-plumed2.3 2 21.38 15 False draco 64 2 gromacs/5.1.4-plumed2.3 3 34.033 15 False draco 96 3 gromacs/5.1.4-plumed2.3 4 40.274 15 False draco 128 4 gromacs/5.1.4-plumed2.3 5 51.71 15 False draco 160
Contributions to the project are welcome! Information on how to contribute to the project can be found in CONTRIBUTING.md and DEVELOPER.rst.