Magnus Lundborg [Sun, 23 Feb 2020 16:57:56 +0000 (17:57 +0100)]
Store dHdL for all neighbor lambdas
This is required for calculating forces along a lambda dimension
in AWH.
Change-Id: Ic5247a53998b1e733858419d20338b5419dd7ae4
Gilles Gouaillardet [Mon, 2 Mar 2020 04:33:52 +0000 (13:33 +0900)]
Remove unused variable from nbnxm headers.
Since the (SimdFloat) mone_S variable is set but never used,
this commit simply removes it.
Change-Id: Id374da57d1fb33a269c1c39eb80c064fc40de8e8
M. Eric Irrgang [Thu, 27 Feb 2020 12:05:58 +0000 (15:05 +0300)]
Resolve a Python linting error.
Remove an unnecessary compatibility check that otherwise causes lint
errors.
Change-Id: If6b79c9cc4b7b4adf37a0bad291ce421a23564c9
M. Eric Irrgang [Thu, 27 Feb 2020 12:04:38 +0000 (15:04 +0300)]
Fix broken Python error check.
A check in the physical validation utilities referenced a constant in a
module that does not exist, but the intended module was clear.
Additionally, the constant is not guaranteed to be defined, so we check
for it to avoid producing unrelated exceptions.
Change-Id: Ied614c4d94616420b9321cd28d8f8958cce31627
Artem Zhmurov [Mon, 24 Feb 2020 17:56:44 +0000 (18:56 +0100)]
Fix the RVec to float3 conversion test
The test was not running when there were no GPUs availible,
but the code was compiled with CUDA.
Refs. #3372.
Change-Id: I8dd51eafe9a17d880ce8f8b126c7de692e061e81
M. Eric Irrgang [Thu, 12 Dec 2019 17:22:07 +0000 (20:22 +0300)]
Remove cruft and resolve deprecation warnings.
Feature checks for gmxapi 0.1 are no longer necessary in the acceptance
tests, and cause deprecation warnings since the gmxapi version has been
incremented.
Change-Id: I98d4df5789c6156304efe27394a2bde20b390234
M. Eric Irrgang [Mon, 24 Feb 2020 21:11:43 +0000 (00:11 +0300)]
Fix docstring bugs.
Resolve sphinx errors for gmxapi.commandling_operation docstring.
Change-Id: Ib4ed2228912a180dee8d56850e95cac20d0a9635
M. Eric Irrgang [Mon, 17 Feb 2020 10:41:58 +0000 (13:41 +0300)]
Fix sphinx-build option typo.
A space between `-D` and the configuration key causes a warning about
an unknown option.
Change-Id: I2279663004216b4af098d025431fe02de51b4a78
M. Eric Irrgang [Mon, 24 Feb 2020 10:01:55 +0000 (13:01 +0300)]
Let commandline_operation accept stdin.
Add a *stdin* key word to gmxapi.commandline.cli() and
gmxapi.commandline_operation(). Optionally accept a string object to
pass to the subprocess standard input pipe.
Fixes #3393
Change-Id: I563aeb19e944e7e9e755a72b1956b61ff7789c22
M. Eric Irrgang [Thu, 12 Dec 2019 17:14:45 +0000 (20:14 +0300)]
Make gmxapi.version.has_feature warning more useful.
When issuing a warning about misuse of a utility, use `stacklevel=2`
instead of the default (stacklevel=1) to report the context of the call
to the utility, rather than that of the call to `warnings.warn()`,
so that the warning can actually direct a developer to the source of the
problem.
Change-Id: I86cedaf8863e589fed385199b573bb1a420655e2
M. Eric Irrgang [Mon, 24 Feb 2020 09:22:27 +0000 (12:22 +0300)]
Use subprocess.run instead of subprocess.check
Resolve a TODO in commandline.py to use more robust subprocess facility
in Python >=3.5.
Change-Id: I4e87fbf94c52a18ce21c9f26a800f297deb3f512
M. Eric Irrgang [Fri, 21 Feb 2020 15:42:38 +0000 (18:42 +0300)]
Improve gmxapi.operation error handling.
Improve error handling logic and documentation for operation execution.
Make the exception messages more useful.
Fixes #3376
Change-Id: Ie16fd814faff0d0565a2c7a271b2bed9d2c1939b
M. Eric Irrgang [Fri, 14 Feb 2020 15:35:09 +0000 (18:35 +0300)]
Clarify annotation about GitLab CI Docker images.
Change-Id: I17f49885f423942ff47cf790ff5f895f56a63259
Pascal Merz [Fri, 24 Jan 2020 23:10:22 +0000 (23:10 +0000)]
Use ArrayRef in compute_globals
This refactors compute_globals to use ArrayRef instead of rvec
pointers.
Change-Id: I0e16b7bcee0583326180c6c93a7feddbb7213bfe
ejjordan [Fri, 21 Feb 2020 17:10:02 +0000 (18:10 +0100)]
Use more forward declarations to removed header dependencies
Change-Id: I6a5706c8380c8d630ccc854f617206f6b66e7907
Mark Abraham [Mon, 17 Feb 2020 07:51:51 +0000 (08:51 +0100)]
Removed unused PME gather functionality
This code path has never been used since being introduced in
2747fc481b7110a, so we should simplify. It also avoids compiling extra
GPU kernels that were also never used.
Updated reference data now that there's half as many cases to cover.
Change-Id: Ia6bc7d1161fb76dad5715234ff820759bde0d81c
Artem Zhmurov [Fri, 21 Feb 2020 20:14:55 +0000 (21:14 +0100)]
Add missing header and disable failing test
Fixes the issues, introduced in
dd0439e0a189e0c28e738afe283ce3a71513aaa6.
Refs. #3372.
Change-Id: Ibced28fef1057598793b81142d555016208db424
Paul Bauer [Fri, 21 Feb 2020 08:01:14 +0000 (09:01 +0100)]
Fix Gitlab doc build
Change-Id: I058008a1df5ec2fc3406aeb51b52611eaa16a496
Artem Zhmurov [Thu, 6 Feb 2020 11:39:39 +0000 (12:39 +0100)]
Refactor and enable RVec to float conversion test
Since using CUDA directly in Google tests is not always possible,
this patch moves the cuda-specific code into separate runner file.
Also the RVec->float3 casting function is moved into new header,
thus eliminating inclusion of the cuda runtime in the tests. The
test file is renamed to reflect what is actually tested.
Fixes the post submit failure introduced in
c5c220a03663d975e31e8573c1849247ce3f8ad0, which was first avoided
by disabling the test in
e91b744e8cbf2038a4dddce0609a33f396902bb5.
Fixes #3372.
Change-Id: Ie6423876e7725766109f74fdd3e76a24188b0b18
Artem Zhmurov [Thu, 20 Feb 2020 08:09:09 +0000 (09:09 +0100)]
Do not call PME GPU builder in CPU code paths
Currently, the logic of whether or not to execute the PME GPU builder
in tests relies on passing nullptr in CPU code paths. This patch
replaces this conditional with assert and removes the builder call in
CPU code paths.
Change-Id: I9fa93146091754df1bbc8f142a16fc1936ae53ea
Artem Zhmurov [Thu, 20 Feb 2020 13:29:34 +0000 (14:29 +0100)]
Use GROMACS wrappers for EXPECT_THROW/NO_THROW in PME tests
The EXPECT_THROW_GMX and EXPECT_NO_THROW_GMX wrappers provide more
information in case of test failure.
Change-Id: Ib935425ff3c0436fcefb88ea54c9e5c0501c0084
Artem Zhmurov [Wed, 5 Feb 2020 16:11:37 +0000 (17:11 +0100)]
Use CUDA float3 vector type instead of fvec in GPU bonded kernels
Using fvec in CUDA can be inneficient and requires re-definition
of vector operations. This commit switches the GPU bonded kernels
to using float3 instead of fvec.
Change-Id: Ib3bfa3e20501cdd22fc6e599b749c750fa468e80
Mark Abraham [Mon, 17 Feb 2020 07:22:38 +0000 (08:22 +0100)]
Added more docs and tests to EnumerationArray
It is now more clear that there is no risk of a segfault if somehow
Foo::Count was used to look up a value from an EnumerationArray. The
assertion would not be nice for a user to get either, but the positive
aspects that flow from having enumeration helpers that need the Count
field outweighs this downside.
Change-Id: I6111e79042326044a807b9b8ac58f32760a56b82
Christian Blau [Fri, 17 Jan 2020 13:15:14 +0000 (14:15 +0100)]
Split MdModuleNotifications into topics
Use different notifers to distinguish MdModule callbacks to
- preprocessing
- simulation setup
- checkpointing
refs #3076
Change-Id: I08b2ff7e90e42fce44043d7c0f2a9304d404445c
Szilárd Páll [Mon, 3 Feb 2020 10:38:50 +0000 (11:38 +0100)]
Add simulation workload flag for dipole computation
Change-Id: I4e7828d4dc73fb9caea100e0303779853be80c70
M. Eric Irrgang [Wed, 12 Feb 2020 15:56:17 +0000 (18:56 +0300)]
Establish stubs for documenting GitLab configuration.
Insert an `infrastructure` document under the `tools` node to own the
`jenkins` doc and a new `gitlab` doc.
Refs #3275
Change-Id: I4aa03949b4216290933716beb88b439a8a0940c4
M. Eric Irrgang [Sat, 15 Feb 2020 12:20:32 +0000 (15:20 +0300)]
Reformat .gitlab-ci.yml
Normalize indentation and remove trailing white space.
Change-Id: I41ee8ded2e41edcc05b6dc414524644af9378976
Berk Hess [Fri, 24 Jan 2020 13:59:21 +0000 (14:59 +0100)]
Remove 1 pulse DD request
Since the CUDA DD code now supports multiple pulses this is no longer
needed.
Refs #3106
Change-Id: I2db1d3cf45d9b0c814c0897a048bc5efb9f99e79
Alan Gray [Fri, 6 Dec 2019 13:19:43 +0000 (05:19 -0800)]
Multiple pulses for GPU Halo Exchange
Removes restriction on single pulse.
Implements #3106
Change-Id: I5d68258de831d04c14d6c352fc52e51852fccd80
Christian Blau [Fri, 7 Feb 2020 13:47:50 +0000 (14:47 +0100)]
Introduce readXvgData to read xvg data into std::vector
This allows for modernization of table functions, demonstrated
here with read_tables, as well as potentially any other function
that needs to read in xvg data. The legacy read_xvg is now
implemented in terms of readXvgData. There is already a test for
table functions and this change now adds tests for reading in
xvg data.
Change-Id: Iac0b13d7db15f04a8b0b464df9fa136ff4b2a213
Artem Zhmurov [Tue, 4 Feb 2020 10:04:34 +0000 (11:04 +0100)]
Clean up trivial function and duplicating macroses from NBNXM
The getOclPruneKernelJ4Concurrency(..) that used to implement
the concurrency parameter switching depending on vendor is now
a trivial return the same value as defined by macros. Hence,
this patch removes the function and code now uses the macro directly.
Change-Id: I61d4b0a91e9b3256633860165ab0b7f4a34f9687
Artem Zhmurov [Tue, 11 Feb 2020 09:43:14 +0000 (10:43 +0100)]
Fix the nightly failure
Change-Id: I06a75ba83590d2c6cdf94354e1b8c814db493ef0
Artem Zhmurov [Thu, 6 Feb 2020 12:53:52 +0000 (13:53 +0100)]
Temporary disable RVec->float3 conversion test to fix the post-submit
This fixes the post-submit matrix by disabling the faulty test. Will
be retracted once the proper soultion is found.
Refs. #3372.
Change-Id: I28031bc4793ce283c42539f4029cfe6bc2651156
Artem Zhmurov [Mon, 20 Jan 2020 17:32:46 +0000 (18:32 +0100)]
Use RVec instead of float for x, v and f device buffers
Using RVec instead of float for coordinates data-types allows to
remove multiplications by DIM when the adresses, offsets and sizes
are computed. Since the native device types are not used in CPU
part of the code, the type casting remains.
Refs #3312 and #2936
Change-Id: Iaea914a474195f214ca860f7345f6878b9a04813
Szilárd Páll [Fri, 31 Jan 2020 15:40:36 +0000 (16:40 +0100)]
Remove mu_tot from compute_globals()
The total dipole reduction happens in do_force() and the alternative
code-path reduction in compute_globals() was only needed for log
reporting which was removed some time ago.
Change-Id: I49a2608e8c1a47959a5f0f571e38e511367c94b2
Artem Zhmurov [Wed, 29 Jan 2020 14:45:59 +0000 (15:45 +0100)]
Move DeviceInfo into GPU traits
The DeviceInfo is needed upon construction of DeviceContext. To
prepare for opaque DeviceContext type, it is moved to GPU traits
and renamed according to the common naming scheme.
Refs. #3311, needed for #3315.
Change-Id: I2a9f1d932f142d645df75901521a734d208de509
Artem Zhmurov [Wed, 29 Jan 2020 13:31:43 +0000 (14:31 +0100)]
Make OpenCL DeviceVendor into enum class and move to GPU traits
The device context in OpenCL requires the information on vendor when
constructed. To prepare for opaque DeviceContext, the vendor
enum was moved into OpenCL traits.
Refs. #3311, needed for #3315.
Change-Id: Iec22ff17543b6a99407048de6e0cd82bb7218fb0
Artem Zhmurov [Tue, 4 Feb 2020 10:51:45 +0000 (11:51 +0100)]
Move non-bonded initialization out of the forcerec
Forcerec should not be responsible for initializing modules.
Change-Id: I666075fe03441c815b191f1eb3809e294c62d541
Pascal Merz [Tue, 4 Feb 2020 14:49:54 +0000 (09:49 -0500)]
Test PaddedVector to ArrayRef conversion
This adds a few tests to the PaddedVector tests, making sure that
the various ways to create unpadded ArrayRefs are yielding equivalent
views.
This also fix a small bug in the copy assignment test.
Change-Id: If4317e81a1723739ac3b16fc255987d9f7193489
Artem Zhmurov [Wed, 5 Feb 2020 10:31:13 +0000 (11:31 +0100)]
Fix typo in and remove a couple of duplicates from cool quotes
Older versions are also affected.
Fixes #3367.
Change-Id: If975f67490bfc2ddb6b5e17e00f63434a5013799
Paul Bauer [Thu, 27 Jun 2019 10:17:46 +0000 (12:17 +0200)]
Use more MDLogger in preprocessing
Refs #2999, #3005
Change-Id: I2ec9f5d9d98d7b1add0cc3e9339e7a93b6e1c9a6
Pascal Merz [Fri, 24 Jan 2020 20:16:35 +0000 (20:16 +0000)]
Minor improvements to vcm.cpp
This cleans up some minor details in vcm.cpp:
* Removed unnecessary include
* Specified OMP data sharing attributes explicitly
* Replaced entire functions being enclosed in if clauses by
returning immediately if the condition is not fulfilled to
improve readability. Blocks were kept to avoid touching lines
unnecessarily.
Change-Id: I29ac6e11a16d7b081c9b00bd85559d5381ae9119
Pascal Merz [Tue, 21 Jan 2020 15:01:53 +0000 (16:01 +0100)]
Merge VV implementations of ComputeGlobalsElement
Until now, ComputeGlobalsElement had effectively two separate
(templated) implementations for velocity verlet, to be called
at full timestep and after the position update.
As we gradually move towards a design in which the
ComputeGlobalsElement is agnostic to the data it reduces, this
separation does not make sense anymore. As a first step, the
two implementations are therefore merged.
Change-Id: If0b549a3d87fea50e895b70c55632e1f58582067
Artem Zhmurov [Thu, 19 Dec 2019 15:50:05 +0000 (16:50 +0100)]
Enable GPU update for supported cases of FEP
Only mass and constraints perturbation is not supported by the
GPU constraints, hence FEP can be enabled for the rest of the cases.
Change-Id: I0ec487823ec4aeda5b09ba66a504c5358e778c8e
Artem Zhmurov [Sat, 1 Feb 2020 16:55:25 +0000 (17:55 +0100)]
Couple cool quotes
Change-Id: I222b494d3205ba82101b9e19eafa6380a5f60a11
Artem Zhmurov [Sat, 1 Feb 2020 01:16:58 +0000 (02:16 +0100)]
Merge "Merge branch origin/release-2020 into master"
Paul Bauer [Wed, 26 Jun 2019 15:17:01 +0000 (17:17 +0200)]
Use MDLogger in grompp
Start using MDLogger in main grompp routine.
Refs #2999, #3005
Change-Id: Ic88e9a2ec271a4bf9502da5a268f532d422a1f1b
Szilárd Páll [Thu, 23 Jan 2020 17:04:24 +0000 (18:04 +0100)]
Eliminate the legacyFlags manipulation in do_force()
The override is redundant as it is implemented in the stepWorkload
initialization.
Change-Id: Idde50848c867cb558d4308522bc3e341d9054e82
Pascal Merz [Tue, 28 Jan 2020 21:00:43 +0000 (14:00 -0700)]
Modular simulator: Allow for nullptr in element list helper
This moves the responsibility for avoiding nullptr in the element
call and ownership lists from the algorithm building to the storage
helper convenience functions. This will simplify the builders by
reducing the number of conditions that need to be checked.
Change-Id: Ic8428837291f4208c9380bc15092fd6b5a5fda6d
Paul Bauer [Thu, 21 Feb 2019 09:50:32 +0000 (10:50 +0100)]
Start using MDLogger in gmxpreprocess
Changed logging of one set of routines to use the logger interface
instead of calling fprintf to stderr.
Refs #2005, #2999
Change-Id: Ibbecab0af6a0fa1c62c754f8826b8ff84fa4886e
Christian Blau [Thu, 30 Jan 2020 09:39:44 +0000 (10:39 +0100)]
Documentation fix for local atom set data
Documentation for the collective index was wrong and is fixed now.
Change-Id: I3d780fe25eab3356892f1ceab4c110c6f40ca7c9
Pascal Merz [Thu, 30 Jan 2020 22:49:10 +0000 (15:49 -0700)]
StatePropagatorData: Make const box getters const functions
This allows to have a const pointer to StatePropagatorData if only
const views are needed, and should have been that way from the
start.
Change-Id: I240a711c3193f9e94844a99fa500a0cd63e6bd8d
Szilárd Páll [Thu, 23 Jan 2020 17:30:00 +0000 (18:30 +0100)]
Remove BufferOpsUseGpu enum
Its limited role has been fully replaced by the equivalent workload
flags and the verbosity its used requires is not warranted for the
current use-cases.
Change-Id: I67ad1e9eca16e095ea9da8173e07d8f7683a862c
Pascal Merz [Wed, 22 Jan 2020 16:14:25 +0000 (17:14 +0100)]
Make t_inputrec const in ComputeGlobalsElement
Change-Id: Iff3d217fb735185e5a4e7e62239daccc62207144
Artem Zhmurov [Thu, 30 Jan 2020 12:56:17 +0000 (13:56 +0100)]
Cleaning booleans in NBNXM in OpenCL build
Patch
93f2f30017595e419d25c5dd6fa6a8b320a1858f changed some of the
booleans types from cl_bool to bool, but not changed how these
variables were used in some places. This caused the compiler to be
confused with the data types, trying to convert bool to int or
to cl_bool.
Change-Id: Ib8017bbdac804f3946e65698df5882c669250044
Artem Zhmurov [Thu, 12 Dec 2019 14:29:44 +0000 (15:29 +0100)]
Reorganize GPU stuff initialization in PME-only ranks
The state propagator data GPU, PME coordinate receiver and PME
force sender initialization in PME-only rank was not unified,
which lead to extra conditionals and extra calls to getter
functions. This patch unifies the GPU initialization of PME
only rank, thus simplifying the logic around it.
Change-Id: I8e6e39f0948fb1293c72d6b7ae958ab061f732df
Magnus Lundborg [Thu, 7 Nov 2019 15:47:06 +0000 (16:47 +0100)]
More SIMD preparations in the FE calculations
Prepare the launch of the FE kernel using SIMD. So far the kernel
is not modified to actually use SIMD.
Change-Id: Iaad24fc37549b5deaa892655be1d2a7317f65955
Paul Bauer [Thu, 21 Mar 2019 13:27:39 +0000 (14:27 +0100)]
Add replacement for symbol table
Refs #2833, #2916
Change-Id: Ibd771444933ef4b01f5a3eca9db3efbbbff2926f
Szilárd Páll [Wed, 15 Jan 2020 14:04:51 +0000 (15:04 +0100)]
Small improvement in OpenCL error handling
- replace plain asserts with GMX_ASSERT
- improve error message prints by decorating with OpenCL error strings
Refs #3300
Change-Id: Ibac66ee0de35c572c0051d8c394a488051b23a7e
Artem Zhmurov [Tue, 28 Jan 2020 17:50:15 +0000 (18:50 +0100)]
Split and move the checkDeviceBuffer(...) function from PME
Resolving a TODO.
Also fixed the formatting in neighboring comment.
Refs. #3311.
Change-Id: I1687981cc80e2388714cbbb3113f37e34582e31c
Artem Zhmurov [Tue, 28 Jan 2020 16:56:44 +0000 (17:56 +0100)]
Remove the rest of the device coordinates management from PME
Although it may be convinient to keep an local copy of the
address device coordinates buffer, the management of this buffer
is not the responsibility of the PME module. This patch remove
some of the remains of this management.
Change-Id: I160adfb0319c0bf6e532061aca05ef9cc9aa8a4f
Artem Zhmurov [Wed, 22 Jan 2020 16:50:59 +0000 (17:50 +0100)]
Rename UpdateConstraintsCuda to UpdateConstraintsGpu
This is to folow general naming conventions across the code.
Refs #3114.
Change-Id: Iec3678e1d4152d6442818fcd81020e021927757c
Paul Bauer [Tue, 28 Jan 2020 10:11:22 +0000 (11:11 +0100)]
Merge branch origin/release-2020 into master
Resolved Conflicts:
admin/copyright.py
cmake/gmxCPackUtilities.cmake
cmake/gmxManageFFTLibraries.cmake
cmake/gmxManageMPI.cmake
cmake/gmxTestMPI_IN_PLACE.cmake
docs/dev-manual/jenkins.rst
src/gromacs/domdec/domdec.cpp
src/gromacs/ewald/pme_load_balancing.cpp
src/gromacs/gmxlib/network.cpp
src/gromacs/gmxlib/network.h
src/gromacs/gmxpreprocess/readir.cpp
src/gromacs/pulling/pullutil.cpp
src/gromacs/taskassignment/decidegpuusage.cpp
src/gromacs/topology/mtop_util.cpp
src/gromacs/topology/mtop_util.h
Change-Id: Ie41c4a18cc79368eba613a093cda9c8782eead2c
Mark Abraham [Fri, 17 Jan 2020 14:43:38 +0000 (15:43 +0100)]
Update some nbnxm kernel constants to constexpr
Then OpenCL kernels now use preprocessor constants of the same names
and values, which are set up on the JIT compilation line. This
eliminates a header file used for compatibility.
Added support also for the ocl_nbnxm_kernels testing target.
Change-Id: Ibf8f7864dd08b14aeecad095cdbe25b1fbacc765
Mark Abraham [Mon, 27 Jan 2020 06:54:05 +0000 (07:54 +0100)]
Remove element-size member fields
These are compile-time constants, and there is no need to store them
in variables.
Change-Id: Ib94fbc479b031c4d4034355123a8ff0cf333c74f
Mark Abraham [Sun, 26 Jan 2020 15:33:45 +0000 (16:33 +0100)]
Make NbnxnGpu class with constructor
This is needed for future reform of the NB GPU code. Also converted
the "staging" struct to have initializers (used to make the default
constructor) because it is held by value and would otherwise have
default constructor that leaves fields uninitialized.
Also replaced cl_bool with normal bool, as there was no advantage for
the former.
Change-Id: I1b63f0a8145dbd911062d1039f129074b0abdc3e
Paul Bauer [Fri, 24 Jan 2020 12:36:22 +0000 (13:36 +0100)]
Add cool quotes
Change-Id: I6debedecbefcf4828fc070874460394188a3012a
Szilárd Páll [Thu, 22 Aug 2019 00:11:41 +0000 (02:11 +0200)]
Add target for offline PME OpenCL compilation
Also fix clang-tidy warnings in the PME OpenCL kernels; tested with
clang-tidy 8.0 and 9.0.
Target will be triggered in all clang-tidy + OpenCL builds.
Moved the invocation of the targets in jenkins before the
tests where it makes more sense.
Change-Id: I31d7dd4883e20d0564ab2f18a6de7e0d17e8024a
Magnus Lundborg [Thu, 7 Nov 2019 13:47:38 +0000 (14:47 +0100)]
Removed SC RPower 48 from FEP kernel
With RPower 48 deprecated the FEP kernel has been simplified
quite a lot.
Fixes #3253.
Change-Id: Ic18d9f938679b2a7499fbcc31bfc9d28e89fdb98
Szilárd Páll [Wed, 22 Jan 2020 16:07:01 +0000 (17:07 +0100)]
Fix deadlock in PP-PME balancing startup delay
The condition whether load balancing should start included a per-rank
computed fixed time-delay. Therefore different ranks could evaluate this
condition differently resulting in a deadlock.
This change fixes the deadlock by broadcasting the result of the time
delay check.
Fixes #3335
Change-Id: I39ebc7e99483a6837bdbd79e312148384c1966b3
Paul Bauer [Tue, 14 Jan 2020 07:01:30 +0000 (08:01 +0100)]
Use utf-8 for python file reading
Avoids crashing on non-ascii characters
Also needed in release-2020 due to https://gitlab.com/gromacs/gromacs/pipelines/
111716110
Change-Id: Ie489110bbe37619d36f8feb739e04ef60cccff16
Magnus Lundborg [Thu, 23 Jan 2020 15:47:28 +0000 (16:47 +0100)]
Minor cosmetic improvements in AWH
Remove duplicated inputrec outputs.
Clarify that user input data should be in kT.
Change-Id: I51b733f0a1969b8e5232766beb10a6f1a7c6a57a
Berk Hess [Wed, 22 Jan 2020 21:26:51 +0000 (22:26 +0100)]
Fix DD rank count prime check
The domain decomposition would refuse to run with large prime factors
in the MPI rank count even when the grid was specified by the user.
Fixes #3336
Change-Id: I92f20ce18f314db68890650e76741b0ee70c05df
Artem Zhmurov [Thu, 23 Jan 2020 09:58:53 +0000 (10:58 +0100)]
Fix a couple of commas in cool quotes
A couple of commas between the quotes and their authors went missing.
Due to a random nature of cool quotes, I am not sure if this have
any consequences.
Change-Id: Ifb79557efc3fd3d8d75dd0a6566cccc7e5a43ea4
Gaurav Garg [Fri, 10 Jan 2020 17:29:17 +0000 (22:59 +0530)]
Fix PME checks in GPU update assignment decision
The decideWhetherToUseGpuForUpdate() function performed a check on
whether PME is on GPU, but neglected to check if PME is actually
active. Therefore, cases without PME (e.g. reaction field) were
unintentionally being prevented from running update on GPU. This change
adds a check whether pmeRunMode != PmeRunMode::None
Change-Id: Ic49f99b2e2afddabd7e2c8e68ab3d6d9325dc07a
Berk Hess [Wed, 22 Jan 2020 20:56:23 +0000 (21:56 +0100)]
Minor cleanup in constraint and shellfc code
Replaced include by forward declarations and simplified empty
ArrayRefs as function arguments.
Change-Id: I759f3f72bc0b4453caf059ae4723ef734a7c2ead
Berk Hess [Wed, 22 Jan 2020 10:53:24 +0000 (11:53 +0100)]
Fix illegal memory access in PME communication
Depending on the compiler, mdrun could exit with an illegal
memory access error when a PME rank communicates 0 atoms with
another PME rank.
Change-Id: Ic1a08903f53c3d0b655ed5475ad99024979b461e
Berk Hess [Tue, 21 Jan 2020 21:05:31 +0000 (22:05 +0100)]
Clarify COMM/posres grompp note
In the common case of equilibrating a macro-molecule using position
restraints, grompp will issue a note about COMM removal when using
default mdp settings. Added a sentence that says that it is likely
not an issue in this common case.
Change-Id: Ide8b75664c4da3789c6661d8d69f855f9abea4e0
Paul Bauer [Mon, 20 Jan 2020 14:48:19 +0000 (15:48 +0100)]
Fix documentation error with doxygen >1.8.16
Fixes #3280
Change-Id: Ia41e080ea5ee4bc393d1e0240fc56958d81f6c68
Artem Zhmurov [Thu, 9 Jan 2020 16:51:19 +0000 (17:51 +0100)]
Rename SettleCuda to SettleGpu
This is to folow general naming conventions across the code.
Refs #2886, #2888.
Change-Id: I273cf8c1cabcf59d1cb7fd7f0028c3c1cd8619c8
Berk Hess [Fri, 17 Jan 2020 09:59:18 +0000 (10:59 +0100)]
Use ArrayRef(WithPadding) in constraint code
This change is only refactoring, except for adding padding to two
buffers used for flexible constraints. This avoid potential illegal
memory access one element beyond the buffer with certain SIMD
implementations. Note the this memory was not used nor modified.
Change-Id: I385b3007a27888d15741e737ccfcf3e3a4369d1e
Artem Zhmurov [Thu, 9 Jan 2020 16:42:47 +0000 (17:42 +0100)]
Rename LincsCuda into LincsGpu
This is to folow general naming conventions across the code.
Refs #2885, #2888.
Change-Id: Ifa7e3febeff1d958155ed02daa97d26e828e8381
Artem Zhmurov [Thu, 9 Jan 2020 16:26:49 +0000 (17:26 +0100)]
Rename LeapFrogCuda to LeapFrogGpu
This is to folow general naming conventions across the code.
Refs #2887, #2888.
Change-Id: Ia090c0479f1960fe34d1144e3bd173015d157e62
Berk Hess [Wed, 15 Jan 2020 16:35:15 +0000 (17:35 +0100)]
Use std::vector in shellfc
Replaced all C memory management in shellfc by std::vector and
one now. Also used more ArrayRef.
All allocated memory is now freed by done_shellfc().
Change-Id: Ic533d7b20ba7486f76148476b35986a3caec4b36
Szilárd Páll [Tue, 17 Dec 2019 02:06:55 +0000 (03:06 +0100)]
Template X buffer ops on setFillerCoords
Also fix a typo and remove an outdated TODO.
Change-Id: I4d35a889fa71b0096e825b95a02860ab6420c4ad
Paul Bauer [Fri, 17 Jan 2020 11:54:26 +0000 (12:54 +0100)]
Actually fix Gitlab doc build
Was still failing after
658765317fd94df5d534c039462be03ab3839067 got
merged.
Actually fixes #3278
Change-Id: I747fe5c677864d1f50ab97d0eda38c68a6085b45
Mark Abraham [Wed, 15 Jan 2020 17:30:23 +0000 (18:30 +0100)]
Regularize nbnxm module doxygen
This module will be easier to work with if all the files are
documented and all the comments precede the things that they comment.
Had to add several \internal flags to various files to ensure
things that should be internal are that way.
Change-Id: Ia08a936c23276cbea97c2e8ff47db403d3fd9185
Paul Bauer [Thu, 16 Jan 2020 17:50:25 +0000 (18:50 +0100)]
Fix bad link in developer docs
Also made sure that error gets caught by the Gitlab CI runner.
Fixes #3278
Change-Id: I36b73a4322c69242eef3dcefa6684ef973b1bd01
Berk Hess [Thu, 16 Jan 2020 14:13:41 +0000 (15:13 +0100)]
Add check for shells and GPU update
Fixes #3303
Change-Id: I84a9d005fdff142e332e449bd7b2cce314617adb
Berk Hess [Thu, 16 Jan 2020 14:23:35 +0000 (15:23 +0100)]
Correct fixed redmine issue id from 3297 to 3296
Recent commit
36a65816 said it fixed issue 3297, but this should
have been issue 3296.
Refs #3296
Change-Id: I85a95e818d3cda816211dc2aa8ddb32e9e0c69d4
Mark Abraham [Tue, 14 Jan 2020 15:53:26 +0000 (16:53 +0100)]
Make nbnxm headers more self-contained
Resolves existing TODO, removing a dependency of the CPU kernels
on config.h
Eliminates an unnecessary function, and the inlining of a function
that is only called every NS step.
Renamed gmx_nbnxn_*_t to gmx_nbnxm_gpu_t because there was no
advantage to the previous scheme. Each GPU build configuration only
ever uses one type, so there is no problem having different
declarations in different build configurations. The compiler would
complain if there was. The renaming of the former collection of types
in gpu_types.h created a dependency on config.h which should be
avoided.
Something about the renaming of gmx_nbnxm_cuda_t broke the way Doxygen
understood nbnxm_cuda_types.h. I thought that declaring a Doxygen
header for atomdata.h had fixed it, somehow, but it didn't, so there
is a suppression for the suspected false positive. Also fixed the
Doxygen in atomdata.h
Change-Id: I18c573ad87cbab9ae4f38aa49541f0821dc1c145
Szilárd Páll [Fri, 10 Jan 2020 15:37:32 +0000 (16:37 +0100)]
Fix PME run mode without PME
pmeRunMode was incorrectly set to CPU when the PME task is not
assigned to a GPU in a non-PME run.
This change make sure that non-PME runs pmeRunMode is correctly set to
None. It also moves this setup code to a function in the taskassignment
module.
Change-Id: I2c2c609e56d3cb6eef5cfccf2f0489545cedf6ef
Paul Bauer [Thu, 16 Jan 2020 08:17:14 +0000 (09:17 +0100)]
Fix nightly build failure on Gitlab
Found an unused variable warning when building without thread or real
MPI.
Change-Id: I6badc5c32e9eeb07cfafacd3ff9219dd612be847
Paul Bauer [Sat, 11 Jan 2020 16:57:18 +0000 (17:57 +0100)]
Update nonstd::optional
Updated to commit
096ce6d7e45ef184de2c8ddcae45da4a9d539da5 to avoid a
bug (see https://github.com/martinmoene/optional-lite/issues/51)
Change-Id: I0df46b21fabcb7841600e5a6b32b2329742d12d5
Paul Bauer [Fri, 10 May 2019 12:03:42 +0000 (14:03 +0200)]
Allow access to optional outside libgromacs
When using gmx::compat::option in files also included
outside of the libgromacs tree (e.g. anything topology related),
compilation would abort because the include path could not be resolved
for nonstd::optional.hpp in e.g. legacymodules.cpp or view.cpp.
Adds the information needed to the CMakefiles to always find the correct
include path.
Also modifies CUDA nvcc compilation to have the header available for
those CUDA compiled files that need it.
Should be revisited when resolving #3290
Change-Id: If335ecdfa1bd2ba56cae7ee26c07d9a7faa5a651
Christoph Junghans [Tue, 14 Jan 2020 00:06:03 +0000 (17:06 -0700)]
cmake: install pbc.h for GMX_INSTALL_LEGACY_API
This was introduced in
97c751f1945702316b6342f4054da20dd5239872.
Change-Id: I1ecb0c10d0df9285bed7bef112d4cd439b262ce6
Berk Hess [Tue, 14 Jan 2020 13:51:38 +0000 (14:51 +0100)]
Fix multisim with parallel simulation
mdrun -multisim with more than one rank per simulation would stop
with a fatal error due to using a partially initialized
gmx_multisim_t in GpuTaskAssignmentsBuilder::build().
Fixes #3297
Change-Id: Idfe24110908dc8cad29cd9a0eac7233fca4102f9
Paul Bauer [Tue, 14 Jan 2020 07:01:30 +0000 (08:01 +0100)]
Use utf-8 for python file reading
Avoids crashing on non-ascii characters
Change-Id: Ie489110bbe37619d36f8feb739e04ef60cccff16
Berk Hess [Wed, 11 Dec 2019 13:24:00 +0000 (14:24 +0100)]
Avoid unnecessary exclusion generation in DD
With only self exclusions, the DD partitioning would generate a list
of all empty exclusion lists for all i-atoms. Now no lists are
generated. An assertion is added in the pairlist generation code
to ensure we either have 0 or the right number of exclusions lists.
Change-Id: I4b0556cbf3ed3a6fea7bdd0e03e194410bcfb88a
Artem Zhmurov [Fri, 10 Jan 2020 16:37:34 +0000 (17:37 +0100)]
Report if update is running on the GPU or on the CPU
This adds a line which states where update is offloaded next
to the rest of the GPU usage information.
Fixes #3292.
Change-Id: Ie6b076c4309c7695ab9b46037ced92e95dea1558