On Wed, 15 Nov 2017 at 05:55, Adrian Croucher <a.crouc...@auckland.ac.nz> wrote:
> hi > > I'm trying to use ISGlobalToLocalMappingApplyBlock() and am a bit > puzzled about the results it's giving. > > I've attached a small test to illustrate. It just sets up a > local-to-global mapping with 10 elements. Running on two processes the > first has global indices 0 - 4 and the the second has 5 - 9. I then try > to find the local index corresponding to global index 8. > > If I set the blocksize parameter to 1, it correctly gives the results -1 > on rank 0 and 3 on rank 1. > > But if I set the blocksize to 2 (or more), the results are -253701943 on > rank 0 and -1 on rank 1. Neither of these are what I expected- I thought > they should be the same as in the blocksize 1 case. The man page says to use "block global numbering" > > I'm presuming the global indices I pass in to > ISGlobalToLocalMappingApplyBlock() should be global block indices (i.e. > not scaled up by blocksize). Yes, the indices should relate to the blocks If I do scale them up it doesn't give the > answers I expect either. > > Or am I wrong to expect this to give the same results regardless of > blocksize? Yep. However the large negative number being printed looks an uninitialized variable. This seems odd as with mode = MASK nout should equal N and any requested block indices not in the IS should result in -1 being inserted in your local_indices array. What's the value of nout? Thanks, Dave > > Cheers, 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 > >