This was resolved off-list, but I'm reposting it here so it (a) resides in our archives, and (b) is available for others with similar questions about the revised Java bindings.


Begin forwarded message:

From: "Jose E. Roman" <>
Subject: Fwd: [OMPI devel] Bug in MPI.MINLOC with Java binding
Date: November 11, 2013 at 11:05:12 PM PST
To: Ralph Castain <>

Inicio del mensaje reenviado:

De: Oscar Vega-Gisbert <>
Fecha: 12 de noviembre de 2013 00:08:41 GMT+01:00
Cc: Jose Roman <>, Jeff Squyres <>
Asunto: Re: Fwd: [OMPI devel] Bug in MPI.MINLOC with Java binding

Hi Saliya,

In the in the previous versions of the library, MAXLOC and MINLOC were implemented in Java and it was possible to use Java int arrays. But now the implementation is native and you can not use Java int because on some platforms the int size (in the C side) may be different.

You must use the struct 'mpi.Int2' as you can see in your corrected example.


From: Saliya Ekanayake <<>>
Subject: [OMPI devel] Bug in MPI.MINLOC with Java binding
Date: November 11, 2013 3:35:23 PM EST
To: <<>>
Reply-To: Open MPI Developers <<>>


I've been using nightly tarball openmpi-1.9a1r28919 with Java binding and it had a bug in its MINLOC implementation ( Essentially, the following line,

out_array [outdisp + 1] = in_array [outdisp + 1] ;

should be changed to

out_array [outdisp + 1] = in_array [indisp + 1] ;

The same should be done for MAXLOC ( implementation as well. I tested with the change and both MINLOC and MAXLOC worked as expected afterwards.

However, these files are no longer available in the latest trunk and it seems the API for collective operations have changed as well. Still MINLOC (and MAXLOC) does not work as expected. I've attached a sample code to reproduce the issue and an output from it (for MINLOC).

I am running on 64bit Ubuntu 12.04.

Any suggestions?

Thank you in advance,

Saliya Ekanayake<><>
devel mailing list<>

Jeff Squyres<>
For corporate legal information go to:

This message was sent using IMP, the Internet Messaging Program.