Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

Subject: Re: [OMPI users] MPI Java Bindings on Mac OSX
From: Doug Reeder (dlr1_at_[hidden])
Date: 2013-01-03 11:34:35


Chuck,

In step 4 you might want to consider the following

--prefix=/usr/local/openmpi-1.7rc5

and use the modules software to select which version of openmpi to use. I have to have multiple versions of openmpi available on my macs and this approach has worked well for me.

Doug Reeder
On Jan 3, 2013, at 9:22 AM, Chuck Mosher wrote:

> Hi,
>
> I've been trying to get a working version of the MPI java bindings on Mac OSX (10.6.8 with Java 1.6.0_37).
>
> I ran into a number of issues along the way that I thought I would record here for others who might be foolish enough to try the same ;-)
>
> The issues I had to spend time with were:
>
> 1. Installing a C compiler that can run from the command line
> 2. Finding and installing an appropriate Java JDK for my OS version
> 3. Building and installing OpenMPI for the first time on a Mac
> 4. Conflicts with the existing OpenMPI version 1.2.8 that was installed already on my Mac
> 5. Figuring out syntax for using the mpirun command line to run java
> 6. Odd behavior when trying to use "localhost" or the output from `hostname` on the command line or in a hostfile
>
> Resolution for each of these in order:
>
> 1. Installing a C compiler for the command line
> Found a good resource here:
> http://www.macobserver.com/tmo/article/install_the_command_line_c_compilers_in_os_x_lion
> The solution is to install XCode, then enable command line compilers from the XCode console.
>
> 2. Finding and installing an appropriate Java JDK for my OS version
> Used this resource to eventually figure out what to do:
> http://www.wikihow.com/Install-the-JDK-(Java-Development-Kit)-on-Mac-OS-X
> It didn't exactly match my setup, but had enough clues.
> The solution is to first find your java version (java -version, 1.6.0_37 in my case) and then match that version number to the Apple Java update version (11 in my case).
> The key document is:
> http://developer.apple.com/library/mac/#technotes/tn2002/tn2110.html
> Which is a table relating java version numbers to the appropriate "Java for Mac OS X xx.x Update xx".
> Once you know the update number, you can download the JDK installer from
> https://developer.apple.com/downloads/index.action
> where you of course have to have an Apple developer ID to access.
> Enter "java" in the search bar on the left and find the matching java update, and you're good to go.
>
> 3. Building and installing OpenMPI for the first time on a Mac
> After the usual false starts with a new installation on a new OS, I managed to get a working build of openmpi-1.7rc5 with Java bindings.
> I could only find the java bindings in the 1.7 pre-release.
> I used the defaults as much as possible.
>
> After downloading from:
> http://www.open-mpi.org/software/ompi/v1.7/
> and unarchiving to Downloads, open a Terminal window.
>
> cd Downloads/openmpi-1.7rc5
> ./configure --enable-java --prefix=/usr/local
> make all
> sudo make install
>
> Verify that you can run the commands and examples:
>
> chuck-> /usr/local/bin/mpirun -version
> mpirun (Open MPI) 1.7rc5
>
> chuck-> cd examples
> chuck-> make
> chuck-> /usr/local/bin/mpirun -np 2 hello_c
> Hello, world, I am 0 of 2, (Open MPI v1.7rc5, package: Open MPI chuck_at_chucks-iMac.local Distribution, ident: 1.7rc5, Oct 30, 2012, 111)
> Hello, world, I am 1 of 2, (Open MPI v1.7rc5, package: Open MPI chuck_at_chucks-iMac.local Distribution, ident: 1.7rc5, Oct 30, 2012, 111)
>
> 4. Conflicts with the existing OpenMPI version 1.2.8 that was installed already on my Mac
> OpenMPI Version 1.2.8 was already installed for my OS in /usr/bin
> So, if you accidentally type:
>
> chuck-> mpirun -np 2 hello_c
> --------------------------------------------------------------------------
> A requested component was not found, or was unable to be opened
> ...
>
> you picked up the wrong "mpirun" and you will get a bunch of error output complaining about sockets or mis-matched shared library versions.
>
> I dealt with this moving the existing OpenMPI related commands to a subdirectory, and then created symbolic links from /usr/local/bin to /usr/bin for the commands I needed.
>
> 5. Figuring out syntax for using the mpirun command line to run java
> First be sure you can run Java
>
> chuck-> /usr/bin/java -version
> java version "1.6.0_37"
> Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-10M3909)
> Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
>
> Then be sure you can run your java class from the command line as well. To figure this out I created a couple of simple java files in a temp directory:
>
> chuck-> cd ~/tmp
> chuck-> mkdir classes
> chuck -> cat HelloWorld.java
>
> public class HelloWorld {
> public static void main(String[] args) {
> System.out.println("Hello World, from Java !");
> }
> }
>
> chuck-> javac -d classes HelloWorld.java
> chuck-> java -cp ./classes HelloWorld
>
> Hello World, from Java !
>
> No sense going further until you can get the code above to run.
> If you have that working, then you can try the MPI version of HelloWorld:
>
> chuck-> cat HelloWorldMPI.java
>
> import mpi.*;
> class HelloWorldMPI {
> public static void main(String[] args) throws MPIException {
> MPI.Init(args);
> System.out.println("Hello world from rank " +
> MPI.COMM_WORLD.Rank() + " of " +
> MPI.COMM_WORLD.Size() );
> MPI.Finalize();
> }
> }
>
> chuck-> /usr/local/bin/mpijavac -d classes HelloWorldMPI.java
> /usr/local/bin/mpirun -np 2 /usr/bin/java -cp ./classes HelloWorldMPI
>
> Hello world from rank 0 of 2
> Hello world from rank 1 of 2
>
> And you're ready to go !
> Except for one last thing ...
>
> 6. Odd behavior when trying to use "localhost" or the output from `hostname` on the command line or in a hostfile
> You will note in the examples above no host names, hostifle, or appfile was used.
> I found that trying to use "-host localhost" or "-hostfile hostfile" which contained "localhost" would not work:
>
> mpirun -host localhost -np 2 ...
>
> in the examples above would not work, returning:
>
> chuck$ /usr/local/bin/mpirun -host localhost -np 2 /usr/bin/java -cp ./classes HelloWorldMPI
> --------------------------------------------------------------------------
> All nodes which are allocated for this job are already filled.
> --------------------------------------------------------------------------
>
> I posted this in a previous e-mail to this list, and it looks like a bug.
> You can get around it by using the output from `hostname -s` which provides a trimmed name:
>
> chuck-> /usr/local/bin/mpirun -host `hostname -s` -np 2 /usr/bin/java -cp ./classes HelloWorldMPI
> Hello world from rank 0 of 2
> Hello world from rank 1 of 2
>
> You will also need to use this name in any hostfiles or appfiles as well until the bug is fixed.
>
> Thanks to all for this great product !
>
> Chuck Mosher for JavaSeis.org
>
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users