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
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
Paul Bauer [Tue, 5 May 2020 06:56:33 +0000 (08:56 +0200)]
Fix copyright
Change-Id: I9d9953def7c31c2830de2452bb0678f1cad86969
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
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
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
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
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
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
Paul Bauer [Wed, 29 Apr 2020 09:34:53 +0000 (11:34 +0200)]
Prepare for 2020.3
Reset DOI strings.
Change-Id: I6b9d5772fcc9b4d8507817d09173dd2d5577dfdb
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
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
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
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
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.
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
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
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
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.
ejjordan [Wed, 29 Apr 2020 08:38:16 +0000 (10:38 +0200)]
Add EOF newlines to eliminate compiler warnings
ejjordan [Wed, 29 Apr 2020 08:54:53 +0000 (10:54 +0200)]
Remove cmake logic that is outdated by requiring cmake 3.13
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.
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
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.
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
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
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.
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
ejjordan [Tue, 28 Apr 2020 13:55:28 +0000 (15:55 +0200)]
Address review comments
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.
ejjordan [Tue, 28 Apr 2020 11:54:03 +0000 (13:54 +0200)]
Fix issues with check-source
Roland Schulz [Sun, 26 Apr 2020 19:10:51 +0000 (12:10 -0700)]
Add clang WA
Roland Schulz [Sun, 26 Apr 2020 07:58:56 +0000 (00:58 -0700)]
Fix MSVC 2019 test failures
Related #3495
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
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
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()`.
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.
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
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
Paul Bauer [Mon, 27 Apr 2020 07:31:47 +0000 (09:31 +0200)]
Build python package for documentation builds
Fixes #3506
Change-Id: If18ed44603d685118d4b73f2ee72401028574d61
Paul Bauer [Mon, 27 Apr 2020 07:23:09 +0000 (09:23 +0200)]
Fix warning for return type
Fixes #3499
Change-Id: I648a4b3d35618fe7c41d406c98be291ca9bd0d2f
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
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.
Paul Bauer [Sat, 25 Apr 2020 08:20:32 +0000 (10:20 +0200)]
Fix copyright header
Change-Id: Iab87aaf00ab6433a3fe616c4836595afa17c8907
Roland Schulz [Sat, 25 Apr 2020 02:13:28 +0000 (19:13 -0700)]
Fix MSVC 2019 warnings
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
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.
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.
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
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.
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
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.
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
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
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
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
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
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
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
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.
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.
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
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
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.
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
Artem Zhmurov [Thu, 16 Apr 2020 16:30:05 +0000 (18:30 +0200)]
New cool quote
From Petter PhD defence. Congratulations!
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.
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
Paul Bauer [Thu, 16 Apr 2020 07:31:21 +0000 (07:31 +0000)]
Use GPU resources for build types again
Change-Id: Ibc2629b2ae29ba5099c4565f94adeccc6cb5c270
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
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
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.
M. Eric Irrgang [Fri, 6 Mar 2020 11:28:15 +0000 (14:28 +0300)]
Require CMake >=3.13.
Fixes #3290
Mark Abraham [Tue, 14 Apr 2020 07:16:12 +0000 (07:16 +0000)]
Fix more clang warnings
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
Paul Bauer [Mon, 13 Apr 2020 14:51:18 +0000 (14:51 +0000)]
The ugliest hack to fix rebase issues ever
Change-Id: I1b8202c4f9f36d03d29679850fd2e0672c823968
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
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.
Szilárd Páll [Sun, 12 Apr 2020 16:16:43 +0000 (16:16 +0000)]
Fix clang 10 -Wimplicit-int-float-conversion warnings
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.
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
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.
Paul Bauer [Sat, 11 Apr 2020 08:27:44 +0000 (08:27 +0000)]
Add Image for GCC 7 and AMD OpenCL
Change-Id: Ic884c1db337576c6bcabd1bec48545f26527de9f
Christoph Junghans [Sat, 4 Apr 2020 01:27:14 +0000 (19:27 -0600)]
cmake: fix exported target
Paul Bauer [Thu, 9 Apr 2020 17:21:24 +0000 (17:21 +0000)]
Add clang-tidy script
Change-Id: I4e3ff318681b562c0941c88360d2381747348517
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
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.
Christoph Junghans [Sat, 4 Apr 2020 15:16:48 +0000 (09:16 -0600)]
cmake: add support of OSX in GMXRC.*
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
Kevin Boyd [Wed, 8 Apr 2020 02:20:30 +0000 (19:20 -0700)]
Fix line overrun in log file
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
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