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

#include <barrier_impl.h>

Inheritance diagram for Realm::BarrierImpl:
Collaboration diagram for Realm::BarrierImpl:

Classes

class  Generation
 

Public Member Functions

 BarrierImpl (void)
 
 BarrierImpl (BarrierCommunicator *_barrier_comm, int _broadcast_radix=4)
 
 ~BarrierImpl (void)
 
void init (ID _me, unsigned _init_owner)
 
Barrier current_barrier (Barrier::timestamp_t timestamp=0) const
 
Barrier make_barrier (gen_t gen, Barrier::timestamp_t timestamp=0) const
 
virtual bool has_triggered (gen_t needed_gen, bool &poisoned)
 
virtual void subscribe (gen_t subscribe_gen)
 
virtual void external_wait (gen_t needed_gen, bool &poisoned)
 
virtual bool external_timedwait (gen_t needed_gen, bool &poisoned, long long max_ns)
 
virtual bool add_waiter (gen_t needed_gen, EventWaiter *waiter)
 
virtual bool remove_waiter (gen_t needed_gen, EventWaiter *waiter)
 
void adjust_arrival (gen_t barrier_gen, int delta, Barrier::timestamp_t timestamp, Event wait_on, NodeID sender, bool forwarded, const void *reduce_value, size_t reduce_value_size, TimeLimit work_until)
 
void handle_remote_subscription (NodeID subscriber, EventImpl::gen_t subscribe_gen, bool forwarded, const void *data, size_t datalen)
 
void handle_remote_trigger (NodeID sender, ID::IDType barrier_id, EventImpl::gen_t trigger_gen, EventImpl::gen_t previous_gen, EventImpl::gen_t first_gen, ReductionOpID redop_id, NodeID migration_target, int broadcast_index, unsigned base_count, const void *data, size_t datalen, TimeLimit work_until)
 
bool get_result (gen_t result_gen, void *value, size_t value_size)
 
- Public Member Functions inherited from Realm::EventImpl
 EventImpl (void)
 
virtual ~EventImpl (void)
 
Event make_event (gen_t gen) const
 

Static Public Member Functions

static ID make_id (const BarrierImpl &dummy, int owner, ID::IDType index)
 
static BarrierImplcreate_barrier (unsigned expected_arrivals, ReductionOpID redopid, const void *initial_value=0, size_t initial_value_size=0)
 
- Static Public Member Functions inherited from Realm::EventImpl
static bool add_waiter (Event needed, EventWaiter *waiter)
 
static bool detect_event_chain (Event search_from, Event target, int max_depth, bool print_chain)
 

Public Attributes

atomic< gen_tgeneration = atomic<gen_t>(0)
 
atomic< gen_tgen_subscribed = atomic<gen_t>(0)
 
gen_t first_generation = 0
 
BarrierImplnext_free = nullptr
 
std::unique_ptr< BarrierCommunicatorbarrier_comm
 
Mutex mutex
 
std::map< gen_t, Generation * > generations
 
bool has_external_waiters = false
 
KernelMutex external_waiter_mutex
 
KernelMutex::CondVar external_waiter_condvar
 
std::map< unsigned, gen_tremote_subscribe_gens
 
std::map< unsigned, gen_tremote_trigger_gens
 
std::map< gen_t, gen_theld_triggers
 
unsigned base_arrival_count = 0
 
ReductionOpID redop_id = 0
 
const ReductionOpUntypedredop = nullptr
 
std::unique_ptr< char[]> initial_value {}
 
unsigned value_capacity = 0
 
std::vector< char > final_values
 
bool needs_ordering
 
std::vector< std::pair< int, std::vector< RemoteNotification > > > ordered_buffer
 
int broadcast_radix
 
- Public Attributes inherited from Realm::EventImpl
ID me
 
ProcessorImplowning_processor
 
NodeID owner
 

Static Public Attributes

static const ID::ID_Types ID_TYPE = ID::ID_BARRIER
 
static const int BARRIER_TIMESTAMP_NODEID_SHIFT = 48
 
static atomic< Barrier::timestamp_tbarrier_adjustment_timestamp
 

Protected Member Functions

void broadcast_trigger (const std::vector< RemoteNotification > &ordered_notifications, const std::vector< NodeID > &broadcast_targets, EventImpl::gen_t oldest_previous, EventImpl::gen_t broadcast_previous, EventImpl::gen_t first_generation, NodeID migration_target, unsigned base_arrival_count, ReductionOpID redop_id, const void *data, size_t datalen, bool include_notifications=true)
 

Additional Inherited Members

- Public Types inherited from Realm::EventImpl
typedef unsigned gen_t
 

Constructor & Destructor Documentation

◆ BarrierImpl() [1/2]

Realm::BarrierImpl::BarrierImpl ( void  )

◆ BarrierImpl() [2/2]

Realm::BarrierImpl::BarrierImpl ( BarrierCommunicator _barrier_comm,
int  _broadcast_radix = 4 
)

◆ ~BarrierImpl()

Realm::BarrierImpl::~BarrierImpl ( void  )

Member Function Documentation

◆ add_waiter()

virtual bool Realm::BarrierImpl::add_waiter ( gen_t  needed_gen,
EventWaiter waiter 
)
virtual

Implements Realm::EventImpl.

◆ adjust_arrival()

void Realm::BarrierImpl::adjust_arrival ( gen_t  barrier_gen,
int  delta,
Barrier::timestamp_t  timestamp,
Event  wait_on,
NodeID  sender,
bool  forwarded,
const void *  reduce_value,
size_t  reduce_value_size,
TimeLimit  work_until 
)

◆ broadcast_trigger()

void Realm::BarrierImpl::broadcast_trigger ( const std::vector< RemoteNotification > &  ordered_notifications,
const std::vector< NodeID > &  broadcast_targets,
EventImpl::gen_t  oldest_previous,
EventImpl::gen_t  broadcast_previous,
EventImpl::gen_t  first_generation,
NodeID  migration_target,
unsigned  base_arrival_count,
ReductionOpID  redop_id,
const void *  data,
size_t  datalen,
bool  include_notifications = true 
)
protected

◆ create_barrier()

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

◆ current_barrier()

Barrier Realm::BarrierImpl::current_barrier ( Barrier::timestamp_t  timestamp = 0) const

◆ external_timedwait()

virtual bool Realm::BarrierImpl::external_timedwait ( gen_t  needed_gen,
bool &  poisoned,
long long  max_ns 
)
virtual

Implements Realm::EventImpl.

◆ external_wait()

virtual void Realm::BarrierImpl::external_wait ( gen_t  needed_gen,
bool &  poisoned 
)
virtual

Implements Realm::EventImpl.

◆ get_result()

bool Realm::BarrierImpl::get_result ( gen_t  result_gen,
void *  value,
size_t  value_size 
)

◆ handle_remote_subscription()

void Realm::BarrierImpl::handle_remote_subscription ( NodeID  subscriber,
EventImpl::gen_t  subscribe_gen,
bool  forwarded,
const void *  data,
size_t  datalen 
)

◆ handle_remote_trigger()

void Realm::BarrierImpl::handle_remote_trigger ( NodeID  sender,
ID::IDType  barrier_id,
EventImpl::gen_t  trigger_gen,
EventImpl::gen_t  previous_gen,
EventImpl::gen_t  first_gen,
ReductionOpID  redop_id,
NodeID  migration_target,
int  broadcast_index,
unsigned  base_count,
const void *  data,
size_t  datalen,
TimeLimit  work_until 
)

◆ has_triggered()

virtual bool Realm::BarrierImpl::has_triggered ( gen_t  needed_gen,
bool &  poisoned 
)
virtual

Implements Realm::EventImpl.

◆ init()

void Realm::BarrierImpl::init ( ID  _me,
unsigned  _init_owner 
)

◆ make_barrier()

Barrier Realm::BarrierImpl::make_barrier ( gen_t  gen,
Barrier::timestamp_t  timestamp = 0 
) const

◆ make_id()

static ID Realm::BarrierImpl::make_id ( const BarrierImpl dummy,
int  owner,
ID::IDType  index 
)
inlinestatic

◆ remove_waiter()

virtual bool Realm::BarrierImpl::remove_waiter ( gen_t  needed_gen,
EventWaiter waiter 
)
virtual

Implements Realm::EventImpl.

◆ subscribe()

virtual void Realm::BarrierImpl::subscribe ( gen_t  subscribe_gen)
virtual

Implements Realm::EventImpl.

Member Data Documentation

◆ barrier_adjustment_timestamp

atomic<Barrier::timestamp_t> Realm::BarrierImpl::barrier_adjustment_timestamp
static

◆ barrier_comm

std::unique_ptr<BarrierCommunicator> Realm::BarrierImpl::barrier_comm

◆ BARRIER_TIMESTAMP_NODEID_SHIFT

const int Realm::BarrierImpl::BARRIER_TIMESTAMP_NODEID_SHIFT = 48
static

◆ base_arrival_count

unsigned Realm::BarrierImpl::base_arrival_count = 0

◆ broadcast_radix

int Realm::BarrierImpl::broadcast_radix

◆ external_waiter_condvar

KernelMutex::CondVar Realm::BarrierImpl::external_waiter_condvar

◆ external_waiter_mutex

KernelMutex Realm::BarrierImpl::external_waiter_mutex

◆ final_values

std::vector<char> Realm::BarrierImpl::final_values

◆ first_generation

gen_t Realm::BarrierImpl::first_generation = 0

◆ gen_subscribed

atomic<gen_t> Realm::BarrierImpl::gen_subscribed = atomic<gen_t>(0)

◆ generation

atomic<gen_t> Realm::BarrierImpl::generation = atomic<gen_t>(0)

◆ generations

std::map<gen_t, Generation *> Realm::BarrierImpl::generations

◆ has_external_waiters

bool Realm::BarrierImpl::has_external_waiters = false

◆ held_triggers

std::map<gen_t, gen_t> Realm::BarrierImpl::held_triggers

◆ ID_TYPE

const ID::ID_Types Realm::BarrierImpl::ID_TYPE = ID::ID_BARRIER
static

◆ initial_value

std::unique_ptr<char[]> Realm::BarrierImpl::initial_value {}

◆ mutex

Mutex Realm::BarrierImpl::mutex

◆ needs_ordering

bool Realm::BarrierImpl::needs_ordering

◆ next_free

BarrierImpl* Realm::BarrierImpl::next_free = nullptr

◆ ordered_buffer

std::vector<std::pair<int, std::vector<RemoteNotification> > > Realm::BarrierImpl::ordered_buffer

◆ redop

const ReductionOpUntyped* Realm::BarrierImpl::redop = nullptr

◆ redop_id

ReductionOpID Realm::BarrierImpl::redop_id = 0

◆ remote_subscribe_gens

std::map<unsigned, gen_t> Realm::BarrierImpl::remote_subscribe_gens

◆ remote_trigger_gens

std::map<unsigned, gen_t> Realm::BarrierImpl::remote_trigger_gens

◆ value_capacity

unsigned Realm::BarrierImpl::value_capacity = 0

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