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

v7: Process-based parallelism #60

Closed
PMeira opened this issue May 23, 2019 · 5 comments
Closed

v7: Process-based parallelism #60

PMeira opened this issue May 23, 2019 · 5 comments
Milestone

Comments

@PMeira
Copy link
Member

PMeira commented May 23, 2019

Comparing the performance, past bugs and some remaining issues with the Version 8 codebase compared to Version 7, I can think of two general approaches for porting the actor-based parallel-machine features for Version 7:

  1. Encapsulate an OpenDSS instance in an object, removing most of the global state from OpenDSS to make it more thread-safe. This could be a large task, so it might be better to do it in a whole alternative implementation.

  2. Use an IPC mechanism and shared memory constructs to simplify actors, while still maintaining most of the features from Version 8 in Version 7.

IPC should be easier to implement, so we can at least give it a try. If it's successful, we can drop our Version 8 implementation and be confident that most of the Version 8 bugs won't be present.

@PMeira PMeira added this to the 1.0 milestone May 23, 2019
@PMeira
Copy link
Member Author

PMeira commented May 23, 2019

SimpleIPC seems to be included in the default FPC distribution, I'll start with that.

@toanngosy
Copy link

Hi @PMeira, I have 2 processes and on each process, I have an OpenDSS instance. These 2 instances could run independently without blocking each other? Is there any chance that they would wait for each other to use the solver?

@PMeira
Copy link
Member Author

PMeira commented Jun 17, 2020

Hi, @toanngosy ,
Yes, in general. I have an old example here: https://sourceforge.net/p/electricdss/discussion/861976/thread/5703a79b3b/#4dbf

The processes are independent, the only issue would be if you produce, for example, text files (export ..., show ...) for the same circuit on the same folder. A future version will allow you to set a file-name suffix to make that possible.

A couple of versions of the official OpenDSS 8+ on Windows had some issues but that never affected DSS C-API.

@toanngosy
Copy link

Thank you so much, I will look into it.

@PMeira
Copy link
Member Author

PMeira commented Apr 23, 2021

Closing since a release in the coming future will still use threads, initially. If that doesn't turn out great, we'll get back to the process approach.

@PMeira PMeira closed this as completed Apr 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants