Artem Zhmurov [Thu, 17 Sep 2020 12:49:10 +0000 (12:49 +0000)]
Remove the CPU hardware context from the general list of test hardware contexts
Having CPU code path in the general hardware context list leads to having
many if (CPU) clauses. This complicates things in places, where there are
several CPU runners. Since in most cases (i.e. everywhere apart from Ewald
tests) the runners know the hardware they should use, the selection of CPU
or GPU is now done when the runners are created. TestHardwareContext is
to become TestDeviceContext and will only hold GPU devices.
Berk Hess [Wed, 16 Sep 2020 13:33:12 +0000 (15:33 +0200)]
Remove unnecessary condition in DD force buffer resizing
Removed a condition that was no longer necessary, as exactly
the same condition is checked inside the resize() method of
ForceHelperBuffers.
Mark Abraham [Wed, 16 Sep 2020 15:41:05 +0000 (15:41 +0000)]
Activate AMD OpenCL build in release matrix
This had never been turned on.
Fixed missing file for OpenCL installation.
Also reordered the install list in alphabetical order, per style.
Refs #3272
Sebastian Keller [Tue, 15 Sep 2020 09:09:45 +0000 (11:09 +0200)]
Reduce transitive dependencies in arrayref.h
Reduce transitive dependencies on other GROMACS headers.
* Replace `GMX_ASSERT` with `assert`
* Replace `index` with `difference_type`
Refs #3674
Christian Blau [Tue, 15 Sep 2020 14:55:31 +0000 (16:55 +0200)]
Extend user docs on affine transformations for densities
Add more extensive information to the reference manual and .mdp option description
in the user-guide.
Fix one documentation typo.
Pascal Merz [Wed, 16 Sep 2020 07:34:44 +0000 (07:34 +0000)]
Implement modular checkpointing
Using the CheckpointData format introduced in a parent commit, this
rewrites checkpointing for the modular simulator to completely use
the new format.
The CheckpointHelper is now passing a CheckpointData object to its
clients (instead of a legacy t_state object). Clients are now stored
in a map, as they are identified by their unique key to be able to
assign the correct CheckpointData sub-objects at reading and writing.
If checkpoint reading occured, the newly introduced
CheckpointHelperBuilder receives the CheckpointData object read at the
runner level from the ModularSimulator. It then initializes its clients
with their respective, read-only CheckpointData subobjects.
The ICheckpointHelperClient interface is adapted to reflect above
changes.
The ModularSimulatorAlgorithmBuilder is slightly simplified thanks to
to the introduction of a proper builder for the CheckpointHelper.
The ComputeGlobalsElement is simplified, as it is not required to know
about the needs of communication of the EnergyData object which
depends on checkpoint reading.
Finally, all elements which are checkpoint clients are updated to
implement the new design. Note that they all introduce their own
checkpoint versioning, as the data being checkpointed is opaque to the
checkpointing infrastructure.
Closes #3517
Closes #3422
In partial fulfillment of #3419
Artem Zhmurov [Tue, 15 Sep 2020 16:43:43 +0000 (16:43 +0000)]
Use common device context header for OpenCL
This moves the OpenCL specific definition into under macro in the main header.
Makes device stream and context definitions more consistent.
Paul Bauer [Tue, 15 Sep 2020 14:17:42 +0000 (14:17 +0000)]
Break off some tests from mdrun tests
Done to not hit the time limit in CI with OpenCL.
Change-Id: Ic2e2686530aef51475ab7f49c1bfd29442c3fc0a
M. Eric Irrgang [Fri, 11 Sep 2020 13:52:31 +0000 (16:52 +0300)]
Remove outdated workaround.
Remove a workaround left over from before issue #2689 was closed.
Refs #2689
Berk Hess [Tue, 15 Sep 2020 09:40:23 +0000 (11:40 +0200)]
Only extend Ewald table when necessary
The Ewald correction table for non-bonded interactions was always
extended by change
24595dbb. No this is limited to free-energy
runs only.
Erik Lindahl [Tue, 15 Sep 2020 12:38:19 +0000 (12:38 +0000)]
Enable GMX_GPU=SYCL compiles
Update CMake config to properly apply -fsycl, but only to files
including actual SYCL code, and get linking working. Tested
with both dpcpp and icpx, and added trivial SYCL code to a
dimmy device context, just to ensure compiles and linking works
both with and without SYCL support enabled.
Also fixes a number of new warnings about unused variables now
detected with dpcpp and icpx.
Paul Bauer [Tue, 15 Sep 2020 11:31:21 +0000 (13:31 +0200)]
Fix missing installed files for OpenCL PME
Change
fa6862b510acd7b0225580b661446c278dbb0039 forgot to modify
the CMake files to install the renamed OpenCL header files.
Refs #3664
Christian Blau [Tue, 15 Sep 2020 11:21:14 +0000 (11:21 +0000)]
All coordinates in the density-guided-simulation group undergo an affine transformation before density-fitting forces on them are evaluated, which allows rotation, transformation and scaling of coordinates.
Resolves part of #3581.
Berk Hess [Tue, 15 Sep 2020 10:17:46 +0000 (10:17 +0000)]
Fix task assignment with multiruns
Change
e0f481ae broke the physical node hardware detection and task
assignment by passing the simulation instead of the world communicator
to the creation of the physical node communicator. Now the world
communicator is stored and passed.
Fixes #3666
Erik Lindahl [Tue, 15 Sep 2020 07:59:04 +0000 (09:59 +0200)]
Fix minor warnings noticed by Intel compilers
New things found by dpcpp & ipcx compilers.
Alan Gray [Fri, 11 Sep 2020 11:51:58 +0000 (04:51 -0700)]
Pass devFlags into createSimulationWorkload replacing bools
Artem Zhmurov [Tue, 15 Sep 2020 05:46:44 +0000 (08:46 +0300)]
Fix VSite out of range error message
M. Eric Irrgang [Mon, 14 Sep 2020 15:37:40 +0000 (15:37 +0000)]
Create and use SimulationInput module.
Allow Mdrunner to accept a handle to SimulationInput from the client.
This change adds an input method to the MdRunner builder to provide
access to resources provided through the new SimulationInput module.
Refs #3374
Artem Zhmurov [Mon, 14 Sep 2020 09:46:19 +0000 (09:46 +0000)]
Use common device context header for OpenCL
This moves the OpenCL specific definition into under macro in the main header.
Makes device stream and context definitions more consistent.
M. Eric Irrgang [Fri, 11 Sep 2020 13:47:56 +0000 (16:47 +0300)]
Refine the CMakeLists.txt for MPI gmxapi tests.
Exclude tests when GMX_MPI is not set. Normalize test working directory.
Berk Hess [Sun, 13 Sep 2020 09:30:20 +0000 (09:30 +0000)]
Decouple nsttcouple and nstpcouple from nstlist
The default values of nsttcouple and nstpcouple of -1 would cause
nstlist to be used as the coupling interval. But coupling intervals
should not be linked to nstlist. The default is now set to 10, which
will not change settings for mdp files where nstlist was not specified
as the default nstlist value is also 10.
Mark Abraham [Sat, 12 Sep 2020 11:42:42 +0000 (13:42 +0200)]
Fix GPU device info broadcast with MPI
ejjordan [Fri, 11 Sep 2020 12:34:27 +0000 (14:34 +0200)]
Move src/api cmake logic into src/api cmake file
Paul Bauer [Fri, 11 Sep 2020 06:26:02 +0000 (08:26 +0200)]
Remove leftover data after refactoring
The modular simulator still hat the old datastructure for initial
lambdas, causing a complaint in the CI.
Change-Id: Ic97ee36ebea8cd40d7c513f44f767751f5c271cc
Paul Bauer [Fri, 11 Sep 2020 10:11:17 +0000 (10:11 +0000)]
Fix doxygen for unused parameters.
Recent addition to the code didn't use the parameters for the SYCL
stubs, leading to errors from doxygen.
Change-Id: I61666e4e76cfdcfa5c618c7bc6f58cf24ea2b4f8
Artem Zhmurov [Fri, 11 Sep 2020 09:06:16 +0000 (09:06 +0000)]
Define stubs for GPU data structures in SYCL to make SYCL compilation possible
Paul Bauer [Fri, 11 Sep 2020 07:58:35 +0000 (07:58 +0000)]
Force use of Python3 in Doxygen CMakeFiles
Change-Id: Ia7d430fef243d6b3236de903907dbf8e9ba92222
Christian Blau [Thu, 10 Sep 2020 19:04:49 +0000 (19:04 +0000)]
Simplify and fix how lambda values are set
Simplified setCurrentLambdasLocal method to return an array of
current lambda points. Removed the faulty use of lam0 as initial
lambdas.
Roland Schulz [Thu, 10 Sep 2020 04:51:17 +0000 (21:51 -0700)]
Fix Visual Studio build
- Add /permissive- flag to disable MSVC extension. Fixes
ternary operator.
- Fix usage of %l for size_t
- Disable non-wroking FFTW SIMD check
- Missing imports
- Compiler warning fix
Roland Schulz [Wed, 9 Sep 2020 20:06:04 +0000 (13:06 -0700)]
Simpify CheckpointData
Paul Bauer [Thu, 10 Sep 2020 12:37:44 +0000 (14:37 +0200)]
Minor fix to the printout for regtest builds
Was not printing the branch it is building the archive from.
Change-Id: I597e68a3780d3f300b5a4be447ecac7834126408
Artem Zhmurov [Thu, 10 Sep 2020 13:49:23 +0000 (13:49 +0000)]
Use common device context header for OpenCL
This moves the OpenCL specific definition into under macro in the main header.
Makes device stream and context definitions more consistent.
Berk Hess [Thu, 10 Sep 2020 11:37:55 +0000 (13:37 +0200)]
Add angles to ListedForces selections
Artem Zhmurov [Thu, 10 Sep 2020 10:27:03 +0000 (10:27 +0000)]
Use device information object instead of id when performing device checks
Initializing plain object is dangerous, since it then can be used to set
active device, with default id. This change ensures that proper device
will be used, even if the high level device management is used in the
checks.
Berk Hess [Thu, 10 Sep 2020 09:00:52 +0000 (11:00 +0200)]
Fix memory corruption with strings in grompp
Using a string of more than 31 characters as a default value for
a string entry in the mdp file would lead to memory corruption.
Joe Jordan [Thu, 10 Sep 2020 06:42:13 +0000 (06:42 +0000)]
Replace GMX_ASSERT with assert in vectypes.h
It is inappropriate to have a wrapper around assert in a public API.
This change removes dependence on GMX_ASSERT in one component of the
installed API. Transient dependencies related to inclusion of
gmxassert.h in vectypes.h are also removed.
Artem Zhmurov [Thu, 10 Sep 2020 05:39:44 +0000 (05:39 +0000)]
Unify more functions in CUDA and OpenCL implementations of NBNXM
M. Eric Irrgang [Wed, 9 Sep 2020 17:34:13 +0000 (17:34 +0000)]
Explicitly include STL headers used in test.
Include `array` and `optional` in strconvert.cpp test.
Fixes #3657
Artem Zhmurov [Wed, 9 Sep 2020 06:29:11 +0000 (09:29 +0300)]
Restore GMX_FORCE_UPDATE_DEFAULT_GPU environment varible check
This line was accidently removed during unrelated refactoring
in
75c17a76b69c1ade1f29fdce9fe2f6dd78221c1d .
Alan Gray [Tue, 8 Sep 2020 16:34:25 +0000 (16:34 +0000)]
Bug fix in call to deviceStreamManager constructor
DeviceStreamManager construction expects
(deviceInfo,useGpuForPme,havePpDomainDecomposition,
doGpuPmePpTransfer,useGpuForUpdate,useTiming) but was being passed
(deviceInfo,useGpuForPme,useGpuForNonbonded,
havePPDomainDecomposition,useGpuForUpdate,useTiming) Now passing
correct arguments through simulationWork. Also ensures update stream
is correctly set up when gpu buffer ops are enabled.
Fixes #3639 and #3641
Andrey Alekseenko [Tue, 8 Sep 2020 12:51:19 +0000 (14:51 +0200)]
Fix clang-tidy warning
Andrey Alekseenko [Tue, 8 Sep 2020 12:29:08 +0000 (14:29 +0200)]
Fix "GPU detection deactivated" message when it in fact failed
Also remove duplicate GPU detection check, and raise log level on failure from GPU detection API.
Pascal Merz [Tue, 8 Sep 2020 13:20:07 +0000 (13:20 +0000)]
Make legacy energy elements use CheckpointData
This enables some legacy energy elements to write to CheckpointData,
namely
* energyhistory_t
* delta_h_history_t
* ekinstate_t
Refs #3517
Refs #3422
Refs #3419
Christian Blau [Tue, 8 Sep 2020 12:49:24 +0000 (12:49 +0000)]
Allow density-guided simulations to translate structure
Density-guided simulations acquire a new feature that allows a
user-defined shift on the structure before forces are calculated.
First step to address #3581
Pascal Merz [Tue, 8 Sep 2020 10:56:09 +0000 (10:56 +0000)]
Remove dependency of EnergyData on t_state
EnergyData used a t_state object to calculate the conserved energy.
This responsibility is now given to the respective temperature /
pressure control algorithms. This allows to remove the dependency
of EnergyData on t_state.
This also introduces the conserved energy as a test quantity in the
tests comparing legacy and modular simulator code paths.
Refs #3419
Paul Bauer [Tue, 8 Sep 2020 07:29:07 +0000 (07:29 +0000)]
Move densityfitting to its own directory
Preparing for adding more applied_forces modules
Change-Id: Ieec20d1f0752a369d26352ec6b0997812decd21e
Paul Bauer [Mon, 7 Sep 2020 22:47:17 +0000 (22:47 +0000)]
Fix output string for GPU support
This used to print only disabled or CUDA because the variable was only 0
or 1.
Change-Id: Ie406a36e61617c29629f97d811eb93244b5a2e3a
Christian Blau [Mon, 7 Sep 2020 16:12:52 +0000 (18:12 +0200)]
Fix clang-format failure in coordinatetransformation.h
Fixes formatting clang format error.
Pascal Merz [Mon, 7 Sep 2020 20:23:36 +0000 (20:23 +0000)]
Make EnergyOutput::addDataAtEnergyStep independent of t_state
EnergyOutput::addDataAtEnergyStep took a pointer to a full t_state,
although it only uses a small part of the object. This makes the
dependencies explicit. This is a necessary step to make EnergyData
independent of t_state.
Refs #3419
Artem Zhmurov [Mon, 7 Sep 2020 10:58:02 +0000 (13:58 +0300)]
Remove in-body comment from init_forcerec(...) function
Fixes doxygen warning
Artem Zhmurov [Mon, 7 Sep 2020 17:44:03 +0000 (20:44 +0300)]
Fix clang-format
M. Eric Irrgang [Mon, 7 Sep 2020 16:13:31 +0000 (16:13 +0000)]
Replace filename-based initialization functions.
Decouple Mdrunner from the details of `-s` and `-cpi`
filename arguments when establishing initial simulation state.
Declare gmx::SimulationInput and the library utilities needed to
replace direct reference to TPR and CPT files in Mdrunner.
Use SimulationInput and accompanying utilities to remove read_tpx_state
and load_checkpoint from Mdrunner.
Allows TPR and checkpoint file handling to be considered separately
from Mdrunner initialization in future development.
Refs #3374
Christian Blau [Mon, 7 Sep 2020 13:46:40 +0000 (13:46 +0000)]
Implement affine coordinate transformation
Introduce a new class and tests for affine coordinate transformations.
Allows to perform a matrix multiplication and shift to coordinates of the form A*x+t with a 3x3 real valued matrix A and a translation vector t.
Artem Zhmurov [Mon, 7 Sep 2020 06:09:04 +0000 (06:09 +0000)]
Access the device status directly, remove the getter
DeviceInformation is a basic contained and does not need the getters.
Pascal Merz [Sun, 6 Sep 2020 18:15:55 +0000 (18:15 +0000)]
Prepare legacy checkpoint for modular simulator checkpointing
* Extend legacy checkpointing functionality to accept a CheckpointDataHolder
for reading and writing
* Bump checkpoint version to reflect above change
* Turn off some checkpoint sanity checks when using modular simulator
* Pass CheckpointDataHolder object into checkpoint reading in runner, and
move this object in SimulatorBuilder and then ModularSimulator for element
setup
Refs #3517
Refs #3422
Refs #3419
Pascal Merz [Sun, 6 Sep 2020 12:01:42 +0000 (12:01 +0000)]
Modular simulator: Simplify velocity update dispatch
This simplifies the velocity update dispatch of the modular simulator
propagator. This is pure rebasing reducing the number of branches
required to dispatch the right templated version of the velocity
update.
Christian Blau [Fri, 4 Sep 2020 11:59:43 +0000 (11:59 +0000)]
String to array conversion functions
Introduce and test a function that allows to convert a string into
a fixed-size array of arbitrary ElementType.
Pascal Merz [Thu, 30 Apr 2020 02:25:41 +0000 (20:25 -0600)]
Introduce CheckpointData
CheckpointData exposes methods to read and write scalar values,
ArrayRefs, and tensors. It also allows to create a "sub-object" of
type CheckpointData which allows to have more complex members
implement their own checkpointing routines. All methods are templated
on the chosen operation, CheckpointDataOperation::Read or
CheckpointDataOperation::Write, allowing clients to use the same code
to read and write to checkpoint. Type traits and constness are used to
catch as many errors as possible at compile time. CheckpointData uses
a KV-tree to store the data internally. This is however never exposed
to the client. Having this abstraction layer gives freedom to change
the internal implementation in the future.
All CheckpointData objects are owned by a ReadCheckpointDataHolder or
WriteCheckpointDataHolder. These holder classes own the internal
KV-tree, and offer deserialize(ISerializer*) and
serialize(ISerializer*) functions, respectively, which allow to read
from / write to file. This separation clearly defines ownership and
separates the interface aimed at file IO from the interface aimed at
objects reading/writing checkpoints.
Refs #3517
Refs #3422
Refs #3419
Pascal Merz [Thu, 3 Sep 2020 15:28:59 +0000 (09:28 -0600)]
Remove unnecessary friend declaration
Magnus Lundborg [Tue, 1 Sep 2020 11:24:20 +0000 (13:24 +0200)]
Print lambda state to log file if using AWH for FEP.
Change-Id: I08c7e6d51a299eb53556d5bde63c29f7c7640f6e
Alan Gray [Sun, 23 Aug 2020 13:05:51 +0000 (06:05 -0700)]
Fix bug it GPU halo exchange initialization for continuation runs
Fixes a bug introduced in
fdf8c9064e2289bb01b1536a06f83755450caee8
where, due to the presence of !(bFirstStep && ir->bContinuation) in
the if statement predicate of the block in which the init call was
located. In the case of continuation runs the halo exchange would not
be initialized until the second search step, causing the code to
crash. This change moves the init call to a separate block with the
correct logic in the if statement.
Pascal Merz [Thu, 3 Sep 2020 05:27:38 +0000 (23:27 -0600)]
Make dd_collect_vec independent of t_state
This removes the explicit dependency of dd_collect_vec on the
t_state object.
This is a prerequisite for !440.
Refs #3422 #3419
Berk Hess [Wed, 2 Sep 2020 21:02:55 +0000 (21:02 +0000)]
Move listed and wall forces out of do_force_lowlevel()
Renamed do_force_lowlevel() to calculateLongRangeElectrostatics().
Also replace C pointer for coordinates by ArrayRefWithPadding
in calculate() of ListedForces and do_walls().
Berk Hess [Wed, 2 Sep 2020 15:27:23 +0000 (15:27 +0000)]
Enable splitting of listed interaction calculation
This replaces the ListedForces unique_ptr in t_forcerec by a vector
of unique_ptr and adds a selection mechanism for bonded interactions.
Also moved the t_fcdata storage out of ListedForces into t_forcerec
because we need only one instance.
Gilles Gouaillardet [Wed, 2 Sep 2020 09:01:44 +0000 (09:01 +0000)]
Fix improved SIMD angles()
avoid division by zero when the angle is (too close to) zero.
Fix a regression introduced in
fb7a6480db5914a50a97618b3e6316663041aafb
Paul Bauer [Mon, 31 Aug 2020 15:15:45 +0000 (17:15 +0200)]
Merge branch 'release-2020' into master
Resolved Conflicts:
CMakeLists.txt
admin/ci-scripts/build-and-test-py-gmxapi-0.1.sh
admin/ci-scripts/build-and-test-sample_restraint-2020.sh
admin/clang-tidy.sh
admin/gitlab-ci/global.gitlab-ci.yml
admin/gitlab-ci/gromacs.gitlab-ci.yml
admin/gitlab-ci/python-gmxapi.gitlab-ci.yml
cmake/gmxManageGPU.cmake
cmake/gmxManageNvccConfig.cmake
cmake/gmxVersionInfo.cmake
share/CMakeLists.txt
src/config.h.cmakein
src/gromacs/CMakeLists.txt
src/gromacs/analysisdata/CMakeLists.txt
src/gromacs/ewald/pme.cpp
src/gromacs/fileio/tpxio.cpp
src/gromacs/fileio/writeps.cpp
src/gromacs/gmxana/gmx_hbond.cpp
src/gromacs/gmxana/gmx_lie.cpp
src/gromacs/gmxana/gmx_xpm2ps.cpp
src/gromacs/gmxpreprocess/genrestr.cpp
src/gromacs/gmxpreprocess/tests/CMakeLists.txt
src/gromacs/gpu_utils/gpu_utils.cu
src/gromacs/gpu_utils/tests/pinnedmemorychecker.cpp
src/gromacs/math/CMakeLists.txt
src/gromacs/options/CMakeLists.txt
src/gromacs/pbcutil/CMakeLists.txt
src/gromacs/topology/mtop_util.cpp
src/gromacs/trajectoryanalysis/CMakeLists.txt
src/gromacs/utility/CMakeLists.txt
Change-Id: I9c364fc3a8e1d9ba9821e06155136ffc6f46b8cd
Berk Hess [Fri, 28 Aug 2020 22:34:40 +0000 (22:34 +0000)]
Add SIMD version of harmonic bonds
Change-Id: I63ea7d9b76127112c221a9b6910604a09bbb0bb7
Alan Gray [Sun, 23 Aug 2020 12:31:56 +0000 (05:31 -0700)]
Avoid seg fault when PME-PP GPU comm flag is used in isolation
Improves stability by ensuring that GPU buffer ops flag is
automatically set if GPU PME-PP flag is set (in the same way as was
already done for GPU DD flag). Otherwise get a seg fault if PME-PP GPU
env trigger is used without either GPU DD or GPU Buffer ops env
triggers).
M. Eric Irrgang [Thu, 27 Aug 2020 11:09:23 +0000 (14:09 +0300)]
Clarify t_inputrec allocation logic in runner.cpp.
Closes #3637
M. Eric Irrgang [Thu, 27 Aug 2020 07:04:43 +0000 (07:04 +0000)]
Use a heap object for inputrec in gmx::Mdrunner::mdrunner().
Convert the inputrec pointer to a unique_ptr to combine the clean-up
behavior from both local variables. Remove the explicit inputrecInstance
local variable, converting to a heap object created through make_unique.
This allows the t_inputrec to be moved via its handle for more flexible
management, and allows the allocation to be moved closer to the
initialization.
Berk Hess [Thu, 27 Aug 2020 06:09:17 +0000 (06:09 +0000)]
Add ForceBuffers class
This change replaces the type of the force buffer in mdrun from
PaddedHostVector<RVec> to a new class ForceBuffers. This new class
currently only holds one force buffer, but this is in preparation for
multiple time stepping where a second force buffer is needed.
Mark Abraham [Wed, 26 Aug 2020 10:41:26 +0000 (10:41 +0000)]
Permit build with CUDA 11.0
The unannounced removal of SM 30 means cmake fails on all
GROMACS releases prior to this.
Fixes isHostMemoryPinned for changes in CUDA 11.0 and improves
test coverage.
Adapts tested and reviewed changes from !407 and !434
Refs #3631
Fixes #3632
Gilles Gouaillardet [Fri, 21 Aug 2020 02:17:35 +0000 (11:17 +0900)]
fix check_assign_interactions_atom()
fix a bug introduced in gromacs/gromacs@
c507ae4d3f4b0d516e53896dac35a52911a8a44b
Thanks Berk Hess for the guidance to the right fix
Refs. gromacs/gromacs#3635
Magnus Lundborg [Tue, 25 Aug 2020 13:01:59 +0000 (13:01 +0000)]
Avoid log(0) if probability is too low
Change-Id: I96f5aa61f21303c4c382b8a0664cffd20e85bbd6
Artem Zhmurov [Mon, 24 Aug 2020 08:39:46 +0000 (08:39 +0000)]
Move GPU devices management into hardware subfolder
This consolidate the GPU management in CUDA and OpenCL into one
place.
M. Eric Irrgang [Thu, 20 Aug 2020 15:41:24 +0000 (18:41 +0300)]
Accept Python versions higher than 3.8.
This change allows GROMACS 2021 to detect Python versions that users
will encounter during its lifetime.
Refs #3479
M. Eric Irrgang [Mon, 15 Jun 2020 11:26:06 +0000 (14:26 +0300)]
Remove conditional for CMake < 3.12.
Simplify CMakeLists.txt now that CMake 3.13 is required.
Magnus Lundborg [Thu, 20 Aug 2020 12:15:28 +0000 (12:15 +0000)]
Make it possible to use FEP lambda states as a reaction coordinate in AWH. Atom masses and constraints cannot be perturbed (yet). It is possible to use a multidimensional bias where the lambda state is one dimension. An AWH FEP lambda state dimension is always using a discrete Gibbs sampler (umbrella), even if another dimension is using a convolved bias potential.
Erik Lindahl [Thu, 20 Aug 2020 10:42:57 +0000 (10:42 +0000)]
Enable CI testing of OpenAPI / OpenCL
For now this will run on the Intel CPU device
in our testing infrastructure.
Alan Gray [Thu, 20 Aug 2020 08:49:39 +0000 (08:49 +0000)]
Fix bug in Lincs GPU setup
Memory re-allocation was previously only triggered if the number of
constraints threads increases. But the sizes also depend on the value
of "maxCoupledConstraints", and its possible that this can increase
without the number of constraints threads increasing. This change
fixes by also triggering the reallocation when the value of
maxCoupledConstraints is increased.
M. Eric Irrgang [Mon, 17 Aug 2020 14:24:25 +0000 (17:24 +0300)]
Allow more granularity for public interfaces in build tree.
Move the gmxapi installed headers from api/include/gmxapi to
api/gmxapi/include/gmxapi, making room for api/nblib/include installed
headers or others. This allows CMake targets in the build tree to
restrict access to public headers as well as private headers such that
the `gmxapi` target allows `#include "gmxapi/someheader.h"` but does not
inadvertently allow `#include "nblib/anotherheader.h"` without an
explicit `target_link_libraries`.
Fix some disordered header inclusions.
Refs #3288
Pascal Merz [Sun, 21 Jun 2020 00:16:57 +0000 (18:16 -0600)]
Use proper doxygen tags in modular simulator
Files in src/gromacs/modularsimulator/ were partially using @tag instead
of \tag for Doxygen tags. GROMACS style prefers \tag, so this change
updates these tags.
Closes #3565
Mark Abraham [Thu, 6 Aug 2020 07:24:57 +0000 (09:24 +0200)]
Allow simpler use of scripted container builds
There's no need to have a list of supported versions of things in the
script that supports building CI images. We should have a list, e.g.
in the install guide, but not here.
One of the primary use cases for the script is building new
images. Those are most often needed for new versions of things, and
expanding the supported versions list is needless work.
Removed use of const and relaxed types for versions that e.g. need
not be integers.
Made suggestions in the doc strings of valid choices.
Note, had to force-push this branch to get out of non-linear merge
history hell.
Fixes #3622
Mark Abraham [Mon, 17 Aug 2020 10:16:40 +0000 (12:16 +0200)]
Restore use of CUDA 11.0 in CI
This reverts commit
0cc3567fe2d0ddb599cda21de6322981f6b0ceec.
Refs #3609
Paul Bauer [Mon, 17 Aug 2020 09:45:29 +0000 (11:45 +0200)]
Fix clang-format
Change-Id: I469d539a741a5eed12214267530fedb3f5ccf367
Mark Abraham [Mon, 17 Aug 2020 09:34:48 +0000 (09:34 +0000)]
Build fewer unnecessary SIMD kernels in CI
The docs, webpage and simple builds all use GMX_SIMD=none, but still
compile many kernel flavors. This spends build and cache time that
we don't need. It does mean the simple-build's tests run a bit longer,
however.
Refs #3272
Mark Abraham [Mon, 17 Aug 2020 09:04:34 +0000 (09:04 +0000)]
Support oneAPI in gitlab CI
Generalizes the TSAN build stage to a compiler build stage, and uses
it for containing the installation process for the free Intel tools
Fixed or worked around several bugs
Updated install guide section on tested platforms to describe
what we actually do
Refs #3459, #3620
Paul Bauer [Mon, 17 Aug 2020 08:39:17 +0000 (08:39 +0000)]
Reduce artifact size
Remove object files from build archives to reduce size.
Fixes #3630
Change-Id: Id841b91b8ab31d79579685c4aebaa67dec464962
Mark Abraham [Mon, 17 Aug 2020 04:39:09 +0000 (06:39 +0200)]
Stopped using images in biophysics Docker repository
Also avoided compiling SIMD kernels for the build that
merely produces content for the tarballs.
Fixes #3619
Mark Abraham [Sun, 16 Aug 2020 08:01:10 +0000 (10:01 +0200)]
Avoid builds with RelWithDebInfo
These produce object and binary files that are larger than we need. If
we need that information to diagnose an issue, we can turn it on, or
build locally using the same Docker image.
Refs #3630
Mark Abraham [Mon, 17 Aug 2020 07:23:55 +0000 (07:23 +0000)]
Fix isHostMemoryPinned for changes in CUDA 11.0
Improved test coverage and output
Restored some test code to compile and execute.
Fixes #3631
Pascal Merz [Sun, 16 Aug 2020 08:48:03 +0000 (08:48 +0000)]
Modular simulator: Don't wrap std::function in unique_ptr
Berk Hess [Fri, 14 Aug 2020 19:23:02 +0000 (19:23 +0000)]
Add SIMD bonded tests and improve SIMD angles()
The listed_forces module bonded tests are now also executed for the
force-only and SIMD flavor of the bonded kernels, when available.
Improved precision of SIMD angles kernel for small angles by avoiding
two invsqrt operations for computing the sin.
Artem Zhmurov [Fri, 14 Aug 2020 14:16:01 +0000 (14:16 +0000)]
Fix DeviceStreamManager tests
Wrong CMake macros was used which lead to DeviceStreamManager not
running for GPU builds.
Pascal Merz [Fri, 14 Aug 2020 12:21:48 +0000 (12:21 +0000)]
Introduce flexible ModularSimulatorAlgorithmBuilder: Helper structs to connect propagators to thermo/barostats
Berk Hess [Thu, 13 Aug 2020 13:13:10 +0000 (15:13 +0200)]
Add new FEP perturbation check functions
Added functions to check whether the system has perturbed masses
and perturbed constraints. Simplified the perturbed atoms check.
Erik Lindahl [Tue, 11 Aug 2020 11:25:09 +0000 (13:25 +0200)]
CMake SYCL & Intel OpenMP handling
This enables CMake handling of SYCL support in Intel
compilers, we warn the user to use the HPC toolkit
compilers that support OpenMP instead of the default
dpcpp. We attempt to disable SYCL by default when
using dpcpp (to avoid warnings). Source files that
need SYCL support should add SYCL_CXX_FLAGS.
For now it will not work to actually compile with
GMX_GPU=SYCL, since that enables code paths that
depend on the SYCL buffer implementations in the
pipeline.
Christian Blau [Thu, 13 Aug 2020 07:18:13 +0000 (09:18 +0200)]
Remove superfluous math utility functions
Remove max_cutoff and gmx_greatest_common_divisor from utilities.h.
max_cutoff was never used
C++17 introduces std::gcd, replacing gmx_greatest_common_divisor
Mark Abraham [Wed, 12 Aug 2020 15:17:57 +0000 (17:17 +0200)]
Revert to CUDA 10 image for CI
Some pinning behaviors don't work with CUDA 11.0
Refs #3609
Jeff Hammond [Wed, 12 Aug 2020 12:47:28 +0000 (12:47 +0000)]
implement AVX-512 second FMA detection
This uses the CPUID processor name.
We use the condensed method developed for Google cpu_features:
https://github.com/jeffhammond/cpu_features/blob/avx512_fma_count/src/cpuinfo_x86.c#L119
(this link will expire when it is merged into the upstream project)
A more pedantic approach is shown here:
https://github.com/jeffhammond/vpu-count/blob/master/vpu-count.c
This code must be updated when new Intel processors are released.
The author of this commit will bear that maintenance burden as long as possible.
Signed-off-by: Hammond, Jeff R <jeff.r.hammond@intel.com>