HI all,
I have some code that uses parallel netCDF. I've run successfully on Titan (using the Cray MPICH derivative) and on my laptop (also running MPICH). However, when I run on one of our clusters running OMPI, the code barfs in MPI_Finalize() and doesn't write the complete/expected output files:
[:17472] *** An error occurred in MPI_File_set_errhandler
[:17472] *** on a NULL communicator
[:17472] *** Unknown error
[:17472] *** MPI_ERRORS_ARE_FATAL: your MPI job will now abort
--------------------------------------------------------------------------
An MPI process is aborting at a time when it cannot guarantee that all
of its peer processes in the job will be killed properly. You should
double check that everything has shut down cleanly.
Reason: After MPI_FINALIZE was invoked
Local host:
PID: 17472
--------------------------------------------------------------------------
The stacks are:
PMPI_Finalize (pfinalize.c:46)
ompi_mpi_finalize (ompi_mpi_finalize.c:272)
ompi_file_finalize (file.c:196)
opal_obj_run_destructors (opal_object.h:448)
file_destructor (file.c:273)
mca_to_romio_file_close (io_romio_file_open.c:59)
PMPI_File_set_errhandler (pfile_set_errhandler.c:47)
ompi_mpi_errors_are_fatal_comm_handler (errhandler_predefined.c:52)
This is with OMPI 1.6.2 It is pnetCDF 1.3.1 on all 3 platforms.
The code appears to have the right participants opening/closing the right files on the right communicators (a mixture of rank 0s on subcomms opening across their subcomms and some nodes opening on MPI_COMM_SELF). It looks to me like some IO is getting delayed until MPI_Finalize() suggesting perhaps I missed a wait() or close() pnetCDF call.
I don't necessarily think this is a bug in OMPI, I just don't know where to start looking in my code, since it is working fine on the two different versions of MPICH.
Thanks.
|