*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