Parallel Vector container. More...
Public Member Functions | |
std::enable_if<(is_distribution_view< DistSpecView >::value||detail::has_is_composed_dist_spec< DistSpecView >::value) &&is_view_based< partition_type >::value &&is_view_based< mapper_type >::value >::type | redistribute (DistSpecView const &dist_view) |
Redistribute the data stored in the container to match the distribution specified by the distribution view provided. More... | |
std::enable_if<(is_distribution_view< DistSpecView >::value||detail::has_is_composed_dist_spec< DistSpecView >::value) &&is_view_based< partition_type >::value &&is_view_based< mapper_type >::value >::type | redistribute (DistSpecView const *dist_view) |
Redistribute the data stored in the container to match the distribution specified by the distribution view provided. More... | |
void | destroy (void) |
Used as a target method for rmis implementing one-sided destruction, as a pointer to member variable referring to the destructor cannot be initialized, per the standard. Used when container is an element of another container. | |
size_t | get_num_locations (void) const |
location_type | get_location_id (void) const |
boost::shared_ptr< vector< T, OptionalParams... > > | shared_from_this () |
Constructors | |
Distribution metadata type used for coarsening | |
vector (void) | |
vector (size_t n) | |
Construct a vector with of size n . More... | |
vector (size_t n, value_type const &default_value) | |
Construct a vector with of size n filled with value default_value . More... | |
vector (partition_type const &ps) | |
Construct a vector given a partitioner. More... | |
vector (partition_type const &ps, value_type const &default_value) | |
Create an array with a given instance of partition and construct all elements with a default value. More... | |
vector (size_t n, mapper_type const &mapper) | |
Construct a vector given a mapper. More... | |
vector (partition_type const &partitioner, mapper_type const &mapper) | |
Construct a vector given a partitioner and a mapper. More... | |
template<typename DistSpecView > | |
vector (DistSpecView const &dist_view, typename std::enable_if< is_distribution_view< DistSpecView >::value &&!detail::has_is_composed_dist_spec< DistSpecView >::value >::type *=0) | |
Create a vector with a distribution that is specified by the dist_view provided. More... | |
template<typename DistSpecView > | |
vector (DistSpecView const &dist_view, value_type const &default_value, typename std::enable_if< is_distribution_view< DistSpecView >::value &&!detail::has_is_composed_dist_spec< DistSpecView >::value >::type *=0) | |
Create a vector with a distribution that is specified by the dist_view provided, and initialize all elements to default_value . More... | |
template<typename DP > | |
vector (size_t n, value_type const &default_value, DP const &dis_policy) | |
Create a vector with a given size and default value where the value type of the container is itself a parallel container. More... | |
template<typename X , typename Y > | |
vector (boost::tuples::cons< X, Y > dims) | |
Create a vector of vectors with given n-dimensional size. More... | |
template<typename X , typename Y , typename DP > | |
vector (boost::tuples::cons< X, Y > dims, DP const &dis_policy) | |
Create a vector of vectors with given n-dimensional size. More... | |
template<typename SizesView > | |
vector (SizesView const &sizes_view, typename boost::enable_if< boost::mpl::and_< std::is_same< size_type, typename SizesView::size_type >, boost::mpl::not_< is_distribution_view< SizesView > > > >::type *=0) | |
Constructor for composed containers. For an m level composed container, sizes_view is an m-1 level composed view representing the sizes of the nested containers. | |
template<typename ComposedSpec > | |
vector (ComposedSpec const &comp_spec, typename std::enable_if< detail::has_is_composed_dist_spec< ComposedSpec >::value >::type *=0) | |
Constructor for composed containers. For an m level composed container, comp_spec contains specifications of the distributions of the current container and each of its elements. More... | |
template<typename DistSpecView > | |
vector (std::vector< DistSpecView > const &dist_specs, typename std::enable_if< is_distribution_view< DistSpecView >::value &&!detail::has_is_composed_dist_spec< DistSpecView >::value >::type *=0) | |
Constructor for composed containers. For an m level composed container, dist_specs contains specifications of the distributions to be used at each level of the composed container. More... | |
Memory and Domain Management | |
void | resize (size_type n) |
Destroy the distribution of the container (including all of its elements) and recreate the container with a different size. More... | |
void | flush (void) |
Flushes out all pending requests to the vector. More... | |
Element Manipulation | |
void | set_element (index_type const &idx, value_type const &val) |
Sets the element specified by the index to the provided value. More... | |
void | set_elements (index_type const &idx, View &&vals) |
Sets a range of elements starting with a given index to a sequence of provided values. More... | |
value_type | get_element (index_type const &idx) const |
Returns the value of the element specified by the index. More... | |
future< value_type > | get_element_split (index_type const &idx) |
Returns a stapl::future holding the value of the element specified by the index. More... | |
void | apply_set (gid_type const &gid, F const &f) |
Applies a function f to the element specified by the GID. More... | |
F::result_type | apply_get (gid_type const &gid, F const &f) |
Applies a function f to the element specified by the GID, and returns the result. More... | |
F::result_type | apply_get (gid_type const &gid, F const &f) const |
Applies a function f to the element specified by the GID, and returns the result. More... | |
Public Types | |
typedef base_type::distribution_type | distribution_type |
typedef traits_type::manager_type | manager_type |
typedef T | value_type |
typedef traits_type::domain_type | domain_type |
typedef domain_type::index_type | gid_type |
typedef gid_type | index_type |
typedef size_t | size_type |
typedef mapper_type::domain_type | map_dom_t |
Domain used by the mapper. | |
typedef distribution_type::const_iterator | const_iterator |
Memory and Domain Management | |
domain_type | domain (void) const |
void | migrate (gid_type const &gid, location_type destination) |
Migrates the element specified by the gid to the destination location. More... | |
size_type | size (void) const |
Return the number of elements in the container. More... | |
bool | empty (void) const |
distribution_type & | distribution (void) |
distribution_type const & | distribution (void) const |
distribution_type * | get_distribution (void) |
locality_info | locality (gid_type gid) |
Return locality information about the element specified by the gid. More... | |
bool | is_local (Indices const &... i) const |
Returns true if the element specified by the GID formed from the index components provided is stored on this location, or false otherwise. | |
rmi_handle::reference | get_rmi_handle_reference (void) |
std::shared_ptr< DistSpecView > | get_spec (DistSpecView const &dist_view, typename std::enable_if< !detail::has_is_composed_dist_spec< DistSpecView >::value >::type *=0) |
Return a shared_ptr to the distribution specification for this container instance. More... | |
std::shared_ptr< typename ComposedSpec::distribution_spec > | get_spec (ComposedSpec const &dist_view, typename std::enable_if< detail::has_is_composed_dist_spec< ComposedSpec >::value >::type *=0) |
Return a shared_ptr to the distribution specification for this container instance that is part of a composed container instantiation. More... | |
Element Manipulation | |
reference | operator[] (gid_type const &gid) |
Construct a reference to a specific gid of the vector. More... | |
reference | front (void) |
Construct a reference to the first element of the vector. More... | |
reference | back (void) |
Construct a reference to the last element of the vector. More... | |
void | add (value_type const &val) |
Insert locally a new element into the container. More... | |
template<typename View = vector_view<vector>> | |
void | insert (gid_type const &gid, value_type const &val, View *view=nullptr) |
Add an element val at the gid position. More... | |
template<typename View = vector_view<vector>> | |
void | erase (gid_type const &gid, View *view=nullptr) |
Remove an element from the container. More... | |
void | clear (void) |
Remove all elements from the container. More... | |
template<typename View = vector_view<vector>> | |
void | push_back (value_type const &v, View *view=nullptr) |
Add an element at the end of the vector. More... | |
template<typename View = vector_view<vector>> | |
void | pop_back (View *view=nullptr) |
Removes the last element of the vector. More... | |
iterator | begin (void) |
Construct an iterator to the beginning of the vector. More... | |
const_iterator | begin (void) const |
Construct a const_iterator to the beginning of the vector. More... | |
const_iterator | cbegin (void) const |
Construct a const_iterator to the beginning of the vector. More... | |
iterator | end (void) |
Construct an iterator to the end of the vector. More... | |
const_iterator | end (void) const |
Construct a const_iterator to the end of the vector. More... | |
const_iterator | cend (void) const |
Construct a const_iterator to the end of the vector. More... | |
iterator | make_iterator (index_type const &index) |
Construct an iterator to a specific index of the vector. More... | |
const_iterator | make_const_iterator (index_type const &index) const |
Construct a const_iterator to a specific index of the vector. More... | |
reference | make_reference (index_type const &index) |
Construct a reference to a specific index of the vector. More... | |
template<typename View > | |
void | insert_local (gid_type const &gid, value_type const &val, View *view) |
Add an element val at the gid position. More... | |
template<typename View > | |
void | erase_local (gid_type const &gid, View *view) |
remove an element from the container. More... | |
Parallel Vector container.
T | Type of the stored elements in the container. |
PS | Partition strategy that defines how to partition the original domain into subdomains. The default partition is balanced_partition. |
M | Mapper that defines how to map the subdomains produced by the partition to locations. The default mapper is mapper. |
Traits | A traits class that defines customizable components of the vector container. |
stapl::vector< T, OptionalParams >::vector | ( | size_t | n | ) |
Construct a vector with of size n
.
n | Size of the vector. |
stapl::vector< T, OptionalParams >::vector | ( | size_t | n, |
value_type const & | default_value | ||
) |
Construct a vector with of size n
filled with value default_value
.
n | Size of the vector. |
default_value | Value given at initialization. |
stapl::vector< T, OptionalParams >::vector | ( | partition_type const & | ps | ) |
Construct a vector given a partitioner.
ps | An instance of the partitioner to use for the distribution. |
stapl::vector< T, OptionalParams >::vector | ( | partition_type const & | ps, |
value_type const & | default_value | ||
) |
Create an array with a given instance of partition and construct all elements with a default value.
ps | An instance of a partition to use for distribution |
default_value | The initial value of the elements in the container |
stapl::vector< T, OptionalParams >::vector | ( | size_t | n, |
mapper_type const & | mapper | ||
) |
Construct a vector given a mapper.
n | Size of the vector. |
mapper | An instance of the mapper to use for the distribution. |
stapl::vector< T, OptionalParams >::vector | ( | partition_type const & | partitioner, |
mapper_type const & | mapper | ||
) |
Construct a vector given a partitioner and a mapper.
partitioner | An instance of the partitioner to use for the distribution. |
mapper | An instance of the mapper to use for the distribution. |
stapl::vector< T, OptionalParams >::vector | ( | DistSpecView const & | dist_view, |
typename std::enable_if< is_distribution_view< DistSpecView >::value &&!detail::has_is_composed_dist_spec< DistSpecView >::value >::type * | = 0 |
||
) |
Create a vector with a distribution that is specified by the dist_view
provided.
dist_view | view that specifies the mapping of container GIDs to partition ids, and partition ids to location ids. |
Distribution Specifications contains a set of functions to create views for common data distributions.
stapl::vector< T, OptionalParams >::vector | ( | DistSpecView const & | dist_view, |
value_type const & | default_value, | ||
typename std::enable_if< is_distribution_view< DistSpecView >::value &&!detail::has_is_composed_dist_spec< DistSpecView >::value >::type * | = 0 |
||
) |
Create a vector with a distribution that is specified by the dist_view
provided, and initialize all elements to default_value
.
dist_view | view that specifies the mapping of container GIDs to partition ids, and partition ids to location ids. |
default_value | value to assign to each element in the container. |
Distribution Specifications contains a set of functions to create views for common data distributions.
stapl::vector< T, OptionalParams >::vector | ( | size_t | n, |
value_type const & | default_value, | ||
DP const & | dis_policy | ||
) |
Create a vector with a given size and default value where the value type of the container is itself a parallel container.
n | The size of the vector. |
default_value | The initial value of the elements in the container. |
dis_policy | A distribution policy that specifies how to distribute the nested containers, in the context of containers of containers. |
stapl::vector< T, OptionalParams >::vector | ( | boost::tuples::cons< X, Y > | dims | ) |
Create a vector of vectors with given n-dimensional size.
dims | A cons list specifying the dimensions of the containers. |
stapl::vector< T, OptionalParams >::vector | ( | boost::tuples::cons< X, Y > | dims, |
DP const & | dis_policy | ||
) |
Create a vector of vectors with given n-dimensional size.
dims | A cons list specifying the dimensions of the containers. |
dis_policy | A distribution policy that specifies how to distribute the nested containers. |
stapl::vector< T, OptionalParams >::vector | ( | ComposedSpec const & | comp_spec, |
typename std::enable_if< detail::has_is_composed_dist_spec< ComposedSpec >::value >::type * | = 0 |
||
) |
Constructor for composed containers. For an m level composed container, comp_spec
contains specifications of the distributions of the current container and each of its elements.
The specification of the current container's distribution is accessed by calling the spec()
method, while the distribution specification of an element is accessed via operator
[].
comp_spec | Instance of composed_dist_spec representing the distribution specifications for each nested container. |
stapl::vector< T, OptionalParams >::vector | ( | std::vector< DistSpecView > const & | dist_specs, |
typename std::enable_if< is_distribution_view< DistSpecView >::value &&!detail::has_is_composed_dist_spec< DistSpecView >::value >::type * | = 0 |
||
) |
Constructor for composed containers. For an m level composed container, dist_specs
contains specifications of the distributions to be used at each level of the composed container.
The first element of the vector specifies the distribution of the outer container, the second the distribution of the containers at the first level of composition, etc. The number of elements in dist_specs
must be at least the same as the number of levels of container composition.
The result of the constructor is a container composition where the size and distribution of the container elements at a given level of the composition are the same.
dist_specs | distribution specifications that are used to construct the nested containers at a given level of the composition. |
|
protected |
Add an element val
at the gid
position.
gid | The index to insert the element. |
val | The element to add. |
view | Pointer to a Vector over this vector (used to keep the domains of the container and the view in sync) or nullptr if the vector is used directly. |
|
protected |
remove an element from the container.
gid | the gid referencing the element to delete. |
view | Pointer to a Vector over this vector (used to keep the domains of the container and the view in sync) or nullptr if the vector is used directly. |
reference stapl::vector< T, OptionalParams >::operator[] | ( | gid_type const & | gid | ) |
Construct a reference to a specific gid of the vector.
gid | The gid for which to create the reference. |
reference stapl::vector< T, OptionalParams >::front | ( | void | ) |
Construct a reference to the first element of the vector.
reference stapl::vector< T, OptionalParams >::back | ( | void | ) |
Construct a reference to the last element of the vector.
void stapl::vector< T, OptionalParams >::add | ( | value_type const & | val | ) |
Insert locally a new element into the container.
val | The value to insert. |
void stapl::vector< T, OptionalParams >::insert | ( | gid_type const & | gid, |
value_type const & | val, | ||
View * | view = nullptr |
||
) |
Add an element val
at the gid
position.
void stapl::vector< T, OptionalParams >::erase | ( | gid_type const & | gid, |
View * | view = nullptr |
||
) |
void stapl::vector< T, OptionalParams >::clear | ( | void | ) |
Remove all elements from the container.
void stapl::vector< T, OptionalParams >::push_back | ( | value_type const & | v, |
View * | view = nullptr |
||
) |
void stapl::vector< T, OptionalParams >::pop_back | ( | View * | view = nullptr | ) |
iterator stapl::vector< T, OptionalParams >::begin | ( | void | ) |
Construct an iterator to the beginning of the vector.
const_iterator stapl::vector< T, OptionalParams >::begin | ( | void | ) | const |
Construct a const_iterator to the beginning of the vector.
const_iterator stapl::vector< T, OptionalParams >::cbegin | ( | void | ) | const |
Construct a const_iterator to the beginning of the vector.
iterator stapl::vector< T, OptionalParams >::end | ( | void | ) |
Construct an iterator to the end of the vector.
const_iterator stapl::vector< T, OptionalParams >::end | ( | void | ) | const |
Construct a const_iterator to the end of the vector.
const_iterator stapl::vector< T, OptionalParams >::cend | ( | void | ) | const |
Construct a const_iterator to the end of the vector.
iterator stapl::vector< T, OptionalParams >::make_iterator | ( | index_type const & | index | ) |
Construct an iterator to a specific index of the vector.
index | The index for which to create the iterator. |
const_iterator stapl::vector< T, OptionalParams >::make_const_iterator | ( | index_type const & | index | ) | const |
Construct a const_iterator to a specific index of the vector.
index | The index for which to create the const_iterator. |
reference stapl::vector< T, OptionalParams >::make_reference | ( | index_type const & | index | ) |
Construct a reference to a specific index of the vector.
index | The index for which to create the reference. |
void stapl::vector< T, OptionalParams >::resize | ( | size_type | n | ) |
Destroy the distribution of the container (including all of its elements) and recreate the container with a different size.
n | The new size of the vector. |
void stapl::vector< T, OptionalParams >::flush | ( | void | ) |
Flushes out all pending requests to the vector.
This is used in conjunction with add() to insert elements into the container without saturating the communication subsystem with metadata update requests.
|
inherited |
Redistribute the data stored in the container to match the distribution specified by the distribution view provided.
dist_view | View-based specification of the desired distribution. |
|
inherited |
Redistribute the data stored in the container to match the distribution specified by the distribution view provided.
dist_view | View-based specification of the desired distribution. |
This function is invoked from the proxy when nested containers are being redistributed.
|
inherited |
Sets the element specified by the index to the provided value.
idx | GID of the element to be set. |
val | The new value of the element. |
|
inherited |
Sets a range of elements starting with a given index to a sequence of provided values.
idx | GID of start of element range to be set. |
vals | The new values to be assigned to the element range. |
|
inherited |
Returns the value of the element specified by the index.
idx | GID of the element to be retrieved. |
|
inherited |
Returns a stapl::future holding the value of the element specified by the index.
idx | GID of the element to be set. |
|
inherited |
Applies a function f to the element specified by the GID.
gid | The GID of the element. |
f | The Functor to apply on the element. |
|
inherited |
Applies a function f to the element specified by the GID, and returns the result.
gid | The GID of the element. |
f | The Functor to apply on the element. |
|
inherited |
Applies a function f to the element specified by the GID, and returns the result.
gid | The GID of the element. |
f | The Functor to apply on the element. |
|
inherited |
|
inherited |
Migrates the element specified by the gid to the destination location.
gid | GID of the element to be migrated. |
destination | Id of the location where the element is to be migrated. |
|
inherited |
Return the number of elements in the container.
This method is one-sided, If other locations may be concurrently performing operations that change their local size and the effects are desired to be observed in a deterministic way, then appropriate synchronization, e.g. a fence, may be required before or after the call to size, to enforce appropriate ordering.
|
inherited |
Return locality information about the element specified by the gid.
|
protectedinherited |
Return a shared_ptr to the distribution specification for this container instance.
This function is called by redistribute when the distribution specification provided is for a single container instance instead of a collection of composed container instance.
dist_view | Instantiation of distribution_spec that describes the target distribution for redistribute |
|
protectedinherited |
Return a shared_ptr to the distribution specification for this container instance that is part of a composed container instantiation.
This function is called by redistribute when the distribution specification provided is for all container instances of a composed container.
dist_view | Instantiation of composed_dist_spec that describes the target distributions for redistribute for all container instances in a composed container |