Skip to content

MPIThreadedDistribution::IterationState

#include <sbio/execution/mpi_threaded.hh>
class IterationState

Defined in src/lib/sbio/execution/mpi_threaded.hh:318

Name Description
MPIThreadedDistribution

friend class MPIThreadedDistribution

Defined in src/lib/sbio/execution/mpi_threaded.hh:364

Return Name Description
IterationState inline
IterationState inline noexcept
IterationState & operator= inline noexcept

inline

inline IterationState()

Defined in src/lib/sbio/execution/mpi_threaded.hh:320


inline noexcept

inline IterationState(IterationState && other) noexcept

Defined in src/lib/sbio/execution/mpi_threaded.hh:325


inline noexcept

inline IterationState & operator=(IterationState && other) noexcept

Defined in src/lib/sbio/execution/mpi_threaded.hh:342

Return Name Description
std::atomic< std::size_t > m_shared_capacity Intra-rank capacity store for inter-thread synchronization of indices.
std::atomic< bool > m_exhausted Latch for if the rank has exhausted all indices.
std::atomic< std::size_t > m_in_flight The number of steps handed out by next() and not yet finished processing.
std::mutex m_trigger_mutex Mutex for thread synchronization on reindexing
SegmentState< bool > m_holding_step Whether this thread is holding a step.
std::atomic< std::size_t > m_batch_round The round counter for the rank.
std::atomic< std::size_t > m_batch_round_base The round when the capacity window started (was refilled).
std::atomic< std::size_t > m_batch_window_start The first step of the window.
std::atomic< std::size_t > m_batch_blocks_before The number dealt in the window before the current one.
std::atomic< std::size_t > m_window_version Odd while a thread changes the window above (with m_shared_capacity).
std::atomic< std::size_t > m_active_units The number of this rank’s threads currently iterating with this state.
SegmentState< bool > m_participating Whether this thread is iterating.
std::atomic< bool > m_departed Latch for if this rank left the iteration early (all its threads left).
std::vector< char > m_node_departed Which node ranks left the iteration early.
int m_tag Message tag of this iteration (in the order states are created on each rank).

std::atomic< std::size_t > m_shared_capacity { 0 }

Defined in src/lib/sbio/execution/mpi_threaded.hh:369

Intra-rank capacity store for inter-thread synchronization of indices.


std::atomic< bool > m_exhausted { false }

Defined in src/lib/sbio/execution/mpi_threaded.hh:373

Latch for if the rank has exhausted all indices.


std::atomic< std::size_t > m_in_flight { 0 }

Defined in src/lib/sbio/execution/mpi_threaded.hh:380

The number of steps handed out by next() and not yet finished processing.

A thread returns a step at the start of each next() call.


std::mutex m_trigger_mutex

Defined in src/lib/sbio/execution/mpi_threaded.hh:385

Mutex for thread synchronization on reindexing


SegmentState< bool > m_holding_step

Type: SegmentState< bool >

Defined in src/lib/sbio/execution/mpi_threaded.hh:387

Whether this thread is holding a step.


std::atomic< std::size_t > m_batch_round { 0 }

Defined in src/lib/sbio/execution/mpi_threaded.hh:392

The round counter for the rank.


std::atomic< std::size_t > m_batch_round_base { 0 }

Defined in src/lib/sbio/execution/mpi_threaded.hh:396

The round when the capacity window started (was refilled).


std::atomic< std::size_t > m_batch_window_start { 0 }

Defined in src/lib/sbio/execution/mpi_threaded.hh:400

The first step of the window.


std::atomic< std::size_t > m_batch_blocks_before { 0 }

Defined in src/lib/sbio/execution/mpi_threaded.hh:404

The number dealt in the window before the current one.


std::atomic< std::size_t > m_window_version { 0 }

Defined in src/lib/sbio/execution/mpi_threaded.hh:408

Odd while a thread changes the window above (with m_shared_capacity).


std::atomic< std::size_t > m_active_units { 0 }

Defined in src/lib/sbio/execution/mpi_threaded.hh:413

The number of this rank’s threads currently iterating with this state.


SegmentState< bool > m_participating

Type: SegmentState< bool >

Defined in src/lib/sbio/execution/mpi_threaded.hh:414

Whether this thread is iterating.


std::atomic< bool > m_departed { false }

Defined in src/lib/sbio/execution/mpi_threaded.hh:419

Latch for if this rank left the iteration early (all its threads left).


std::vector< char > m_node_departed {}

Defined in src/lib/sbio/execution/mpi_threaded.hh:426

Which node ranks left the iteration early.


int m_tag { 0 }

Defined in src/lib/sbio/execution/mpi_threaded.hh:431

Message tag of this iteration (in the order states are created on each rank).

Return Name Description
std::atomic< int > next_tag static

static

std::atomic< int > next_tag { 0 }

Defined in src/lib/sbio/execution/mpi_threaded.hh:432