-
Notifications
You must be signed in to change notification settings - Fork 13
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
v8+ to v7: porting remaining features #46
Comments
This will be evaluated after the next official OpenDSS release, since there are still on-going changes in the SVN. |
Besides the GUI changes and the actor management, the most notable differences between v7 and v8 seem to be:
To make it easier to compare the code of the two versions, I already ported some code from v8 to v7 today. To simplify the code comparison even further, The diakoptics algorithm per se can be ported too, but not running the solution. I don't like how METIS is integrated right now (by running a external executable) but that can be easily improved later. METIS can be built using CMake -- since we already use CMake to build DSS C-API's version of KLUSolve, it should be easy to integrate it to the build process. If anyone finds this comment by chance and wonders why I'm looking into this, there are two main reasons:
Besides migrating the actors to dedicated processes, using thread-local variables in select places might be an alternative. Creation of processes on Windows have a higher overhead that should be considered but, since the use of parallel computing itself implies a heavy/long computation, it should not be a problem as long as the processes are reused instead of killed for every run. |
This is on hold, waiting for the upstream diakoptics code to stabilize. |
Recently introduced changes not yet ported:
EDIT: I partially reverted 0d41190, as it was causing severe issues. I'll merge the changes back when they're fixed/released upstream. |
Diakoptics and parallel features in v7 depend mostly on:
|
Besides the new features in the official OpenDSS that require third-party or closed-source tools, 108f7f9 adds the base for the new implementation. We should enable the PM functions as soon as the v0.13 branch is created, which will toggle several features and move to KLUSolveX. EDIT: some features moved back to v0.12 |
PR with the general PM functions coming soon. The code related to diakoptics was rewritten recently in the official OpenDSS codebase:
Diakoptics will be left disabled for a while since there are a few points from the official implementation that don't fit well with our approach in DSS C-API and there has been no explicit user requests about it. I believe we have some time to plan a different implementation to go with our different PM approach, even it this happens after we migrate to another programming language. Some points to handle to finish porting:
Better isolation and explicit points of synchronization should also allow using distributed computing and multi-processing instead of just multi-threading. It might be possible to implement the whole method as a plug-in, which would be great for maintainability. If there are enough differences in the implementation, a document should be added later to the new docs repository detailing our approach. |
Right now v8 contains many features that I or my group would ever use. The list of features of OpenDSS is extensive, so that's expected. Still, porting remaining features will allow a proper comparison to decide whether we should completely drop v7 and use v8 exclusively.
If porting mostly everything is feasible, objective tests can be run to decide this. Ideally, porting the core PM code would allow using an existing, mature scheduler for distributed computing.
The text was updated successfully, but these errors were encountered: