I've debugged into the ISGlobalToLocalMappingApplyBlock() function and
it seems to me the bounds checking in there is not correct when the
blocksize is > 1.
It checks against the same bounds, scaled up by the blocksize, in both
the block and non-block versions of the function. I think for the block
version the bounds should not be scaled.
I've just created a pull request
(acroucher/fix-IS-global-to-local-mapping-block) with a suggested fix.
- Adrian
On 16/11/17 11:52, Adrian Croucher wrote:
I actually attached the wrong test program last time- I've attached
the right one here, which is much simpler. It test global indices 0,
1, ... 9.
If I run on 2 processes, the local indices it returns are:
rank 0: 0, 1, 2, 3, 4, 0, 0, 0, -253701943, 0
rank 1: -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
The results I expected are:
rank 0: 0, 1, 2, 3, 4, -1, -1, -1, -1, -1
rank 1: -1, -1, -1, -1, -1, 0, 1, 2, 3, 4
So the results for global indices 0, 1,... 4 are what I expected, on
both ranks. But the results for global indices 5, 6, ... 9 are not.
I tried increasing the blocksize to 3 or 4, and the results were
exactly the same.
It only gives the results I expected if I change the blocksize to 1.
- Adrian
--
Dr Adrian Croucher
Senior Research Fellow
Department of Engineering Science
University of Auckland, New Zealand
email: a.crouc...@auckland.ac.nz
tel: +64 (0)9 923 4611