-
Notifications
You must be signed in to change notification settings - Fork 39
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
adapt fmi4cpp for distributed systems #152
base: master
Are you sure you want to change the base?
Conversation
an alternative would be to delete the default constructor instead
enable fmi4cpp as subproject NTNU-IHB#122
allow customization from parent project use GNUInstalldirs to customize with the default values corresponding the to ones as before
…ibuted-mpi-environments resolves 1: enhance fmu constructor for distributed mpi environments
I think this PR can be simplified. If |
@markaren the boolean is necessary if we let the so in parallel using MPI say, (or multithread for that matter) fmu::fmu(path, mpirank == 0 ); // only rank 0 unzips, the other will read the unzip directory and load the dll does that make sense? The use case is really parallel computing. |
I was thinking that the FMU was unzipped by the user prior. But that function may not be exposed through the public API. That could be a solution though. Expose an unzip function for the user to control. What would be the best solution? |
I think exposing the unzipping function would be more explicit and probably better in the end. |
Yeah, a solution to this is needed. This PR has issues with that as well. Moving the issue to user-land lets the user deal with it. |
Anyhow, I exposed |
When deploying thousands of instances of the same FMU (Functional Mock-up Unit) in a distributed system using MPI (Message Passing Interface), it is inefficient for each MPI process to unzip the FMU individually. This pull request introduces an option to control whether the FMU should be unzipped or not. Typically, the MPI process with rank 0 will unzip the FMU once, and the other processes will wait until the FMU is ready to be loaded. This approach reduces redundant file I/O operations and improves initialization performance in large-scale distributed simulations.