Fortran bindings for OpenMPI not working in Kubuntu 7.04 and 7.10?

Bart Vandewoestyne Bart.Vandewoestyne at
Mon Nov 5 15:59:19 GMT 2007

Dear Ubuntu MOTU-team,
Dear Florian,

I'm not sure who is actually responsible for the openmpi-* 
packages in Kubuntu, so I decided to send this email to the 
addresses I have found in the package descriptions and I kindly 
ask you to forward this mail to whoever you think can help us.

We are trying to get the Fortran bindings for OpenMPI working. 
Our system is a Kubuntu 7.04 Feisty machine.  We are using the 
packaged versions of both OpenMPI and the gfortran compiler which 
have the following version numbers:

bartv at kortrijk:~$ dpkg --list | grep openmpi
ii  openmpi-bin                                1.1-2.3 
                      high performance message passing library
ii  openmpi-common                             1.1-2.3 
                      high performance message passing library
ii  openmpi-dev                                1.1-2.3 
                      high performance message passing library
ii  openmpi-libs0                              1.1-2.3 
                      high performance message passing library

bartv at kortrijk:~$ gfortran --version | head -1
GNU Fortran 95 (GCC) 4.1.2 (Ubuntu 4.1.2-0ubuntu4)

To test if the mpif90 and mpirun commands are working, we used 
the following testprogram:

----------------> begin testprogram <---------------

program test_mpi

use mpi

implicit none

integer :: numprocs, rank, nb, ierr

print *, "Before MPI_Init"
call MPI_Init(ierr)

print *, "Before MPI_Comm_size"
call MPI_Comm_size(MPI_COMM_WORLD, numprocs, ierr)

print *, "Before MPI_Comm_rank"
call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr)

print *,"I am process", rank, "out of ", numprocs

print *, "Before MPI_Finalize"
call MPI_Finalize(ierr)

end program test_mpi

------------------> end testprogram <--------------

If we compile this simply with mpif90, we get undefined references:

bartv at kortrijk:~/mpi_test$ mpif90 test_mpi.f90
/tmp/cc2xO6Dg.o: In function `MAIN__':
test_mpi.f90:(.text+0x9c): undefined reference to `mpi_init_'
test_mpi.f90:(.text+0x11e): undefined reference to `mpi_comm_size_'
test_mpi.f90:(.text+0x1a0): undefined reference to `mpi_comm_rank_'
test_mpi.f90:(.text+0x2d0): undefined reference to `mpi_finalize_'
collect2: ld returned 1 exit status

so we therefore add the -fsecond-underscore option which solves 
the problem:

bartv at kortrijk:~/mpi_test$ mpif90 -fsecond-underscore test_mpi.f90
bartv at kortrijk:~/mpi_test$

However, if we now try to run the binary, our testprogram 
silently exits somewhere in the MPI_Init subroutine without any 
error messages at all:

bartv at kortrijk:~/mpi_test$ mpirun -np 4 a.out
  Before MPI_Init
  Before MPI_Init
  Before MPI_Init
  Before MPI_Init
bartv at kortrijk:~/mpi_test$

and considering the print-statements in our test-program, this is 
not the output that one would expect.

I have also tried to compile this testprogram on a freshly 
installed Kubuntu 7.10 machine and there the problem is even worse:

mc303 at azw:~/test_mpi$ mpif90 test_mpi.f90
mc303 at azw:~/test_mpi$ ls -al a.out
ls: a.out: No such file or directory

The mpif90 command simply doesn't seem to do anything!  No binary 
output is generated and no error messages are shown to the user.

Can somebody from the crew take a look at this and hopefully 
provide us with a solution?

Thanks for helping us out,
Bart Vandewoestyne

More information about the Ubuntu-motu mailing list