20#ifndef REALM_PARTITIONS_H
21#define REALM_PARTITIONS_H
40 class PartitioningMicroOp;
41 class PartitioningOperation;
44 template <
int N,
typename T>
60 std::vector<IndexSpace<N,T> >
spaces;
92 virtual void print(std::ostream& os)
const;
108 template <
int N,
typename T>
125 template <
typename T>
130 template <
int N,
typename T>
169 long long inline_start_time);
180 virtual void print(std::ostream& os)
const;
229 template <
typename T>
236 const void *data,
size_t datalen)
250 const void *data,
size_t datalen);
258#include "realm/deppart/partitions.inl"
Definition activemsg.h:303
Definition partitions.h:85
PartitioningMicroOp * uop
Definition partitions.h:95
AsyncMicroOp(Operation *_op, PartitioningMicroOp *_uop)
virtual void request_cancellation(void)
virtual void print(std::ostream &os) const
Definition partitions.h:131
std::vector< IndexSpace< N, T > > input_spaces
Definition partitions.h:146
void add_input_space(const IndexSpace< N, T > &input_space)
void add_extra_dependency(const IndexSpace< N, T > &dep_space)
void dispatch(PartitioningOperation *op, bool inline_ok)
ComputeOverlapMicroOp(PartitioningOperation *_op)
PartitioningOperation * op
Definition partitions.h:145
virtual ~ComputeOverlapMicroOp(void)
std::vector< SparsityMapImpl< N, T > * > extra_deps
Definition partitions.h:147
virtual void execute(void)
unsigned gen_t
Definition event_impl.h:87
Definition event_impl.h:49
Definition event_impl.h:198
Definition interval_tree.h:29
Definition operation.h:75
Definition operation.h:32
void test_overlap(const SparsityMapImpl< 1, T > *sparsity, std::set< int > &overlaps, bool approx)
IntervalTree< T, int > interval_tree
Definition partitions.h:79
void add_index_space(int label, const IndexSpace< 1, T > &space, bool use_approx=true)
void test_overlap(const IndexSpace< 1, T > &space, std::set< int > &overlaps, bool approx)
void test_overlap(const Rect< 1, T > *rects, size_t count, std::set< int > &overlaps)
Definition partitions.h:45
void test_overlap(const Rect< N, T > *rects, size_t count, std::set< int > &overlaps)
std::vector< IndexSpace< N, T > > spaces
Definition partitions.h:60
void add_index_space(int label, const IndexSpace< N, T > &space, bool use_approx=true)
std::vector< bool > approxs
Definition partitions.h:61
void test_overlap(const IndexSpace< N, T > &space, std::set< int > &overlaps, bool approx)
std::vector< int > labels
Definition partitions.h:59
void test_overlap(const SparsityMapImpl< N, T > *sparsity, std::set< int > &overlaps, bool approx)
Definition partitions.h:98
static void forward_microop(NodeID target, PartitioningOperation *op, T *microop)
NodeID requestor
Definition partitions.h:121
AsyncMicroOp * async_microop
Definition partitions.h:122
IntrusiveList< PartitioningMicroOp, REALM_PMTA_USE(PartitioningMicroOp, uop_link), DummyLock > MicroOpList
Definition partitions.h:113
REALM_PMTA_DEFN(PartitioningMicroOp, IntrusiveListLink< PartitioningMicroOp >, uop_link)
void sparsity_map_ready(SparsityMapImpl< N, T > *sparsity, bool precise)
virtual void execute(void)=0
PartitioningMicroOp(NodeID _requestor, AsyncMicroOp *_async_microop)
virtual ~PartitioningMicroOp(void)
IntrusiveListLink< PartitioningMicroOp > uop_link
Definition partitions.h:111
PartitioningMicroOp(void)
void finish_dispatch(PartitioningOperation *op, bool inline_ok)
atomic< int > wait_count
Definition partitions.h:120
Definition partitions.h:193
static void stop_worker_threads(void)
CoreReservation * rsrv
Definition partitions.h:214
void enqueue_partitioning_microop(PartitioningMicroOp *uop)
static void start_worker_threads(CoreReservationSet &crs, BackgroundWorkManager *_bgwork)
PartitioningOperation::OpList op_list
Definition partitions.h:215
PartitioningOpQueue(CoreReservation *_rsrv, BackgroundWorkManager *_bgwork)
void enqueue_partitioning_operation(PartitioningOperation *op)
std::vector< Thread * > workers
Definition partitions.h:219
bool do_work(TimeLimit work_until)
PartitioningMicroOp::MicroOpList uop_list
Definition partitions.h:216
virtual ~PartitioningOpQueue(void)
static void configure_from_cmdline(std::vector< std::string > &cmdline)
void worker_thread_loop(void)
bool work_advertised
Definition partitions.h:220
atomic< bool > shutdown_flag
Definition partitions.h:213
Mutex mutex
Definition partitions.h:217
Mutex::CondVar condvar
Definition partitions.h:218
Definition partitions.h:175
PartitioningOperation * op
Definition partitions.h:184
virtual Event get_finish_event(void) const
void defer(PartitioningOperation *_op, Event wait_on)
virtual void event_triggered(bool poisoned, TimeLimit work_until)
virtual void print(std::ostream &os) const
Definition partitions.h:153
DeferredLaunch deferred_launch
Definition partitions.h:186
PartitioningOperation(const ProfilingRequestSet &reqs, GenEventImpl *_finish_event, EventImpl::gen_t _finish_gen)
virtual void set_overlap_tester(void *tester)
IntrusiveListLink< PartitioningOperation > op_link
Definition partitions.h:171
void launch(Event wait_for)
REALM_PMTA_DEFN(PartitioningOperation, IntrusiveListLink< PartitioningOperation >, op_link)
virtual void execute(void)=0
IntrusiveList< PartitioningOperation, REALM_PMTA_USE(PartitioningOperation, op_link), DummyLock > OpList
Definition partitions.h:173
static void do_inline_profiling(const ProfilingRequestSet &reqs, long long inline_start_time)
Definition profiling.h:363
Definition serialize.h:191
Definition sparsity_impl.h:105
#define REALM_PMTA_USE(structtype, name)
Definition lists.h:42
Definition activemsg.h:38
int NodeID
Definition nodeset.h:40
Definition indexspace.h:323
Definition partitions.h:245
static ActiveMessageHandlerReg< RemoteMicroOpCompleteMessage > areg
Definition partitions.h:252
AsyncMicroOp * async_microop
Definition partitions.h:246
static void handle_message(NodeID sender, const RemoteMicroOpCompleteMessage &msg, const void *data, size_t datalen)
Definition partitions.h:230
static void handle_message(NodeID sender, const RemoteMicroOpMessage< T > &msg, const void *data, size_t datalen)
Definition partitions.h:234
AsyncMicroOp * async_microop
Definition partitions.h:232
PartitioningOperation * operation
Definition partitions.h:231