I have tried the 1.8.8, 1.10.2rc3 and nightly master tarballs with the NAG
Fortran compiler.
Both versions 6.0 and 5.3 are unable to build and/or link Open MPI's
Fortran bindings (MPI and SHMEM) w/o some extra work.
A google search turned up a blog entry dealing with the exact issues I
encountered:

http://baradi09.blogspot.com/2014/08/compiling-openmpi-with-nag-fortran.html


It suggests the following
  + Adding FCFLAGS="-mismatch" to disable some type checking.
  + Building only static libs to avoid issues with libtool and nagfor (see
http://www.open-mpi.org/community/lists/devel/2011/07/9497.php)
  + Patching the *fort*-wrapper.data files (same problem as with libtool)

Together those are sufficient to get 1.10.2rc3 built with both 6.0 and 5.3
version of NAG Fortran.
However, the patching of the *fort*-wrapper.data files is necessary but not
sufficient to fix the linking problems:

$ mpifort -g ring_mpifh.f -o ring_mpifh
NAG Fortran Compiler Release 6.0(Hibiya) Build 1028
Warning: ring_mpifh.f, line 80: Unused external reference MPI_WTICK
Warning: ring_mpifh.f, line 80: Unused external reference MPI_WTIME
Warning: ring_mpifh.f, line 80: Unused external reference PMPI_WTICK
Warning: ring_mpifh.f, line 80: Unused external reference PMPI_WTIME
Obsolescent: ring_mpifh.f, line 10: Fixed source form
[NAG Fortran Compiler normal termination, 5 warnings]
/sandbox/hargrove/OMPI/openmpi-1.10.2rc3-linux-x86_64-nagfor-6/INST/lib/libmpi.a(ompi_mpi_init.o):
In function `ompi_warn_fork':
/sandbox/hargrove/OMPI/openmpi-1.10.2rc3-linux-x86_64-nagfor-6/openmpi-1.10.2rc3/ompi/runtime/ompi_mpi_init.c:193:
undefined reference to `pthread_atfork'
/sandbox/hargrove/OMPI/openmpi-1.10.2rc3-linux-x86_64-nagfor-6/INST/lib/libopen-pal.a(lt1-malloc.o):
In function `ptmalloc_init':
/sandbox/hargrove/OMPI/openmpi-1.10.2rc3-linux-x86_64-nagfor-6/openmpi-1.10.2rc3/opal/mca/memory/linux/arena.c:387:
undefined reference to `pthread_atfork'


I needed to manually append "-lpthreads" to libs_static in the
*fort*-wrapper.data files to resolve that problem.
I suspect configure should have taken care of that, based on the following:

checking if Fortran compiler and POSIX threads work as is... no
[...C++ checks...]
checking if Fortran compiler and POSIX threads work with -Kthread... no
checking if Fortran compiler and POSIX threads work with -kthread... no
checking if Fortran compiler and POSIX threads work with -pthread... no
checking if Fortran compiler and POSIX threads work with -pthreads... no
checking if Fortran compiler and POSIX threads work with -mt... no
checking if Fortran compiler and POSIX threads work with -mthreads... no
checking if Fortran compiler and POSIX threads work with -lpthreads... no
checking if Fortran compiler and POSIX threads work with -llthread... no
checking if Fortran compiler and POSIX threads work with -lpthread... yes


If there is no interest in support for the NAG Fortran compiler, just say
so and I'll drop the subject.
However, if you want more info or need me to test possible fixes, let me
know.

-Paul


-- 
Paul H. Hargrove                          phhargr...@lbl.gov
Computer Languages & Systems Software (CLaSS) Group
Computer Science Department               Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory     Fax: +1-510-486-6900

Reply via email to