Hi,

Apologies if this has been resolved but I couldn't spot a definitive fix in 
this thread:

"Fortran and OpenMPI 1.8.3 compiled with Intel-15 does nothing silently"
http://www.open-mpi.org/community/lists/users/2014/11/25823.php

and the related thread on Intel's forums:
https://software.intel.com/en-us/forums/topic/540673

I recently compiled OpenMPI 1.8.7 with default options and Intel 15.0.3.187:

$ ./configure 
--prefix=/common/debian/8.1/Compiler/intel/2015.3/openmpi/openmpi-1.8.7 CC=icc 
CXX=icpc F77=ifort FC=ifort
$ make all
$ make install

A simple test program:

program test
    use mpi
    integer :: ierr
    real(8) :: a
    call mpi_init(ierr)
    call random_number(a)
    write(*,*)"hello"
    call mpi_finalize(ierr)
end program test

fails if compiled with OpenMP (even if OpenMP is not used):

$ mpif90 test.f90 -openmp
$ ./a.out
Segmentation fault

Running with more cores causes a silent failure:

$ mpirun -np 4 ./a.out 
<no output>

though an exit code of 139 is returned.

The Intel forum thread alleges that this is (at least for MVAPICH2) because 
incorrect Intel runtime sources are included in an MPI
library, which is backed up by looking at the OpenMPI and Intel libraries:

Intel:

$ nm libifcore.so.5 | grep for_rtl_init
0000000000050550 T for_rtl_init_
$ nm libifcoremt.so.5 | grep for_rtl_init
0000000000050ed0 T for_rtl_init_

OpenMPI:

$ nm libmpi_usempif08.so | grep for_rtl_init
00000000000303f0 T for_rtl_init_

I appear to be able to work around this by forcing the use of shared Intel 
libraries:

$ mpif90 test.f90 -openmp -shared-intel
$ ./a.out 
 hello
$ mpirun -np 4 ./a.out 
 hello
 hello
 hello
 hello

Is there a way to resolve this in the OpenMPI build itself instead?

Thanks,

   --James

-- 
James Spencer
http://www.cmth.ph.ic.ac.uk/people/j.spencer/
http://www.github.com/jsspencer

Reply via email to