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

Concurrency and parallelism. #272

Closed
2 tasks
giulioungaretti opened this issue Jul 21, 2016 · 5 comments
Closed
2 tasks

Concurrency and parallelism. #272

giulioungaretti opened this issue Jul 21, 2016 · 5 comments

Comments

@giulioungaretti
Copy link
Contributor

giulioungaretti commented Jul 21, 2016

The architecture implemented at the moment is showing some issues that are non trivial to fix:

  • pickling,
  • monitoring,
  • performance
  • in general seems to hard to grasp for the users
  • intermittent test failures due to syncing issues

Need to:

  • "Foreground" fully functional with live plot
  • No multiprocessing as default, keep in the code as "experimental"

And then carefully design how we want to do concurrency and parallelism:

  • python or not python ?
    • if not python ØMQ, erlang, f# backends
  • servers running on fridges and instruments

Notes:

@giulioungaretti giulioungaretti added this to the v0.1-colossal cleanup milestone Jul 21, 2016
@Rubenknex
Copy link
Contributor

I don't know much about parallelism in python but the pathos (https://github.com/uqfoundation/pathos) and corresponding dill (https://github.com/uqfoundation/dill) projects might be interesting to look at? It's a kind of fork from the python multiprocessing library and fixes a lot of pickling issues among others.

@akhmerov
Copy link
Contributor

Can you please explain what you mean by pickling issues? What is actually pickled currently?

@giulioungaretti
Copy link
Contributor Author

@akhmerov multiprocessing, in use now, uses Pickle to pass objects to the child processes.
The list of pickable objects is rather small, and numpy f.ex raccomends not to pickle.

The entire server architecture is build to avoid pickling, which seems a bit brittle because of the need of proxying objects.

@akhmerov
Copy link
Contributor

Sure, but what objects are passed around? The instruments? I imagine a much more sustainable approach would be to instead create all these objects in other processes/workers.

@giulioungaretti
Copy link
Contributor Author

Closing this down as it will be take care of. See #314 and #315 .

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

3 participants