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@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@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 > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users