Fix typo in ordering of fields in ZGMV #66
Merged
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.
The calculation of the ordering of fields in
zgmv
is incorrect. First spotted by @marsdeno when he tried running with--uvders --scders --vordiv
all enabled (I had never thought of testing all three at once!). The benchmark crashed with a "partially present on device" error referring toPGP3A
.UV-like fields and other 3D fields are both stored in the same array:
zgmv
.zgpuv
andzgp3a
are pointers pointing to different slices of this array, and these are subsequently passed toinv_trans
anddir_trans
:(Here)
Without this fix (assuming
nfld == 1
):jend_vder_EW
= 6,jbegin_sc
= 6,jend_scder_EW
= 8: UV-like fields are arrange in entries1:6
, other 3D fields in entries6:8
. This is obviously wrong because the first entry ofzgp3a
is pointing to the same address as the last entry of thezgpuv
.The typo is here.
jbegin_vder_EW
should bejend_vder_EW
. With this change the two pointer slices do not overlap.Lessons learned: