Modify

Opened 8 years ago

Closed 8 years ago

#3565 closed Bugs (fixed)

MPL-related Compilation Error in MPI and Graph Parallel libraries

Reported by: Denis Arnaud <denis.arnaud_boost@…> Owned by: dgregor
Milestone: Boost 1.41.0 Component: mpi
Version: Boost 1.40.0 Severity: Showstopper
Keywords: MPL, MPI, Graph, Graph_Parallel, ASSERT_MPL, sizeof Cc:

Description

When compiling Boost, prepared with CMake of the 1.40.0-cmake2 version, with a GCC 4.4.1 compiler on a 64bit Linux platform, there are two MPL-related errors:


Building CXX object libs/mpi/src/CMakeFiles/boost_mpi-mt-shared.dir/broadcast.cpp.o In file included from /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/mpi/detail/mpi_datatype_cache.hpp:14,

from /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/mpi/datatype.hpp:28, from /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/mpi/communicator.hpp:21, from /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/mpi/collectives.hpp:22, from /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/mpi/collectives_fwd.hpp:20, from /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/mpi/collectives/broadcast.hpp:12, from /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/libs/mpi/src/broadcast.cpp:10:

/home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/mpi/detail/mpi_datatype_oarchive.hpp: In member function âvoid boost::mpi::detail::mpi_datatype_oarchive::save_enum(const T&, mpl_::true_)â: /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/mpi/detail/mpi_datatype_oarchive.hpp:64: error: expected primary-expression before âenumâ /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/mpi/detail/mpi_datatype_oarchive.hpp:64: error: expected â;â before âenumâ make[2]: * [libs/mpi/src/CMakeFiles/boost_mpi-mt-shared.dir/broadcast.cpp.o] Error 1 make[1]: * [libs/mpi/src/CMakeFiles/boost_mpi-mt-shared.dir/all] Error 2 make: * [all] Error 2


For that error, the line 64 of $BOOST/boost/mpi/detail/mpi_datatype_oarchive.hpp must be changed, so that: BOOST_MPL_ASSERT((sizeof(T)==sizeof(int_type)));

be replaced by: BOOST_MPL_ASSERT_RELATION( sizeof(T), ==, sizeof(int_type) );

And:


Building CXX object libs/graph_parallel/src/CMakeFiles/boost_graph_parallel-mt-shared.dir/mpi_process_group.cpp.o In file included from /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/graph/distributed/mpi_process_group.hpp:808,

from /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/libs/graph_parallel/src/mpi_process_group.cpp:14:

/home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/graph/distributed/detail/mpi_process_group.ipp: In function âint boost::graph::distributed::receive(const boost::graph::distributed::mpi_process_group&, int, int, T&)â: /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/graph/distributed/detail/mpi_process_group.ipp:722: error: âstderrâ was not declared in this scope /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/graph/distributed/detail/mpi_process_group.ipp:724: error: there are no arguments to âfprintfâ that depend on a template parameter, so a declaration of âfprintfâ must be available /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/graph/distributed/detail/mpi_process_group.ipp:724: note: (if you use â-fpermissiveâ, G++ will accept your code, but allowing the use of an undeclared name is deprecated) /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/graph/distributed/detail/mpi_process_group.ipp: In function âtypename boost::enable_if<boost::mpi::is_mpi_datatype<T>, std::pair<int, unsigned int> >::type boost::graph::distributed::receive(const boost::graph::distributed::mpi_process_group&, int, int, T*, size_t)â: /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/graph/distributed/detail/mpi_process_group.ipp:743: error: âstderrâ was not declared in this scope /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/graph/distributed/detail/mpi_process_group.ipp:745: error: there are no arguments to âfprintfâ that depend on a template parameter, so a declaration of âfprintfâ must be available /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/graph/distributed/detail/mpi_process_group.ipp: In function âint boost::graph::distributed::receive(const boost::graph::distributed::mpi_process_group&, int, int, T&) [with T = int]â: /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/graph/distributed/detail/mpi_process_group.ipp:609: instantiated from âvoid boost::graph::distributed::mpi_process_group::global_trigger_launcher<Type, Handler>::receive(const boost::graph::distributed::mpi_process_group&, int, int, boost::graph::parallel::trigger_receive_context, int) const [with Type = int, Handler = void (*)(const boost::graph::distributed::mpi_process_group&, int, int, int, bool)]â /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/libs/graph_parallel/src/mpi_process_group.cpp:1111: instantiated from here /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/graph/distributed/detail/mpi_process_group.ipp:722: error: âfprintfâ was not declared in this scope /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/graph/distributed/detail/mpi_process_group.ipp: In function âint boost::graph::distributed::receive(const boost::graph::distributed::mpi_process_group&, int, int, T&) [with T = boost::graph::distributed::mpi_process_group::outgoing_messages]â: /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/graph/distributed/detail/mpi_process_group.ipp:609: instantiated from âvoid boost::graph::distributed::mpi_process_group::global_trigger_launcher<Type, Handler>::receive(const boost::graph::distributed::mpi_process_group&, int, int, boost::graph::parallel::trigger_receive_context, int) const [with Type = boost::graph::distributed::mpi_process_group::outgoing_messages, Handler = void (*)(const boost::graph::distributed::mpi_process_group&, int, int, boost::graph::distributed::mpi_process_group::outgoing_messages&, bool)]â /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/libs/graph_parallel/src/mpi_process_group.cpp:1111: instantiated from here /home/build/dev/fedorasvn/reviews/boost_529563/boost-1.40.0.cmake2/boost/graph/distributed/detail/mpi_process_group.ipp:722: error: âfprintfâ was not declared in this scope make[2]: * [libs/graph_parallel/src/CMakeFiles/boost_graph_parallel-mt-shared.dir/mpi_process_group.cpp.o] Error 1 make[1]: * [libs/graph_parallel/src/CMakeFiles/boost_graph_parallel-mt-shared.dir/all] Error 2 make: * [all] Error 2


For that error, a header file inclusion is missing around the line 22 of $BOOST/boost/graph/distributed/detail/mpi_process_group.ipp: #include <cstdio>

I attach the corresponding patch. To apply it, just go to the $BOOST directory, copy the patch (boost-mpl-compilation-fix.patch file) into there, and type something like: patch -p1 --dry-run < boost-mpl-compilation-fix.patch and, if everything seems fine: patch -p1 < boost-mpl-compilation-fix.patch

Attachments (1)

boost-mpl-compilation-fix.patch (956 bytes) - added by Denis Arnaud <denis.arnaud_boost@…> 8 years ago.

Download all attachments as: .zip

Change History (2)

Changed 8 years ago by Denis Arnaud <denis.arnaud_boost@…>

comment:1 Changed 8 years ago by jewillco

  • Resolution set to fixed
  • Status changed from new to closed

This appears to have already been fixed in r57782 (for the cstdio issue) and r56978 (for the BOOST_MPL_ASSERT issue).

Add Comment

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain dgregor.
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.