alexxy/gromacs.git
3 years agoActivate SYCL build on CI
Andrey Alekseenko [Thu, 8 Oct 2020 08:51:36 +0000 (08:51 +0000)]
Activate SYCL build on CI

3 years agoAdd Andrey Alekseenko to the list of authors
Artem Zhmurov [Wed, 7 Oct 2020 20:47:38 +0000 (23:47 +0300)]
Add Andrey Alekseenko to the list of authors

3 years agoAdd GpuRegionTimer for SYCL
Andrey Alekseenko [Thu, 1 Oct 2020 14:54:38 +0000 (16:54 +0200)]
Add GpuRegionTimer for SYCL

3 years agoNew release, new quotes!
Erik Lindahl [Wed, 7 Oct 2020 13:49:36 +0000 (15:49 +0200)]
New release, new quotes!

3 years agoUpdate to oneAPI beta09
Mark Abraham [Wed, 7 Oct 2020 13:51:06 +0000 (13:51 +0000)]
Update to oneAPI beta09

3 years agoImprove gmxPythonDiscovery.cmake
M. Eric Irrgang [Wed, 7 Oct 2020 13:28:58 +0000 (13:28 +0000)]
Improve gmxPythonDiscovery.cmake

* Do a better job of urging CMake 3.15+ to use the requested Python
  installation when a user specifies Python3_ROOT_DIR.
* Adopt another CMake 3.15 feature: Python3_FIND_VIRTUALENV is much more
  readable than the older alternatives.
* Allow FindPython inputs to be set before entering the module (such as
  with `-D` command line arguments) by checking before setting.
* Clarify which parts of this CMake module apply to the main FindPython
  based detection and which parts exist to provide hints to other
  embedded / downstream detection.

Refs #3720

3 years agoMake LeapFrogGpu less tied to CUDA
Andrey Alekseenko [Tue, 6 Oct 2020 16:36:35 +0000 (18:36 +0200)]
Make LeapFrogGpu less tied to CUDA

- Extract common parts of LeapFrogGpu from .cuh into .h

- Make it use DeviceBuffers instead of raw pointers. For CUDA build,
they are the same, so no changes to other parts of the code necessary.

3 years agoFix download location for regressiontests
Paul Bauer [Tue, 6 Oct 2020 14:32:27 +0000 (16:32 +0200)]
Fix download location for regressiontests

Was still pointing to gerrit instead of the ftp server.

Change-Id: Ia49f06dd1438f6484470ea93ee93f4b26c708fb5

3 years agomdlib/tests/leapfrog: Make GPU tests more platform-agnostic
Andrey Alekseenko [Wed, 7 Oct 2020 09:38:35 +0000 (09:38 +0000)]
mdlib/tests/leapfrog: Make GPU tests more platform-agnostic

In preparation for adding SYCL implementation.

Also, clean-up includes a bit.

3 years agoFix SYCL compilation
Paul Bauer [Tue, 6 Oct 2020 17:23:49 +0000 (19:23 +0200)]
Fix SYCL compilation

Would fail because device_management_common.cpp needed to include
gmxsycl.h transiently and fail compilation.

Change-Id: Idd19db8c328b3a9bd07924f72968a640158665d6

3 years agoMerge branch 'origin/release-2020' into merge-release-2020-into-master
Paul Bauer [Wed, 7 Oct 2020 06:55:19 +0000 (08:55 +0200)]
Merge branch 'origin/release-2020' into merge-release-2020-into-master

Resolved Conflicts:
admin/gitlab-ci/archive.gitlab-ci.yml
admin/gitlab-ci/global.gitlab-ci.yml
admin/gitlab-ci/gromacs.gitlab-ci.yml
admin/gitlab-ci/lint.gitlab-ci.yml
admin/gitlab-ci/python-gmxapi.gitlab-ci.yml
admin/gitlab-ci/rules.gitlab-ci.yml
admin/gitlab-ci/sample_restraint-regression.gitlab-ci.yml
cmake/gmxVersionInfo.cmake
src/gromacs/fileio/checkpoint.cpp
src/gromacs/hardware/printhardware.cpp
src/gromacs/mdlib/md_support.cpp
src/gromacs/mdlib/trajectory_writing.cpp
src/gromacs/mdrun/runner.cpp
src/gromacs/modularsimulator/domdechelper.cpp
src/gromacs/modularsimulator/domdechelper.h
src/gromacs/modularsimulator/freeenergyperturbationelement.cpp
src/gromacs/modularsimulator/freeenergyperturbationelement.h
src/gromacs/modularsimulator/modularsimulator.cpp
src/gromacs/tools/trjcat.cpp
src/gromacs/topology/topology.h
src/gromacs/utility/fatalerror.cpp
src/gromacs/utility/futil.cpp
src/gromacs/utility/init.cpp
src/programs/mdrun/tests/CMakeLists.txt
tests/CMakeLists.txt

Change-Id: Icd5d9c78ff2cfb0598c3cb55b057487ca098a1f0

3 years agoRemove unused canComputeOnGpu(...) function from device management
Artem Zhmurov [Tue, 6 Oct 2020 19:02:21 +0000 (22:02 +0300)]
Remove unused canComputeOnGpu(...) function from device management

This function was used in tests, but not needed anymore

3 years agoSet proper deviceVendor with SYCL
Paul Bauer [Tue, 6 Oct 2020 15:08:18 +0000 (15:08 +0000)]
Set proper deviceVendor with SYCL

Change-Id: I7971f681b8e4348f2488b4d353ee187cfa5dba0b

3 years agoSimplify GPU usage decision function signatures
Artem Zhmurov [Tue, 6 Oct 2020 12:15:54 +0000 (14:15 +0200)]
Simplify GPU usage decision function signatures

Some of GPU device usage decisions are made based on the number
of availabel GPU devices, not on their indices. Hence it is
natural to pass one integer instead of the vector.

3 years agoPrepare for GROMACS 2020.5
Paul Bauer [Fri, 2 Oct 2020 09:32:41 +0000 (11:32 +0200)]
Prepare for GROMACS 2020.5

Reset DOI strings. Added new release note stubs.

Change-Id: I40615b30bc42b8d7e79bcbe6154d002412519abf

3 years agoGROMACS version 2020.4
Paul Bauer [Tue, 6 Oct 2020 11:23:18 +0000 (11:23 +0000)]
GROMACS version 2020.4

Updated regtest hash and set DOI strings.

Change-Id: I42e99173615898b963c86b0a1db3770c5f071051

3 years agoFix logic in init_ewald_coulomb_force_table
Andrey Alekseenko [Mon, 5 Oct 2020 10:03:45 +0000 (12:03 +0200)]
Fix logic in init_ewald_coulomb_force_table

Previously, destroyParamLookupTable was called only if buffer was
nullptr (uninitialized). Which looks like a typo, and leads to nothing,
because all implementation of destroyParamLookupTable would refuse to
work on nullptr. Changed the check to free the buffer only if there is
anything to free.

3 years agoUse new GPU infrastructure in MDLib tests
Artem Zhmurov [Tue, 6 Oct 2020 09:37:49 +0000 (11:37 +0200)]
Use new GPU infrastructure in MDLib tests

This make use of common device testing infrastructure in MDLib tests,
where both GPU and CPU implementations are tested. The GPU runners
will now be executed on all the detected devices, not only on the
default one. Also, this will allow to use the MDLib tests in OpenCL
and SYCL, where proper device context object is needed.

Closes #3317

Closes #2254

Related #2092

3 years agoAlways set DeviceVendor
Paul Bauer [Mon, 5 Oct 2020 15:33:02 +0000 (15:33 +0000)]
Always set DeviceVendor

Until now, only the OpenCL code would set the device Vendor information.
To prepare for later code that always needs this information, it is not
set also for the CUDA and SYCL code paths with (hopefully) reasonable
default values.

Change-Id: Ifb3180dff2c5b13aedd8e6808c172ea322d5cea8

3 years agoFix debug message location
Paul Bauer [Mon, 5 Oct 2020 14:45:54 +0000 (14:45 +0000)]
Fix debug message location

Also more release note fixes.

Change-Id: Id107ec9102f49dda0ba6c83a591fa14ae9b72c29

3 years agoAdd muparser and CMake handling
Paul Bauer [Mon, 5 Oct 2020 07:48:03 +0000 (09:48 +0200)]
Add muparser and CMake handling

Adds handling both for linking external muparser library and building
from source if it is not found.

Refs #3515

Change-Id: I09f725ea634d21e3a7d217cf99d28adb71d54473

3 years agoRemove incorrect cycle suppression
Berk Hess [Mon, 5 Oct 2020 13:26:41 +0000 (15:26 +0200)]
Remove incorrect cycle suppression

3 years agoFix doxygen warnings
Paul Bauer [Mon, 5 Oct 2020 06:35:30 +0000 (08:35 +0200)]
Fix doxygen warnings

Failed in master again for a while.

Change-Id: I8574794c8e2f9be5681e431c109df6fe91abce45

3 years agoDon't override user provided CMAKE_OSX_DEPLOYMENT_TARGET.
M. Eric Irrgang [Fri, 2 Oct 2020 16:41:01 +0000 (19:41 +0300)]
Don't override user provided CMAKE_OSX_DEPLOYMENT_TARGET.

Remove `FORCE` from the CMake `set()` in case users want to specify
another target, such as 10.15.

Allows users to resolve potential linker warnings by setting
CMAKE_OSX_DEPLOYMENT_TARGET on the CMake command line.

3 years agoFix ForceBuffers compiler warning
Pascal Merz [Mon, 5 Oct 2020 06:08:10 +0000 (06:08 +0000)]
Fix ForceBuffers compiler warning

When compiling in release mode (using clang-8), warning
    src/gromacs/mdtypes/forcebuffers.h:128:10: warning: private field 'useForceMtsCombined_' is not used [-Wunused-private-field]
        bool useForceMtsCombined_;
would be thrown because `useForceMtsCombined_` is only used within
`GMX_ASSERT` commands. Added a [[maybe_unused]] to keep compiler happy.

3 years agoCleaned up CUDA compilation
Mark Abraham [Fri, 2 Oct 2020 15:44:59 +0000 (15:44 +0000)]
Cleaned up CUDA compilation

Some .cpp source files used CUDA run-time headers that need
special handling when e.g. clang issues warnings from antiquated
constructs in older NVIDIA runtime headers. This is now handled
centrally in a similar manner to that required for SYCL compilation.

Dependency of the higher-level taskassignment module on GPU
API-specific compilation was removed, instead deploying some new
helper functions.

3 years agoWork-around for RDRAND returning -1 on Ryzen
Paul Bauer [Fri, 2 Oct 2020 14:40:50 +0000 (14:40 +0000)]
Work-around for RDRAND returning -1 on Ryzen

Due to a bug, RDRAND can always return -1 instead of a random number.
This introduces a work-around to the problem by switching to PRNG in
case the RDRAND returns -1 twice in a row.

3 years agoHandle gmxapi tmpi parameters better.
M. Eric Irrgang [Wed, 30 Sep 2020 20:32:20 +0000 (23:32 +0300)]
Handle gmxapi tmpi parameters better.

Use gmxconfig.json to support some additional testing support.

Configure thread allocation for gmxapi CI jobs more carefully.

Fixes #3710

3 years agoLet gmxapi installation record the GROMACS library MPI configuration.
M. Eric Irrgang [Wed, 30 Sep 2020 20:29:24 +0000 (23:29 +0300)]
Let gmxapi installation record the GROMACS library MPI configuration.

Add a `MPI` property to the Gromacs::gmxapi CMake target.

Add "gmx_mpi_type" to gmxconfig.json

Refs #2961

3 years agoRemove anonymous namespace in ARM SVE header
Paul Bauer [Fri, 2 Oct 2020 07:03:02 +0000 (09:03 +0200)]
Remove anonymous namespace in ARM SVE header

Caused complaints from clang-tidy.

Change-Id: I8c855fa26849a283a456b1315614cdc60041bbf0

3 years agoAdd tests for setStringEntry
Joe Jordan [Fri, 2 Oct 2020 10:23:04 +0000 (10:23 +0000)]
Add tests for setStringEntry

3 years agoUpdate GoogleTest to v1.8.1
Mark Abraham [Fri, 2 Oct 2020 09:28:19 +0000 (09:28 +0000)]
Update GoogleTest to v1.8.1

Now known to work with recent versions of MSVC

Also, require proper language support when using GoogleTest on all
platforms. Populating the INTERFACE_COMPILE_DEFINITIONS with
GTEST_LANG_CXX11 will force GoogleTest to require the compiler to
provide std components like tuple even when compiling GROMACS
source files that include GoogleTest headers.

Fixes #3682

3 years agoFix FEP lambda interpolation for reruns
Christian Blau [Fri, 2 Oct 2020 07:50:52 +0000 (07:50 +0000)]
Fix FEP lambda interpolation for reruns

FEP lambda interpolation fix is now also applied when re-running simulations.

Closes #3585

3 years agoUse workload data structures for GPU halo exchange triggers
Alan Gray [Fri, 2 Oct 2020 07:02:31 +0000 (07:02 +0000)]
Use workload data structures for GPU halo exchange triggers

Move GPU halo exchange trigger booleans and related conditionals into
workload data structures, and remove unnecessary assertion on GPU
buffer ops being active (since it is now automatically activated when
GPU halo exchange is active).

Partly addresses #3370

3 years agoarm_sve: fix decr3Hsimd()
Gilles Gouaillardet [Fri, 2 Oct 2020 01:48:17 +0000 (10:48 +0900)]
arm_sve: fix decr3Hsimd()

Fix a gross typo introduced in gromacs/gromacs@aabf8460e42c1702f38163d4163b6e59f6712737

3 years agoUpdate mdrun-performance.rst
Szilárd Páll [Thu, 1 Oct 2020 12:02:25 +0000 (12:02 +0000)]
Update mdrun-performance.rst

3 years agodocs: add ARM+SVE support to the release notes and SIMD support documentation
Gilles Gouaillardet [Wed, 16 Sep 2020 09:23:28 +0000 (18:23 +0900)]
docs: add ARM+SVE support to the release notes and SIMD support documentation

3 years agohardware: detect ARM SVE architecture at runtime
Gilles Gouaillardet [Wed, 16 Sep 2020 05:32:23 +0000 (14:32 +0900)]
hardware: detect ARM SVE architecture at runtime

 - issue a warning if the application was built with NEON simd support
 - check the vector length at runtime is the same than at cmake time,
   and aborts otherwise

3 years agocmake: use simd support for ARM+SVE
Gilles Gouaillardet [Wed, 16 Sep 2020 05:31:55 +0000 (14:31 +0900)]
cmake: use simd support for ARM+SVE

 - detect when cmake is invoked on an ARM+SVE platform
 - ARM_SVE simd can be forced with -DGMX_SIMD=ARM_SVE
 - the SVE vector length can be forced with -DGMX_SIMD_ARM_SVE_LENGTH=<bits>
   (default is 512)

3 years agosimd: add support for aarch64+sve (ARM_SVE)
Gilles Gouaillardet [Wed, 16 Sep 2020 05:24:47 +0000 (14:24 +0900)]
simd: add support for aarch64+sve (ARM_SVE)

support SVE vectors whose length is fixed at cmake time
e.g. no Vector Length Agnostic (VLA) support.

This is currently a fit for GCC 10 compilers
(via the -msve-vector-bits=<len> option), and will be supported
by LLVM 12 (based) compilers.

ARM_SVE support for GROMACS is contributed by the Research Organization
for Science Information and Technology (RIST).

3 years agosimd: revamp the (templated) decr3Hsimd() subroutine
Gilles Gouaillardet [Thu, 1 Oct 2020 21:11:39 +0000 (21:11 +0000)]
simd: revamp the (templated) decr3Hsimd() subroutine

decr3Hsimd<stride>(m, a0, a1, a2) replaces three decrHsimd():

- decrHsimd(m, a0);
- decrHsimd(m + stride, a1);
- decrHsimd(m + 2*stride, a2);

providing a given architecture the opportunity to perform additional optimizations.

A simple wrapper is added to each architecture where
GMX_SIMD_HAVE_HSIMD_UTIL_{FLOAT,DOUBLE} is 1.

Refs !567

3 years agoRemove ensureReferenceCount from OpenCL's GpuEventSynchronizer
Andrey Alekseenko [Thu, 1 Oct 2020 20:10:36 +0000 (20:10 +0000)]
Remove ensureReferenceCount from OpenCL's GpuEventSynchronizer

3 years agoUse updated images for Python CI jobs.
M. Eric Irrgang [Thu, 1 Oct 2020 15:43:15 +0000 (15:43 +0000)]
Use updated images for Python CI jobs.

Also switches tool chains to account for rearrangement in the
CI testing matrix.

Fixes #3714

3 years agoAdd missing include into the tests comparison helper
Artem Zhmurov [Thu, 1 Oct 2020 13:55:00 +0000 (15:55 +0200)]
Add missing include into the tests comparison helper

CLang may complain about not knowing what std::numeric_limits are
if <limits> is not included.

Change-Id: I74118c3f0082e22f634ae11bce542a0de709260b

3 years agoBreak up MPI tests
Paul Bauer [Thu, 1 Oct 2020 11:50:30 +0000 (13:50 +0200)]
Break up MPI tests

Split PME from other mpi tests.
Due to time outs in CI :(

Change-Id: If9c9219ab6667ae98a9475ee03012d9aa81b28d4

3 years agoFix post merge acceptance pipeline for release-2020
Paul Bauer [Thu, 1 Oct 2020 12:12:24 +0000 (14:12 +0200)]
Fix post merge acceptance pipeline for release-2020

The logic didn't want to pick up the pipelines for merged commits.

Change-Id: I876d7ce975611bcc5466e5e984ed40de72a456ca

3 years agoMove computeSlowForces into stepWork
Berk Hess [Thu, 1 Oct 2020 12:02:27 +0000 (12:02 +0000)]
Move computeSlowForces into stepWork

Also moved a flag into forcerec and fixed documentation.

3 years agoFix the FEP lambda interpolation
Christian Blau [Thu, 1 Oct 2020 11:52:26 +0000 (11:52 +0000)]
Fix the FEP lambda interpolation

Setting any lambda array, initial lambda or state != 0, the
interpolated lambda values were wrongly interpolated. This
patch fixes this behaviour.

3 years agoDevice management: Add SYCL DeviceBuffer
Andrey Alekseenko [Thu, 1 Oct 2020 10:04:11 +0000 (10:04 +0000)]
Device management: Add SYCL DeviceBuffer

3 years agoUpdate modular simulator docs
Pascal Merz [Thu, 1 Oct 2020 07:32:15 +0000 (07:32 +0000)]
Update modular simulator docs

3 years agoAdd nblib sample script
Joe Jordan [Wed, 30 Sep 2020 20:22:59 +0000 (20:22 +0000)]
Add nblib sample script

The sample script argon-forces-integration.cpp gives an example of nblib client code.

3 years agoRegression-test-style Google tests for FEP
Pascal Merz [Wed, 30 Sep 2020 18:26:04 +0000 (18:26 +0000)]
Regression-test-style Google tests for FEP

This set of tests check FEP simulations versus previous results
within the Google tests framework.

The systems are hand-picked to cover as many code paths as possible.
The reference results were carefully checked for correctness.

3 years agoRestrict gmxapi pytest tests to `-nt 2`
M. Eric Irrgang [Wed, 30 Sep 2020 12:39:37 +0000 (15:39 +0300)]
Restrict gmxapi pytest tests to `-nt 2`

Fixes #3704

The current change is a quick fix to alleviate pressure on the project's
automation resources. Hard-coded resource constraints should be removed
in a follow-up change.

Also, the new facility to the mdrun ResourceManager needs to be
considered in future work.

3 years agoSquash SYCL DeviceContext and DeviceStream
Andrey Alekseenko [Wed, 30 Sep 2020 15:49:11 +0000 (17:49 +0200)]
Squash SYCL DeviceContext and DeviceStream

3 years agoMove computeSlowForces into stepWork
Berk Hess [Wed, 30 Sep 2020 15:13:58 +0000 (15:13 +0000)]
Move computeSlowForces into stepWork

Also moved a flag into forcerec and fixed documentation.

3 years agoUpdate CI on 2020 branch
Paul Bauer [Wed, 30 Sep 2020 13:22:48 +0000 (13:22 +0000)]
Update CI on 2020 branch

Now uses similar settings as master.

Change-Id: I2df3ab916930108afaa63830b7fd92680d837584

3 years agoSpecify OMP_NUM_THREADS for Pyhon CI scripts.
M. Eric Irrgang [Tue, 29 Sep 2020 14:27:03 +0000 (17:27 +0300)]
Specify OMP_NUM_THREADS for Pyhon CI scripts.

* Explicitly propagate OMP_NUM_THREADS through mpiexec.
* Apply self-consistent CI memory parameters.
* Only use 1 OMP thread for gmxapi Python tests. We want to use two tMPI
  ranks, and no extra threads. tMPI threads are set separately.

Refs #3704

3 years agoFix warnings issued by clang with nvcc
Mark Abraham [Wed, 30 Sep 2020 10:29:20 +0000 (12:29 +0200)]
Fix warnings issued by clang with nvcc

Host-side code sometimes uses antiquated code that clang warns
about. Previous attempts to suppress some of these were broken by the
changes to GMX_GPU (and also used the wrong cache variable). New
warnings have also emerged.

Also fixed a related list of warning suppressions to be a proper
CMake list, rather than a hacky list.

3 years agoFix Doxygen formula generation
Andrey Alekseenko [Wed, 30 Sep 2020 09:41:15 +0000 (11:41 +0200)]
Fix Doxygen formula generation

3 years agoRevert "Add new GROMACS logo and use it in the manual."
Paul Bauer [Wed, 30 Sep 2020 09:41:54 +0000 (11:41 +0200)]
Revert "Add new GROMACS logo and use it in the manual."

This reverts commit 4120bf7734d9a235c7db720a2c882bb6c11470b6.

Legal reasons

3 years agoFix bug resetting mdatoms masses to lambda=0 state
Pascal Merz [Wed, 30 Sep 2020 07:25:45 +0000 (07:25 +0000)]
Fix bug resetting mdatoms masses to lambda=0 state

When DD is used, the mdatoms masses were reset to their lambda=0 state
after every DD step. This is fixed by making the DomDecHelper aware of
the FEP element.

Note that the use of MDAtoms should likely be revisited to allow for a
more elegant solution, but this would likely require changes which are
less local than the proposed solution here. Further development is
therefore deferred to #3700.

3 years agoFix #3655
Pascal Merz [Tue, 29 Sep 2020 21:39:04 +0000 (15:39 -0600)]
Fix #3655

This fixes #3655 by addressing some readability issues in
velocityscalingtemperaturecoupling.cpp, and adding some trivial
const qualifiers in the simulator tests.

Closes #3655

3 years agoFix #3694
Pascal Merz [Wed, 30 Sep 2020 03:26:19 +0000 (21:26 -0600)]
Fix #3694

This fixes #3694 by moving the initialization of the `isInputCompatible`
boolean to its first use in modularsimulator.cpp.

Closes #3694

3 years agoAdd new GROMACS logo and use it in the manual.
Paul Bauer [Tue, 29 Sep 2020 11:40:31 +0000 (13:40 +0200)]
Add new GROMACS logo and use it in the manual.

Also added as a highlight in the release notes.

Change-Id: Icac8e5c0134302d4c251cc9e6f5428bca766717d

3 years agoRestore destructor for GpuTest and gmx_hw_info_t
Artem Zhmurov [Wed, 30 Sep 2020 05:55:14 +0000 (05:55 +0000)]
Restore destructor for GpuTest and gmx_hw_info_t

Needed to able to forward-declare DeviceInformation in headers

3 years agoFix bug resetting mdatoms masses to lambda=0 state
Pascal Merz [Tue, 29 Sep 2020 19:47:35 +0000 (19:47 +0000)]
Fix bug resetting mdatoms masses to lambda=0 state

Following the reorganization in !384, the TopologyHolder reset the masses
in mdatoms after they were set by the FreeEnergyPerturbationElement. This
lead to having the masses equal to state A independently of the actual
lambda state.

This change fixes this bug by moving the mass setting into the setup
phase ensuring that it is set by the FEP element independently of the
build order of the elements.

When DD is used, the mdatoms masses were reset to their lambda=0 state
after every DD step. This is fixed by making the DomDecHelper aware of
the FEP element.

Note that the use of MDAtoms should likely be revisited to allow for a
more elegant solution, but this would likely require changes which are
less local than the proposed solution here. Further development is
therefore deferred to #3700.

3 years agoFix doxygen warnings
Paul Bauer [Tue, 29 Sep 2020 17:06:22 +0000 (17:06 +0000)]
Fix doxygen warnings

Add doxygen comments into the recent code

3 years agoDon't use fah_fsync
Artem Zhmurov [Tue, 29 Sep 2020 14:24:21 +0000 (14:24 +0000)]
Don't use fah_fsync

There's no need in a custom fsync functionality for F@H core.

Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
3 years agoFail gracefully when nblib cannot be built
ejjordan [Tue, 29 Sep 2020 09:36:43 +0000 (11:36 +0200)]
Fail gracefully when nblib cannot be built

3 years agoRemove two-stage initialization in DeviceStream
Artem Zhmurov [Tue, 29 Sep 2020 14:08:18 +0000 (14:08 +0000)]
Remove two-stage initialization in DeviceStream

A default constructor was needed for DeviceStream as an intermediate
measure to make the refactoring easier. It now can be eliminated.

3 years agoAdd nblib backend: Part 2 of 2
Joe Jordan [Tue, 29 Sep 2020 13:48:33 +0000 (13:48 +0000)]
Add nblib backend: Part 2 of 2

3 years agoAdd post submit rules to CI
Paul Bauer [Tue, 29 Sep 2020 13:00:15 +0000 (13:00 +0000)]
Add post submit rules to CI

Use those for resource intensive CUDA tests

Change-Id: I9c23139656fd91a833c67dd20d76a1429e91c254

3 years agoRedevelopment of GPU Force Reduction/Buffer Ops
Alan Gray [Tue, 29 Sep 2020 11:27:18 +0000 (11:27 +0000)]
Redevelopment of GPU Force Reduction/Buffer Ops

Introduces a new purpose-build class for GPU force reduction, which
replaces the previous force buffer ops mechanism.

Refs #3370

3 years agoClarifications for ResourceAssignment interface.
M. Eric Irrgang [Mon, 28 Sep 2020 18:11:28 +0000 (21:11 +0300)]
Clarifications for ResourceAssignment interface.

Add and update some documentation. Improve error messages. Improve
file naming.

Refs #3644

3 years agoSupport ResourceAssignment interface for tMPI library builds.
M. Eric Irrgang [Sat, 26 Sep 2020 15:05:25 +0000 (18:05 +0300)]
Support ResourceAssignment interface for tMPI library builds.

Fixes #3644

3 years agoAllow MPI-enabled clients to provide the library communicator.
M. Eric Irrgang [Mon, 28 Sep 2020 12:55:50 +0000 (15:55 +0300)]
Allow MPI-enabled clients to provide the library communicator.

Provide library helpers and template headers to allow clients to
createContext() with explitly assigned resources.

Relates to #3644

3 years agoUse MpiContextManager to provide MPI communicator.
M. Eric Irrgang [Mon, 28 Sep 2020 12:35:43 +0000 (15:35 +0300)]
Use MpiContextManager to provide MPI communicator.

* Give MpiContextManager a MPI_Comm and make it movable so that it can
  be provided while creating the ContextImpl.
* In gmxapi::ContextImpl::launch(), use an MpiContextManager instance as
  the source for the SimulationContext communicator.

Refs #3644

3 years agoRelocate MpiContextManager.
M. Eric Irrgang [Mon, 28 Sep 2020 12:24:03 +0000 (15:24 +0300)]
Relocate MpiContextManager.

* Change the scope of the MpiContextManager instance from the Session
  to the ContextImpl.
* Tighten up some details to help maintain clarity over subsequent
  changes.

Refs #3644

3 years agoInterface updates allowing client to provide MPI communicator.
M. Eric Irrgang [Sat, 26 Sep 2020 09:54:32 +0000 (12:54 +0300)]
Interface updates allowing client to provide MPI communicator.

gmxapi::MpiContextManager is acquired earlier in API initialization
and has a larger role in setting up the SimulationContext as a member
of gmxapi::ContextImpl. The MpiContextManager can be acquired with
appropriate default values for the various MPI-related GROMACS build
variants, or it can be initialized with user-provided resources.

gmxapi::Context creation method has been updated to accept optional
non-default resources from the client.

A template header helps MPI-enabled client code to provide resources
to createContext(). The client requires minimal awareness of whether
GROMACS was built for thread-MPI or an installed MPI library.
Thread-MPI details are isolated from any translation unit that might
include the client MPI tool chain.

Refs #3644

3 years agoRemove single-dimension limitation from GPU halo exchange
Alan Gray [Mon, 28 Sep 2020 20:53:07 +0000 (20:53 +0000)]
Remove single-dimension limitation from GPU halo exchange

Allows GPU halo exchange to be active when the number of dimensions is
greater than 1, thus simplifying the codepath logic.

Partly addresses #3370

3 years agoAdd nblib backend: Part 1 of 2
Joe Jordan [Mon, 28 Sep 2020 17:21:12 +0000 (17:21 +0000)]
Add nblib backend: Part 1 of 2

3 years agoChange download for regressiontest away from gerrit
Paul Bauer [Mon, 28 Sep 2020 11:43:37 +0000 (13:43 +0200)]
Change download for regressiontest away from gerrit

The 2020 branch still used the gerrit download links for getting the
regressiontests for users, leading to some reported instability.

Change-Id: I61f937b28ae1a7f6637514254f504a67315f0c37

3 years agoFix error in ensureReferenceCount
Andrey Alekseenko [Mon, 28 Sep 2020 15:35:39 +0000 (15:35 +0000)]
Fix error in ensureReferenceCount

We were overwriting input value and comparing it to itself.

3 years agoFix check for BitScanReverse64
Mark Abraham [Mon, 28 Sep 2020 13:09:06 +0000 (15:09 +0200)]
Fix check for BitScanReverse64

3 years agoFix dispersion correction table generation
Berk Hess [Mon, 28 Sep 2020 14:24:26 +0000 (14:24 +0000)]
Fix dispersion correction table generation

Dispersion correction table generation was incorrectly skipped
during PME tuning, which lead to an assertion failure with LJ-PME.

Fixes #3677

3 years agoAdd initial nblib public API
Joe Jordan [Mon, 28 Sep 2020 10:35:59 +0000 (10:35 +0000)]
Add initial nblib public API

3 years agoFixed incorrect enum
Giovanni Bussi [Mon, 28 Sep 2020 07:46:02 +0000 (07:46 +0000)]
Fixed incorrect enum

Harmless, since both have value 1, but confusing

3 years agoadd detection of CPX 5300 w/ 2FMAs
Artem Zhmurov [Mon, 28 Sep 2020 06:00:40 +0000 (06:00 +0000)]
add detection of CPX 5300 w/ 2FMAs

Signed-off-by: Hammond, Jeff R <jeff.r.hammond@intel.com>
3 years agoCompare trajectories to reference data
Pascal Merz [Sun, 27 Sep 2020 11:23:20 +0000 (11:23 +0000)]
Compare trajectories to reference data

This introduces functionality to compare trajectories (x/v/f/box)
to reference data. It also allows to define the maximum number of
frames which should be checked. The latter allows to have a single
reference data, but decide based on the simulation setup (e.g.
parallelization scheme) how many frames are expected to match
before numerical divergence gets too large. To allow this, the
reference data functionality needs to give the option to ignore
unused reference frames.

3 years agoRoll back "Ensure the modular simulator runs only when it should"
Pascal Merz [Sun, 27 Sep 2020 06:55:11 +0000 (00:55 -0600)]
Roll back "Ensure the modular simulator runs only when it should"

The fact that GMX_USE_MODULAR_SIMULATOR does not lead to an error
when the run is not supported is a feature, not a bug. It allows
to run the entire test set using modular simulator wherever is is
implemented by using "export GMX_USE_MODULAR_SIMULATOR=ON; make check",
even if modular simulator is disabled by default. It is the only way
to make sure that modular simulator is a valid replacement for the
legacy code path.

Similarly, using "export GMX_DISABLE_MODULAR_SIMULATOR=OFF; make check"
allows to check the legacy code path, even if modular simulator is used
by default.

3 years agoFix #3668
Andrey Alekseenko [Fri, 25 Sep 2020 20:41:08 +0000 (20:41 +0000)]
Fix #3668

Following the implementation in Google's cpu_features tool made by an
Intel engineer used for original implementation, we only check for the
presence of the second AVX-512 FMA unit if the CPU supports AVX-512F
(foundation), which should be present for all AVX-512 implementations.

That's distinct from the way cpu_features tool does AVX detection, but
should be no less reliable.

3 years agoReplace FramesToCompare enum by MaxNumFrames
Pascal Merz [Fri, 25 Sep 2020 16:37:48 +0000 (16:37 +0000)]
Replace FramesToCompare enum by MaxNumFrames

This allows to explicitly chose a maximum number of frames to be
tested, rather than only chosing to compare the first frame or
all frames. It also implements to chose the number of frames for
tests comparing to reference data rather than only when comparing
simulation results.

3 years agoEnsure the modular simulator runs only when it should
Mark Abraham [Fri, 25 Sep 2020 15:21:43 +0000 (17:21 +0200)]
Ensure the modular simulator runs only when it should

Previous checks were ineffective if an unsupported inputrec
was accompanied by GMX_USE_MODULAR_SIMULATOR.

Change-Id: I74e4c177b6b4d7dc25bb3ca32a7dff5a6027276e

3 years agoFix bad logic in regressiontest branch selection
Paul Bauer [Fri, 25 Sep 2020 13:15:44 +0000 (15:15 +0200)]
Fix bad logic in regressiontest branch selection

Change-Id: I1eed8a5228362d34af9426a73c2a9d06eae7a714

3 years agoFix grompp group handling with frozen system
Berk Hess [Fri, 25 Sep 2020 08:02:21 +0000 (10:02 +0200)]
Fix grompp group handling with frozen system

When the whole system was frozen, grompp would attempt to write
a vector out of range.

Fixes #3683

3 years agoAllow deployment of nightly webpage to server
Paul Bauer [Thu, 24 Sep 2020 14:46:18 +0000 (14:46 +0000)]
Allow deployment of nightly webpage to server

Still needs to have variables defined on Gitlab.

Change-Id: Id7378942555b69df19cbe377d7c90851d6cf56ba

3 years agoImprove OpenCL log/error reporting
Szilárd Páll [Thu, 24 Sep 2020 12:44:09 +0000 (12:44 +0000)]
Improve OpenCL log/error reporting

Improve reporting by making messages more specific; also added logging of binary caching also for the case where a cache files is found in addition to the case where no cache file is present

3 years agoFix false-positives in checkDeviceBuffer for OpenCL
Andrey Alekseenko [Wed, 23 Sep 2020 16:34:29 +0000 (18:34 +0200)]
Fix false-positives in checkDeviceBuffer for OpenCL

The function takes required number of elements as its argument, but then
compares it with the buffer size measured in bytes.

3 years agoReport name of missing OpenCL kernels
Mark Abraham [Wed, 23 Sep 2020 15:26:35 +0000 (17:26 +0200)]
Report name of missing OpenCL kernels

Refs #3686

3 years agoAccess write checkpoint functionality directly
Pascal Merz [Wed, 23 Sep 2020 16:59:06 +0000 (16:59 +0000)]
Access write checkpoint functionality directly