Feature #2994
Task #2045: API design and language bindings
Data flow topology in gmxapi 2020
Description
This feature coordinates various tasks related to the gmxapi roadmap functional requirement 10 for GROMACS 2020.
Output from operations can be used as input for other operations when describing deferred work, such as through the scripting interface. Abstractions support deferred execution, serialization and deserialization of work and results across different execution contexts, and definition of fused operations or subgraphs, such as could be used by a "while_loop" helper to re-constitute a graph with updated inputs for iteration.
To decouple these tasks from design questions in #2993, changes are posted on Gerrit as candidates for submission with occasionally clumsy or seemingly complicated workarounds that can be improved as stronger API typing and compatibility guarantees can be incorporated.
Subtasks
Associated revisions
Add subgraph and while_loop operations.
Allow multiple operations to be added in a subcontext so that
the set of operations can be instantiated and executed
repeatedly in a looping construct.
Also adds logical_not transformation, which will be further
refined in later changes.
Refs #2994
Change-Id: I482d51bac9756a197d8b50fb2a4af36a44dbde27
History
#1 Updated by Eric Irrgang over 1 year ago
- Description updated (diff)
#2 Updated by Eric Irrgang about 1 year ago
- Target version changed from 2020 to 2021-infrastructure-stable
There is general agreement that this issue is not blocking the 2020 release, though documentation and bug fixes may be necessary based on user feedback.
Rearchitect gmxapi.operation
Includes many work-arounds for an incomplete data model,
illustrating what will need to be addressed in gmxapi
self-describing type system, data shaping, and Futures
implementation.
Introduced abstractions and refactoring to replace some
dynamic definitions in the function_wrapper closure with
composition or more tightly scoped closures. Provide
cleaner helpers for dynamically defined operation, input,
and output types.
accessors in standard interfaces, supporting similar
style of interaction with resources as in C++ extensions.
protocols.
Note that the execution dependency in FR2 has been superseded by the
data flow driven dependency in FR3. The syntax supported in FR2 is now
disabled to allow development towards FR4.
Refs #2993
Refs #2994
Refs #2996
Change-Id: I94a63d5801f97eb79962c693b48fa80a7c96c0ec