*Something* in your code is calling fork() -- it may be an indirect call such as system() or popen() or somesuch. This particular error message is only printed during a "fork pre-hook" that Open MPI installs during MPI_INIT (registered via pthread_atfork()).

Grep through your code for calls to system and popen -- see if any of these are used.

There is no functional difference between "include 'mpif.h'" and "use mpi" in terms of MPI functionality at run time -- the only difference you get is a "better" level of compile-time protection from the Fortran compiler. Specifically, "use mpi" will introduce strict type checking for many (but not all) of the MPI functions at compile time. Hence, the compiler will complain if you forget an IERR parameter to an MPI function, for example.

"use mpi" is not perfect, though -- there are many well-documented problems because of the design of the MPI-2 Fortran 90 interface (which are currently being addressed in MPI-3, if you care :-) ). More generally: "use mpi" will catch *many* compile errors, but not *all* of them.

But to answer your question succinctly: this problem won't be affected by using "use mpi" or "include 'mpif.h'".



On Sep 1, 2009, at 9:02 PM, Greg Fischer wrote:

I'm receiving the error posted at the bottom of this message with a code compiled with Intel Fortran/C Version 11.1 against OpenMPI version 1.3.2.

The same code works correctly when compiled against MPICH2. (We have re-compiled with OpenMPI to take advantage of newly-installed Infiniband hardware. The "ring" test problem appears to work correctly over Infiniband.)

There are no "fork()" calls in our code, so I can only guess that something weird is going on with MPI_COMM_WORLD. The code in question is a Fortran 90 code. Right now, it is being compiled with "include 'mpif.h'" statements at the beginning of each MPI subroutine, instead of making use of the "mpi" modules. Could this be causing the problem? How else should I go about diagnosing the problem?

Thanks,
Greg

--------------------------------------------------------------------------
An MPI process has executed an operation involving a call to the
"fork()" system call to create a child process.  Open MPI is currently
operating in a condition that could result in memory corruption or
other system errors; your MPI job may hang, crash, or produce silent
data corruption.  The use of fork() (or system() or other calls that
create child processes) is strongly discouraged.

The process that invoked fork was:

  Local host:          bl316 (PID 26806)
  MPI_COMM_WORLD rank: 0

If you are *absolutely sure* that your application will successfully
and correctly survive a call to fork(), you may disable this warning
by setting the mpi_warn_on_fork MCA parameter to 0.
--------------------------------------------------------------------------
[bl205:5014] *** An error occurred in MPI_Cart_create
[bl205:5014] *** on communicator MPI_COMM_WORLD
[bl205:5014] *** MPI_ERR_ARG: invalid argument of some other kind
[bl205:5014] *** MPI_ERRORS_ARE_FATAL (your MPI job will now abort)

--------------------------------------------------------------------------
mpirun has exited due to process rank 4 with PID 5010 on
node bl205 exiting without calling "finalize". This may
have caused other processes in the application to be
terminated by signals sent by mpirun (as reported here).
--------------------------------------------------------------------------
[bl205:05008] 7 more processes have sent help message help-mpi- errors.txt / mpi_errors_are_fatal [bl205:05008] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages
_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users


--
Jeff Squyres
jsquy...@cisco.com

Reply via email to