Realm
A distributed, event-based tasking library
Loading...
Searching...
No Matches
Realm::Barrier Class Reference

#include <event.h>

Inheritance diagram for Realm::Barrier:
Collaboration diagram for Realm::Barrier:

Classes

struct  ParticipantInfo
 

Public Types

typedef ::realm_barrier_timestamp_t timestamp_t
 
- Public Types inherited from Realm::Event
typedef ::realm_id_t id_t
 

Public Member Functions

Barrier set_arrival_pattern (const Barrier::ParticipantInfo *expected_arrivals, size_t num_participants)
 
void destroy_barrier (void)
 
Barrier advance_barrier (void) const
 
Barrier alter_arrival_count (int delta) const
 
Barrier get_previous_phase (void) const
 
void arrive (unsigned count=1, Event wait_on=Event::NO_EVENT, const void *reduce_value=0, size_t reduce_value_size=0) const
 
bool get_result (void *value, size_t value_size) const
 
- Public Member Functions inherited from Realm::Event
 Event ()=default
 
constexpr Event (id_t id)
 
constexpr operator id_t () const
 
bool operator< (const Event &rhs) const
 
bool operator== (const Event &rhs) const
 
bool operator!= (const Event &rhs) const
 
bool exists (void) const
 
bool has_triggered (void) const
 
void wait (void) const
 
void external_wait (void) const
 
bool external_timedwait (long long max_ns) const
 
bool has_triggered_faultaware (bool &poisoned) const
 
void wait_faultaware (bool &poisoned) const
 
void external_wait_faultaware (bool &poisoned) const
 
bool external_timedwait_faultaware (bool &poisoned, long long max_ns) const
 
void subscribe (void) const
 
void cancel_operation (const void *reason_data, size_t reason_size) const
 
void set_operation_priority (int new_priority) const
 

Static Public Member Functions

static Barrier create_barrier (unsigned expected_arrivals, ReductionOpID redop_id=0, const void *initial_value=0, size_t initial_value_size=0)
 
static Barrier create_barrier (const Barrier::ParticipantInfo *expected_arrivals, size_t num_participants, ReductionOpID redop_id=0, const void *initial_value=0, size_t initial_value_size=0)
 
- Static Public Member Functions inherited from Realm::Event
static Event merge_events_ignorefaults (const Event *wait_for, size_t num_events)
 
static Event merge_events_ignorefaults (const span< const Event > &wait_for)
 
static Event merge_events_ignorefaults (const std::set< Event > &wait_for)
 
static Event ignorefaults (Event wait_for)
 
static void advise_event_ordering (Event happens_before, Event happens_after)
 
static void advise_event_ordering (const Event *happens_before, size_t num_events, Event happens_after, bool all_must_trigger=true)
 
static void advise_event_ordering (const span< Event > &happens_before, Event happens_after, bool all_must_trigger=true)
 
static Event merge_events (const Event *wait_for, size_t num_events)
 
static Event merge_events (Event ev1, Event ev2, Event ev3=NO_EVENT, Event ev4=NO_EVENT, Event ev5=NO_EVENT, Event ev6=NO_EVENT)
 
static Event merge_events (const std::set< Event > &wait_for)
 
static Event merge_events (const span< const Event > &wait_for)
 

Public Attributes

timestamp_t timestamp
 
- Public Attributes inherited from Realm::Event
id_t id {REALM_NO_EVENT}
 

Static Public Attributes

static const Barrier NO_BARRIER
 
static const ::realm_event_gen_t MAX_PHASES
 
- Static Public Attributes inherited from Realm::Event
static const Event NO_EVENT
 The value should be usued to initialize an event handle. NO_EVENT is always in has triggered state .
 

Detailed Description

A barrier is similar to a user event, except that it has a count of how many threads (or whatever) need to "trigger" before the actual trigger occurs.

Member Typedef Documentation

◆ timestamp_t

Member Function Documentation

◆ advance_barrier()

Barrier Realm::Barrier::advance_barrier ( void  ) const

◆ alter_arrival_count()

Barrier Realm::Barrier::alter_arrival_count ( int  delta) const

◆ arrive()

void Realm::Barrier::arrive ( unsigned  count = 1,
Event  wait_on = Event::NO_EVENT,
const void *  reduce_value = 0,
size_t  reduce_value_size = 0 
) const

◆ create_barrier() [1/2]

static Barrier Realm::Barrier::create_barrier ( const Barrier::ParticipantInfo expected_arrivals,
size_t  num_participants,
ReductionOpID  redop_id = 0,
const void *  initial_value = 0,
size_t  initial_value_size = 0 
)
static

Creates a barrier

Parameters
expected_arrivalsinformation about the arrival pattern
num_participantsthe size of expected arrivals
redop_idID of a reduction operator
initial_valueinitial reduction value
initial_value_sizesize of the initial reduction value.
Returns
barrier handle

◆ create_barrier() [2/2]

static Barrier Realm::Barrier::create_barrier ( unsigned  expected_arrivals,
ReductionOpID  redop_id = 0,
const void *  initial_value = 0,
size_t  initial_value_size = 0 
)
static

◆ destroy_barrier()

void Realm::Barrier::destroy_barrier ( void  )

◆ get_previous_phase()

Barrier Realm::Barrier::get_previous_phase ( void  ) const

◆ get_result()

bool Realm::Barrier::get_result ( void *  value,
size_t  value_size 
) const

◆ set_arrival_pattern()

Barrier Realm::Barrier::set_arrival_pattern ( const Barrier::ParticipantInfo expected_arrivals,
size_t  num_participants 
)

Sets the arrival pattern

Parameters
expected_arrivalsinformation about the arrival pattern
num_participantsthe size of expected arrivals
Returns
barrier handle

Member Data Documentation

◆ MAX_PHASES

const ::realm_event_gen_t Realm::Barrier::MAX_PHASES
static

◆ NO_BARRIER

const Barrier Realm::Barrier::NO_BARRIER
static

◆ timestamp

timestamp_t Realm::Barrier::timestamp

The documentation for this class was generated from the following file: