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

Logger cannot merge runs in output data when called out of context #39

Open
nojhan opened this issue Mar 18, 2020 · 5 comments
Open

Logger cannot merge runs in output data when called out of context #39

nojhan opened this issue Mar 18, 2020 · 5 comments
Labels

Comments

@nojhan
Copy link
Contributor

nojhan commented Mar 18, 2020

I'm interfacing my solver with IOHexperimenter at the problem level, because I wish to use my own experiment manager. Indeed, I wish to use my own batch system to place (down to) single runs as independent jobs on an arbitrary set of machines. However, this is not feasible with the current architecture.

The core of the problem is that the Logger interface expect to be initialized once, and then to be called on different target_problem, for several runs. However, if one wish to handle jobs at the runs level, the Logger will be initialized for each run. In that setting, the Logger avoid adding the results in the previously written data folder, and create an additional folder, leading to two different folders holding two separated runs.

Unfortunately, this data structure cannot be loaded as a single experiment by IOHanalyzer.

To test the problem, merge PR #38 and run t-bbob-csvlogger twice.

The solutions I can imagine are to:

  • add a state manager to Logger that would allow to load previous data structures from saved files,
  • allow IOHanalyzer to parse several folders as a single experiment,
  • handle this specific case with an additional data merger.
@jacobdenobel
Copy link
Contributor

@nojhan Is this still relevant?

@nojhan
Copy link
Contributor Author

nojhan commented Dec 23, 2021

Yes. There is no way to parallelize runs out of a single executable while merging the data of the logger::Analyzer in the same folder.

The use case would be to spread the runs on an HPC cluster, while having a single folder with all the data at the end.

Having a script able to merge two folders seems like the easier approach here.

@jacobdenobel
Copy link
Contributor

This is available in Python, but not in yet C++.

@nojhan
Copy link
Contributor Author

nojhan commented Dec 24, 2021 via email

@jacobdenobel
Copy link
Contributor

I think this method does what you need.

def merge_output_to_single_folder(self, prefix: str, target_folder: str):

If you use the Experiment class in Python you can use it. This uses Python multiprocess to parallize, so I think the beviour is similar to what you intend.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants