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
mathiaswagner
left a comment
There was a problem hiding this comment.
Visual review looks good, but I have not done any testing beyond a simple build.
hummingtree
left a comment
There was a problem hiding this comment.
The changes look great. I will do some actual builds.
weinbe2
left a comment
There was a problem hiding this comment.
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_refclass which replaces the prior use ofstd::vector<ColorSpinorField_ref>DiracandDiracMatrixclassesstd::vector<ColorSpinorField>instead ofstd::vector<ColorSpinorField*>FieldTmpwhich provides a cache for temporary objects. Deployed in theDiracoperators to negate the need to allocate and maintain explicit temporary vectorsmaxandmax_deviationreduce kernels, useful for correctness testingio_test, for testing both gauge and color-spinor storage when QIO is enabledconstcorrect, and doxygen is now added for all functions.Update
Some additional fixes added during review:
max_res_increasedefault parameter to ensure more reliable convergence in ctestQUDA_INVERFACE_NVTX=ON