Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clear distinction of Python and C++ domains in plugin environment #87

Open
eirrgang opened this issue May 29, 2018 · 0 comments
Open

Clear distinction of Python and C++ domains in plugin environment #87

eirrgang opened this issue May 29, 2018 · 0 comments

Comments

@eirrgang
Copy link
Collaborator

The symptom here is that when operations are subscribed to other operations, there is explicit passing of Python objects in the Builder classes that are currently embedded in the plugin implementation boilerplate.

We have kind of a muddled process to transition back and forth between Python and C++ in plugin instantiation. We need to provide an all-C++ wrapper for the plugin code and let the Session implementation handle the transitions between Python and C++. However, we want the developer to express the Python keyword parameter names, help text, and access type in a single environment, so we can figure out how to carve that up. The hidden story here is probably that the gmxapi framework for context and session needs to be beefed up.

The expectation is that interaction between operations will be mediated by the Session implementation via the Session Resources object. It is still unclear how we consider the difference between high-level data flow and more tightly bound interactions. I think that maybe we should clearly specify an API protocol that allows compatible operations to fuse themselves during Session building. The template code that wraps a restraint plugin now adapts a generic gmxapi interface to a GROMACS interface. This could be provided by a GROMACS public header, and if the Directors detect this interface, they can collaborate to merge the graph nodes. Data flow involving operations that aren't fusable can cause the directors to re-divide the node a bit, but I think we can assume that the libgromacs Context can provide fusing for restraint operations and for the logical operations processing simulation stop signals. The fused node (cluster) has the combined set of input and output ports that aren't fully subscribed internally. The fused node should probably implement the Context-to-Context interface for the chain-of-responsibility in #75 and #65 and another issue I can't find right now.

Somewhere in here is a set of tasks to replace the Builder boilerplate with the director scheme described elsewhere. #47, #62, #44

Also related to #48 #32

@eirrgang eirrgang added this to Needs triage in 0.0.7 Jun 30, 2018
@eirrgang eirrgang removed this from Needs triage in 0.0.7 Oct 29, 2018
@eirrgang eirrgang added this to To do in 0.0.7.2 via automation Oct 29, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant