- changed title to TimeSeriesHDF5: The MPI_Info_create() function was called before MPI_INIT was invoked.
TimeSeriesHDF5: The MPI_Info_create() function was called before MPI_INIT was invoked.
When Dolfin is compiled with MPI, the code
from dolfin import *
comm = mpi_comm_self()
tst = TimeSeriesHDF5(comm, 'lossless_T')
together with the attached file generates the error message
*** The MPI_Info_create() function was called before MPI_INIT was invoked.
*** This is disallowed by the MPI standard.
*** Your MPI job will now abort.
[fuji:4901] Abort before MPI_INIT completed successfully; not able to guarantee that all other processes were killed!
My active packages are
-- The following optional packages were found:
-- -------------------------------------------
-- (OK) OPENMP
-- (OK) MPI
-- (OK) PETSC
-- (OK) SCOTCH
-- (OK) ZLIB
-- (OK) PYTHON
-- (OK) HDF5
-- (OK) VTK
-- (OK) QT
--
-- The following optional packages were not found:
-- -----------------------------------------------
-- (**) PETSC4PY
-- (**) SLEPC
-- (**) TAO
-- (**) TRILINOS
-- (**) UMFPACK
-- (**) CHOLMOD
-- (**) PASTIX
-- (**) PARMETIS
-- (**) CGAL
-- (**) SPHINX
Comments (11)
-
reporter -
reporter - edited description
-
reporter - attached lossless_T.h5
-
reporter Adding
UnitIntervalMesh(1)
before the
TimeSeriesHDF5(...)
call works around the bug. -
I cannot reproduce this on ubuntu 13.10. I have all packages except tao, sphinx and pastix.
-
reporter - edited description
-
reporter This is still reproducible on latest master. FWIW, the error occurs in
HDF5Interface::open_file
at theMPI_Info_create()
call. I don't see whereMPI_Init
is called. Maybe the error doesn't show for you because on your machine, either ofuse_mpi_io
andHAS_MPI
is false. -
reporter - edited description
-
reporter @chris_richardson You added the
HAS_MPI
guards; could you take a look at whereMPI_Init
was omitted? -
It crashes for me too. I guess this refers back to the thorny issue (discussed on the mailing list) of where and when
MPI_Init()
should be called, in general. Of course, we can just add a call toSubsystemsManager::init_mpi()
in the constructor ofTimeSeriesHDF5
. Mostly (e.g. if you make a Mesh etc.) it will already be initialised anyway. -
- changed status to resolved
Fixed in ad54905
- Log in to comment