alexxy/gromacs.git
4 years agoRefine usage of *job:tags* parameter.
M. Eric Irrgang [Tue, 12 May 2020 14:20:41 +0000 (14:20 +0000)]
Refine usage of *job:tags* parameter.

Try to prevent jobs from getting stuck when they should be runnable
in GitLab forks or in the Gromacs CI environment when the Shared Runners
are turned off.

4 years agoExtract helper force buffers to a separate class
Berk Hess [Tue, 12 May 2020 13:14:11 +0000 (13:14 +0000)]
Extract helper force buffers to a separate class

This change provides useful refactoring itself and it is needed
for multiple time stepping.

4 years agoRefactor virtual site interface
Berk Hess [Tue, 12 May 2020 09:01:35 +0000 (09:01 +0000)]
Refactor virtual site interface

Replaced struct gmx_vsite_t by pimpled class VirtualSitesHandler.
Removed most arguments that stay the same from the construction
and spreading calls. Replaced rvec pointers by ArrayRefs.
This change is only refactoring and there are no functional changes
in the code using this, but the PBC and virial handling have been
simplified and the parameters reduced. Templating of the spreading
functions on virial handling should improve performance.
Added full doxygen documentation.

4 years agoFix archive build
Paul Bauer [Tue, 12 May 2020 08:13:13 +0000 (08:13 +0000)]
Fix archive build

Change-Id: I27361fa3f9218bbb38ac739b758d63a9774737ea

4 years agoRemove the duplicating note from the release notes
Artem Zhmurov [Mon, 11 May 2020 06:04:13 +0000 (08:04 +0200)]
Remove the duplicating note from the release notes

The fix was moved to release branch and release notes become duplicated.

4 years agoUnify CUDA and OpenCL lookup-table creation
Artem Zhmurov [Mon, 11 May 2020 08:31:34 +0000 (08:31 +0000)]
Unify CUDA and OpenCL lookup-table creation

In CUDA code, textures are used for the lookup-tables,
whereas in OpenCL they are created as a read-only
buffers. This commit hides these differences behind a
unified wrapper.

Refs #3318
Refs #3311

Change-Id: I003e0c982c2452a2753e331b46fc59f0b7e1b711

4 years agoMerge branch 'origin/release-2020' into master
Paul Bauer [Wed, 6 May 2020 12:31:38 +0000 (14:31 +0200)]
Merge branch 'origin/release-2020' into master

Resolved Conflicts:
admin/clang-tidy.sh
admin/containers/buildall.sh
admin/containers/utility.py
admin/dockerfiles/buildall.sh
admin/dockerfiles/ci-clang/Dockerfile
admin/dockerfiles/ci-docs-clang/Dockerfile
admin/dockerfiles/ci-docs-gcc/Dockerfile
admin/dockerfiles/ci-gcc/Dockerfile
admin/gitlab-ci/archive.gitlab-ci.yml
admin/gitlab-ci/documentation.gitlab-ci.yml
admin/gitlab-ci/global.gitlab-ci.yml
admin/gitlab-ci/gromacs.gitlab-ci.yml
admin/gitlab-ci/lint.gitlab-ci.yml
cmake/gmxManageSimd.cmake
cmake/gmxVersionInfo.cmake
docs/dev-manual/containers.rst
src/CMakeLists.txt
src/api/cpp/tests/testingconfiguration.h
src/buildinfo.h.cmakein
src/gromacs/CMakeLists.txt
src/gromacs/ewald/pme_only.cpp
src/gromacs/fileio/matio.cpp
src/gromacs/fileio/oenv.cpp
src/gromacs/gmxana/gmx_do_dssp.cpp
src/gromacs/gmxana/nrama.cpp
src/gromacs/gmxlib/network.cpp
src/gromacs/gmxlib/nonbonded/nb_free_energy.cpp
src/gromacs/listed_forces/bonded.cpp
src/gromacs/mdlib/forcerec.cpp
src/gromacs/mdtypes/interaction_const.h
src/gromacs/nbnxm/pairlist.h
src/gromacs/selection/CMakeLists.txt
src/gromacs/simd/impl_x86_avx_256/impl_x86_avx_256_simd_double.h
src/gromacs/simd/impl_x86_avx_256/impl_x86_avx_256_simd_float.h
src/gromacs/simd/simd.h
src/gromacs/utility/basedefinitions.h
src/gromacs/utility/binaryinformation.cpp
src/testutils/CMakeLists.txt
src/testutils/TestMacros.cmake
src/testutils/testasserts.h

Change-Id: Ie157786299ca8f2d8c77a148b3bf1b1061f44b8a

4 years agoFix copyright
Paul Bauer [Tue, 5 May 2020 06:56:33 +0000 (08:56 +0200)]
Fix copyright

Change-Id: I9d9953def7c31c2830de2452bb0678f1cad86969

4 years agoUnify CUDA and OpenCL lookup-table creation
Artem Zhmurov [Tue, 5 May 2020 06:37:33 +0000 (06:37 +0000)]
Unify CUDA and OpenCL lookup-table creation

In CUDA code, textures are used for the lookup-tables,
whereas in OpenCL they are created as a read-only
buffers. This commit hides these differences behind a
unified wrapper.

Refs #3318
Refs #3311

Change-Id: I003e0c982c2452a2753e331b46fc59f0b7e1b711

4 years agoFix cmake error: Mixed styles of target_link_libraries signatures
Paul Bauer [Mon, 4 May 2020 17:53:47 +0000 (17:53 +0000)]
Fix cmake error: Mixed styles of target_link_libraries signatures

Plain and keyword target_link_libraries signatures cannot be mixed.

Complete error message:

------------------->8---------------------------8<--------------------------
CMake Error at src/testutils/CMakeLists.txt:76 (target_link_libraries):
  The keyword signature for target_link_libraries has already been used with
  the target "testutils".  All uses of target_link_libraries with a target
  must be either all-keyword or all-plain.

  The uses of the keyword signature are here:

   * src/testutils/CMakeLists.txt:72 (target_link_libraries)

-- Configuring incomplete, errors occurred!
------------------->8---------------------------8<--------------------------

See: https://cmake.org/cmake/help/v3.0/policy/CMP0023.html

4 years agoUnify CUDA and OpenCL lookup-table creation
Artem Zhmurov [Mon, 4 May 2020 17:44:01 +0000 (17:44 +0000)]
Unify CUDA and OpenCL lookup-table creation

In CUDA code, textures are used for the lookup-tables,
whereas in OpenCL they are created as a read-only
buffers. This commit hides these differences behind a
unified wrapper.

Refs #3318
Refs #3311

Change-Id: I003e0c982c2452a2753e331b46fc59f0b7e1b711

4 years agoUse test conversion script from source
Paul Bauer [Wed, 29 Apr 2020 09:23:54 +0000 (09:23 +0000)]
Use test conversion script from source

No longer install the script to convert CTest results to JUnit and
instead use the files from the cloned git source for it.

Fixes #3514

Change-Id: Ida4f2ab563601153b0b218c9bc6b7cfdb4969f01

4 years agoFix incorrect header and linter scripts
Paul Bauer [Thu, 30 Apr 2020 12:03:15 +0000 (14:03 +0200)]
Fix incorrect header and linter scripts

Wrong grep flag meant that messages have not been printed.

Change-Id: I74b2088a12753d584929f9aa75ed915d400d8091

4 years agoCatch errors in v-rescale and Parrinello-Rahman checkpointing
Pascal Merz [Thu, 30 Apr 2020 19:49:14 +0000 (13:49 -0600)]
Catch errors in v-rescale and Parrinello-Rahman checkpointing

This adds additional tests to catch checkpoints missing the v-rescale
thermostat integral or the Parrinello-Rahman box velocities. This
also make the number of steps explicit (useful in further investigations
of #3518).

In partial fulfillment of #3518

4 years agoPrepare for 2020.3
Paul Bauer [Wed, 29 Apr 2020 09:34:53 +0000 (11:34 +0200)]
Prepare for 2020.3

Reset DOI strings.

Change-Id: I6b9d5772fcc9b4d8507817d09173dd2d5577dfdb

4 years agocmake: declare (and hence initialize) GMX_USE_SIMD_KERNELS before it is used
Gilles Gouaillardet [Thu, 30 Apr 2020 13:56:22 +0000 (22:56 +0900)]
cmake: declare (and hence initialize) GMX_USE_SIMD_KERNELS before it is used

Fixes gromacs/gromacs#3516

4 years agoGROMACS version 2020.2
Paul Bauer [Wed, 29 Apr 2020 09:31:53 +0000 (11:31 +0200)]
GROMACS version 2020.2

Update regressiontest hash.
Set DOI strings.

Change-Id: I708a1e340754d173b8c7ef47803e7fa525c9671a

4 years agoPrint base commit for source linters
Paul Bauer [Wed, 29 Apr 2020 12:47:58 +0000 (12:47 +0000)]
Print base commit for source linters

Added a printout for the branch used for comparing.

Will use to see if branch point selection is working properly and to see
if the clang-tidy script picks up the warnings it should.

Change-Id: I791d2a11f98cd8e0cf0d06e92a9980cd9d038874

4 years agoFix incorrect header and linter scripts
Paul Bauer [Thu, 30 Apr 2020 12:03:15 +0000 (14:03 +0200)]
Fix incorrect header and linter scripts

Wrong grep flag meant that messages have not been printed.

Change-Id: I74b2088a12753d584929f9aa75ed915d400d8091

4 years agoRemove bundled FindCUDA.cmake
Mark Abraham [Thu, 30 Apr 2020 11:28:39 +0000 (11:28 +0000)]
Remove bundled FindCUDA.cmake

We bundle FindCUDA so we can suppress warnings in CI testing. In user
space, we always use the FindCUDA from the cmake they used, because
the tarballs never had these files.

4 years agoDisallow combination of gcc > 9 and IBM_VSX
Paul Bauer [Thu, 30 Apr 2020 06:27:31 +0000 (08:27 +0200)]
Disallow combination of gcc > 9 and IBM_VSX

The compiler flag is not detected for newer versions of gcc and can lead
to confusing error messages.

Fixes #3380

Change-Id: I0c5311325b2bf2bc08ab727eabd670115720b4a6

4 years agoFix compiler flag reporting
Mark Abraham [Thu, 30 Apr 2020 09:24:00 +0000 (09:24 +0000)]
Fix compiler flag reporting

The C, C++ and CUDA compiler flag reporting didn't mention those added
by cmake from the build configuration, even those are always used.

Closes #3510

4 years agoUpdate header sorting.
M. Eric Irrgang [Fri, 24 Apr 2020 13:15:42 +0000 (16:15 +0300)]
Update header sorting.

* Add missing C++ standard library headers to includesorter.py
* Work around some logic errors in the way includesorter.py enforces
  the stated scoping of sorted include blocks. Document.
* Apply updated includesorter.py

Refs #3297

4 years agoRequire C++17 standard and STL features.
M. Eric Irrgang [Wed, 29 Apr 2020 08:21:14 +0000 (11:21 +0300)]
Require C++17 standard and STL features.

Closes #3297

* Update project CMAKE_CXX_STANDARD.
* Migrate to std::optional and std::string_view.
* Update requirements in client packages.
* Provide some tool chain hints.
* Replace deprecated use of std::uncaught_exception() with
  std::uncaught_exceptions().
* Update install-guide.

4 years agoAdd EOF newlines to eliminate compiler warnings
ejjordan [Wed, 29 Apr 2020 08:38:16 +0000 (10:38 +0200)]
Add EOF newlines to eliminate compiler warnings

4 years agoRemove cmake logic that is outdated by requiring cmake 3.13
ejjordan [Wed, 29 Apr 2020 08:54:53 +0000 (10:54 +0200)]
Remove cmake logic that is outdated by requiring cmake 3.13

4 years agoUpdate cmake version for docs container
Mark Abraham [Wed, 29 Apr 2020 12:07:35 +0000 (14:07 +0200)]
Update cmake version for docs container

Currently the nightly docs build fails because of
the bumped cmake requirement.

4 years agoPrint base commit for source linters
Paul Bauer [Wed, 29 Apr 2020 12:47:58 +0000 (12:47 +0000)]
Print base commit for source linters

Added a printout for the branch used for comparing.

Will use to see if branch point selection is working properly and to see
if the clang-tidy script picks up the warnings it should.

Change-Id: I791d2a11f98cd8e0cf0d06e92a9980cd9d038874

4 years agoFix the number of steps check when checkpoint is loaded
Artem Zhmurov [Wed, 29 Apr 2020 12:10:20 +0000 (12:10 +0000)]
Fix the number of steps check when checkpoint is loaded

The check ignores the initial step in the config file, thust only
works when loading for the trajectory that was originally started
from step zero.

4 years agoApply more granular CTest time-out policy.
M. Eric Irrgang [Tue, 28 Apr 2020 16:47:36 +0000 (19:47 +0300)]
Apply more granular CTest time-out policy.

Separate some test macro logic:
* Decouple IGNORE_LEAKS from INTEGRATION_TEST and SLOW_TEST.
* Use SLOW_TEST without IGNORE_LEAKS for some newly relaxed time-outs.

Give longer time out to some tests.

Resolves #3513

4 years agoUse test conversion script from source
Paul Bauer [Wed, 29 Apr 2020 09:23:54 +0000 (09:23 +0000)]
Use test conversion script from source

No longer install the script to convert CTest results to JUnit and
instead use the files from the cloned git source for it.

Fixes #3514

Change-Id: Ida4f2ab563601153b0b218c9bc6b7cfdb4969f01

4 years agoBaseline commit
Mark Abraham [Wed, 29 Apr 2020 08:27:37 +0000 (08:27 +0000)]
Baseline commit

This just checks that the pipeline failure in #3507 does reproduce
before I start changing things that matter.

4 years agoFixed several clang-tidy issues
Mark Abraham [Tue, 28 Apr 2020 18:08:18 +0000 (20:08 +0200)]
Fixed several clang-tidy issues

A static variable was vulnerable to static-init-order-fiasco.  Tests
will still perform OK even with constructing the default value
multiple times, so converted to a getter.

Closes #3498

4 years agoAddress review comments
ejjordan [Tue, 28 Apr 2020 13:55:28 +0000 (15:55 +0200)]
Address review comments

4 years agoSimplify calc_listed signature
ejjordan [Mon, 27 Apr 2020 18:17:00 +0000 (20:17 +0200)]
Simplify calc_listed signature

In order to remove a number of parameters from the signature of
calc_listed, function calls for position restraints, dispersion
correction, and orientation restraints were moved out of the
calc_listed function.

4 years agoFix issues with check-source
ejjordan [Tue, 28 Apr 2020 11:54:03 +0000 (13:54 +0200)]
Fix issues with check-source

4 years agoAdd clang WA
Roland Schulz [Sun, 26 Apr 2020 19:10:51 +0000 (12:10 -0700)]
Add clang WA

4 years agoFix MSVC 2019 test failures
Roland Schulz [Sun, 26 Apr 2020 07:58:56 +0000 (00:58 -0700)]
Fix MSVC 2019 test failures

Related #3495

4 years agoFix the removal of COM velocity in case of GPU update
Artem Zhmurov [Mon, 27 Apr 2020 19:21:58 +0000 (19:21 +0000)]
Fix the removal of COM velocity in case of GPU update

After the velocities are changed on the CPU to remove the COM motion,
they have to be copied back to the GPU memory.

Fixes #3508

4 years agoResolve static analyzer warnings from google tests.
M. Eric Irrgang [Mon, 27 Apr 2020 17:57:27 +0000 (17:57 +0000)]
Resolve static analyzer warnings from google tests.

Exclude a couple of problematic lines from consideration by the clang
static analyzer by surrounding with precompiler conditionals
(`#ifndef __clang_analyzer__`).

Fixes #3503

4 years agoAvoid temporary strings.
M. Eric Irrgang [Mon, 27 Apr 2020 17:19:35 +0000 (17:19 +0000)]
Avoid temporary strings.

Resolve a compiler warning about temporary strings created through a
string concatenation written as a chain of addition operators.
Instead, use `string.append()`.

4 years agoMove PBC setup out of the launchKernel(...) in GPU bondeds
Artem Zhmurov [Mon, 27 Apr 2020 14:24:10 +0000 (14:24 +0000)]
Move PBC setup out of the launchKernel(...) in GPU bondeds

The PBC setup should not be performed on every step, hence it
should be separated from the force computation launch. This
is a preparation step, that does not change the logic, only the
separates the PBC setup and changes kernel launch signature.

4 years agoFix segmentation fault in do_dssp
Paul Bauer [Mon, 27 Apr 2020 11:46:33 +0000 (13:46 +0200)]
Fix segmentation fault in do_dssp

A matrix would be initial allocated with zero size, so that a
following call to increase the size of one element would lead to memory
corruption on a subsequent try to set a value in the matrix.

Fixes #3444

Change-Id: I1892c09a8aa4c2f92156f7b1a76623df9ac62e56

4 years agoImproved some logic in do_force
Mark Abraham [Mon, 27 Apr 2020 12:08:49 +0000 (12:08 +0000)]
Improved some logic in do_force

This helps the analyzer to understand that it should not just assume
that stateGpu can be a nullptr. The new logic is equivalent to
that for constructing stateGpu.

Removed the GMX_MPI preprocessing, which is less robust than plain
logic and probably contributed to using the wrong logic to construct
localXReadyOnDevice

4 years agoBuild python package for documentation builds
Paul Bauer [Mon, 27 Apr 2020 07:31:47 +0000 (09:31 +0200)]
Build python package for documentation builds

Fixes #3506

Change-Id: If18ed44603d685118d4b73f2ee72401028574d61

4 years agoFix warning for return type
Paul Bauer [Mon, 27 Apr 2020 07:23:09 +0000 (09:23 +0200)]
Fix warning for return type

Fixes #3499

Change-Id: I648a4b3d35618fe7c41d406c98be291ca9bd0d2f

4 years agoFix bug in source verification on Windows
Paul Bauer [Fri, 24 Apr 2020 10:59:49 +0000 (12:59 +0200)]
Fix bug in source verification on Windows

The way to pass the set of directories to be used for validating the
source caused issues on Windows systems, as it replaced ":" characters
to change from strings to lists in CMake.

This caused the top level directory to be changed from e.g. "D:" to
"D;", messing up the rest.

Fixed the message passing to only pass the final directory, and modify
to full path after the set has been passed through.

Fixes #3493

Change-Id: I4076b8e87dc8d72a83af6aa0c7ab4b3366917ed0

4 years agoMove configuration of global headers
Mark Abraham [Sat, 25 Apr 2020 14:11:50 +0000 (16:11 +0200)]
Move configuration of global headers

Previously it was possible to get a different result from
  cmake .. && make && make install
than one got from
  cmake .. && cmake .. && make && make install
because the lmfit detection ran after config.h was generated,
so HAVE_LMFIT changed value from one cmake to the next, triggering
a rebuild of all source files that depended on config.h. lmfit
is supposed to fall back on the internal version, but did not,
so this is buggy. It's also very inefficient with compilation
in some workflows.

4 years agoFix copyright header
Paul Bauer [Sat, 25 Apr 2020 08:20:32 +0000 (10:20 +0200)]
Fix copyright header

Change-Id: Iab87aaf00ab6433a3fe616c4836595afa17c8907

4 years agoFix MSVC 2019 warnings
Roland Schulz [Sat, 25 Apr 2020 02:13:28 +0000 (19:13 -0700)]
Fix MSVC 2019 warnings

4 years agoUse branch point also for format and copyright check
Paul Bauer [Thu, 23 Apr 2020 20:24:50 +0000 (20:24 +0000)]
Use branch point also for format and copyright check

Change-Id: I16a9df11223426a40e6e138ee9f3793e700ae06e

4 years agoNote CUDA builds in job names.
M. Eric Irrgang [Fri, 24 Apr 2020 13:48:32 +0000 (16:48 +0300)]
Note CUDA builds in job names.

Identify CI jobs that involve CUDA builds. Include `cuda-10.1` in the
tool chain slug for the job name for easier navigation through the
pipeline web interface.

4 years agoUpdate bundled pybind.
M. Eric Irrgang [Fri, 24 Apr 2020 16:16:08 +0000 (16:16 +0000)]
Update bundled pybind.

The pybind 2.5 release has better build system support for C++ 2017.
Otherwise there is no direct impact to our existing usage.

4 years agoFix parallel testing
Paul Bauer [Fri, 24 Apr 2020 11:27:15 +0000 (11:27 +0000)]
Fix parallel testing

Change testing to be more robust in threaded setups.

Also change on merge test to use real MPI to make sure this works
correctly.

Change-Id: Id78b213291bf7cc225fc2564a23f0d85362467fd

4 years agoOnly set GMX_PYTHON_PACKAGE=ON where needed.
M. Eric Irrgang [Fri, 24 Apr 2020 11:19:52 +0000 (14:19 +0300)]
Only set GMX_PYTHON_PACKAGE=ON where needed.

Remove GMX_PYTHON_PACKAGE=ON from default CMAKE_GMXAPI_OPTIONS. Only
provide it in the jobs supporting documentation builds (which use a
gmxapi Python package staged in the build tree).

Remove a "TODO" that is confusing and presumably outdated.

4 years agoUse branch point also for format and copyright check
Paul Bauer [Thu, 23 Apr 2020 20:24:50 +0000 (20:24 +0000)]
Use branch point also for format and copyright check

Change-Id: I16a9df11223426a40e6e138ee9f3793e700ae06e

4 years agoMark HWLOC cmake cache variable as advanced
Mark Abraham [Tue, 21 Apr 2020 07:31:24 +0000 (09:31 +0200)]
Mark HWLOC cmake cache variable as advanced

There's no need to put this internal-use-only cache variable
in the non-advanced list, which we forgot to do when we
introduced it.

4 years agoMake boxdeformation independent of t_commrec
Pascal Merz [Thu, 23 Apr 2020 17:10:46 +0000 (17:10 +0000)]
Make boxdeformation independent of t_commrec

boxdeformation requested a pointer to the full t_commrec,
but only used on communicator and information on whether
the current rank is master and whether the simulation
is run in parallel. This has been made explicit, simplifying
subsequent changes splitting up t_commrec.

Refs #2395

4 years agoUse CMake 3.12+ facilities for detecting Python.
M. Eric Irrgang [Thu, 23 Apr 2020 14:43:55 +0000 (14:43 +0000)]
Use CMake 3.12+ facilities for detecting Python.

Consolidate Python detection in the main CMakeLists.txt before the
first usage in a subdirectory. Use FindPython3.cmake instead of
FindPythonInterp.cmake. Populate the legacy PYTHON_EXECUTABLE variable
for compatibility.

Fixes #2998

4 years agoMake clang-tidy script more robust
Paul Bauer [Thu, 23 Apr 2020 13:14:50 +0000 (13:14 +0000)]
Make clang-tidy script more robust

Changed script to be more robust and in line with other source
checking scripts.

Modified clang-tidy:test job to check against the merge fork point for a
commit instead of the previous git magic, as this did not work.

Change-Id: Ic806439727c5317db0c18964afd6138eeeea0427

4 years agoFix parallel testing
Paul Bauer [Thu, 23 Apr 2020 12:07:38 +0000 (12:07 +0000)]
Fix parallel testing

Change testing to be more robust in threaded setups.

Also change on merge test to use real MPI to make sure this works
correctly.

Change-Id: Id78b213291bf7cc225fc2564a23f0d85362467fd

4 years agoFix warnings for no-mpi build
Mark Abraham [Mon, 13 Apr 2020 05:23:00 +0000 (07:23 +0200)]
Fix warnings for no-mpi build

This build configuration gave warnings when combined with
clang-7 in the docs build.

Change-Id: Ic874769bcd627710798633be742dbbe80d78b791

4 years agoMake init_dires independent of t_commrec
Pascal Merz [Wed, 22 Apr 2020 17:21:14 +0000 (17:21 +0000)]
Make init_dires independent of t_commrec

init_disres was requesting a full pointer to the commrec,
but only uses a single communicator and checks for master rank
and whether the run is parallel. This information is now passed
in explicitly, simplifying the planned splitting of t_commrec.

Note that passing a nullptr for commrec was (mis)used by
gmx_disre only - effectively signalling that init_disres was
called from an analysis tool and not from mdrun. This has
been made explicit.

Refs #2395

4 years agoCopy of CI from master to 2020
Paul Bauer [Wed, 22 Apr 2020 06:52:14 +0000 (06:52 +0000)]
Copy of CI from master to 2020

Adjusted branches and build images.

Change-Id: I28d011a003119870c41e434cef623765ddc6ace1

4 years agoFix warnings with clang 9
Mark Abraham [Tue, 21 Apr 2020 07:28:16 +0000 (09:28 +0200)]
Fix warnings with clang 9

Use of GMX_USE_SIMD_KERNELS left some code declared and unused,
which is now fixed.

Printf formats for int64_t are not very portable, so used the
traditional string work around again.

4 years agoFix the number of steps check when checkpoint is loaded
Artem Zhmurov [Mon, 20 Apr 2020 19:00:28 +0000 (19:00 +0000)]
Fix the number of steps check when checkpoint is loaded

The check ignores the initial step in the config file, thust only
works when loading for the trajectory that was originally started
from step zero.

4 years agoMake tests check code for warnings same as the main code
Paul Bauer [Mon, 20 Apr 2020 17:51:33 +0000 (17:51 +0000)]
Make tests check code for warnings same as the main code

This has been inconsistent since a while.

Change-Id: I5cbe0d768620f82bd19ff8741df6b75b517200ed

4 years agoMake global topology const in ISimulator
Pascal Merz [Fri, 3 Apr 2020 22:28:40 +0000 (16:28 -0600)]
Make global topology const in ISimulator

The global topology in constant in all simulator level functions
with the exception of the setup of MiMiC runs and reruns.
Follow-up work will move the topology-altering MiMiC setup out of
the simulator level functions. It is, however, worth to already
enforce the current state, avoiding subsequent changes to undermine
these efforts. This commit changes the pointer to the global
topology in ISimulator to be const, and casts the const-ness away
for the two known cases it needs to be non-const.

Refs #3467

4 years agoproposed fix for redmine bug #3403
Christian Blau [Fri, 17 Apr 2020 13:57:50 +0000 (13:57 +0000)]
proposed fix for redmine bug #3403
Fixes #3403 by preventing the free energy kernel from skipping pairs
that are beyond the cutoff but also in the exclusion list generated by
couple-intramol=no. Forces calculation of the reciprocal-space Ewald
component for those pairs in the free energy kernel. Also extends the
size of the relevant tables to rcoulomb+tabext to avoid getting nonsense
energies/forces beyond the cutoff. Molecules being decoupled in this way
should be smaller than rcoulomb+tabext.

4 years agoFix check source not parsing errors and warnings correctly
Paul Bauer [Fri, 17 Apr 2020 10:05:10 +0000 (10:05 +0000)]
Fix check source not parsing errors and warnings correctly

Fixes #3487

Change-Id: I6161e02f66a9c34a56a7475f986ab94a5cc83d91

4 years agoNew cool quote
Artem Zhmurov [Thu, 16 Apr 2020 16:30:05 +0000 (18:30 +0200)]
New cool quote

From Petter PhD defence. Congratulations!

4 years agoIntroduce GMX_USE_SIMD_KERNELS cmake option
Mark Abraham [Thu, 16 Apr 2020 15:36:33 +0000 (15:36 +0000)]
Introduce GMX_USE_SIMD_KERNELS cmake option

Most GROMACS development does not need to recompile the SIMD nbnxm
(and fep) kernels whenever their dependencies change. These
dependencies are large in number, and include frequently changed
files, including config.h and various utility and nbnxm module
headers. This flag permits people to efficiently recompile while
working on code that doesn't directly target changes to the SIMD
kernels.

It also means that CI builds not aimed at efficient mdrun execution
times can instead minimize compilation times and ccache db sizes. This
will also have the side effect of testing more of the reference NBNXM
kernels.

There's other SIMD code (particularly PME, bonded, LINCS, update)
which still compiles and runs in the usual way. Currently these are
less costly to compile and harder to disable. That could change in
future.

4 years agoUnify CUDA and OpenCL lookup-table creation
Artem Zhmurov [Thu, 16 Apr 2020 11:38:32 +0000 (11:38 +0000)]
Unify CUDA and OpenCL lookup-table creation

In CUDA code, textures are used for the lookup-tables,
whereas in OpenCL they are created as a read-only
buffers. This commit hides these differences behind a
unified wrapper.

Refs #3318
Refs #3311

Change-Id: I003e0c982c2452a2753e331b46fc59f0b7e1b711

4 years agoUse GPU resources for build types again
Paul Bauer [Thu, 16 Apr 2020 07:31:21 +0000 (07:31 +0000)]
Use GPU resources for build types again

Change-Id: Ibc2629b2ae29ba5099c4565f94adeccc6cb5c270

4 years agoChange default CMake version to 3.13.0 for CI images.
M. Eric Irrgang [Tue, 14 Apr 2020 16:17:06 +0000 (19:17 +0300)]
Change default CMake version to 3.13.0 for CI images.

Refs #3484

4 years agoMake bonded interaction checking more robust (modular simulator)
Pascal Merz [Tue, 14 Apr 2020 18:31:08 +0000 (18:31 +0000)]
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

4 years agoReintroduce LJ Ewald tables
Pascal Merz [Tue, 14 Apr 2020 15:42:37 +0000 (15:42 +0000)]
Reintroduce LJ Ewald tables

Fixes #3470 by reintroducing the LJ Ewald tables.

4 years agoRequire CMake >=3.13.
M. Eric Irrgang [Fri, 6 Mar 2020 11:28:15 +0000 (14:28 +0300)]
Require CMake >=3.13.

Fixes #3290

4 years agoFix more clang warnings
Mark Abraham [Tue, 14 Apr 2020 07:16:12 +0000 (07:16 +0000)]
Fix more clang warnings

4 years agoFix invalid gitlab-ci.yml
M. Eric Irrgang [Tue, 14 Apr 2020 06:09:54 +0000 (06:09 +0000)]
Fix invalid gitlab-ci.yml

Use consistent rules for dependent jobs.

gmxapi related jobs were eligible to be added to a pipeline when job
dependencies were not.

Fixes #3483

4 years agoThe ugliest hack to fix rebase issues ever
Paul Bauer [Mon, 13 Apr 2020 14:51:18 +0000 (14:51 +0000)]
The ugliest hack to fix rebase issues ever

Change-Id: I1b8202c4f9f36d03d29679850fd2e0672c823968

4 years agoFix clang-tidy script and code issue
Paul Bauer [Mon, 13 Apr 2020 06:59:11 +0000 (08:59 +0200)]
Fix clang-tidy script and code issue

The script would not pick up issues correctly.

Also fixed code issue found by nightly build.

Change-Id: Ia51d7b92f9f024ace254f5b98cc44e7f00702521

4 years agoFix warnings for no-mpi build
Mark Abraham [Mon, 13 Apr 2020 05:23:00 +0000 (07:23 +0200)]
Fix warnings for no-mpi build

This build configuration gave warnings when combined with
clang-7 in the docs build.

4 years agoFix clang 10 -Wimplicit-int-float-conversion warnings
Szilárd Páll [Sun, 12 Apr 2020 16:16:43 +0000 (16:16 +0000)]
Fix clang 10 -Wimplicit-int-float-conversion warnings

4 years agoRemoved unused variable in force table generation
Mark Abraham [Sun, 12 Apr 2020 12:58:59 +0000 (14:58 +0200)]
Removed unused variable in force table generation

Also reduced the scope of a related variable.

4 years agoFinish removing ENCAD shifts and table generation
Mark Abraham [Sun, 12 Apr 2020 10:08:16 +0000 (10:08 +0000)]
Finish removing ENCAD shifts and table generation

The force field was removed in 2014, and the functional forms can't be
used any more since the group scheme is removed. The table-generation
functions were also broken in several ways. Anybody wanting to use
this force field in the recent past (or perhaps future) needs to use
user tables.

The tpr-facing enums have their numerical values preserved, along with
changes to indicate that the symbol values are unused. This means that
old tpr files can still be read correctly, while maintainers don't
have extra work to understand what is going on. The internal code can
be fully removed.

Fixes #3477

4 years agoUpdate to clang-tidy-9
Mark Abraham [Sun, 12 Apr 2020 08:55:43 +0000 (08:55 +0000)]
Update to clang-tidy-9

Code fixes have already taken place, it remains to update the
CI configuration to use the existing llvm-9 Docker image and
adjust the documentation to match.

4 years agoAdd Image for GCC 7 and AMD OpenCL
Paul Bauer [Sat, 11 Apr 2020 08:27:44 +0000 (08:27 +0000)]
Add Image for GCC 7 and AMD OpenCL

Change-Id: Ic884c1db337576c6bcabd1bec48545f26527de9f

4 years agocmake: fix exported target
Christoph Junghans [Sat, 4 Apr 2020 01:27:14 +0000 (19:27 -0600)]
cmake: fix exported target

4 years agoAdd clang-tidy script
Paul Bauer [Thu, 9 Apr 2020 17:21:24 +0000 (17:21 +0000)]
Add clang-tidy script

Change-Id: I4e3ff318681b562c0941c88360d2381747348517

4 years agoAllow useful CI to run in forks
M. Eric Irrgang [Thu, 9 Apr 2020 15:57:28 +0000 (15:57 +0000)]
Allow useful CI to run in forks

* Move the fast jobs with no dependencies to the first stage.
* Remove the global KTH-specific job runner tag from jobs in the pre-build stage.
* Use the `pre-build` stage as the dependency for all later stages, rather than the `simple-build` job, specifically.
* Convert rule sets to new *rules* syntax.
* Use '$CI_PROJECT_NAMESPACE == "gromacs"' to distinguish jobs created with access to GROMACS GitLab infrastructure.

Fixes #3458

4 years agoFixes for clang-tidy-9
Mark Abraham [Thu, 19 Mar 2020 08:42:47 +0000 (09:42 +0100)]
Fixes for clang-tidy-9

Mostly suggestions for risky repeat branches and more readable use of
methods that use no member variables and could be static.  This means
that some bad, incompletely implemented, or excessively implemented
code is now gone or uglier than it was before.

The CPU-build classes for GPU management objects didn't use the only
member variable impl_, so they were also recommended to become
static. That doesn't work for our use case, but swapping the assertion
to be !impl_ does all jobs well enough.

eg2cHartree_e probably has had the wrong behavior ever since it
was introduced, but I don't know and it's not a big problem.

LJ12 Encad table is probably fixed, but it's unused, so who cares.

4 years agocmake: add support of OSX in GMXRC.*
Christoph Junghans [Sat, 4 Apr 2020 15:16:48 +0000 (09:16 -0600)]
cmake: add support of OSX in GMXRC.*

4 years agoExplicitly set UTF-8 encoding for gmxapi CLI interaction.
M. Eric Irrgang [Wed, 8 Apr 2020 11:34:35 +0000 (14:34 +0300)]
Explicitly set UTF-8 encoding for gmxapi CLI interaction.

The detected locale may not imply UTF-8 character encoding, though the
gmx CLI tool may still issue non-ASCII characters. This change forces
assumption of UTF-8 character encoding for wrapped commmand line tools.

Refs #3474

4 years agoFix line overrun in log file
Kevin Boyd [Wed, 8 Apr 2020 02:20:30 +0000 (19:20 -0700)]
Fix line overrun in log file

4 years agoMerge force and shellFC elements
Pascal Merz [Mon, 10 Feb 2020 23:08:46 +0000 (16:08 -0700)]
Merge force and shellFC elements

In the previous implementation, ForceElement was handling the call to
do_force, while ShellFCElement was handling the call to relax_shell_flexcon.
This lead to two nearly identical elements. The current change merges
the two elements minimizing code duplication.

Change-Id: Ief6e962e3780153d43ba4ea07eea40ed5b8d4ef8

4 years agoReplace EnumOption with EnumerationArrayOption
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

4 years agoRequire explicit MPI_COMM for gmx_bcast and gmx_barrier
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

4 years agoPrepare Python environments for GitLab CI pipeline.
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

4 years agoMake global topology constant in energyOutput.printAnnealingTemperatures()
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