SST
11.1.0
StructuralSimulationToolkit
|
SharedArray class. More...
#include <sharedArray.h>
Public Types | |
typedef std::vector< bool > ::const_iterator | const_iterator |
typedef std::vector< bool > ::const_reverse_iterator | const_reverse_iterator |
Public Types inherited from SST::Shared::SharedObject | |
enum | verify_type { VERIFY_UNINITIALIZED, FE_VERIFY, INIT_VERIFY, NO_VERIFY } |
Enum of verify types. | |
Public Member Functions | |
SharedArray () | |
Default constructor for SharedArray. | |
~SharedArray () | |
Shared Array Destructor. | |
int | initialize (const std::string &obj_name, size_t length=0, bool init_value=false, verify_type v_type=INIT_VERIFY) |
Initialize the SharedArray. More... | |
size_t | size () const |
Get the length of the array. More... | |
bool | empty () const |
Tests if array is empty. More... | |
const_iterator | begin () const |
Get const_iterator to beginning of underlying map. | |
const_iterator | end () const |
Get const_iterator to end of underlying map. | |
const_reverse_iterator | rbegin () const |
Get const_reverse_iterator to beginning of underlying map. | |
const_reverse_iterator | rend () const |
Get const_reverse_iterator to end of underlying map. | |
void | publish () |
Indicate that the calling element has written all the data it plans to write. More... | |
bool | isFullyPublished () |
Check whether all instances of this SharedArray have called publish(). More... | |
void | write (int index, bool value) |
Write data to the array. More... | |
bool | operator[] (int index) const |
Read data from the array. More... | |
bool | mutex_read (int index) const |
Read data from the array. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from SST::Shared::SharedObject | |
void | incPublishCount (SharedObjectData *data) |
int | incShareCount (SharedObjectData *data) |
Static Protected Attributes inherited from SST::Shared::SharedObject | |
static SharedObjectDataManager | manager |
SharedArray class.
The class is templated to allow for an array of any non-pointer type. The type must be serializable.
|
inline |
Tests if array is empty.
|
inline |
Initialize the SharedArray.
obj_name | Name of the object. This name is how the object is uniquely identified across ranks. |
length | Length of the array. The length can be 0 if no data is going to be written by the calling element, otherwise, it must be large enough to write the desired data. The final length of the array will be the maximum of the requested lengths. The length of the array can be queried using the size() method. |
init_value | value that entries should be initialized to. By default, each array item will be initialized using the default constructor for the class being stored. |
verify_mode | Specifies how multiply written data should be verified. FE_VERIFY uses a full/empty bit for each entry and if a value has previously been written, it will make sure the two values match. INIT_VERIFY will simply compare writes against the current value and will error unless the values aren't the same or the existing value is the init_value. When NO_VERIFY is passed, no verification will occur. This is mostly useful when you can guarantee that multiple elements won't write the same value and you want to do in-place modifications as you initialize. VERIFY_UNINITIALIZED is a reserved value and should not be passed. |
References SST::Output::fatal(), and SST::Simulation::getSimulationOutput().
|
inline |
Check whether all instances of this SharedArray have called publish().
NOTE: Is is possible that this could return true one round, but false the next if a new instance of the SharedArray was initialized but not published after the last call.
|
inline |
Read data from the array.
This returns a const reference, so is read only. This version of read is always thread safe (
index | index to read |
|
inline |
Read data from the array.
This returns a const reference, so is read only.
NOTE: This function does not use a mutex, so it is possible to get invalid results if another thread caused a resize of the underlying data structure at the same time as the read. However, after the init() phase of simulation is complete (in setup() and beyond), this is always a safe operation. If reading during init() and you can't guarantee that all elements have already written all data to the SharedArray, use mutex_read() to guarantee thread safety.
index | index to read |
|
inline |
Indicate that the calling element has written all the data it plans to write.
Writing to the array through this instance after publish() is called will create an error.
|
inline |
Get the length of the array.
|
inline |
Write data to the array.
This function is thread-safe, as a mutex is used to ensure only one write at a time.
index | index of the write |
value | value to be written |
References SST::Output::fatal(), and SST::Simulation::getSimulationOutput().