-
Notifications
You must be signed in to change notification settings - Fork 141
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
Delayed update on CPU #1170
Delayed update on CPU #1170
Conversation
Fix VMC and DMC TODO fix RMC and CorrelatedSampling.
Options: -d -n num_els -k delay -i iteration
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.
Thank you.
Some quick and incomplete feedback:
- Structs with functionality should be classes
- Code disabled behind preprocessor macros should be either unified behind an DELAYED_DEBUG setting or removed. ( We should have a note in the coding standards about this. )
Tests should include delays that are not a factor of the electron count.EDIT: I see this is done. Perhaps a delay of 3 so that there are 2 updates and one partial in the diamond 2x2x1 case?- The documentation should reference the delayed update and Fahy papers, where mentioned. There is also a statement that the delay should be a multiple of the SIMD length; I think this is only a performance recommendation.
- I am not keen on increasing the number of codes in Sandbox. These are undocumented and a bit of a wasteland. We might discuss a better location. Is this a utility that could be run to assess the delay?
|
adet->set(firstIndex,lastIndex-firstIndex); | ||
if( delay_rank<=0 || delay_rank>lastIndex-firstIndex ) | ||
{ | ||
APP_ABORT("SlaterDetBuilder::putDeterminant delay_rank must be positive and no larger than the electron count within a determinant!\n"); |
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.
The error message should print the values of delay_rank and lastIndex-firstIndex.
I do not want approve this until your delayed update work is hidden by an abstraction that preserves the previous functionality. Am I missing that, at first read I just see Dirac determinant that now works differently it doesn't look like I can retrieve row update behavior. I can not A/B the two different methods for the same commit. A feature completely replacing a previous feature should demonstrate identical or better test compliance on the same commit. The old feature can then be removed if necessary. Work like this should be behind a feature switch preserving exisiting implementation and merged several times a week, this will allow other work to be done and force the new feature to sync with other work done in the codebase instead of motivating developers to block other work. |
The previous rank-1 is within this implementation. it is IDENTICAL to the old code if rank_delay=1. There is no need to have two implementation if one can do both work. All the existing unit tests are still valid and rank_delay>1 unit test is also added. |
Comments focus on making DelayedUpdate more accessible to our future selves:
More general Q:
|
Hopefully I put sufficient documentation.
|
Thanks Ye. Yes set() is part of a larger mess. I think short-diamondC_2x1x1_pp-delayed_update-vmc_sdj-1-16* needs test labels added. They report as "quality unknown". Happily this version already runs a smidge faster than the non-delayed version, at least on oxygen. |
What are the rules around calling completeUpdates ? |
|
Can we merge this? The change in this PR is quite local and clean. |
Will discuss with @PDoakORNL this afternoon. Comment to follow. |
Closes #1152
This feature can be enabled with all the QMC methods implemented in QMCPACK
via
<slaterdeterminant delay_rank="32">
Manual, unit test and integration tests are added. The manual needs further update to add references.
Performance tests are set with
delay_rank="32"
. Currently the input files are generated on the fly.If they needed to be stored in the repo, I will add them after the review in order to reduce the amount of files.