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

✨ Multi-dimensional operational domain computation #493

Merged
merged 122 commits into from
Aug 21, 2024

Conversation

marcelwa
Copy link
Collaborator

@marcelwa marcelwa commented Aug 8, 2024

Description

This PR mainly introduces multi-dimensional operational domain computation. That is, it provides a framework for performing physical simulations over arbitrary sweep dimensions. Currently, the dimensions epsilon_r, lambda_tf, and mu_minus are supported, but new ones can be added easily.

This PR also incorporates various performance improvements, particularly concerning multithreading in operational domain computation. To this end, it abandons the previously utilized C++ execution policies in favor of manual thread management. This not only makes the code less platform-dependent and offers increased performance in the Python bindings, but it also enables us to tweak load-balancing, particularly for grid search, which is now really fast given sufficient CPU cores.

Grid search and random sampling support true multi-dimensional operational domain sweeps. Flood fill supports two- and three-dimensional sweeps. Contour tracing is limited to two dimensions by design.

Checklist:

  • The pull request only contains commits that are related to it.
  • I have added appropriate tests and documentation.
  • I have added a changelog entry.
  • I have created/adjusted the Python bindings for any new or updated functionality.
  • I have made sure that all CI jobs on GitHub pass.
  • The pull request introduces no new warnings and follows the project's style guidelines.

marcelwa and others added 30 commits April 22, 2024 18:49
Signed-off-by: GitHub Actions <[email protected]>
Signed-off-by: GitHub Actions <[email protected]>
Signed-off-by: GitHub Actions <[email protected]>
Signed-off-by: GitHub Actions <[email protected]>
Signed-off-by: GitHub Actions <[email protected]>
Signed-off-by: GitHub Actions <[email protected]>
# Conflicts:
#	libs/mockturtle
#	libs/pybind11
@marcelwa marcelwa requested a review from Drewniok August 19, 2024 21:43
@Drewniok
Copy link
Collaborator

@marcelwa many thanks! I assume the CLI issue is fixed, right?

@marcelwa
Copy link
Collaborator Author

@marcelwa many thanks! I assume the CLI issue is fixed, right?

Ah right, I forgot to mention that. Unfortunately, I just couldn't find the source of the problem there 😕 the error occurs when you pass parameter ranges to the CLI where the min value is larger than the max value. On first try, the correct error handling is triggered. When you pass the exact same command a second time, no error handling happens (and I think OpDom is executed with default parameters). Next time, the error handling is triggered again, and so forth.

@Drewniok
Copy link
Collaborator

Drewniok commented Aug 20, 2024

@marcelwa many thanks! I assume the CLI issue is fixed, right?

Ah right, I forgot to mention that. Unfortunately, I just couldn't find the source of the problem there 😕 the error occurs when you pass parameter ranges to the CLI where the min value is larger than the max value. On first try, the correct error handling is triggered. When you pass the exact same command a second time, no error handling happens (and I think OpDom is executed with default parameters). Next time, the error handling is triggered again, and so forth.

okay, that's a pity. Should we then leave a comment in cli/op_domain for future reference?

@marcelwa
Copy link
Collaborator Author

@marcelwa many thanks! I assume the CLI issue is fixed, right?

Ah right, I forgot to mention that. Unfortunately, I just couldn't find the source of the problem there 😕 the error occurs when you pass parameter ranges to the CLI where the min value is larger than the max value. On first try, the correct error handling is triggered. When you pass the exact same command a second time, no error handling happens (and I think OpDom is executed with default parameters). Next time, the error handling is triggered again, and so forth.

okay, that's a pity. Should we then leave a comment in cli/op_domain for future reference?

That's a good idea. Thanks!

@marcelwa marcelwa requested a review from Drewniok August 20, 2024 12:35
@marcelwa marcelwa requested a review from Drewniok August 20, 2024 17:48
Copy link
Collaborator

@Drewniok Drewniok left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Many, many thanks for your hard work and this new set of algorithms!

@marcelwa marcelwa merged commit b213292 into main Aug 21, 2024
61 checks passed
@marcelwa marcelwa deleted the opdomain-explorer-additions branch August 21, 2024 08:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request performance Performance improvements
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants