Boost logo

Boost Users :

From: Aydın Buluç (aydinbuluc_at_[hidden])
Date: 2007-10-21 04:36:36


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<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >(boost::mpi::communicator
const&, std::basic_string<char, std::char_traits<char>, std::allocator<char>
>*, int, int,
mpl_::bool_<false>)':all_gather_test.cpp:(.gnu.linkonce.t._ZN5boost3mpi6detail14broadcast_implISsEEvRKNS0_12communicatorEPT_iiN4mpl_5bool_ILb0EEE[void
boost::mpi::detail::broadcast_impl<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >(boost::mpi::communicator
const&, std::basic_string<char, std::char_traits<char>, std::allocator<char>
>*, int, int, mpl_::bool_<false>)]+0x27): undefined reference to
`boost::mpi::communicator::operator int() const'
-------------------------------------

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



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