Dear All:
I am designing parallel code for MPI with linux.
I am using boost::serialization::access to make the data strucutre to be transferred from one process to another process, just like transferring int data type.
I got the errors as follows:--------------------------------------------------------------------
/lustre/boost_2010_6_8/boost_1_43_0/boost/config/stdlib/libstdcpp3.hpp:40:1: warning: "BOOST_HAS_THREADS" redefined<command line>:1:1: warning: this is the location of the previous definition/lustre/boost_2010_6_8/boost_1_43_0/boost/serialization/access.hpp: In static member function âstatic void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive, T = population]â:/lustre/boost_2010_6_8/boost_1_43_0/boost/serialization/serialization.hpp:74: instantiated from âvoid boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive, T = population]â/lustre/boost_2010_6_8/boost_1_43_0/boost/serialization/serialization.hpp:133: instantiated from âvoid boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive, T = population]â/lustre/boost_2010_6_8/boost_1_43_0/boost/archive/detail/iserializer.hpp:182: instantiated from âvoid boost::archive::detail::iserializer::load_object_data(boost::archive::detail::basic_iarchive&, void*, unsigned int) const [with Archive = boost::mpi::packed_iarchive, T = population]âmyNetplanScheduler.cpp:445: instantiated from here/lustre/boost_2010_6_8/boost_1_43_0/boost/serialization/access.hpp:118: error: âstruct populationâ has no member named âserializeâ/lustre/boost_2010_6_8/boost_1_43_0/boost/serialization/access.hpp: In static member function âstatic void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_oarchive, T = population]â:/lustre/boost_2010_6_8/boost_1_43_0/boost/serialization/serialization.hpp:74: instantiated from âvoid boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_oarchive, T = population]â/lustre/boost_2010_6_8/boost_1_43_0/boost/serialization/serialization.hpp:133: instantiated from âvoid boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_oarchive, T = population]â/lustre/boost_2010_6_8/boost_1_43_0/boost/archive/detail/oserializer.hpp:148: instantiated from âvoid boost::archive::detail::oserializer::save_object_data(boost::archive::detail::basic_oarchive&, const void*) const [with Archive = boost::mpi::packed_oarchive, T = population]âmyNetplanScheduler.cpp:445: instantiated from here/lustre/boost_2010_6_8/boost_1_43_0/boost/serialization/access.hpp:118: error: âstruct populationâ has no member named âserializeâmake: *** [myNetplanScheduler.o] Error 1
-------------------------------------------------------------------------
If I add the following to the class population=-------------------------------------------------typedef struct { individual *ind;protected: // provide serialization of this class, for MPI send/recv friend class boost::serialization::access; template<class Archive> void serialize(Archive& ar, const unsigned int version) { ar & ind; };} population;------------------------------------------------
I got more errors: -----------------------------------------------
/lustre/boost_2010_6_8/boost_1_43_0/boost/config/stdlib/libstdcpp3.hpp:40:1: warning: "BOOST_HAS_THREADS" redefined<command line>:1:1: warning: this is the location of the previous definition/lustre/boost_2010_6_8/boost_1_43_0/boost/serialization/access.hpp: In static member function âstatic void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive, T = int*]â:/lustre/boost_2010_6_8/boost_1_43_0/boost/serialization/serialization.hpp:74: instantiated from âvoid boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive, T = int*]â/lustre/boost_2010_6_8/boost_1_43_0/boost/serialization/serialization.hpp:133: instantiated from âvoid boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive, T = int*]â/lustre/boost_2010_6_8/boost_1_43_0/boost/archive/detail/iserializer.hpp:182: instantiated from âvoid boost::archive::detail::iserializer::load_object_data(boost::archive::detail::basic_iarchive&, void*, unsigned int) const [with Archive = boost::mpi::packed_iarchive, T = int*]âmyNetplanScheduler.cpp:448: instantiated from here/lustre/boost_2010_6_8/boost_1_43_0/boost/serialization/access.hpp:118: error: request for member âserializeâ in âtâ, which is of non-class type âint*â/lustre/boost_2010_6_8/boost_1_43_0/boost/serialization/access.hpp: In static member function âstatic void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive, T = double]â:/lustre/boost_2010_6_8/boost_1_43_0/boost/serialization/serialization.hpp:74: instantiated from âvoid boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive, T = double]â/lustre/boost_2010_6_8/boost_1_43_0/boost/serialization/serialization.hpp:133: instantiated from âvoid boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive, T = double]â/lustre/boost_2010_6_8/boost_1_43_0/boost/archive/detail/iserializer.hpp:182: instantiated from âvoid boost::archive::detail::iserializer::load_object_data(boost::archive::detail::basic_iarchive&, void*, unsigned int) const [with Archive = boost::mpi::packed_iarchive, T = double]âmyNetplanScheduler.cpp:448: instantiated from here/lustre/boost_2010_6_8/boost_1_43_0/boost/serialization/access.hpp:118: error: request for member âserializeâ in âtâ, which is of non-class type âdoubleâ
..................---------------------------------------------
Any help is appreciated.
Jack
Aug. 13 2010