Mark Abraham [Tue, 7 Apr 2020 21:02:10 +0000 (21:02 +0000)]
Replace EnumOption with EnumerationArrayOption
Avoids code needing to mis-use the m_elements member of the
EnumerationArray. Encourages using class enums for command-line
options. Removes a bunch of clang-tidy suppressions and will be needed
for dealing properly with even more warnings coming with clang-tidy 9.
Removes a bunch of comments about how this list has to match that enum
somewhere else, because the compiler will tell us that.
Fixed time-unit conversion bug introduced a decade ago in
bc23d95b8c54b383cc731666f692f03237f8e949. That's exactly the kind
of bug that now gets caught at compile time.
Removed strange first field of legacy enums time_unit_t and
xvg_format_t that forced complicated casting and searching. It didn't
seem to do anything useful.
Removed unnecessary EnumIntOption.
Some test code is now in gmx::test namespace for brevity (consistent
with other test code), now that the enum values are much longer.
Change-Id: I9fd398d8981115d2317614912e64a9129ff1253a
Pascal Merz [Tue, 7 Apr 2020 19:10:44 +0000 (19:10 +0000)]
Require explicit MPI_COMM for gmx_bcast and gmx_barrier
This changes gmx_bcast and gmx_barrier to take the MPI communicator
explicitly instead of taking a pointer to t_commrec and using
mpi_comm_mygroup. This also allows to remove gmx_bcast_sim and leave
the responsibility of passing the right communicator to the caller.
This is a first step in breaking up t_commrec. These functions
are the subset of low-level networking functions which are used
before domain decomposition (and hence PP/PME ranks) is set up.
Refs #2395
M. Eric Irrgang [Tue, 7 Apr 2020 11:17:58 +0000 (11:17 +0000)]
Prepare Python environments for GitLab CI pipeline.
* Install Python interpreters.
* Prepare and stash Python virtual environments.
Refs #2756
Change-Id: I1b68e039018a72865d1cc6f60557104026328285
Pascal Merz [Tue, 24 Mar 2020 02:50:56 +0000 (20:50 -0600)]
Make global topology constant in energyOutput.printAnnealingTemperatures()
energyOutput.printAnnealingTemperatures() takes a non-const pointer
to the SimulationGroups object stored in the global topology, but
only ever reads its information. This makes the pointer const.
Refs #3467
Pascal Merz [Tue, 24 Mar 2020 03:14:45 +0000 (21:14 -0600)]
Make global topology const in minimization
Added some trivial const qualifiers to the minimization code to
make global topology const throughout the minimization code.
Refs #3467
Pascal Merz [Tue, 24 Mar 2020 02:40:54 +0000 (20:40 -0600)]
Make global topology constant in mdoutf
init_mdoutf and gmx_mdoutf required non-const pointers to the
global topology. This is not needed, so this is changed to a const
pointer.
Refs #3467
Paul Bauer [Mon, 6 Apr 2020 15:24:29 +0000 (15:24 +0000)]
Add AMD image build, v2
Change-Id: I93c8df07c0bd1c9c03b04a06a2aaba24423278a0
Berk Hess [Mon, 6 Apr 2020 11:27:31 +0000 (11:27 +0000)]
Move force buffer resizing to mdsetup
Consolidate resizing of the force buffer passed to do_force() from
many places in the code to mdAlgorithmsSetupAtomData().
Now only the modular simulation does it's own resizing when not using
domain decomposition. Some refactoring is needed to avoid this.
Change-Id: I1320dffb7b42150f65c5c6a260a7e94e2f6806b5
Pascal Merz [Mon, 2 Mar 2020 23:24:54 +0000 (16:24 -0700)]
Make bonded interaction checking more robust (modular simulator)
Choice on whether the number of bonded interactions should be checked
during calls to the ComputeGlobalsElement used to be done at scheduling
time. This works in the current setup, as domain decomposition (which
might require such a check) is always done right before scheduling.
As this check is requested through callbacks, it is however more robust
to decide whether to perform this test at run time, not at scheduling
time. This commit switches to this more robust behavior.
Change-Id: I2c54bf0152e185c10d582cf0f06ecfc911c6c68b
M. Eric Irrgang [Fri, 3 Apr 2020 18:51:09 +0000 (18:51 +0000)]
Improve gmxapi Python package dependency resolution.
Adopt PEP-517 and PEP-518. Replace setup_requires with pyproject.toml
specification. Add install_requires for run-time requirements. Sort
and improve annotations in requirements*.txt files.
Fixes #3271
M. Eric Irrgang [Fri, 3 Apr 2020 10:07:34 +0000 (10:07 +0000)]
Prune change-management.rst and update links.
Replaced more URLS and updated or removed most references to
Redmine and Gerrit.
References to Gerrit that occur in conjunction with references to
Jenkins are left untouched, since there are other works in progress
related to updating the releng documentation that presumably will
update the Jenkins-related documentation.
M. Eric Irrgang [Thu, 2 Apr 2020 13:46:44 +0000 (13:46 +0000)]
Modernize some Python subprocess calls.
subprocess.run() is now the recommended high-level interface for the
subprocess module. It trivially replaces subprocess.check_output and
usually simplifies subprocess.Popen use cases. It has less error prone
semantics for str vs. bytes I/O. subprocess.run() is less prone to
PIPE buffer deadlocks and we should use the modern interface in order to
benefit from future improvements, as well.
A handful of more intricate subprocess.Popen() usages are left, but I
think we can say that, along with
d80618cb, this change
Fixes #3154
Change-Id: I88f4eaabd8504d3800692c9617571103b2528cf9
M. Eric Irrgang [Wed, 1 Apr 2020 12:45:36 +0000 (15:45 +0300)]
Avoid accidentally initializing pyenv in CI images.
Don't initialize pyenv automatically in root login shells: don't copy
the updated `.bashrc` from the intermediate build images to the final
image. This can cause confusion about which Python installation can or
will be detected by CMake in a CI job.
The primary use case for `pyenv` is to prepare Python venvs, which are
activated explicitly when needed, and which (once created) do not
require pyenv to be initialized in order to be activated.
M. Eric Irrgang [Tue, 31 Mar 2020 17:50:16 +0000 (17:50 +0000)]
Prepare Python environments for GitLab CI pipeline.
* Install Python interpreters.
* Prepare and stash Python virtual environments.
Refs #2756
Change-Id: I1b68e039018a72865d1cc6f60557104026328285
M. Eric Irrgang [Tue, 31 Mar 2020 15:05:05 +0000 (15:05 +0000)]
Update scripts for all of the requested pre-commit test images.
Remove old Dockerfiles (no longer used).
M. Eric Irrgang [Mon, 30 Mar 2020 12:46:58 +0000 (12:46 +0000)]
Require Python 3.6.
Python 3.5 will reach end-of-life 2020-09-13.
Ref: https://devguide.python.org/#status-of-python-branches
Refs #3047
M. Eric Irrgang [Fri, 27 Mar 2020 10:46:17 +0000 (10:46 +0000)]
Compartmentalize hpccm build stages.
Move logic for each building block to a separate function to improve
readability and reusability. Rearrange package installations to improve
build and rebuild time.
Change-Id: I2d33f69af6e57a4b80141ab35ccfb424ed86403b
M. Eric Irrgang [Fri, 27 Mar 2020 08:48:37 +0000 (08:48 +0000)]
Be friendlier w.r.t. linkchecker.
* Add external link to tool web site.
* Make command-line copy-paste friendly in CI job definition.
* Use explicit absolute path for config file in CI job CLI invocation.
M. Eric Irrgang [Mon, 16 Mar 2020 18:13:56 +0000 (21:13 +0300)]
Mock hpccm import so infrastructure docs build easily.
Change-Id: Ib5744ea762b68de0d039cdcf8fd46e73f72210e1
Artem Zhmurov [Mon, 24 Feb 2020 09:22:40 +0000 (10:22 +0100)]
Make use of the DeviceStreamManager
Use the DeviceStreamManager throughout the code. The manager is
owned by the runner and created when GPU is active. The consumers
get the context and streams if needed.
TODOs:
1. Make builders and move the selection on whether the stream should
be created there. The builders should take the manager and pass
the context and the stream to the consumer. Builders should have
the option to create a stream.
2. Makefile in ewald tests uses old infrastructure. Also, the device
context management should be lifted from there and utilized in
all the tests that can run on GPU hardware.
Refs #3316
Refs #3311
Change-Id: I0d08adbe1dee19c1890e55f0e0cf79cea97d39bd
Paul Bauer [Fri, 20 Mar 2020 07:03:11 +0000 (08:03 +0100)]
Fix release builds on Gitlab with regressiontests
Change-Id: Id6465d545d350b8c0d89aecd37d3568dca510d8b
M. Eric Irrgang [Sat, 21 Mar 2020 18:29:53 +0000 (21:29 +0300)]
Extract logic for when CI jobs execute.
Introduce `.rules:<condition>` mix-ins to assert when jobs should run.
Change-Id: I1bd74f347fb8e19ddc49dee2d173520dcb436820
M. Eric Irrgang [Sat, 21 Mar 2020 15:32:56 +0000 (18:32 +0300)]
Normalize some more job names.
Also moves a few jobs between files as seems appropriate.
Eliminates some trivially inherited jobs.
Change-Id: Ib8e989ef560cc14387d14eb0083b5d678ee28651
M. Eric Irrgang [Sat, 21 Mar 2020 14:01:03 +0000 (17:01 +0300)]
Simplify archive.gitlab-ci.yml
Merge some trivially inherited jobs.
Change-Id: Id0a3a998bf5fa3f08db0dccb7da1aadb4f2902a0
M. Eric Irrgang [Sat, 21 Mar 2020 12:58:56 +0000 (15:58 +0300)]
Remove redundant jobs.
Remove distinction between jobs that do and do not stage a build of the
gmxapi Python package in the build tree for API breakage testing and
full documentation builds.
Set a default CMake flag of "-DGMX_PYTHON_PACKAGE=ON" and install some
Python package dependencies with the default EXTRA_INSTALLS. The extra
installs will go away in the near future with updated Docker images.
Removes (up to) 12 jobs from the pipeline.
Change-Id: I13a60b7323ac0bf240f00b3b1360bedd2886e902
M. Eric Irrgang [Sat, 21 Mar 2020 12:25:01 +0000 (15:25 +0300)]
Fix duplicate variables parameter.
Defining the variables parameter twice hurts readability and may have
undefined behavior.
Change-Id: I2b22f89628237277b9596ad6a1cec84295849ce1
M. Eric Irrgang [Sat, 21 Mar 2020 11:27:50 +0000 (14:27 +0300)]
Add required Infrastructure for Gitlab merges
Also adds runs for regressiontests to normal CI.
Change-Id: I7bcb62cd3f2120f1d2e80b2f8a2ec1e328626902
(cherry picked from commit
f518d72b2bea9a0dba02695dc93ca55ef1b09139)
M. Eric Irrgang [Fri, 20 Mar 2020 18:40:25 +0000 (21:40 +0300)]
Normalize naming for gromacs build/testing jobs.
* Rename testing-matrix.gitlab-ci.yml to gromacs.gitlab-ci.yml
* Use a prefix of "gromacs" for jobs that manage the CMake-driven build
and testing procedure to improve readability and make it easier to
locate the sources of jobs mentioned in other files.
* Merge a few more trivial templates.
Change-Id: I6899dcf5a389190f6e973105c47d7743bf0ec802
M. Eric Irrgang [Fri, 20 Mar 2020 17:34:58 +0000 (20:34 +0300)]
Remove some unnecessary indirection in job definitions.
Some job templates were only used once or only existed to extend a
single parent. Other templates became trivial when accounting for
job parameter merging behavior. Additionally, removed some ineffective
or unnecessary parameter or variable specifications.
Note: in the case of the 'configure' jobs, KUBERNETES variables that
were previously masked by job inheritance are now exposed, in accordance
with the apparent original intent.
Change-Id: Idd4100d729a08c47b83c42ca9d7e0257a4029c6f
M. Eric Irrgang [Fri, 20 Mar 2020 13:40:16 +0000 (16:40 +0300)]
Consolidate .use-clangX CI job mix-in.
* Merge .build-clang-template and .clang-before-script-template into
.use-clang:base
* Replace .clangX-template with .use-clangX, intended to provide
everything needed for a gccX build environment.
Change-Id: I5b78cddb47befd2dceb68c144cf427906aeeac36
M. Eric Irrgang [Wed, 18 Mar 2020 18:26:57 +0000 (21:26 +0300)]
Consolidate .use-gccX CI job mix-in.
* Remove some unused templates.
* Merge .build-gcc-template and .gcc-before-script-template into
.use-gcc:base
* Replace .gccX-template with .use-gccX, intended to provide everything
needed for a gccX build environment.
* Document EXTRA_INSTALLS variable and default value.
* Document COMPILER_MAJOR_VERSION variable.
* Document CMAKE_COMPILER_SCRIPT variable.
Change-Id: I07fa648200095ed5e97dea6638031cbb412a615c
Artem Zhmurov [Thu, 20 Feb 2020 15:50:29 +0000 (16:50 +0100)]
Introduce DeviceStreamManager
Make a separate object that will be handling the creation,
management and destruction of the GPU context and streams.
It is detached from the rest of the code in this patch,
but will be attached in the follow-up.
Refs #3316
Refs #3311
Change-Id: I2c59b930ac266d89fafe9e0172b83f07e9858f0b
M. Eric Irrgang [Thu, 19 Mar 2020 16:47:26 +0000 (19:47 +0300)]
Adopt CI job naming guidelines.
Refs #3275
Change-Id: Ib1fdf4eb468fe2a4620e523f265226c09051bba2
M. Eric Irrgang [Fri, 20 Mar 2020 12:35:52 +0000 (15:35 +0300)]
Normalize GitLab-CI *cache* parameter.
* Document in gitlab.rst
* Remove unnecessary indirection for null *cache* parameter.
* Remove *.pull-cache-template* no-op.
* Rename *.build-cache-template* to *.use-ccache*
Change-Id: I3623d6834360498c69bf968b926139c884cab867
M. Eric Irrgang [Mon, 16 Mar 2020 16:02:38 +0000 (19:02 +0300)]
Merge environment support into global.gitlab-ci.yml
Change-Id: I03fdf0b43088db04e2beb32d0a2b9df3c6a25c54
M. Eric Irrgang [Mon, 16 Mar 2020 16:01:37 +0000 (19:01 +0300)]
Move .build-template.yml definitions closer to point of use.
Change-Id: I2d4d5e6063495b658550640c7cdf6655e0f03f6e
M. Eric Irrgang [Mon, 16 Mar 2020 15:17:59 +0000 (18:17 +0300)]
Merge *-test-template.yml into testing-matrix.gitlab-ci.yml
Change-Id: I339dd467b082000aaeffc0d65fdc5cbdde39c5b8
M. Eric Irrgang [Fri, 20 Mar 2020 11:19:54 +0000 (14:19 +0300)]
Merge .test-runner-template.yml into testing-matrix.gitlab-ci.yml
Change-Id: Id12c8b3922f737552b08887a0533db22b1cebe06
M. Eric Irrgang [Fri, 20 Mar 2020 11:14:13 +0000 (14:14 +0300)]
Merge .test-script-template.yml into testing-matrix.gitlab-ci.yml
Also remove unused template.
Change-Id: Ibac0b13f8a62c6ed3d9992247d85ff34a5b45dcf
M. Eric Irrgang [Fri, 20 Mar 2020 11:06:05 +0000 (14:06 +0300)]
Merge .regressiontest-template.yml into archive config.
Change-Id: I0659399f4ec9e4e3a651e5f6818e56ed1820ee62
M. Eric Irrgang [Fri, 20 Mar 2020 10:56:53 +0000 (13:56 +0300)]
Consolidate documentation templates.
Change-Id: I212a03d5fa276e018f1a43fd62904bb73bb8ca91
M. Eric Irrgang [Fri, 13 Mar 2020 11:10:55 +0000 (14:10 +0300)]
Reorganize release templates.
Rename "release" config file to "archive" to collect jobs related to
preparing archives for export. "release" jobs are just special cases of
jobs that already fit in other categories.
Move several jobs between the "lint," "documentation," "testing-matrix,"
and "archive" groupings. Sort job definitions within files in terms of
execution dependency, definition dependency, and toolchain version.
In the future, we can probably reduce the distinction between jobs that
are 'release' or not (jobs that always run may choose a code path
according to to $GROMACS_RELEASE) so I'll leave the 'release' jobs
clustered with the non-'release' jobs.
Refs #3275
Change-Id: If675be3c64dfc2b42cdc4eba6b940226661ddbf3
Paul Bauer [Fri, 20 Mar 2020 15:09:45 +0000 (16:09 +0100)]
Add Documentation build to script
Also some misc fixes, e.g. was missing Python development headers.
TSAN build now also allows running static analyzer :).
Change-Id: I9b363858e48b6d451c9ee43346189f9ff27e4c47
Artem Zhmurov [Fri, 20 Mar 2020 06:08:48 +0000 (07:08 +0100)]
Add OpenCL error reporting to GPU region timer
Change-Id: I06f3d178973de24869b8f9f720ac0f78678dc554
Berk Hess [Fri, 20 Mar 2020 08:52:26 +0000 (09:52 +0100)]
Rename class Grid to BiasGrid in AWH module
Since we do not use namespaces in modules, classes should not
use generic names, also not inside modules as that can lead
to incorrect linking.
Change-Id: I09a5f0ada649e3b35f57d0ee69c1e1ae5555b12e
Artem Zhmurov [Fri, 20 Mar 2020 06:02:24 +0000 (07:02 +0100)]
Small fixes to the DeviceStream
1. Fix compiler warning on having const modifier for bool in function declaration.
2. Fix comments.
3. Introduce isValid(...) method and use it inside the class.
Refs #3314
Refs #3311
Change-Id: I482aee831461f6b170c5fbf90f3f3e978282d226
M. Eric Irrgang [Thu, 19 Mar 2020 12:45:53 +0000 (15:45 +0300)]
Remove confusing and duplicated variables assignment.
A global *variables* definition was introduced
in Change-Id: I4e34845deed69e949e849d6a4a34462965f1646f
with unintended behavior. Variables should be inherited with the
.variables:default definition from global.gitlab-ci.yml so that
the set of variables is merged with the *extends* logic.
A global *variables* is not merged with *variables* parameters
in job definitions.
Change-Id: I383820fd7c76b741fa229fd6f5195c08472c8db0
M. Eric Irrgang [Thu, 19 Mar 2020 10:15:46 +0000 (13:15 +0300)]
Consolidate global mix-ins.
Add a generic documentation section for CI job parameters
and add global.gitlab-ci.yml with mix-in job definitions.
Change-Id: I4e34845deed69e949e849d6a4a34462965f1646f
M. Eric Irrgang [Fri, 13 Mar 2020 10:57:17 +0000 (13:57 +0300)]
[ci skip] Remove indirection for default tags parameter.
Change-Id: I839dd92c3884a963bb64eeb396df7d9c25340d24
M. Eric Irrgang [Thu, 12 Mar 2020 16:07:09 +0000 (19:07 +0300)]
[ci skip] Reorganize .gitlab-ci.yml
* Move job definitions to a few thematic files in admin/gitlab-ci/
* Remove the layer of indirection from .include-template.yml
Change-Id: I2431647ec32929098d2ca04f57083172bb266a44
Artem Zhmurov [Wed, 11 Mar 2020 13:21:24 +0000 (14:21 +0100)]
Store DeviceInformation inside the DeviceContext class
The device information with which the context was created is
now stored inside the DeviceContext object. This allows to pass
less arguments when information from DeviceInformation is needed
(e.g. for OpenCL optimization). The empty constructor for the
DeviceContext was also removed to make having invalid context less
probable.
Change-Id: Ie9600a89c21327246251c891807c37084f626f76
Berk Hess [Tue, 17 Mar 2020 09:53:13 +0000 (10:53 +0100)]
Simplify finish_update()
Now that coordinates are no longer shifted using the graph
in do_force() and not shifted back in finish_update(),
the handling of frozen atoms can be simplified.
Change-Id: I81b817d25f26eeb5480e729dd858c084431a5117
Berk Hess [Mon, 16 Mar 2020 09:09:14 +0000 (10:09 +0100)]
Remove at_start from t_graph
The start atom for shifting was always 0, so no longer needed.
Also improved the naming of several variables.
Change-Id: If9df778f50383e5b2faacb559ee768062faddf2a
Paul Bauer [Fri, 13 Mar 2020 11:21:47 +0000 (12:21 +0100)]
Add script to generate CI Docker files
Refs #3395
Change-Id: Id001c87b52f4d1f7afcb7fbb38cd4b5efdbfd90e
Artem Zhmurov [Wed, 11 Mar 2020 11:09:46 +0000 (12:09 +0100)]
Pass DeviceContext instead of GPU runtime data when possible
Change-Id: I06d66dc24994b15b2ed49ced927b4a5cf59c7c3c
Berk Hess [Fri, 13 Mar 2020 21:49:32 +0000 (22:49 +0100)]
Remove use of graph in do_force()
Removed all unused code paths using t_graph.
TODO: Remove the double coordinate copy in the update code.
Change-Id: I9fcba521e85972e7a0d18e348e0330f845c45182
Berk Hess [Thu, 5 Mar 2020 11:47:59 +0000 (12:47 +0100)]
Use WholeMoleculeTransform for orires and epsilon-surface
Remove direct use of the graph from the orientation restraint
and Ewald epsilon-surface term code by passing in whole molecules
created by the WholeMolecules class.
Since this was the only remaining use of graph in do_force(),
it can now be removed.
Also enabled the epsilon-surface mdrun-test.
Fixes #3441
Change-Id: Idfec6508c6dfd9e1a656cf23613ede3793794901
Berk Hess [Wed, 11 Mar 2020 08:18:54 +0000 (09:18 +0100)]
Add WholeMoleculeTransform class
This class manages a coordinate buffer with molecules not split
over periodic boundary conditions for use in force calculations
which require whole molecules.
Change-Id: Iaa07b8a037d115c9b923978204aaa859ae4256c9
M. Eric Irrgang [Tue, 17 Mar 2020 14:33:38 +0000 (17:33 +0300)]
Document CI variable and remove unused template.
Change-Id: I03a3790fa962b508afc797728a94ebaccfb2509b
Mark Abraham [Tue, 17 Mar 2020 19:36:37 +0000 (20:36 +0100)]
Fix unused variable in PME OpenCL kernel
This is only found when clang is the device compiler.
Also fixed some Doxygen there
Change-Id: I5b46ef0f5c2b11f9b4e891757a25892e3c1d7739
Mark Abraham [Sun, 8 Mar 2020 07:46:08 +0000 (08:46 +0100)]
Simplify PME GPU constants
The values dependent on threadsPerAtom are now computed directly
from a class enum value, rather than indirectly from a bool.
Turned clang-format off for sections of the code where we declare
template functions. That stuff is easier to read and maintain if we
treat it like tabular data rather than free-form code.
Removed some const on template values. Those are useless, because
template values are always const, and confused a compiler when a const
ThreadsPerAtom was compared with a ThreadsPerAtom.
Change-Id: I295d4c2ea52b7912b8bd9a09ee178d104e9bfcb0
M. Eric Irrgang [Wed, 18 Mar 2020 11:38:01 +0000 (14:38 +0300)]
Disable sphinx.ext.viewcode
Generates a broken link that causes linkchecker to fail.
This is a useful extension that will help especially for navigating
from the infrastructure documentation to source files (where navigable
content is more important than user-facing polish) but we aren't ready
for it right now.
Change-Id: I1a8c18428fac532c6064ea583c3b6952bd2e821e
M. Eric Irrgang [Mon, 16 Mar 2020 15:50:23 +0000 (18:50 +0300)]
Add stub Variables documentation to GitLab CI doc.
Change-Id: I1950c2615919cb08b1af331060b9937f1cfb535e
Artem Zhmurov [Tue, 17 Mar 2020 21:04:00 +0000 (22:04 +0100)]
Make some doxygen errors more clear
Prints more clear error messages when doxygen fails to run on assertion.
Change-Id: I476a97b494484d7b020a60d833d8e59405c970a2
M. Eric Irrgang [Mon, 16 Mar 2020 15:30:11 +0000 (18:30 +0300)]
Remove duplicated YAML key.
Change-Id: I611be87f451bd7e82e814c14d16f1086bb69e1fa
Berk Hess [Mon, 9 Mar 2020 17:05:33 +0000 (18:05 +0100)]
Convert t_graph to C++
Convert memory management and initialization of t_graph to C++.
Added a simple class to build the graph. This makes graph generation
a factor 4 slower, but we plan to use gmx_mtop_t for generating
the graph, which will lead to a large speed-up.
Todo: Convert t_graph to a proper class.
Change-Id: Ib5a3059e9c0d0cf6888448fe471280ecf6b9467a
Christian Blau [Sat, 14 Mar 2020 19:34:07 +0000 (20:34 +0100)]
Remove dysfunctional QMMM interface pt4
Clean-up leftover QMMM definitions
Change-Id: I751389f02a111f9a7ccd907fe63c0422df65cc92
Christian Blau [Sat, 14 Mar 2020 13:47:30 +0000 (14:47 +0100)]
Remove dysfunctional QMMM interface pt3
Removing QMMM from inputrec
Change-Id: I3873c2bfa97234ebdf25e49f8ed68be221f9f957
Christian Blau [Fri, 13 Mar 2020 17:45:52 +0000 (18:45 +0100)]
Remove dysfunctional QMMM interface pt2
Uncoupling from forcerec, deleting unused files.
Change-Id: Id72281a26b8b39b6d2a37f5f8a43330f399ce5aa
Christian Blau [Fri, 13 Mar 2020 17:02:56 +0000 (18:02 +0100)]
Remove dysfunctional QMMM interface pt1
Removing some of the by now obsolete QMMM functionality to ease
refactoring work on grompp and mtop
Change-Id: I4a973e905f63d06028ec5d0e73afbcbafa7f0cf5
M. Eric Irrgang [Sun, 15 Mar 2020 15:16:19 +0000 (18:16 +0300)]
Add document for containerization infrastructure.
Refs #3375
Change-Id: Ia734e6c448959a8d73c274847538e81a8c9191ce
M. Eric Irrgang [Sat, 14 Mar 2020 15:27:41 +0000 (18:27 +0300)]
Alphabetize list for readability.
Sort the exported variables passed with EXTRA_VARS in a call to
gmx_configure_version_file().
Change-Id: Iddd878c5b6fefa03a2f0c579147f98e3d51eba08
M. Eric Irrgang [Sat, 14 Mar 2020 15:23:26 +0000 (18:23 +0300)]
Reformat arguments for readability.
Put each of the values for the EXTRA_VARS argument on a separate line
with extra indentation to help distinguish values from key words in a
call to gmx_configure_version_file().
Change-Id: I586bb29c9fdd3e9a01fbea76163085d73ec18d47
M. Eric Irrgang [Sun, 15 Mar 2020 14:59:57 +0000 (17:59 +0300)]
Define an argparse parent parser for container image tools.
Refs #3395
Change-Id: I8bcb314b21732cb870743f44de6aadc4d6bf534d
M. Eric Irrgang [Mon, 17 Feb 2020 16:10:30 +0000 (19:10 +0300)]
Build MPI in Dockerfile.
We should make sure that the MPI compiler wrapper we
set up corresponds to the toolchain we expect to use
in a Docker image.
Refs #3395
Change-Id: I89e2af539199918153560483552b5245c6947acf
M. Eric Irrgang [Sat, 14 Mar 2020 14:24:30 +0000 (17:24 +0300)]
Merge conf.py and conf-vars.py.
Combine conf.py and conf-vars.py.cmakein into conf.cmakein.py.
Process conf.cmakein.py into conf.py the same way conf-vars.py.cmakein
was formerly processed.
Reduces repository complexity and improves the readability of conf.py.
Also allows both conf.cmakein.py and conf.py to be valid Python so that
editors and linters can correctly check the source. conf.py was not
usable from its source directory, so no functionality is lost, and it is
clearer now that documentation should be built through CMake instead of
directly from the command line.
Change-Id: Ia569b3c2f55d20fc21107149a672d1b587ab1571
Mark Abraham [Wed, 4 Mar 2020 17:44:34 +0000 (18:44 +0100)]
Move testing code to test directory
This should not add bulk to libgromacs
Also decoupled some headers from unnecessarily depending on other
headers, some of which inhibited the proper separation of code and
tests. In particular, there's now a proper getter for warp size.
This needed the default implementation of pmeInitEmpty to move into a
source file, because it was requiring the definition of CodePath to be
available.
Change-Id: I3040c77404ade4d8cf0a41faf4aa4da4db42e3d3
Artem Zhmurov [Thu, 13 Feb 2020 15:05:51 +0000 (16:05 +0100)]
Combine initialization routines for GPUs assigned to PME and Nonbonded
The subroutines that do the initialization share a lot of logic. Also,
the current setup does not allow to have more than one GPU assigned to
a single rank. This make it natural to keep one handle to the GPU
device, if there is a GPU assigned to the rank.
Change-Id: I9177e1a6c00cf6efa7b58370b8fa6220c8fd4496
Artem Zhmurov [Thu, 20 Feb 2020 16:13:23 +0000 (17:13 +0100)]
Remove stream from GPU kernel launch config
The stream is not a configuration parameter, hence
it should not be a part of a kernel config struct.
This also remove dependency of kernel config on
DeviceStream.
Change-Id: Idb0426f21bc9db1490053b82f1d11bee55ae9133
Mark Abraham [Fri, 6 Mar 2020 19:43:01 +0000 (20:43 +0100)]
Require padded atom data for PME GPU
The unpadded case doesn't work and is hard-coded not to run, so we
should remove it.
The constant c_usePadding has been true ever since
379b2954fd3efbd1b2c724964932c2ef03078939 introduced it in 2016. This
piece of unecessary complexity probably comes from prior introduction
of the optimization of padding the atom data arrays so that
device-side loads don't have to check boundaries. That's unlikely to
ever change again, and is unused, untested, and poorly
understood. (It's also currently broken - if c_usePadding == false
would be attempted, it would lead to the alignment getter returning
zero that would be used as a divisor, ie. is broken.)
In some places the words alignment and padding were used
interchangeably, which is confusing and fixed. Now code refers to
block size and that it set the minimum divisor for the memory
allocation. Padding size is a misnomer, because the size of the
padding can be interpreted as the number of the extra array elements.
The resulting code is a bit simpler and easier to understand
Change-Id: I51a28c1c722e3ee5a9f3e1787892d81cb9df00fb
Artem Zhmurov [Thu, 20 Feb 2020 14:27:19 +0000 (15:27 +0100)]
Use DeviceStream init(...) function to create streams
Change the stream creation procedures from direct calls to CUDA
and OpenCL API to using pre-defined init(...) method of the
DeviceStream class.
Refs #3314
Refs #3311
Change-Id: I96a0ca41f251b9925ef9bed77c4f355939b65c6d
Artem Zhmurov [Tue, 18 Feb 2020 00:36:38 +0000 (01:36 +0100)]
Make DeviceStream into a class
Refs #3314
Refs #3311
Change-Id: Ic270864f0e82af63f91a91c9951bf678795680fa
Berk Hess [Wed, 11 Mar 2020 16:25:59 +0000 (17:25 +0100)]
Add tests for Ewald surface terms
Note that the surface-epsilon test with flexible bonds is currently
disabled as this functionality assumes whole molecules which is
currently not possible.
Change-Id: Icfe4d41abf12c5832c0d7757eb9dbe5631338f46
Gilles Gouaillardet [Wed, 11 Mar 2020 01:05:19 +0000 (10:05 +0900)]
grompp: fix the -ref <file> option
Mark <file> optional (e.g. ffALLOW_MISSING).
A typical usage is
gmx grompp -ref rotref[.trr]
in which grompp will use rotref.0.trr, rotref.1.trr and so on,
but not rotref.trr. The easiest fix is hence to mark the file as optional.
Change-Id: Ide2947f57580b680d4f5f04ada22fd67d5fb0f93
Szilárd Páll [Tue, 28 Jan 2020 20:35:30 +0000 (21:35 +0100)]
Reorganize dipole calculation in do_force
Encapsulated dipole used in do_force in a struct and eliminated
fr->mu_tot and moved code into a separate reduction function.
Note that this change now also computes the dipole when
flags.stateChanged=false, as the old value is no longer stored in fr.
Change-Id: Ibcfda31c450e50d37c2697f6d04a549e8f996823
Artem Zhmurov [Wed, 11 Mar 2020 18:38:23 +0000 (19:38 +0100)]
Fix the post-submit failures
Fix warnings, introduced by
6975fbfd22030a08bbe076151a3de69894a4de2f
1. Change the order in the initialization list
2. Make use of the deviceContext_ field in PP-PME comms
3. Small fix to the comment
Change-Id: I847dbfc187a469eb89405c52b26ee1965f39c44f
Artem Zhmurov [Sat, 1 Feb 2020 15:40:13 +0000 (16:40 +0100)]
Take over management of OpenCL context from PME and NBNXM
This patch set creates the DeviceContext in runner and passes it to the
consumers (PME and NBNXM). This removes unnessesary management code
duplication, makes the device buffers in two modules compatible.
Fixes #2522
Fixes #3315
Refs #3311
Change-Id: I10358cfaced5b5c7dbdddf95679c9a9703f3a2c0
Christian Blau [Tue, 10 Mar 2020 18:45:15 +0000 (19:45 +0100)]
Amend optional documentation
gmx::compat::optional, or the respective std::optional in C++17
are compelling to over-use in some cases. Added developer
documentation on when optional<T> is not the best choice.
Change-Id: I9cbfd42968ab8797109e35eba7e01afe6a1507ae
Berk Hess [Wed, 11 Mar 2020 08:16:59 +0000 (09:16 +0100)]
Add tests for graph
Change-Id: I580eb129b36c7d4185e214f8e1fd03119138b5ef
Berk Hess [Wed, 8 Jan 2020 09:31:51 +0000 (10:31 +0100)]
Fix type in range and add tests
Change-Id: Ie2ffc54ff0382b7753e86c12334c38993979717d
Artem Zhmurov [Sat, 1 Feb 2020 12:27:20 +0000 (13:27 +0100)]
Use init(..) function to build DeviceContext
This patch unifies the logic of OpenCL context creation in PME and
NBNXM by using the same init(..) function for the DeviceContext
object.
Also, the DeviceInfo is now de-referenced directly after the check
on the pointer validity and passed along as a const reference, which
improves the clarity of the code.
Refs. #3315, #3311.
Change-Id: I5ba0f530918f3340fa1a5ad3e8d60fe4e0967dab
Mark Abraham [Fri, 6 Mar 2020 16:30:26 +0000 (17:30 +0100)]
Consolidate PME GPU spline infrastructure
This functionality isn't utility
Change-Id: If2ddfc47fda0c6dfc3f26df2f9002564b5d0db99
Paul Bauer [Mon, 9 Mar 2020 16:41:51 +0000 (17:41 +0100)]
Fix wrong Docker images in doc builds
Change-Id: Ia1324355c1be2eb10507a085ae6b04014b97596d
Artem Zhmurov [Wed, 29 Jan 2020 15:59:33 +0000 (16:59 +0100)]
Make DeviceContext into a proper class
Having DeviceContext as a platform-agnostic class allows one
to easily create context, which is usefull for setting up the
GPU stream/context manager, tests for GPU functionality.
Refs. #3315.
Change-Id: I496d225b58c96d7642830c8e9552139750891849
M. Eric Irrgang [Fri, 6 Mar 2020 11:16:04 +0000 (14:16 +0300)]
Free up Docker image tag namespace.
Allow tags to distinguish Docker images for different release
requirements. Free up the image tag namespace for granularly describing
image revisions (and create smaller image repositories) by using the
matrix slug as the image name. Tag images to indicate the supported
GROMACS branch.
Refs #3395
Change-Id: Idff95d031cd56a28545562862e78cd99902db620
M. Eric Irrgang [Mon, 9 Mar 2020 12:43:49 +0000 (15:43 +0300)]
Remove duplicated GitLab-CI jobs.
Remove extra job definitions from merge conflict resolution error.
Fixes #3414
Change-Id: I39b36cef108db6c0274d163707303daea2391079
M. Eric Irrgang [Mon, 9 Mar 2020 12:42:30 +0000 (15:42 +0300)]
Reformat .gitlab-ci.yml
Resolve inconsistent white space.
Change-Id: Ieadb6f29815d26a2bae7c756c6f5ef17c91164e2
M. Eric Irrgang [Mon, 6 Jan 2020 13:14:23 +0000 (16:14 +0300)]
Consolidate logic for whether to use ModularSimulator.
There appeared to be inconsistent logic in runner.cpp about whether
the ModularSimulator would be used, but the apparent inconsistency was
actually just the result of equivalent logic being performed in
multiple places, and unclear ownership of an environment variable. This
change should clarify some logic in runner.cpp and simplify the behavior
of the SimulatorBuilder.
* Reference GMX_DISABLE_MODULAR_SIMULATOR environment variable in a
single location.
* Use a single utility function to determine whether to use
ModularSimulator, and call in Mdrunner::mdrunner().
* Refactor SimulatorBuilder to perform an action based solely on its
arguments, rather than to override the client-provided arguments based
on an environment variable.
Change-Id: I775ef82461f30b79b4412a473e5a1aa66270e2d5
M. Eric Irrgang [Fri, 6 Mar 2020 11:03:29 +0000 (14:03 +0300)]
Manage the list of image tags in Docker build script.
Supports flexibility in future handling of built images.
Refs #3395
Change-Id: I207911f190a57cbc4671777b5b92827aa6d3904a
Berk Hess [Thu, 5 Mar 2020 17:03:01 +0000 (18:03 +0100)]
Make shake work without graph
Shake can now internally compute distances using pbc, so it is
no longer needed to pass whole molecules to shake.
This is required for removing the graph from the force calculation.
Also converted shakedata to C++ and increased use of ArrayRef.
Change-Id: I67e2c85e7b4b26c930af89f413a89c2d72178e87