-
Notifications
You must be signed in to change notification settings - Fork 103
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
MILC batched deflation #1529
Open
leonhostetler
wants to merge
13
commits into
lattice:develop
Choose a base branch
from
leonhostetler:leonhostetler/milc_batched_deflation
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
MILC batched deflation #1529
Changes from all commits
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
d6792c1
MILC deflation for even-parity single right-hand side solves
leonhostetler 119a9f2
MILC deflation for even-parity Msrc solves
leonhostetler 4bfdada
Merge branch 'lattice:develop' into leonhostetler/milc_batched_deflation
leonhostetler 4f57280
Update solver.cpp per comment from @weinbe2 on the PR
leonhostetler 6d93109
Restructured to preserve compatibility with older MILC
leonhostetler cdedc07
Moved more eigensolver params into the small struct and added a setEi…
leonhostetler 02eb6f5
Added flag for parity of eigenvectors loaded from file
leonhostetler f50b9ae
Only even solves supported currently
leonhostetler 2e14fda
Fixed cuda_prec_eigensolver value
leonhostetler 2598582
Fix where I forgot about backward compatibility again
leonhostetler b3f4e8d
Added struct_size field to QudaEigensolverArgs_t
leonhostetler 8106f58
Moved deflation_init to global scope
leonhostetler c87e4dd
Forgot about backward compatibility again!
leonhostetler File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
This broadly looks good---to be more future-proof (in particular to if folks want to use this structure for other fermion types for whatever reason), we should add more of the fields that are currently getting default values in
qudaInvertDeflatable
.The defaults can be then set on the MILC side of things instead of on the QUDA side of things.
Re: loading eigenvectors computed for the odd operator then applying them to the even operator (or any combination), you could add a field
QudaParity vec_in_parity;
or something of the sort. For the scope of this PR you could just require that the input parity be even otherwise it errors, but in a next PR we could expand it to handling constructing the even eigenvectors from input odd ones (or vice-versa).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 first part should be fixed now with cdedc07. The second part, RE loading eigenvectors, should be fixed now with 02eb6f5 and 2598582. Let me know if anything should be changed.
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.
This is great! One thing I forgot: you should add a field
struct_size
that gets set tosizeof(QudaEigensolverArgs_t)
on the MILC side, and then on the QUDA side you separately evaluate that and compare it with what the size of the struct gets set to in MILC. It should be the first field in the structure.The reason to do this is to make error checking more explicit---if QUDA and MILC disagree on the size of the structure due to some mixed version issues, we'll get an error. Let me know if this makes sense/if you'd like me to better sketch it out.
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.
This should be fixed by b3f4e8d and c87e4dd