Implement parallelization support to analysis framework - Redmine #868
Archive from user: Teemu Murtola
The trajectory analysis framework in master has been designed such that it should be possible to implement parallelization relatively easily such that different threads/processes would process independent frames. MPI and thread parallelization may require partially different approaches here for good efficiency, but some refactoring effort is likely common for both.
The main things that need to be considered:
- Implement a parallel version of TrajectoryAnalysisCommandLineRunner. I don’t have any ready design for this; alternatives include completely separate classes, separate Impl classes, or just conditionals within one single class. Division between the runner and TrajectoryAnalysisRunnerCommon probably needs to be re-evaluated in this context.
- Implement parallel support in AnalysisDataStorage, with possible supporting changes in other analysis data classes. Thread-parallelization should be possible by adding appropriate synchronization primitives in correct places in AnalysisDataStorage, but MPI may require more thought.
- If processing of frames requires information from earlier frames, a simple parallelization implementation may not cope correctly with the situation. It may be necessary to add information to TrajectoryAnalysisSettings to inform the runner that the tool expects this to allow meaningful error messages.
(from redmine: issue id 868, created on 2012-01-26 by gmxdefault)
- Relations:
- relates #869 (closed)
- relates #948 (closed)
- blocks #2996 (closed)
Blockers:
-
Frame-local SelectionCollections -
Thread-safe AnalysisData -
Better handling of trajectory frame objects -
Parallelized trajectory module and runner
Edited by Kevin Boyd