Interface updates allowing client to provide MPI communicator.
authorM. Eric Irrgang <ericirrgang@gmail.com>
Sat, 26 Sep 2020 09:54:32 +0000 (12:54 +0300)
committerMark Abraham <mark.j.abraham@gmail.com>
Tue, 29 Sep 2020 06:09:40 +0000 (06:09 +0000)
commitb35147fdfe4c6a6a62f635691d871886d7783cea
treeb4edfb81ee95e27763e7f6935c888990f83d5473
parente6650c000e5e243fea99649ceec47864d07ccc0a
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
api/gmxapi/CMakeLists.txt
api/gmxapi/cpp/CMakeLists.txt
api/gmxapi/include/gmxapi/context.h
api/gmxapi/include/gmxapi/mpi/gmxapi_mpi.h [new file with mode: 0644]
api/gmxapi/include/multiprocessingresources.cmakein.h [new file with mode: 0644]
docs/release-notes/2021/major/miscellaneous.rst
src/gromacs/mdrun/simulationcontext.h