Boost logo

Boost Users :

Subject: [Boost-users] [mpi] linking MPI with MPICH2 under Cygwin
From: Murphy, John T. (jtmurphy_at_[hidden])
Date: 2012-09-05 14:05:04


Hello,

I'm getting a very consistent problem trying to link with the Boost.MPI library and MPICH2 under Cygwin.

What seems to be happening is that the libboost_mpi library that is created contains redundant copies of elements from the MPI libraries. For example: It is possible to add debugging code to MPICH2 source code, build MPICH2, build Boost's mpi library against this, then compile, link, and run an executable, with the result that the debugging code is output from the MPICH functions. Then it is possible to modify the MPICH debugging code and rebuild MPICH2, but leave Boost's mpi library so that it is _not_ rebuilt. When the executable is rebuilt and linked to the boost and MPICH libraries, the output indicates that some of the old versions of the debugging code are still being used while other functions have the new code.

The error I am getting is 'Attempting to use an MPI routine before initializing MPICH'. My debugging suggests that during execution there are two distinct copies of the MPICH flag that indicates that MPICH has been initialized; one of these shows that the MPI_Init initialization has been run but the other does not.

Additionally, an MPI program that contains no reference to boost and that compiles and runs cleanly when linked only with the MPICH libraries will crash with the same error if the linker is instructed to link against the boost mpi library, even though nothing in the boost namespace appears in the code.

Has anyone seen this, or have a solution? The issue seems to be something that is happening with linking while the Boost.mpi library is being built, part of which is being done by bjam (aka b2). Is it possible to specify how boost's mpi library will be built and linked against the MPICH libraries, and if so is there a strategy I can use to avoid the problems I am having?

I'm using Boost 1.48 for compatibility with other code we're using. I have the same code built and running on other systems; the error seems to be specific to the Cygwin environment.

Thanks,
John

--
John T. Murphy
Computational Postdoctoral Fellow
Decision and Information Sciences and
Argonne Leadership Computing Facility
Argonne National Laboratory
jtmurphy_at_[hidden]

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net