Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:40:59

0001 // (C) Copyright 2005 Matthias Troyer
0002 // (C) Copyright 2006 Douglas Gregor <doug.gregor -at gmail.com>
0003 
0004 // Use, modification and distribution is subject to the Boost Software
0005 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
0006 // http://www.boost.org/LICENSE_1_0.txt)
0007 
0008 //  Authors: Matthias Troyer
0009 //           Douglas Gregor
0010 
0011 /** @file skeleton_and_content.hpp
0012  *
0013  *  This header provides facilities that allow the structure of data
0014  *  types (called the "skeleton") to be transmitted and received
0015  *  separately from the content stored in those data types. These
0016  *  facilities are useful when the data in a stable data structure
0017  *  (e.g., a mesh or a graph) will need to be transmitted
0018  *  repeatedly. In this case, transmitting the skeleton only once
0019  *  saves both communication effort (it need not be sent again) and
0020  *  local computation (serialization need only be performed once for
0021  *  the content).
0022  */
0023 #ifndef BOOST_MPI_SKELETON_AND_CONTENT_HPP
0024 #define BOOST_MPI_SKELETON_AND_CONTENT_HPP
0025 
0026 #include <boost/mpi/config.hpp>
0027 #include <boost/archive/detail/auto_link_archive.hpp>
0028 #include <boost/mpi/skeleton_and_content_types.hpp>
0029 
0030 namespace boost { namespace mpi {
0031 
0032 namespace detail {
0033   typedef boost::mpi::detail::forward_skeleton_oarchive<boost::mpi::packed_skeleton_oarchive,boost::mpi::packed_oarchive> type1;
0034   typedef boost::mpi::detail::forward_skeleton_iarchive<boost::mpi::packed_skeleton_iarchive,boost::mpi::packed_iarchive> type2;
0035 }
0036 
0037 
0038 } } // end namespace boost::mpi
0039 
0040 #include <boost/mpi/detail/content_oarchive.hpp>
0041 
0042 // For any headers that have provided declarations based on forward
0043 // declarations of the contents of this header, include definitions
0044 // for those declarations. This means that the inclusion of
0045 // skeleton_and_content.hpp enables the use of skeleton/content
0046 // transmission throughout the library.
0047 #ifdef BOOST_MPI_BROADCAST_HPP
0048 #  include <boost/mpi/detail/broadcast_sc.hpp>
0049 #endif
0050 
0051 #ifdef BOOST_MPI_COMMUNICATOR_HPP
0052 #  include <boost/mpi/detail/communicator_sc.hpp>
0053 #endif
0054 
0055 // required by export
0056 BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::mpi::packed_skeleton_oarchive)
0057 BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::mpi::packed_skeleton_iarchive)
0058 BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::mpi::detail::type1)
0059 BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::mpi::detail::type2)
0060 
0061 BOOST_SERIALIZATION_USE_ARRAY_OPTIMIZATION(boost::mpi::packed_skeleton_oarchive)
0062 BOOST_SERIALIZATION_USE_ARRAY_OPTIMIZATION(boost::mpi::packed_skeleton_iarchive)
0063 
0064 #endif // BOOST_MPI_SKELETON_AND_CONTENT_HPP