Support for parallel data modules.
authorTeemu Murtola <teemu.murtola@gmail.com>
Mon, 24 Jun 2013 17:30:32 +0000 (20:30 +0300)
committerTeemu Murtola <teemu.murtola@gmail.com>
Fri, 6 Sep 2013 03:37:16 +0000 (06:37 +0300)
commit08b94180da2038b8d46a4273dc2064c24029a1a9
tree69d339178f387ee2140508453c558d9b575d2556
parent7a55aae08a8b6e5025bf921ffbb6c899abb0900f
Support for parallel data modules.

Main changes:
 - Add parallelDataStarted() to AnalysisDataModuleInterface to
   initialize modules for parallel processing of data.  If this method
   is called, and the module returns true, then the module accepts that
   frame notification methods can be called in relaxed order: the frames
   can be started in any order, and multiple frames may be active
   simultaneously.
 - Implement this method in the existing modules, either explicitly or
   by using convenience base classes.
 - Add notification methods to AnalysisDataModuleManager to notify
   parallel frames.  These methods are called as soon as the data is
   available to notify those modules that accept parallel data.
   Existing methods were changed to only notify the serial modules.
 - Make AnalysisDataStorage call the new notification methods
   appropriately.  In most cases, this absorbs the complexity that these
   new methods bring.
 - Update (part of) the unit tests to make it possible to test this
   relaxed frame ordering.

Part of #869.

Change-Id: I3cccf78a09221b8181c3d8b217a793c996d0c522
21 files changed:
src/gromacs/analysisdata/analysisdata.cpp
src/gromacs/analysisdata/datamodule.cpp [new file with mode: 0644]
src/gromacs/analysisdata/datamodule.h
src/gromacs/analysisdata/datamodulemanager.cpp
src/gromacs/analysisdata/datamodulemanager.h
src/gromacs/analysisdata/dataproxy.cpp
src/gromacs/analysisdata/dataproxy.h
src/gromacs/analysisdata/datastorage.cpp
src/gromacs/analysisdata/datastorage.h
src/gromacs/analysisdata/modules/average.h
src/gromacs/analysisdata/modules/displacement.h
src/gromacs/analysisdata/modules/histogram.cpp
src/gromacs/analysisdata/modules/histogram.h
src/gromacs/analysisdata/modules/lifetime.h
src/gromacs/analysisdata/modules/plot.h
src/gromacs/analysisdata/tests/analysisdata.cpp
src/gromacs/trajectoryanalysis/modules/select.cpp
src/testutils/datatest.cpp
src/testutils/datatest.h
src/testutils/mock_datamodule.cpp
src/testutils/mock_datamodule.h