Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
boost::parallel Namespace Reference

Namespaces

 detail
 

Classes

struct  attach_distributed_object
 A special type used as a flag to a process group constructor that indicates that the copy of a process group will represent a new distributed data structure. More...
 
struct  basic_reduce
 Reduction operation used to reconcile differences between local and remote values for a particular key in a property map. More...
 
struct  batch_process_group_tag
 
struct  block
 
struct  bsp_process_group_tag
 
class  caching_property_map
 Property map that caches values placed in it but does not broadcast values to remote processors. More...
 
class  distributed_property_map
 Distributed property map adaptor. More...
 
class  global_index_map
 
struct  immediate_process_group_tag
 
struct  is_commutative
 
struct  linear_process_group_tag
 
struct  locking_process_group_tag
 
struct  maximum
 
struct  messaging_process_group_tag
 
struct  minimum
 
struct  oned_block_cyclic
 
struct  process_group_archetype
 
struct  process_group_tag
 
class  random_distribution
 
struct  spawning_process_group_tag
 
struct  sum
 
struct  twod_block_cyclic
 
class  twod_random
 
struct  uneven_block
 
class  variant_distribution
 

Enumerations

enum  consistency_model {
  cm_forward = 1 << 0,
  cm_backward = 1 << 1,
  cm_bidirectional = cm_forward | cm_backward,
  cm_flush = 1 << 2,
  cm_reset = 1 << 3,
  cm_clear = 1 << 4
}
 The consistency model used by the distributed property map. More...
 
enum  trigger_receive_context {
  trc_none,
  trc_in_synchronization,
  trc_early_receive,
  trc_out_of_band,
  trc_irecv_out_of_band
}
 Describes the context in which a trigger is being invoked to receive a message. More...
 

Functions

template<typename ProcessGroup , typename InputIterator , typename OutputIterator , typename BinaryOperation >
OutputIterator reduce (ProcessGroup pg, typename ProcessGroup::process_id_type root, InputIterator first, InputIterator last, OutputIterator out, BinaryOperation bin_op)
 
template<typename ProcessGroup , typename T , typename BinaryOperation >
T all_reduce (ProcessGroup pg, const T &value, BinaryOperation bin_op)
 
template<typename ProcessGroup , typename T , typename BinaryOperation >
T scan (ProcessGroup pg, const T &value, BinaryOperation bin_op)
 
template<typename ProcessGroup , typename InputIterator , typename T >
void all_gather (ProcessGroup pg, InputIterator first, InputIterator last, std::vector< T > &out)
 
template<typename PropertyMap , typename Key >
caching_property_map
< PropertyMap >::value_type 
get (const caching_property_map< PropertyMap > &pm, const Key &key)
 
template<typename PropertyMap , typename Key , typename Value >
void local_put (const caching_property_map< PropertyMap > &pm, const Key &key, const Value &value)
 
template<typename PropertyMap , typename Key , typename Value >
void cache (const caching_property_map< PropertyMap > &pm, const Key &key, const Value &value)
 
template<typename PropertyMap , typename Key , typename Value >
void put (const caching_property_map< PropertyMap > &pm, const Key &key, const Value &value)
 
template<typename PropertyMap >
caching_property_map< PropertyMap > make_caching_property_map (const PropertyMap &pm)
 
template<typename ProcessGroup , typename GlobalMap , typename StorageMap >
void request (const distributed_property_map< ProcessGroup, GlobalMap, StorageMap > &pm, typename distributed_property_map< ProcessGroup, GlobalMap, StorageMap >::key_type const &key)
 
template<typename ProcessGroup , typename GlobalMap , typename StorageMap >
distributed_property_map
< ProcessGroup, GlobalMap,
StorageMap >::value_type 
get (const distributed_property_map< ProcessGroup, GlobalMap, StorageMap > &pm, typename distributed_property_map< ProcessGroup, GlobalMap, StorageMap >::key_type const &key)
 Get the value associated with a particular key. More...
 
template<typename ProcessGroup , typename GlobalMap , typename StorageMap >
void put (const distributed_property_map< ProcessGroup, GlobalMap, StorageMap > &pm, typename distributed_property_map< ProcessGroup, GlobalMap, StorageMap >::key_type const &key, typename distributed_property_map< ProcessGroup, GlobalMap, StorageMap >::value_type const &value)
 Put a value associated with the given key into the property map. More...
 
template<typename ProcessGroup , typename GlobalMap , typename StorageMap >
void local_put (const distributed_property_map< ProcessGroup, GlobalMap, StorageMap > &pm, typename distributed_property_map< ProcessGroup, GlobalMap, StorageMap >::key_type const &key, typename distributed_property_map< ProcessGroup, GlobalMap, StorageMap >::value_type const &value)
 Put a value associated with a given key into the local view of the property map. More...
 
template<typename ProcessGroup , typename GlobalMap , typename StorageMap >
void cache (const distributed_property_map< ProcessGroup, GlobalMap, StorageMap > &pm, typename distributed_property_map< ProcessGroup, GlobalMap, StorageMap >::key_type const &key, typename distributed_property_map< ProcessGroup, GlobalMap, StorageMap >::value_type const &value)
 Cache the value associated with the given remote key. More...
 
template<typename ProcessGroup , typename GlobalMap , typename StorageMap >
void synchronize (distributed_property_map< ProcessGroup, GlobalMap, StorageMap > &pm)
 Synchronize the property map. More...
 
template<typename ProcessGroup , typename GlobalMap , typename StorageMap >
distributed_property_map
< ProcessGroup, GlobalMap,
StorageMap > 
make_distributed_property_map (const ProcessGroup &pg, GlobalMap global, StorageMap storage)
 Create a distributed property map. More...
 
template<typename ProcessGroup , typename GlobalMap , typename StorageMap , typename Reduce >
distributed_property_map
< ProcessGroup, GlobalMap,
StorageMap > 
make_distributed_property_map (const ProcessGroup &pg, GlobalMap global, StorageMap storage, Reduce reduce)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename RandomAccessIterator , typename ProcessGroup , typename GlobalMap , typename StorageMap >
distributed_property_map
< ProcessGroup, GlobalMap,
iterator_property_map
< RandomAccessIterator,
StorageMap > > 
make_iterator_property_map (RandomAccessIterator cc, local_property_map< ProcessGroup, GlobalMap, StorageMap > index_map)
 
void wait (process_group_archetype &)
 
void synchronize (process_group_archetype &)
 
int process_id (const process_group_archetype &)
 
int num_processes (const process_group_archetype &)
 
template<typename T >
void send (process_group_archetype &, int, int, const T &)
 
template<typename T >
process_group_archetype::process_id_type receive (const process_group_archetype &pg, process_group_archetype::process_id_type source, int tag, T &value)
 
template<typename T >
std::pair
< process_group_archetype::process_id_type,
std::size_t > 
receive (const process_group_archetype &pg, int tag, T values[], std::size_t n)
 
template<typename T >
std::pair
< process_group_archetype::process_id_type,
std::size_t > 
receive (const process_group_archetype &pg, process_group_archetype::process_id_type source, int tag, T values[], std::size_t n)
 
template<typename ProcessGroup , typename Class , typename T >
void simple_trigger (ProcessGroup &pg, int tag, Class *self, void(Class::*pmf)(int source, int tag, const T &data, trigger_receive_context context), int)
 Simplified trigger interface that reduces the amount of code required to connect a process group trigger to a handler that is just a bound member function. More...
 
template<typename ProcessGroup , typename Class , typename T , typename Result >
void simple_trigger (ProcessGroup &pg, int tag, Class *self, Result(Class::*pmf)(int source, int tag, const T &data, trigger_receive_context context), long)
 Simplified trigger interface that reduces the amount of code required to connect a process group trigger with a reply to a handler that is just a bound member function. More...
 
template<typename ProcessGroup , typename Class , typename T , typename Result >
void simple_trigger (ProcessGroup &pg, int tag, Class *self, Result(Class::*pmf)(int source, int tag, const T &data, trigger_receive_context context))
 Simplified trigger interface that reduces the amount of code required to connect a process group trigger to a handler that is just a bound member function. More...
 

Enumeration Type Documentation

The consistency model used by the distributed property map.

Enumerator
cm_forward 
cm_backward 
cm_bidirectional 
cm_flush 
cm_reset 
cm_clear 

Describes the context in which a trigger is being invoked to receive a message.

Enumerator
trc_none 

No trigger is active at this time.

trc_in_synchronization 

The trigger is being invoked during synchronization, at the end of a superstep.

trc_early_receive 

The trigger is being invoked as an "early" receive of a message that was sent through the normal "send" operations to be received by the end of the superstep, but the process group sent the message earlier to clear its buffers.

trc_out_of_band 

The trigger is being invoked for an out-of-band message, which must be handled immediately.

trc_irecv_out_of_band 

The trigger is being invoked for an out-of-band message, which must be handled immediately and has alredy been received by an MPI_IRecv call.

Function Documentation

template<typename ProcessGroup , typename InputIterator , typename T >
void boost::parallel::all_gather ( ProcessGroup  pg,
InputIterator  first,
InputIterator  last,
std::vector< T > &  out 
)
template<typename ProcessGroup , typename GlobalMap , typename StorageMap >
void boost::parallel::cache ( const distributed_property_map< ProcessGroup, GlobalMap, StorageMap > &  pm,
typename distributed_property_map< ProcessGroup, GlobalMap, StorageMap >::key_type const &  key,
typename distributed_property_map< ProcessGroup, GlobalMap, StorageMap >::value_type const &  value 
)
inline

Cache the value associated with the given remote key.

If the key is local, ignore the operation.

References boost::xpressive::first, process_id(), and boost::program_options::value().

template<typename PropertyMap , typename Key >
caching_property_map<PropertyMap>::value_type boost::parallel::get ( const caching_property_map< PropertyMap > &  pm,
const Key &  key 
)
inline
template<typename ProcessGroup , typename GlobalMap , typename StorageMap >
distributed_property_map<ProcessGroup, GlobalMap, StorageMap>::value_type boost::parallel::get ( const distributed_property_map< ProcessGroup, GlobalMap, StorageMap > &  pm,
typename distributed_property_map< ProcessGroup, GlobalMap, StorageMap >::key_type const &  key 
)
inline

Get the value associated with a particular key.

Retrieves the value associated with the given key. If the key denotes a locally-owned object, it returns the value from the local property map; if the key denotes a remotely-owned object, retrieves the value of the ghost cell for that key, which may be the default value provided by the reduce operation.

Complexity: For a local key, O(1) get operations on the underlying property map. For a non-local key, O(1) accesses to the ghost cells.

References boost::get(), boost::multiprecision::backends::p, and process_id().

template<typename PropertyMap , typename Key , typename Value >
void boost::parallel::local_put ( const caching_property_map< PropertyMap > &  pm,
const Key &  key,
const Value &  value 
)
inline
template<typename ProcessGroup , typename GlobalMap , typename StorageMap >
void boost::parallel::local_put ( const distributed_property_map< ProcessGroup, GlobalMap, StorageMap > &  pm,
typename distributed_property_map< ProcessGroup, GlobalMap, StorageMap >::key_type const &  key,
typename distributed_property_map< ProcessGroup, GlobalMap, StorageMap >::value_type const &  value 
)

Put a value associated with a given key into the local view of the property map.

This operation is equivalent to put, but with one exception: no message will be sent to the owning processor in the case of a remote update. The effect is that any value written via local_put for a remote key may be overwritten in the next synchronization round.

References boost::multiprecision::backends::p, process_id(), put(), boost::put(), and boost::program_options::value().

template<typename PropertyMap >
caching_property_map<PropertyMap> boost::parallel::make_caching_property_map ( const PropertyMap &  pm)
inline
template<typename ProcessGroup , typename GlobalMap , typename StorageMap >
distributed_property_map<ProcessGroup, GlobalMap, StorageMap> boost::parallel::make_distributed_property_map ( const ProcessGroup &  pg,
GlobalMap  global,
StorageMap  storage 
)
inline

Create a distributed property map.

template<typename ProcessGroup , typename GlobalMap , typename StorageMap , typename Reduce >
distributed_property_map<ProcessGroup, GlobalMap, StorageMap> boost::parallel::make_distributed_property_map ( const ProcessGroup &  pg,
GlobalMap  global,
StorageMap  storage,
Reduce  reduce 
)
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

template<typename RandomAccessIterator , typename ProcessGroup , typename GlobalMap , typename StorageMap >
distributed_property_map<ProcessGroup, GlobalMap, iterator_property_map<RandomAccessIterator, StorageMap> > boost::parallel::make_iterator_property_map ( RandomAccessIterator  cc,
local_property_map< ProcessGroup, GlobalMap, StorageMap >  index_map 
)
int boost::parallel::num_processes ( const process_group_archetype &  )
template<typename PropertyMap , typename Key , typename Value >
void boost::parallel::put ( const caching_property_map< PropertyMap > &  pm,
const Key &  key,
const Value &  value 
)
inline
template<typename ProcessGroup , typename GlobalMap , typename StorageMap >
void boost::parallel::put ( const distributed_property_map< ProcessGroup, GlobalMap, StorageMap > &  pm,
typename distributed_property_map< ProcessGroup, GlobalMap, StorageMap >::key_type const &  key,
typename distributed_property_map< ProcessGroup, GlobalMap, StorageMap >::value_type const &  value 
)

Put a value associated with the given key into the property map.

When the key denotes a locally-owned object, this operation updates the underlying local property map. Otherwise, the local ghost cell is updated and a "put" message is sent to the processor owning this key.

Complexity: For a local key, O(1) put operations on the underlying property map. For a nonlocal key, O(1) accesses to the ghost cells and will send O(1) messages of size O(sizeof(key) + sizeof(value)).

References cm_forward, boost::multiprecision::backends::p, process_id(), put(), boost::put(), and boost::program_options::value().

template<typename T >
process_group_archetype::process_id_type boost::parallel::receive ( const process_group_archetype &  pg,
process_group_archetype::process_id_type  source,
int  tag,
T value 
)
template<typename T >
std::pair<process_group_archetype::process_id_type, std::size_t> boost::parallel::receive ( const process_group_archetype &  pg,
int  tag,
T  values[],
std::size_t  n 
)
template<typename T >
std::pair<process_group_archetype::process_id_type, std::size_t> boost::parallel::receive ( const process_group_archetype &  pg,
process_group_archetype::process_id_type  source,
int  tag,
T  values[],
std::size_t  n 
)
template<typename ProcessGroup , typename InputIterator , typename OutputIterator , typename BinaryOperation >
OutputIterator boost::parallel::reduce ( ProcessGroup  pg,
typename ProcessGroup::process_id_type  root,
InputIterator  first,
InputIterator  last,
OutputIterator  out,
BinaryOperation  bin_op 
)
template<typename ProcessGroup , typename GlobalMap , typename StorageMap >
void boost::parallel::request ( const distributed_property_map< ProcessGroup, GlobalMap, StorageMap > &  pm,
typename distributed_property_map< ProcessGroup, GlobalMap, StorageMap >::key_type const &  key 
)
inline
template<typename ProcessGroup , typename T , typename BinaryOperation >
T boost::parallel::scan ( ProcessGroup  pg,
const T value,
BinaryOperation  bin_op 
)
inline

References T.

template<typename ProcessGroup , typename Class , typename T >
void boost::parallel::simple_trigger ( ProcessGroup &  pg,
int  tag,
Class *  self,
void(Class::*)(int source, int tag, const T &data, trigger_receive_context context)  pmf,
int   
)
inline

Simplified trigger interface that reduces the amount of code required to connect a process group trigger to a handler that is just a bound member function.

INTERNAL ONLY

Referenced by boost::graph::distributed::named_graph< Graph, Vertex, Edge, Config >::setup_triggers(), and simple_trigger().

template<typename ProcessGroup , typename Class , typename T , typename Result >
void boost::parallel::simple_trigger ( ProcessGroup &  pg,
int  tag,
Class *  self,
Result(Class::*)(int source, int tag, const T &data, trigger_receive_context context)  pmf,
long   
)
inline

Simplified trigger interface that reduces the amount of code required to connect a process group trigger with a reply to a handler that is just a bound member function.

INTERNAL ONLY

template<typename ProcessGroup , typename Class , typename T , typename Result >
void boost::parallel::simple_trigger ( ProcessGroup &  pg,
int  tag,
Class *  self,
Result(Class::*)(int source, int tag, const T &data, trigger_receive_context context)  pmf 
)
inline

Simplified trigger interface that reduces the amount of code required to connect a process group trigger to a handler that is just a bound member function.

References simple_trigger().

void boost::parallel::synchronize ( process_group_archetype &  )
template<typename ProcessGroup , typename GlobalMap , typename StorageMap >
void boost::parallel::synchronize ( distributed_property_map< ProcessGroup, GlobalMap, StorageMap > &  pm)
void boost::parallel::wait ( process_group_archetype &  )