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

Reply via email to