/usr/include/boost/property_map/parallel
Edit: /usr/include/boost/property_map/parallel/parallel_property_maps.hpp (8866B)
// (C) Copyright Jeremy Siek 1999-2001.
// Copyright (C) 2006 Trustees of Indiana University
// Authors: Douglas Gregor and Jeremy Siek
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/libs/property_map for documentation.
#ifndef BOOST_PROPERTY_MAP_PARALLEL_PROPERTY_MAPS_HPP
#define BOOST_PROPERTY_MAP_PARALLEL_PROPERTY_MAPS_HPP
// Parallel property maps moved over from
// as part of refactoring out all parallel code from sequential property map
// library.
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
namespace boost {
/** Distributed iterator property map.
*
* This specialization of @ref iterator_property_map builds a
* distributed iterator property map given the local index maps
* generated by distributed graph types that automatically have index
* properties.
*
* This specialization is useful when creating external distributed
* property maps via the same syntax used to create external
* sequential property maps.
*/
template
class iterator_property_map
,
ValueType, Reference>
: public parallel::distributed_property_map
>
{
typedef iterator_property_map local_iterator_map;
typedef parallel::distributed_property_map inherited;
typedef local_property_map
index_map_type;
typedef iterator_property_map self_type;
public:
iterator_property_map() { }
iterator_property_map(RandomAccessIterator cc, const index_map_type& id)
: inherited(id.process_group(), id.global(),
local_iterator_map(cc, id.base())) { }
};
/** Distributed iterator property map.
*
* This specialization of @ref iterator_property_map builds a
* distributed iterator property map given a distributed index
* map. Only the local portion of the distributed index property map
* is utilized.
*
* This specialization is useful when creating external distributed
* property maps via the same syntax used to create external
* sequential property maps.
*/
template
class iterator_property_map<
RandomAccessIterator,
parallel::distributed_property_map,
ValueType, Reference
>
: public parallel::distributed_property_map
>
{
typedef iterator_property_map local_iterator_map;
typedef parallel::distributed_property_map inherited;
typedef parallel::distributed_property_map
index_map_type;
public:
iterator_property_map() { }
iterator_property_map(RandomAccessIterator cc, const index_map_type& id)
: inherited(id.process_group(), id.global(),
local_iterator_map(cc, id.base())) { }
};
namespace parallel {
// Generate an iterator property map with a specific kind of ghost
// cells
template
distributed_property_map >
make_iterator_property_map(RandomAccessIterator cc,
local_property_map index_map)
{
typedef distributed_property_map<
ProcessGroup, GlobalMap,
iterator_property_map >
result_type;
return result_type(index_map.process_group(), index_map.global(),
make_iterator_property_map(cc, index_map.base()));
}
} // end namespace parallel
/** Distributed safe iterator property map.
*
* This specialization of @ref safe_iterator_property_map builds a
* distributed iterator property map given the local index maps
* generated by distributed graph types that automatically have index
* properties.
*
* This specialization is useful when creating external distributed
* property maps via the same syntax used to create external
* sequential property maps.
*/
template
class safe_iterator_property_map
,
ValueType, Reference>
: public parallel::distributed_property_map
>
{
typedef safe_iterator_property_map local_iterator_map;
typedef parallel::distributed_property_map inherited;
typedef local_property_map index_map_type;
public:
safe_iterator_property_map() { }
safe_iterator_property_map(RandomAccessIterator cc, std::size_t n,
const index_map_type& id)
: inherited(id.process_group(), id.global(),
local_iterator_map(cc, n, id.base())) { }
};
/** Distributed safe iterator property map.
*
* This specialization of @ref safe_iterator_property_map builds a
* distributed iterator property map given a distributed index
* map. Only the local portion of the distributed index property map
* is utilized.
*
* This specialization is useful when creating external distributed
* property maps via the same syntax used to create external
* sequential property maps.
*/
template
class safe_iterator_property_map<
RandomAccessIterator,
parallel::distributed_property_map,
ValueType, Reference>
: public parallel::distributed_property_map
>
{
typedef safe_iterator_property_map local_iterator_map;
typedef parallel::distributed_property_map inherited;
typedef parallel::distributed_property_map
index_map_type;
public:
safe_iterator_property_map() { }
safe_iterator_property_map(RandomAccessIterator cc, std::size_t n,
const index_map_type& id)
: inherited(id.process_group(), id.global(),
local_iterator_map(cc, n, id.base())) { }
};
}
#include
#endif /* BOOST_PROPERTY_MAP_PARALLEL_PROPERTY_MAPS_HPP */