Skip to content

Commit c2d2d90

Browse files
authored
Release 3.0.1 (PR #170)
Release 3.0.1
2 parents 3d72698 + a0ce941 commit c2d2d90

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+2459
-1896
lines changed

.travis.yml

+1-4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ branches:
66
only:
77
- develop
88
- master
9+
- version-3
910

1011
cache:
1112
- pip: true
@@ -33,10 +34,6 @@ jobs:
3334
language: python
3435
python: "3.6"
3536
dist: xenial
36-
- name: "Python 3.5"
37-
python: "3.5"
38-
- name: "Python 2.7"
39-
python: "2.7"
4037

4138
- stage: "Linting and formatting"
4239
name: "Formatting with black"

AUTHORS

+4-1
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,7 @@ Chronological list of authors
1818
- Michael Gecht
1919

2020
2018
21-
- Marc Siggel
21+
- Marc Siggel
22+
23+
2020
24+
- Sebastian Kehl

CHANGELOG.rst

+15
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
3.0.1 (2020-10-09)
2+
==================
3+
4+
Features
5+
--------
6+
7+
- Add ability to scan number of MPI ranks and OpenMP threads. (`#165 <https://github.com/bio-phys/MDBenchmark/issues/165>`_)
8+
- Add support to run multiple simulations on single nodes (GROMACS-only). (`#168 <https://github.com/bio-phys/MDBenchmark/issues/168>`_)
9+
10+
3.0.0
11+
=====
12+
13+
This version was skipped intentionally. Version 3.0.1 is the first release of the major version 3.
14+
15+
116
2.0.1 (2020-03-04)
217
==================
318

DEVELOPER.rst

+10-2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ Using ``poetry`` you can simply run ``poetry install`` to
2525
install all dependencies. ``poetry`` will take care of creating a
2626
virtual environment for you.
2727

28+
Working on the documentation
29+
----------------------------
30+
31+
You will need to install extra packages to work on the documentation. Run
32+
``poetry install --extra docs`` to install all necessary dependencies. When in
33+
the ``docs`` folder, you can run ``poetry run make livehtml`` to start a local
34+
preview of the documentation, that will rebuild when you update a file.
35+
2836
Running commands in the virtual environment
2937
-------------------------------------------
3038

@@ -106,7 +114,7 @@ contain the file ``.invisible``. Also the file ``CHANGELOG.rst`` should have
106114
been updated.
107115

108116
**Important:** Make sure that the version numbers inside
109-
``mdbenchmark/__init__.py`` and ``CHANGELOG.rst`` match.
117+
``mdbenchmark/__init__.py`` and ``CHANGELOG.rst`` match.
110118

111119
3. Generate dist files
112120
----------------------
@@ -120,7 +128,7 @@ First make sure that your ``wheel`` package is up-to-date::
120128

121129
Next we can generate a source distribution package and universal wheel::
122130

123-
$ python setup.py sdist bdist_wheel --universal
131+
$ python setup.py sdist bdist_wheel --universal
124132

125133
Check that the tarball inside ``./dist/`` includes all needed files (source
126134
code, ``README.rst``, ``CHANGELOG.rst``, ``LICENSE``), !

LICENSE

+1-31
Original file line numberDiff line numberDiff line change
@@ -677,36 +677,6 @@ the library. If this is what you want to do, use the GNU Lesser General
677677
Public License instead of this License. But first, please read
678678
<https://www.gnu.org/licenses/why-not-lgpl.html>.
679679

680-
==========================================================================
681-
682-
cadishi.py (mdbenchmark/ext/cadishi) is released under the MIT license:
683-
684-
--------------------------------------------------------------------------
685-
686-
MIT License
687-
688-
Copyright (c) 2015-2017 Klaus Reuter, Max Planck Computing and Data Facility,
689-
Giessenbachstraße 2, 85748 Garching, Germany.
690-
Copyright (c) 2015-2017 Juergen Koefinger, Max Planck Institute of Biophysics,
691-
Max-von-Laue-Straße 3, 60438 Frankfurt am Main, Germany.
692-
693-
Permission is hereby granted, free of charge, to any person obtaining a copy of
694-
this software and associated documentation files (the "Software"), to deal in
695-
the Software without restriction, including without limitation the rights to
696-
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
697-
the Software, and to permit persons to whom the Software is furnished to do so,
698-
subject to the following conditions:
699-
700-
The above copyright notice and this permission notice shall be included in all
701-
copies or substantial portions of the Software.
702-
703-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
704-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
705-
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
706-
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
707-
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
708-
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
709-
710680
============================================================================
711681

712682
click_test.py (mdbenchmark/ext/click_test) is released under the MIT license
@@ -733,4 +703,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
733703
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
734704
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
735705
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
736-
THE SOFTWARE.
706+
THE SOFTWARE.

README.rst

+30-11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
============================================
2-
Benchmark molecular dynamics simulations
3-
============================================
1+
========================================
2+
Benchmark molecular dynamics simulations
3+
========================================
44

55
.. image:: https://img.shields.io/pypi/v/mdbenchmark.svg
66
:target: https://pypi.python.org/pypi/mdbenchmark
@@ -51,21 +51,28 @@ pip
5151

5252
.. code::
5353
54-
pip install mdbenchmark
54+
pip install mdbenchmark
5555
5656
conda
5757
-----
5858

5959
.. code::
6060
61-
conda install -c conda-forge mdbenchmark
61+
conda install -c conda-forge mdbenchmark
62+
63+
pipx
64+
----
65+
66+
.. code::
67+
68+
pipx install mdbenchmark
6269
6370
pipenv
6471
------
6572

6673
.. code::
6774
68-
pipenv install mdbenchmark
75+
pipenv install mdbenchmark
6976
7077
After installation MDBenchmark is accessible on your command-line via ``mdbenchmark``::
7178

@@ -91,6 +98,8 @@ Features
9198
- Automatically detects the queuing system on your high-performance cluster and submits jobs accordingly.
9299
- Grabs performance from the output logs and creates a fancy plot.
93100
- Benchmarks systems on CPUs and/or GPUs.
101+
- Find the best parameters by scanning different numbers of MPI ranks and OpenMP threads.
102+
- Run multiple instances of the same simulation on a single node using GROMACS' ``--multidir`` option.
94103

95104
Short usage reference
96105
=====================
@@ -104,31 +113,41 @@ Benchmark generation
104113
Assuming you want to benchmark GROMACS version 2018.3 and your TPR file is
105114
called ``protein.tpr``, run the following command::
106115

107-
mdbenchmark generate --name protein --module gromacs/2018.3
116+
mdbenchmark generate --name protein --module gromacs/2018.3
108117

109118
To run benchmarks on GPUs simply add the ``--gpu`` flag::
110119

111-
mdbenchmark generate --name protein --module gromacs/2018.3 --gpu
120+
mdbenchmark generate --name protein --module gromacs/2018.3 --gpu
112121

113122
Benchmark submission
114123
--------------------
115124

116125
After you generated your benchmarks, you can submit them at once::
117126

118-
mdbenchmark submit
127+
mdbenchmark submit
119128

120129
Benchmark analysis
121130
------------------
122131

123132
As soon as the benchmarks have been submitted you can run the analysis via
124133
``mdbenchmark analyze``. Systems that have not finished yet will be marked with a question mark (``?``). You can save the performance results to a CSV file and subsequently create a plot from the data::
125134

126-
# Print performance results to console and save them to a file called results.csv
135+
# Print performance results to console and save them to a file called results.csv
127136
mdbenchmark analyze --save-csv results.csv
128-
137+
129138
# Create a plot from the results present in the file results.csv
130139
mdbenchmark plot --csv results.csv
131140

141+
Literature
142+
==========
143+
144+
Please cite the latest MDBenchmark publication if you use the tool to benchmark
145+
your simulations. This will help raise awareness of benchmarking and help people
146+
improve their simulation performance, as well as reduce overall resource
147+
wastage.
148+
149+
M\. Gecht, M. Siggel, M. Linke, G. Hummer, J. Köfinger MDBenchmark: A toolkit to optimize the performance of molecular dynamics simulations. J. Chem. Phys. 153, 144105 (2020); https://doi.org/10.1063/5.0019045
150+
132151
Contributing
133152
============
134153

docs/analyze.rst

-13
Original file line numberDiff line numberDiff line change
@@ -47,19 +47,6 @@ single benchmark::
4747

4848
mdbenchmark analyze --directory draco_gromacs/2018.3
4949

50-
Plotting of benchmark results
51-
-----------------------------
52-
53-
.. warning::
54-
55-
The function |mdbenchmark.analyze.plot|_ was deprecated with version 2.0. You should migrate to the newer ``mdbenchmark plot``, as it provides more functionality and the former version will be removed in the future.
56-
57-
MDBenchmark provides a quick and simple way to plot the results of the
58-
benchmarks, giving you a ``.pdf`` file as output. To generate a plot simply use
59-
the ``--plot`` option::
60-
61-
mdbenchmark analyze --plot
62-
6350
Plot the number of cores
6451
~~~~~~~~~~~~~~~~~~~~~~~~
6552

docs/conf.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,17 @@
5151

5252
# General information about the project.
5353
project = "MDBenchmark"
54-
copyright = "2017-2018, The MDBenchmark development team"
54+
copyright = "2017-2020, The MDBenchmark development team"
5555
author = "Written by the MDBenchmark development team"
5656

5757
# The version info for the project you're documenting, acts as replacement for
5858
# |version| and |release|, also used in various other places throughout the
5959
# built documents.
6060
#
6161
# The short X.Y version.
62-
version = "2.0"
62+
version = "3.0"
6363
# The full version, including alpha/beta/rc tags.
64-
release = "2.0.1"
64+
release = "3.0.1"
6565

6666
# The language for content autogenerated by Sphinx. Refer to documentation
6767
# for a list of supported languages.

docs/general.rst

+4-4
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,17 @@ NAMD
4646
.. note::
4747

4848
**NAMD support is experimental.** If you encounter any problems or bugs, we
49-
would appreciate to `hear from you`_.
49+
would appreciate to `hear from you`_.
5050

5151
Generating benchmarks for NAMD follows a similar process to GROMACS. Assuming
5252
the NAMD configuration file is called ``protein.namd``, you will also need the
5353
corresponding ``protein.pdb`` and ``protein.psf`` inside the same folder.
5454

5555
.. warning::
5656

57-
Please be aware that all paths given in the ``protein.namd`` file
58-
must be absolute paths. This ensures that MDBenchmark does not destroy paths
59-
when copying files around during benchmark generation.
57+
Please be aware that all paths given in the ``protein.namd`` file must be
58+
absolute paths. This ensures that MDBenchmark does not destroy paths when
59+
copying files around during benchmark generation.
6060

6161
In analogy to the GROMACS setup, you can execute the following command to
6262
generate benchmarks for a module named ``namd/2.12``:

docs/generate.rst

+85-6
Original file line numberDiff line numberDiff line change
@@ -94,18 +94,74 @@ simply use the ``--host`` option::
9494
Running on CPUs or GPUs
9595
-----------------------
9696

97-
Depending on your setup you might want to run your simulations only on GPUs
98-
or CPUs. You can do so with the ``--cpu/--no-cpu`` and ``--gpu/--no-gpu`` flags, ``-c/-nc` and ``-g/-ng` respectively.
99-
If neither of both options is given, benchmarks will be generated for CPUs only.
100-
The default template for the MPCDF cluster ``draco`` showcases the ability to
101-
run benchmarks on GPUs::
97+
Depending on your setup you might want to run your simulations only on GPUs or
98+
CPUs. You can do so with the ``--cpu/--no-cpu`` and ``--gpu/--no-gpu`` flags,
99+
``-c/-nc` and ``-g/-ng`` respectively. If neither of both options is given,
100+
benchmarks will be generated for CPUs only. The default template for the MPCDF
101+
cluster ``draco`` showcases the ability to run benchmarks on GPUs::
102102

103103
mdbenchmark generate --gpu
104104

105105
This generates benchmarks for both GPU and CPU partitions. If you only want to run on
106106
GPUs this is easily achieved with::
107107

108-
mdbenchmark generate --gpu --no-cpu
108+
mdbenchmark generate --gpu --no-cpu
109+
110+
111+
Using a different number of ranks or threads
112+
--------------------------------------------
113+
114+
The correct choice on the number of MPI ranks and OpenMP threads and
115+
hyperthreading depends on your available hardware and software resources, your
116+
simulation system and used MD engine. MDBenchmark can help you scan different
117+
numbers of ranks and threads.
118+
119+
.. note::
120+
121+
The following was only tested with GROMACS.
122+
123+
To use this feature, you first need to know the number of physical cores on your
124+
compute nodes. MDBenchmark will try to guess the number of physical cores. The
125+
guess is only correct if the machine from which you submit the jobs, i.e., a
126+
login node on a supercomputer, has the same number of cores as the actual
127+
compute nodes. You can override the number of physical cores with the
128+
``--physical-cores`` options.
129+
130+
In addition, Intel CPUs are able run two calculations on the same core at the
131+
same time. This feature is called "hyperthreading". If your CPU supports
132+
hyperthreading, then it also has logical cores, which is twice the number of
133+
physical cores. Assuming the CPUs of your compute node have 40 physical cores
134+
and supports hyperthreading, you need to specify the following settings::
135+
136+
mdbenchmark generate --physical-cores 40 --logical-cores 80
137+
138+
The above example would generate benchmarks without hyperthreading. To enable
139+
hyperthreading you need to specify the ``--hyperthreading`` option::
140+
141+
mdbenchmark generate --hyperthreading
142+
143+
Now that you have defined the number of available cores and whether you want to
144+
toggle hyperthreading, you can define the number of MPI ranks that MDBenchmark
145+
should use for the job::
146+
147+
mdbenchmark generate --ranks 2 --ranks 10 --ranks 40
148+
149+
The above command will generate jobs using 2, 10 and 40 MPI ranks. MDBenchmark
150+
will calculate the number of OpenMP threads by itself. As a general rule:
151+
`number_of_cores = number_of_ranks * number_of_threads`. If your CPU does not
152+
support hyperthreading, then the number of cores equals the number of physical
153+
cores. If it does support hyperthreading, then it equals the number of logical
154+
cores.
155+
156+
Combining all options you can run benchmarks on 1-10 with and without GPUs using
157+
either 4, 8 or 20 MPI ranks with hyperthreading with the following command::
158+
159+
mdbenchmark generate --max-nodes 10 --cpu --gpu --ranks 4 --ranks 8 --ranks 20 --physical-cores 40 --logical-cores 80 --hyperthreading
160+
161+
In the above case, MDBenchmark will generate jobs with 4 MPI ranks/20 OpenMP
162+
threads; 8 MPI ranks/10 OpenMP threads and 20 MPI ranks/4 OpenMP threads to
163+
fulfill the constraint from above. A total of 60 benchmarks will be generated
164+
(``10 (nodes) * 2 (gpu/cpu) * 3 (ranks)``).
109165

110166

111167
Limiting the run time of benchmarks
@@ -128,6 +184,29 @@ If you want your benchmark jobs to have specific names, use the ``--job-name`` o
128184

129185
mdbenchmark generate --job-name my_benchmark
130186

187+
Multiple jobs per node
188+
----------------------
189+
190+
.. note::
191+
192+
Multiple simulations per node are currently only supported with GROMACS. The
193+
developers of MDBenchmark welcome all support to implement further MD engines.
194+
195+
It is possible to run multiple simulations on a single node to use the available
196+
resources more efficiently. For example, when a node is equipped with two GPUs
197+
it is possible to run either 1, 2 or 4 simulations on this single node. Each
198+
instance of the simulation will generate shorter trajectories, but the overall
199+
performance (the sum of all instances) will most likely be bigger than running a
200+
single simulation on one node. This is especially useful when one is interested
201+
in running many short simulations, instead of a single long simulation.
202+
203+
To use this feature, users can specify the ``--multidir`` option. This will make
204+
use of the built-in functionality availabe in GROMACS, which itself will take
205+
care of running multiple independent instances of the same system. The following
206+
command will run four benchmarks of a single system on the same node::
207+
208+
mdbenchmark generate --multidir 4
209+
131210
.. _modules: https://linux.die.net/man/1/module
132211
.. _draco: https://www.mpcdf.mpg.de/services/computing/draco
133212
.. _hydra: https://www.mpcdf.mpg.de/services/computing/hydra

0 commit comments

Comments
 (0)