Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] Help building/installing a working Open MPI 1.7.4 on OS X 10.9.2 with Free PGI Fortran
From: Jeff Squyres (jsquyres) (jsquyres_at_[hidden])
Date: 2014-03-21 11:02:14


This is starting to smell like a Libtool and/or Automake bug -- it created libmpi_usempi_ignore_tkr.dylib, but it tried to install libmpi_usempi_ignore_tkr.0.dylib (notice the extra ".0"). :-\

This is both good and bad.

Good: I can think of 2 ways to work around this issue off the top of my head:

1. "make -k install" and ignore the error as it flashes by. The rest of OMPI will install properly. Then cd into build_dir/ompi/mpi/fortran/use-mpi-ignore-tkr/.libs. Copy libmpi_usempi_ignore_tkr.* to $libdir (i.e., /Users/fortran/MPI/openmpi_1.7.4-pgi_14.3-gcc/lib, in your example below). And you should be good to go.

...although you may need to do a similar thing in the ompi/mpi/fortran/use-mpi-f08/.libs directory.

2. Somewhere in ompi/mpi/fortran/use-mpi-ignore-tkr/Makefile will be the filename "libmpi_usempi_ignore_tkr.0.dylib". Edit it to remove the ".0". Then "make install" should work fine. (you might need to do the same in use-mpi-f08/Makefile)

Bad: we can't really fix this error if it really is a bug in Automake and/or Libtool, but we can at least report it upstream.

I've made a trivial Autotools test project (https://github.com/jsquyres/pgi-autotool-bug) to see if we can nail this down a little more, and possibly use the results to report upstream.

Here's the versions of Autotools that we use to make the OMPI 1.7.x series:

Autoconf 2.69
Automake 1.12.2
Libtool 2.4.2
m4 1.4.16

Attached is a tarball I made of the sample project using those versions. Can you try building and installing this tarball on your system with the same kinds of options you used with OMPI? Hopefully, you should see the same error. If not, I need to tweak this project a bit more to make it more like OMPI's build system behavior.

If you can replicate the error, then also try the second attached tarball: it's the same project, but bootstrapped with the latest versions of GNU Automake (the others are already the most recent):

Automake 1.14.1

This will let us see if automake 1.14.1 has fixed the issue.

On Mar 20, 2014, at 1:16 PM, Matt Thompson <fortran_at_[hidden]> wrote:

> Jeff, here you go:
>
> (3) $ cd ompi/mpi/fortran/use-mpi-ignore-tkr
> total 2888
> -rw-r--r-- 1 fortran staff 1.7K Apr 13 2013 Makefile.am
> -rw-r--r-- 1 fortran staff 215K Dec 17 21:09 mpi-ignore-tkr-interfaces.h.in
> -rw-r--r-- 1 fortran staff 39K Dec 17 21:09 mpi-ignore-tkr-file-interfaces.h.in
> -rw-r--r-- 1 fortran staff 1.5K Jan 27 19:04 mpi-ignore-tkr.F90
> -rw-r--r-- 1 fortran staff 80K Feb 4 17:53 Makefile.in
> -rw-r--r-- 1 fortran staff 208K Mar 18 20:37 mpi-ignore-tkr-interfaces.h
> -rw-r--r-- 1 fortran staff 38K Mar 18 20:37 mpi-ignore-tkr-file-interfaces.h
> -rw-r--r-- 1 fortran staff 75K Mar 18 20:37 Makefile
> -rw-r--r-- 1 fortran staff 765K Mar 18 20:47 mpi.mod
> -rw-r--r-- 1 fortran staff 280B Mar 18 20:47 mpi-ignore-tkr.lo
> -rw-r--r-- 1 fortran staff 1.0K Mar 18 20:47 libmpi_usempi_ignore_tkr.la
> Directory: /Users/fortran/MPI/src/openmpi-1.7.4/ompi/mpi/fortran/use-mpi-ignore-tkr
> (4) $ make clean
> test -z "*~ .#*" || rm -f *~ .#*
> test -z "libmpi_usempi_ignore_tkr.la" || rm -f libmpi_usempi_ignore_tkr.la
> rm -f ./so_locations
> rm -rf .libs _libs
> rm -f *.o
> test -z "*.mod" || rm -f *.mod
> rm -f *.lo
> (5) $ make V=1
> /bin/sh ../../../../libtool --tag=FC --mode=compile pgfortran -DHAVE_CONFIG_H -I. -I../../../../opal/include -I../../../../orte/include -I../../../../ompi/include -I../../../../opal/mca/hwloc/hwloc172/hwloc/include/private/autogen -I../../../../opal/mca/hwloc/hwloc172/hwloc/include/hwloc/autogen -DOMPI_PROFILE_LAYER=0 -DOMPI_COMPILING_FORTRAN_WRAPPERS=1 -I../../../.. -D_REENTRANT -I/Users/fortran/MPI/src/openmpi-1.7.4/opal/mca/hwloc/hwloc172/hwloc/include -I/Users/fortran/MPI/src/openmpi-1.7.4/opal/mca/event/libevent2021/libevent -I/Users/fortran/MPI/src/openmpi-1.7.4/opal/mca/event/libevent2021/libevent/include -I../../../../ompi/include -I../../../../ompi/include -I../../../.. -I../../../.. -m64 -c -o mpi-ignore-tkr.lo mpi-ignore-tkr.F90
> libtool: compile: pgfortran -DHAVE_CONFIG_H -I. -I../../../../opal/include -I../../../../orte/include -I../../../../ompi/include -I../../../../opal/mca/hwloc/hwloc172/hwloc/include/private/autogen -I../../../../opal/mca/hwloc/hwloc172/hwloc/include/hwloc/autogen -DOMPI_PROFILE_LAYER=0 -DOMPI_COMPILING_FORTRAN_WRAPPERS=1 -I../../../.. -D_REENTRANT -I/Users/fortran/MPI/src/openmpi-1.7.4/opal/mca/hwloc/hwloc172/hwloc/include -I/Users/fortran/MPI/src/openmpi-1.7.4/opal/mca/event/libevent2021/libevent -I/Users/fortran/MPI/src/openmpi-1.7.4/opal/mca/event/libevent2021/libevent/include -I../../../../ompi/include -I../../../../ompi/include -I../../../.. -I../../../.. -m64 -c mpi-ignore-tkr.F90 -o .libs/mpi-ignore-tkr.o
> /bin/sh ../../../../libtool --tag=FC --mode=link pgfortran -I../../../../ompi/include -I../../../../ompi/include -I../../../.. -I../../../.. -m64 -export-dynamic -m64 -o libmpi_usempi_ignore_tkr.la -rpath /Users/fortran/MPI/openmpi_1.7.4-pgi_14.3-gcc/lib mpi-ignore-tkr.lo
> libtool: link: (cd ".libs" && rm -f "libmpi_usempi_ignore_tkr.dylib" && ln -s "libmpi_usempi_ignore_tkr.0.dylib" "libmpi_usempi_ignore_tkr.dylib")
> libtool: link: ( cd ".libs" && rm -f "libmpi_usempi_ignore_tkr.la" && ln -s "../libmpi_usempi_ignore_tkr.la" "libmpi_usempi_ignore_tkr.la" )
> (6) $ find .
> .
> ./.libs
> ./.libs/libmpi_usempi_ignore_tkr.dylib
> ./.libs/libmpi_usempi_ignore_tkr.la
> ./.libs/libmpi_usempi_ignore_tkr.lai
> ./.libs/mpi-ignore-tkr.o
> ./libmpi_usempi_ignore_tkr.la
> ./Makefile
> ./Makefile.am
> ./Makefile.in
> ./mpi-ignore-tkr-file-interfaces.h
> ./mpi-ignore-tkr-file-interfaces.h.in
> ./mpi-ignore-tkr-interfaces.h
> ./mpi-ignore-tkr-interfaces.h.in
> ./mpi-ignore-tkr.F90
> ./mpi-ignore-tkr.lo
> ./mpi.mod
> (7) $ make install
> ../../../../config/install-sh -c -d '/Users/fortran/MPI/openmpi_1.7.4-pgi_14.3-gcc/lib'
> /bin/sh ../../../../libtool --mode=install /usr/bin/install -c libmpi_usempi_ignore_tkr.la '/Users/fortran/MPI/openmpi_1.7.4-pgi_14.3-gcc/lib'
> libtool: install: /usr/bin/install -c .libs/libmpi_usempi_ignore_tkr.0.dylib /Users/fortran/MPI/openmpi_1.7.4-pgi_14.3-gcc/lib/libmpi_usempi_ignore_tkr.0.dylib
> install: .libs/libmpi_usempi_ignore_tkr.0.dylib: No such file or directory
> make[1]: *** [install-libLTLIBRARIES] Error 71
> make: *** [install-am] Error 2
>
>
>
> On Thu, Mar 20, 2014 at 8:37 AM, Jeff Squyres (jsquyres) <jsquyres_at_[hidden]> wrote:
> Very odd. Your logfiles indicate that OMPI's configure found the right ignore TKR syntax and decided to build the ignore TKR mpi module.
>
> -----
> checking Fortran compiler ignore TKR syntax... not cached; checking variants
> checking for Fortran compiler support of TYPE(*), DIMENSION(*)... no
> checking for Fortran compiler support of !DEC$ ATTRIBUTES NO_ARG_CHECK... no
> checking for Fortran compiler support of !$PRAGMA IGNORE_TKR... no
> checking for Fortran compiler support of !DIR$ IGNORE_TKR... yes
> checking Fortran compiler ignore TKR syntax... 1:real, dimension(*):!DIR$ IGNORE_TKR
> checking if building Fortran 'use mpi' bindings... yes
> -----
>
> And then the make logs indicate that it did, indeed, build the ignore TKR mpi module.
>
> -----
> Making all in mpi/fortran/use-mpi-ignore-tkr
> PPFC mpi-ignore-tkr.lo
> FCLD libmpi_usempi_ignore_tkr.la
> -----
>
> And then make install fails:
>
> -----
> Making install in mpi/fortran/use-mpi-ignore-tkr
> ../../../../config/install-sh -c -d '/Users/fortran/MPI/openmpi_1.7.4-pgi_14.3-gcc/lib'
> /bin/sh ../../../../libtool --mode=install /usr/bin/install -c libmpi_usempi_ignore_tkr.la '/Users/fortran/MPI/openmpi_1.7.4-pgi_14.3-gcc/lib'
> libtool: install: /usr/bin/install -c .libs/libmpi_usempi_ignore_tkr.0.dylib /Users/fortran/MPI/openmpi_1.7.4-pgi_14.3-gcc/lib/libmpi_usempi_ignore_tkr.0.dylib
> install: .libs/libmpi_usempi_ignore_tkr.0.dylib: No such file or directory
> -----
>
> Can you do the following:
>
> -----
> cd ompi_build_dir/ompi/mpi/fortran/use-mpi-ignore-tkr
> make clean
> make V=1
> find .
> make install
> -----
>
>
> On Mar 20, 2014, at 7:44 AM, Matt Thompson <fortran_at_[hidden]> wrote:
>
> > Jeff,
> >
> > It does not:
> >
> > Directory: /Users/fortran/MPI/src/openmpi-1.7.4/ompi/mpi/fortran/use-mpi-ignore-tkr/.libs
> > (106) $ ls -ltr
> > total 1560
> > -rw-r--r-- 1 fortran staff 784824 Mar 18 20:47 mpi-ignore-tkr.o
> > -rw-r--r-- 1 fortran staff 1021 Mar 18 20:47 libmpi_usempi_ignore_tkr.lai
> > lrwxr-xr-x 1 fortran staff 30 Mar 18 20:47 libmpi_usempi_ignore_tkr.la@ -> ../libmpi_usempi_ignore_tkr.la
> > lrwxr-xr-x 1 fortran staff 32 Mar 18 20:47 libmpi_usempi_ignore_tkr.dylib@ -> libmpi_usempi_ignore_tkr.0.dylib
> >
> > which I guess makes sense.
> >
> > I'm attaching the logfiles from my compile attempt. This is the "basic" attempt as can be seen from the config.log file.
> >
> > Thanks,
> > Matt
> >
> >
> >
> > On Thu, Mar 20, 2014 at 6:45 AM, Jeff Squyres (jsquyres) <jsquyres_at_[hidden]> wrote:
> > Sorry for the delay; we're working on releasing 1.7.5 and that's consuming all my time...
> >
> > That's a strange error. Can you confirm whether ompi_buil_dir/ompi/mpi/fortran/use-mpi-ignore-tkr/.libs/libmpi_usempi_ignore_tkr.0.dylib exists or not?
> >
> > Can you send all the info listed here:
> >
> > http://www.open-mpi.org/community/help/
> >
> >
> > On Mar 18, 2014, at 8:59 PM, Matt Thompson <fortran_at_[hidden]> wrote:
> >
> > > All,
> > >
> > > I recently downloaded PGI's Free OS X Fortran compiler:
> > >
> > > http://www.pgroup.com/products/freepgi/
> > >
> > > in the hope of potentially using it to compile a weather model I work with GEOS-5. That model requires an MPI stack and I usually start (and end) with Open MPI on a desktop.
> > >
> > > So, I grabbed Open MPI 1.7.4 and tried compiling it in a few ways. In each case, my C and C++ compilers were the built-in clang-y gcc and g++ from Xcode, while pgfortran was the Fortran compiler. I tried a few different configures from the basic:
> > >
> > > $ ./configure CC=gcc CXX=g++ F77=pgfortran FC=pgfortran CFLAGS='-m64' CXXFLAGS='-m64' FCFLAGS='-m64' FFLAGS='-m64' --prefix=/Users/fortran/MPI/openmpi_1.7.4-pgi_14.3
> > >
> > > all the way to the "let's try every flag Google says I might use" version of:
> > >
> > > $ ./configure CC=gcc CXX=g++ F77=pgfortran FC=pgfortran CFLAGS='-m64 -Xclang -target-feature -Xclang -aes -mmacosx-version-min=10.8' CXXFLAGS='-m64 -Xclang -target-feature -Xclang -aes -mmacosx-version-min=10.8' LDFLAGS='-m64' FCFLAGS='-m64' FFLAGS='-m64' --prefix=/Users/fortran/MPI/openmpi_1.7.4-pgi_14.3-gcc-mmacosx
> > >
> > > In every case, the configure, make, and make check worked well without error, but running a 'make install' led to:
> > >
> > > Making install in mpi/fortran/use-mpi-ignore-tkr
> > > ../../../../config/install-sh -c -d '/Users/fortran/MPI/openmpi_1.7.4-pgi_14.3-gcc-mmacosx/lib'
> > > /bin/sh ../../../../libtool --mode=install /usr/bin/install -c libmpi_usempi_ignore_tkr.la '/Users/fortran/MPI/openmpi_1.7.4-pgi_14.3-gcc-mmacosx/lib'
> > > libtool: install: /usr/bin/install -c .libs/libmpi_usempi_ignore_tkr.0.dylib /Users/fortran/MPI/openmpi_1.7.4-pgi_14.3-gcc-mmacosx/lib/libmpi_usempi_ignore_tkr.0.dylib
> > > install: .libs/libmpi_usempi_ignore_tkr.0.dylib: No such file or directory
> > > make[3]: *** [install-libLTLIBRARIES] Error 71
> > > make[2]: *** [install-am] Error 2
> > > make[1]: *** [install-recursive] Error 1
> > > make: *** [install-recursive] Error 1
> > >
> > > Any ideas on how to overcome this?
> > >
> > > Thanks,
> > > Matt Thompson
> > > --
> > > "And, isn't sanity really just a one-trick pony anyway? I mean all you
> > > get is one trick: rational thinking. But when you're good and crazy,
> > > oooh, oooh, oooh, the sky is the limit!" -- The Tick
> > >
> > > _______________________________________________
> > > users mailing list
> > > users_at_[hidden]
> > > http://www.open-mpi.org/mailman/listinfo.cgi/users
> >
> >
> > --
> > Jeff Squyres
> > jsquyres_at_[hidden]
> > For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
> >
> > _______________________________________________
> > users mailing list
> > users_at_[hidden]
> > http://www.open-mpi.org/mailman/listinfo.cgi/users
> >
> >
> >
> > --
> > "And, isn't sanity really just a one-trick pony anyway? I mean all you
> > get is one trick: rational thinking. But when you're good and crazy,
> > oooh, oooh, oooh, the sky is the limit!" -- The Tick
> >
> > <OMPI-1.7.4-Logfiles.tar.bz2>_______________________________________________
> > users mailing list
> > users_at_[hidden]
> > http://www.open-mpi.org/mailman/listinfo.cgi/users
>
>
> --
> Jeff Squyres
> jsquyres_at_[hidden]
> For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users
>
>
>
> --
> "And, isn't sanity really just a one-trick pony anyway? I mean all you
> get is one trick: rational thinking. But when you're good and crazy,
> oooh, oooh, oooh, the sky is the limit!" -- The Tick
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users

--
Jeff Squyres
jsquyres_at_[hidden]
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/