-
Notifications
You must be signed in to change notification settings - Fork 50
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
Espresso: Dynamic phonon workflow #1404
Espresso: Dynamic phonon workflow #1404
Conversation
Can one of the admins verify this patch? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, @tomdemeyere! This is already looking great. I added some preliminary comments for you (I know you're still working on it). Overall, the structure of the Flow
makes sense, although there is some subtlety to deal with regarding dynamic subworkflows I can help address later (discussed below).
Some calculations will be able to be done very quickly because of symmetry, either find a way to trick QE into doing them at the end during the "recover" run or be able to specify another executor for them to do it either on the login node or a scavenger/serial HPC queue.
You can strip the decorator off a Job
to turn it into a regular function via Job.__wrapped__
. However, it has limitations since it requires the server/daemon/process to have access to the QE binaries, which is not always the case (e.g. if you dispatch workflows from a laptop). I generally only use that pattern if it is for simple operations that don't call a binary. There are other options. Let's come back to this later.
Thanks for your comments, this should be the last "core" PR for the espresso calc. If everything is working as intended, I will start to actually run production calculations using quacc. Other recipes and bug fixes should then come naturally without requiring much core changes |
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## main #1404 +/- ##
==========================================
- Coverage 99.03% 98.76% -0.28%
==========================================
Files 79 79
Lines 2916 2994 +78
==========================================
+ Hits 2888 2957 +69
- Misses 28 37 +9 ☔ View full report in Codecov by Sentry. |
OK, so:
I just added a test for the copy_decompress_tree |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tomdemeyere: Great, this is looking good. Still one issue with your @flow
pattern. Let me know if you would like assistance with it.
Will wait for the ASE MR and then hopefully this will pass and we can get to merging it when you're ready.
Can/should the internal functions be located in another file? Users will not be interested by that and/or this might confuse them? |
Right now, I have all internal functions that are needed for recipes located inside their respective recipe, an example of which can be found here. It would probably be wise to do the same with Whether it, more generally would be valuable to move them to some other module is a good question. The pros are that the recipe becomes easier to read. The con is that the relationship between the internal function and its corresponding recipe becomes less clear. Personally, I would probably suggest moving I am open to alternate suggestions. Edit: Perhaps one could make a |
For now, I moved them both inside as you suggested. I am not sure what is the best choice here. This should be close to go! To my knowledge quacc is now the only package that allows running such flexible ph.x grid-parallelization. If file transfer between machines becomes routine this will allow to run very large phonon calculations EDIT: @Andrew-S-Rosen Good to go |
FYI. All looks good on several tested workflow engines! I will try to merge this sometime tomorrow. I don't anticipate that anything else will be needed from you on this. [The codecov test will fail because of the coverage, but there has been substantial enough work on this that I feel okay with merging it after any final edits.] Sidenote: This only works on the newest (0.232.0) release of Covalent because your workflow wrecked their memory usage on the older versions. The newest version handles this better, but it does not install with |
Amazing! After the merge, I will run a first example using HPC. (Possibly using Covalent, except if the 'electron Dict' executor thing is not fixed. In which case I will fall back on another workflow engine with an HPC executor) When that works, and after improving the documentation I will start to share my quacc work (Blog post and probably on the QE mailing list) |
Alright! I'm going to merge this now for the sake of both of us! 😅 Thank you again for your really nice work on this!!
My personal suggestion is that Covalent will not be the most efficient way to run this type of workflow, but only you'll be able to judge that for sure given the many intricacies of HPC policies.
Awesome! |
03c0e5e
into
Quantum-Accelerators:main
@tomdemeyere: Was quacc/src/quacc/recipes/espresso/phonons.py Lines 258 to 260 in 1606f2c
|
No, it is entirely replaced by this “only_init” keyword |
## Requirements ### Checklist - [ ] I have read the [Contributing Guide](https://quantum-accelerators.github.io/quacc/dev/contributing.html). Don't lie! 😉 - [ ] My PR is on a custom branch and is _not_ named `main`. - [ ] I have used `black`, `isort`, and `ruff` as described in the [style guide](https://quantum-accelerators.github.io/quacc/dev/contributing.html#style). - [ ] I have added relevant, comprehensive [unit tests](https://quantum-accelerators.github.io/quacc/dev/contributing.html#unit-tests). ### Notes - Your PR will likely not be merged without proper and thorough tests. - If you are an external contributor, you will see a comment from [@buildbot-princeton](https://github.com/buildbot-princeton). This is solely for the maintainers. - When your code is ready for review, ping one of the [active maintainers](https://quantum-accelerators.github.io/quacc/about/contributors.html#active-maintainers). ## Summary of Changes This should also improve the missing coverage from #1404 --------- Co-authored-by: Andrew S. Rosen <[email protected]>
Requirements
Checklist
main
.black
,isort
, andruff
as described in the style guide.Notes
Summary of Changes
First complex workflow with ph.x. It aims to make phonon calculations embarrassingly parallel by allowing parallelization at the representation level, requirements:
Extra to-do: