Hi all,
I was a happy user of Boost.MPI that was working together with the
underlying OpenMPI. However, MPI_THREAD_MULTIPLE support of OpenMPI is quite
clumsy and it hangs frequently (OpenMPI developers call this as being
"lightly tested"). So, I installed MPICH2 that claims to supports
thread-safe MPI.
At the same time, I didn't want to remove my working OpenMPI implementation
and my old Boost libraries built on top of that. Therefore, I rebuilt Boost
(--with-mpi) using the new mpicxx of MPICH (so that it finds the correct
MPICH2 directories, etc) on a different location .
Everything went ok during compilation and installation. However, I have
compilation errors when trying to run any mpi program. For example, with the
test suite provided by Boost.MPI itself, I get errors like (this is for
all_gather.cpp specifically but I get similar ones with every other test):
-------------------------------------
/tmp/ccbyPLBK.o: In function `void
boost::mpi::detail::all_gather_impl<int>(boost::mpi::communicator const&,
int const*, int, int*,
mpl_::bool_<true>)':all_gather_test.cpp:(.gnu.linkonce.t._ZN5boost3mpi6detail15all_gather_implIiEEvRKNS0_12communicatorEPKT_iPS6_N4mpl_5bool_ILb1EEE[void
boost::mpi::detail::all_gather_impl<int>(boost::mpi::communicator const&,
int const*, int, int*, mpl_::bool_<true>)]+0x1c): undefined reference to
`boost::mpi::communicator::operator int() const'
/tmp/ccbyPLBK.o: In function `void
boost::mpi::detail::broadcast_impl *, int, int,
mpl_::bool_<false>)':all_gather_test.cpp:(.gnu.linkonce.t._ZN5boost3mpi6detail14broadcast_implISsEEvRKNS0_12communicatorEPT_iiN4mpl_5bool_ILb0EEE[void
boost::mpi::detail::broadcast_impl I "quadruple-checked" to see that the versions of mpicxx/libraries/include
directories all belong to the new installation of MPICH2 and not remainders
of old OpenMPI installation. Thus, I don't think that is a binary
incompatibility issue.
MPICH2 implementation works OK alone (without boost) and the old
Boost+OpenMPI installation libraries also still work.
But the new Boost+MPICH2 libraries... ihhh :(
Any suggestions and pointers will be appreciated.
Thanks,
-- Aydin