-
Notifications
You must be signed in to change notification settings - Fork 102
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
Feature/multi rhs #1318
Feature/multi rhs #1318
Conversation
…0 seconds. This allows us to clean up various calls to saveTuneCache()
…ew function max and max_deviation
…plate - make it more useful
…rence_wrapper> conversion
…wrappers with a generic multi-rhs interface and a cleanup of the internals
…iring compiler flags
…ty for both gauge and color-spinor fields
…and writing to distinct fields. blas::ax is now just a wrapper around this, and introduce blas::axy which exposes this functionality
…Field_cref instead of ColorSpinorField_ref where the vectors are read only
…oexcept - this allows for move assignment instead of copy assignment when std::vector::resize is called
… of crefs, we would endup self recursing if passing a vector of refs: added explicit make_cset helper, to create explicit cref sets to avoid this
…es that allow us to avoid the copying that would occur if we used std::vector::resize
…cantly boosts the performance of the blas_test, removing a lot of copies
… of pointers. As part of this change, the multi-blas function interfaces have been overhauled to utilized a new specialized type vector_ref, to provide a universal interface
…nto feature/multi-rhs
…z vectors in ARPACK, not Schur vectors
…nto feature/multi-rhs
I left those intentionally, but happy to discuss their removal. Those were left to ensure that when the solver finishes, the tunecache is dumped which I naively thought was desirable. Given it would be dumped anyway when Thoughts? |
…basis used in preconditioners to Chebyshev
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.
Visual review looks good, but I have not done any testing beyond a simple build.
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 changes look great. I will do some actual builds.
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.
Visual only, but there's a lot of good cleanup here, and I appreciate the additional unit testing. Since others have been hands-on with this PR, I'm going to give it the approval based on my visual review. Awesome work!
Merging this now. I've verified manually:
I've updated the description with a few late additions to this PR that were added during review. |
This PR is focussed on framework evolution to get us ready for multi-RHS workflows
vector_ref
class which replaces the prior use ofstd::vector<ColorSpinorField_ref>
Dirac
andDiracMatrix
classesstd::vector<ColorSpinorField>
instead ofstd::vector<ColorSpinorField*>
FieldTmp
which provides a cache for temporary objects. Deployed in theDirac
operators to negate the need to allocate and maintain explicit temporary vectorsmax
andmax_deviation
reduce kernels, useful for correctness testingio_test
, for testing both gauge and color-spinor storage when QIO is enabledconst
correct, and doxygen is now added for all functions.Update
Some additional fixes added during review:
max_res_increase
default parameter to ensure more reliable convergence in ctestQUDA_INVERFACE_NVTX=ON