Realm
A distributed, event-based tasking library
Loading...
Searching...
No Matches
runtime_impl.h
Go to the documentation of this file.
1/*
2 * Copyright 2026 Stanford University, NVIDIA Corporation, Los Alamos National Laboratory
3 * SPDX-License-Identifier: Apache-2.0
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18// Runtime implementation for Realm
19
20#ifndef REALM_RUNTIME_IMPL_H
21#define REALM_RUNTIME_IMPL_H
22
23#include "realm/runtime.h"
24#include "realm/id.h"
25
26#include "realm/network.h"
27#include "realm/operation.h"
28#include "realm/profiling.h"
29
30#include "realm/dynamic_table.h"
31#include "realm/codedesc.h"
33
34// event and reservation impls are included directly in the node's dynamic tables,
35// so we need their definitions here (not just declarations)
37#include "realm/event_impl.h"
38#include "realm/barrier_impl.h"
39#include "realm/rsrv_impl.h"
40#include "realm/subgraph_impl.h"
41
42#include "realm/machine_impl.h"
43
44#include "realm/threads.h"
45#include "realm/sampling.h"
46
47#include "realm/module.h"
48#include "realm/network.h"
49
50#include "realm/bgwork.h"
51#include "realm/activemsg.h"
52#include "realm/repl_heap.h"
53#include "realm/dynamic_table.h"
54
55#include "realm/shm.h"
57
58#include <optional>
59#include <unordered_map>
60#include <memory>
61
62namespace Realm {
63
64 class ProcessorGroupImpl;
65 class MemoryImpl;
66 class IBMemory;
67 class ProcessorImpl;
68 class RegionInstanceImpl;
69 class NetworkSegment;
70
71 class Channel; // from transfer/channel.h
72
73 // use a wide tree for local events - max depth will be 2
74 // use a narrow tree for remote events - depth is 3, leaves have 128 events
75 typedef DynamicTableAllocator<GenEventImpl, 11, 16, GenEventImpl::GenEventImplAllocator>
85
86 // for each of the ID-based runtime objects, we're going to have an
87 // implementation class and a table to look them up in
88 struct Node {
89 Node(void);
90 ~Node(void);
91
92 Node(const Node &) = delete;
93 Node &operator=(const Node &) = delete;
94 Node(Node &&) noexcept = delete;
95 Node &operator=(Node &&) noexcept = delete;
96
97 // not currently resizable
102
107
108 // sparsity maps can be created by other nodes, so keep a
109 // map per-creator_node
113 };
114
115 std::ostream &operator<<(std::ostream &os, const Node &node);
116
117 // the "core" module provides the basic memories and processors used by Realm
119 friend class CoreModule;
120 friend class RuntimeImpl;
121
122 protected:
124
126
127 public:
128 virtual void configure_from_cmdline(std::vector<std::string> &cmdline);
129
130 protected:
131 // configurations
132 // CoreModule
133 int num_cpu_procs = 1, num_util_procs = 1, num_io_procs = 0;
134 int concurrent_io_threads = 1; // Legion does not support values > 1 right now
135 size_t sysmem_size = 512 << 20;
136 size_t sysmem_ipc_limit = 0; // make the sysmem as shared only if share_sysmem_limit
137 // == 0 or sysmem_size <= share_sysmem_limit
138 size_t stack_size = 2 << 20;
139 bool pin_util_procs = false;
140 long long cpu_bgwork_timeslice = 0, util_bgwork_timeslice = 0;
141 bool use_ext_sysmem = true;
142
143 // RuntimeImpl
144 size_t reg_ib_mem_size = 0;
145 size_t reg_mem_size = 0;
146 size_t disk_mem_size = 0;
147 unsigned dma_worker_threads = 0; // unused - warning on application use
148#ifdef EVENT_TRACING
149 size_t event_trace_block_size = 1 << 20;
150 double event_trace_exp_arrv_rate = 1e3;
151#endif
152#ifdef LOCK_TRACING
153 size_t lock_trace_block_size = 1 << 20;
154 double lock_trace_exp_arrv_rate = 1e2;
155#endif
156 // should local proc threads get dedicated cores?
157 bool dummy_reservation_ok = true;
158 bool show_reservations = false;
159 // are hyperthreads considered to share a physical core
160 bool hyperthread_sharing = true;
161 bool pin_dma_threads = false; // unused - silently ignored on cmdline
162 size_t bitset_chunk_size = 32 << 10; // 32KB
163 // based on some empirical measurements, 1024 nodes seems like
164 // a reasonable cutoff for switching to twolevel nodeset bitmasks
165 // (measured on an E5-2698 v4)
166 int bitset_twolevel = -1024; // i.e. yes if > 1024 nodes
167 int active_msg_handler_threads = 0; // default is none (use bgwork)
168 bool active_msg_handler_bgwork = true;
169 size_t replheap_size = 16 << 20;
170 std::string event_trace_file;
171 std::string lock_trace_file;
172#ifdef NODE_LOGGING
173 std::string prefix = ".";
174#endif
175
176 // resources
177 int res_num_cpus = 0;
178 size_t res_sysmem_size = 0;
179
180 // sparstiy maps
181 bool report_sparsity_leaks = false;
182
183 // barriers
184 int barrier_broadcast_radix = 4;
185
186 // topology of the host
187 const HardwareTopology *host_topology = nullptr;
188 };
189
190 class CoreModule : public Module {
191 public:
193 virtual ~CoreModule(void);
194
196
198
199 // create any memories provided by this module (default == do nothing)
200 // (each new MemoryImpl should use a Memory from RuntimeImpl::next_local_memory_id)
201 virtual void create_memories(RuntimeImpl *runtime);
202
203 // create any processors provided by the module (default == do nothing)
204 // (each new ProcessorImpl should use a Processor from
205 // RuntimeImpl::next_local_processor_id)
206 virtual void create_processors(RuntimeImpl *runtime);
207
208 // create any DMA channels provided by the module (default == do nothing)
209 virtual void create_dma_channels(RuntimeImpl *runtime);
210
211 // create any code translators provided by the module (default == do nothing)
212 virtual void create_code_translators(RuntimeImpl *runtime);
213
214 // clean up any common resources created by the module - this will be called
215 // after all memories/processors/etc. have been shut down and destroyed
216 virtual void cleanup(void);
217
218 public:
220
221 protected:
223 };
224
225 template <typename K, typename V, typename LT = Mutex>
226 class LockedMap {
227 public:
228 bool exists(const K &key) const
229 {
230 AutoLock<LT> al(mutex);
231 typename std::map<K, V>::const_iterator it = map.find(key);
232 return (it != map.end());
233 }
234
235 bool put(const K &key, const V &value, bool replace = false)
236 {
237 AutoLock<LT> al(mutex);
238 typename std::map<K, V>::iterator it = map.find(key);
239 if(it != map.end()) {
240 if(replace)
241 it->second = value;
242 return true;
243 } else {
244 map.insert(std::make_pair(key, value));
245 return false;
246 }
247 }
248
249 V get(const K &key, const V &defval) const
250 {
251 AutoLock<LT> al(mutex);
252 typename std::map<K, V>::const_iterator it = map.find(key);
253 if(it != map.end())
254 return it->second;
255 else
256 return defval;
257 }
258
259 // protected:
260 mutable LT mutex;
261 std::map<K, V> map;
262 };
263
265 public:
268
269 bool network_init(int *argc, char ***argv,
270 const Runtime::KeyValueStoreVtable &vtable);
271 bool has_key_value_store(void) const;
272 // Is this an elastic Realm
274 // Are we a single process joining by ourself or part of a group
276 // Our local group
277 std::optional<uint64_t> key_value_store_local_group(void) const;
278 // Our local rank in the group
279 std::optional<uint64_t> key_value_store_local_rank(void) const;
280 // The total number of ranks in our group
281 std::optional<uint64_t> key_value_store_local_ranks(void) const;
282 // Helper for getting integers of unknown size
283 std::optional<uint64_t> key_value_store_get_int(const std::string_view &key) const;
284 bool key_value_store_put(const void *key, size_t key_size, const void *value,
285 size_t value_size) const;
286 bool key_value_store_get(const void *key, size_t key_size, void *value,
287 size_t *value_size) const;
288 bool key_value_store_bar(void) const;
289 bool key_value_store_cas(const void *key, size_t key_size, void *expected,
290 size_t *expected_size, const void *desired,
291 size_t desired_size) const;
292
293 void parse_command_line(std::vector<std::string> &cmdline);
294
296
297 bool configure_from_command_line(std::vector<std::string> &cmdline);
298
299 void start(void);
300
301 bool register_task(Processor::TaskFuncID taskid, Processor::TaskFuncPtr taskptr);
304 const ReductionOpUntyped *redop);
306 const CustomSerdezUntyped *serdez);
307
309 const void *args, size_t arglen,
310 Event wait_on = Event::NO_EVENT, int priority = 0);
311
313 Processor::TaskFuncID task_id, const void *args,
314 size_t arglen, bool one_per_node = false,
315 Event wait_on = Event::NO_EVENT, int priority = 0);
316
317 void run(Processor::TaskFuncID task_id = 0,
318 Runtime::RunStyle style = Runtime::ONE_TASK_ONLY, const void *args = 0,
319 size_t arglen = 0, bool background = false);
320
321 // requests a shutdown of the runtime - returns true if request is a duplicate
322 bool request_shutdown(Event wait_on, int result_code);
323
324 // indicates shutdown has been initiated, wakes up a waiter if already present
326
327 // shutdown the runtime
328 void shutdown(Event wait_on = Event::NO_EVENT, int result_code = 0);
329
330 // returns value of result_code passed to shutdown()
332
333 bool create_configs(int argc, char **argv);
334
335 // return the configuration of a specific module
336 ModuleConfig *get_module_config(const std::string &name) const;
337
338 // three event-related impl calls - get_event_impl() will give you either
339 // a normal event or a barrier, but you won't be able to do specific things
340 // (e.g. trigger a GenEventImpl or adjust a BarrierImpl)
344
348 REALM_INTERNAL_API_EXTERNAL_LINKAGE ProcessorImpl * // needed by librealm_kokkos.so
349 get_processor_impl(ID id); // TODO: refactor it to const version
357
358#ifdef DEADLOCK_TRACE
359 void add_thread(const pthread_t *thread);
360#endif
361 static void realm_backtrace(int signal);
362
363 public:
365
368
370 Node *nodes; // TODO: replace with std::vector<Node>
371 size_t num_nodes;
372
375 LocalEventTableAllocator::FreeList *local_event_free_list{nullptr};
376 BarrierTableAllocator::FreeList *local_barrier_free_list{nullptr};
377 ReservationTableAllocator::FreeList *local_reservation_free_list{nullptr};
378 CompQueueTableAllocator::FreeList *local_compqueue_free_list{nullptr};
379
380 // keep a free list for each node we allocate maps on (i.e. indexed
381 // by owner_node)
382 std::vector<SparsityMapTableAllocator::FreeList *> local_sparsity_map_free_lists;
383 std::vector<SubgraphTableAllocator::FreeList *> local_subgraph_free_lists;
384 std::vector<ProcessorGroupTableAllocator::FreeList *> local_proc_group_free_lists;
385
386 // legacy behavior if Runtime::run() is used
388#ifdef DEADLOCK_TRACE
389 unsigned next_thread;
390 unsigned signaled_threads;
391 pthread_t all_threads[MAX_NUM_THREADS];
392 unsigned thread_counts[MAX_NUM_THREADS];
393#endif
396 bool shutdown_request_received; // has a request for shutdown arrived
399 bool shutdown_initiated; // is it time to start shutting down
400 atomic<bool> shutdown_in_progress; // are we actively shutting down?
401 std::unordered_map<realm_id_t, SharedMemoryInfo> remote_shared_memory_mappings;
402 std::unordered_map<realm_id_t, SharedMemoryInfo> local_shared_memory_mappings;
403
405 bool topology_init = false; // TODO: REMOVE it
410
412
414
415 ReplicatedHeap repl_heap; // used for sparsity maps, instance layouts
416
417 bool shared_peers_use_network_module = true;
418
420 public:
421 void defer(RuntimeImpl *_runtime, Event wait_on);
422
423 virtual void event_triggered(bool poisoned, TimeLimit work_until);
424 virtual void print(std::ostream &os) const;
425 virtual Event get_finish_event(void) const;
426
427 protected:
429 };
431
432 public:
433 // used by modules to add processors, memories, etc.
439
441
446
447 const std::vector<CodeTranslator *> &get_code_translators(void) const;
448
449 template <typename T>
450 T *get_module(const char *name) const
451 {
452 Module *mod = get_module_untyped(name);
453 if(mod)
454 return checked_cast<T *>(mod);
455 else
456 return 0;
457 }
458
459 protected:
460 friend class Runtime;
461
462 Module *get_module_untyped(const char *name) const;
463
467
473 bool share_memories(void);
474
475 ID::IDType num_local_memories, num_local_ib_memories, num_local_processors;
478
482 std::vector<Module *> modules;
483 std::vector<CodeTranslator *> code_translators;
484
485 std::vector<NetworkModule *> network_modules;
486 std::vector<NetworkSegment *> network_segments;
487
488 std::map<std::string, ModuleConfig *> module_configs;
489
491 std::vector<uint8_t> key_value_store_vtable_data;
492 };
493
499
500 // due to circular dependencies in include files, we need versions of these that
501 // hide the RuntimeImpl intermediate
504 {
505 return get_runtime()->get_genevent_impl(e);
506 }
508 {
509 return get_runtime()->get_barrier_impl(e);
510 }
511
512 // active messages
513
517
518 static void handle_message(NodeID sender, const RuntimeShutdownRequest &msg,
519 const void *data, size_t datalen);
520 };
521
524
525 static void handle_message(NodeID sender, const RuntimeShutdownMessage &msg,
526 const void *data, size_t datalen);
527 };
528
529}; // namespace Realm
530
531#endif // ifndef REALM_RUNTIME_IMPL_H
Definition mutex.h:384
Definition bgwork.h:36
Definition barrier_impl.h:100
Definition channel.h:713
Definition codedesc.h:367
Definition comp_queue_impl.h:30
Definition runtime_impl.h:118
std::string lock_trace_file
Definition runtime_impl.h:171
virtual void configure_from_cmdline(std::vector< std::string > &cmdline)
CoreModuleConfig(const HardwareTopology *topo)
std::string event_trace_file
Definition runtime_impl.h:170
bool discover_resource(void)
Definition runtime_impl.h:190
static Module * create_module(RuntimeImpl *runtime)
CoreModuleConfig * config
Definition runtime_impl.h:222
MemoryImpl * ext_sysmem
Definition runtime_impl.h:219
virtual void create_code_translators(RuntimeImpl *runtime)
virtual void create_processors(RuntimeImpl *runtime)
virtual void create_dma_channels(RuntimeImpl *runtime)
virtual ~CoreModule(void)
virtual void create_memories(RuntimeImpl *runtime)
static ModuleConfig * create_module_config(RuntimeImpl *runtime)
virtual void cleanup(void)
Definition threads.h:382
Definition custom_serdez.h:150
Definition dynamic_table.h:138
Definition dynamic_table.h:105
Definition dynamic_table.h:65
Definition event_impl.h:85
Definition event_impl.h:66
Definition event_impl.h:49
Definition event.h:50
Definition event_impl.h:198
Represents the topology of the host processor cores and memory.
Definition hardware_topology.h:38
Definition ib_memory.h:30
Definition id.h:30
::realm_id_t IDType
Definition id.h:32
Definition activemsg.h:345
Definition runtime_impl.h:226
V get(const K &key, const V &defval) const
Definition runtime_impl.h:249
bool exists(const K &key) const
Definition runtime_impl.h:228
bool put(const K &key, const V &value, bool replace=false)
Definition runtime_impl.h:235
LT mutex
Definition runtime_impl.h:260
std::map< K, V > map
Definition runtime_impl.h:261
Definition machine_impl.h:94
Definition mem_impl.h:50
Definition memory.h:33
Definition module_config.h:32
Definition module.h:111
Definition module.h:42
Definition network.h:262
Definition operation.h:155
Definition proc_impl.h:254
Definition proc_impl.h:51
Definition processor.h:37
Kind
Definition processor.h:65
::realm_task_func_id_t TaskFuncID
Definition processor.h:58
Definition inst_impl.h:54
Definition repl_heap.h:30
Definition rsrv_impl.h:57
Definition runtime_impl.h:419
virtual void event_triggered(bool poisoned, TimeLimit work_until)
virtual Event get_finish_event(void) const
virtual void print(std::ostream &os) const
void defer(RuntimeImpl *_runtime, Event wait_on)
RuntimeImpl * runtime
Definition runtime_impl.h:428
Definition runtime_impl.h:264
int wait_for_shutdown(void)
SparsityMapImplWrapper * get_sparsity_impl(ID id)
bool register_custom_serdez(CustomSerdezID serdez_id, const CustomSerdezUntyped *serdez)
std::optional< uint64_t > key_value_store_local_ranks(void) const
SamplingProfiler sampling_profiler
Definition runtime_impl.h:413
EventImpl * get_event_impl(Event e)
std::optional< uint64_t > key_value_store_local_group(void) const
BackgroundWorkManager bgwork
Definition runtime_impl.h:407
SubgraphImpl * get_subgraph_impl(ID id)
REALM_INTERNAL_API_EXTERNAL_LINKAGE ProcessorImpl * get_processor_impl(ID id)
void add_proc_mem_affinity(const Machine::ProcessorMemoryAffinity &pma)
int shutdown_result_code
Definition runtime_impl.h:398
Memory next_local_memory_id(void)
LockedMap< CustomSerdezID, CustomSerdezUntyped * > custom_serdez_table
Definition runtime_impl.h:367
bool run_method_called
Definition runtime_impl.h:387
std::vector< SparsityMapTableAllocator::FreeList * > local_sparsity_map_free_lists
Definition runtime_impl.h:382
void create_shared_peers(void)
Auxilary function to create Network::shared_peers using either ipc mailbox or relying on network modu...
std::vector< uint8_t > key_value_store_vtable_data
Definition runtime_impl.h:491
ReplicatedHeap repl_heap
Definition runtime_impl.h:415
Node * nodes
Definition runtime_impl.h:370
Event collective_spawn_by_kind(Processor::Kind target_kind, Processor::TaskFuncID task_id, const void *args, size_t arglen, bool one_per_node=false, Event wait_on=Event::NO_EVENT, int priority=0)
ReservationImpl * get_lock_impl(ID id)
std::vector< NetworkModule * > network_modules
Definition runtime_impl.h:485
atomic< bool > shutdown_in_progress
Definition runtime_impl.h:400
CoreReservationSet & core_reservation_set(void)
void add_code_translator(CodeTranslator *t)
bool configure_from_command_line(std::vector< std::string > &cmdline)
Runtime::KeyValueStoreVtable key_value_store_vtable
Definition runtime_impl.h:490
DeferredShutdown deferred_shutdown
Definition runtime_impl.h:430
LockedMap< ReductionOpID, ReductionOpUntyped * > reduce_op_table
Definition runtime_impl.h:366
OperationTable optable
Definition runtime_impl.h:411
CompQueueImpl * get_compqueue_impl(ID id)
bool has_key_value_store_group(void) const
void parse_command_line(std::vector< std::string > &cmdline)
NetworkSegment reg_ib_mem_segment
Definition runtime_impl.h:476
bool create_configs(int argc, char **argv)
Mutex shutdown_mutex
Definition runtime_impl.h:394
size_t num_nodes
Definition runtime_impl.h:371
atomic< size_t > num_untriggered_events
Definition runtime_impl.h:369
T * get_module(const char *name) const
Definition runtime_impl.h:450
std::map< std::string, ModuleConfig * > module_configs
Definition runtime_impl.h:488
bool key_value_store_put(const void *key, size_t key_size, const void *value, size_t value_size) const
void add_processor(ProcessorImpl *p)
bool key_value_store_get(const void *key, size_t key_size, void *value, size_t *value_size) const
EventTriggerNotifier event_triggerer
Definition runtime_impl.h:409
Processor next_local_processor_id(void)
SparsityMapImplWrapper * get_available_sparsity_impl(NodeID target_node)
Event shutdown_precondition
Definition runtime_impl.h:397
Mutex::CondVar shutdown_condvar
Definition runtime_impl.h:395
void add_ib_memory(IBMemory *m)
bool network_init(int *argc, char ***argv, const Runtime::KeyValueStoreVtable &vtable)
bool register_reduction(Event &event, ReductionOpID redop_id, const ReductionOpUntyped *redop)
Memory next_local_ib_memory_id(void)
void add_dma_channel(Channel *c)
bool shutdown_request_received
Definition runtime_impl.h:396
HardwareTopology host_topology
Definition runtime_impl.h:404
NetworkSegment reg_mem_segment
Definition runtime_impl.h:477
Event notify_register_reduction(ReductionOpID redop_id)
void add_memory(MemoryImpl *m)
ID::IDType num_local_ib_memories
Definition runtime_impl.h:475
IBMemory * get_ib_memory_impl(ID id) const
const std::vector< CodeTranslator * > & get_code_translators(void) const
void free_sparsity_impl(SparsityMapImplWrapper *impl)
std::vector< SubgraphTableAllocator::FreeList * > local_subgraph_free_lists
Definition runtime_impl.h:383
bool shutdown_initiated
Definition runtime_impl.h:399
ModuleConfig * get_module_config(const std::string &name) const
void initiate_shutdown(void)
bool share_memories(void)
Auxilary function for handling the sharing mechanism of all registered memories across the machine.
std::optional< uint64_t > key_value_store_get_int(const std::string_view &key) const
void run(Processor::TaskFuncID task_id=0, Runtime::RunStyle style=Runtime::ONE_TASK_ONLY, const void *args=0, size_t arglen=0, bool background=false)
ProcessorGroupImpl * get_procgroup_impl(ID id)
MachineImpl * machine
Definition runtime_impl.h:364
CoreReservationSet * core_reservations
Definition runtime_impl.h:406
std::vector< ProcessorGroupTableAllocator::FreeList * > local_proc_group_free_lists
Definition runtime_impl.h:384
bool module_configs_created
Definition runtime_impl.h:481
std::vector< NetworkSegment * > network_segments
Definition runtime_impl.h:486
RegionInstanceImpl * get_instance_impl(ID id)
IncomingMessageManager * message_manager
Definition runtime_impl.h:408
void finish_configure(void)
static void realm_backtrace(int signal)
bool has_key_value_store(void) const
ModuleRegistrar module_registrar
Definition runtime_impl.h:479
bool key_value_store_cas(const void *key, size_t key_size, void *expected, size_t *expected_size, const void *desired, size_t desired_size) const
Module * get_module_untyped(const char *name) const
bool request_shutdown(Event wait_on, int result_code)
Event collective_spawn(Processor target_proc, Processor::TaskFuncID task_id, const void *args, size_t arglen, Event wait_on=Event::NO_EVENT, int priority=0)
bool is_key_value_store_elastic(void) const
std::vector< Module * > modules
Definition runtime_impl.h:482
MemoryImpl * get_memory_impl(ID id) const
bool modules_created
Definition runtime_impl.h:480
bool register_task(Processor::TaskFuncID taskid, Processor::TaskFuncPtr taskptr)
std::unordered_map< realm_id_t, SharedMemoryInfo > remote_shared_memory_mappings
Definition runtime_impl.h:401
GenEventImpl * get_genevent_impl(Event e)
BarrierImpl * get_barrier_impl(Event e)
std::optional< uint64_t > key_value_store_local_rank(void) const
std::unordered_map< realm_id_t, SharedMemoryInfo > local_shared_memory_mappings
Definition runtime_impl.h:402
void shutdown(Event wait_on=Event::NO_EVENT, int result_code=0)
bool key_value_store_bar(void) const
std::vector< CodeTranslator * > code_translators
Definition runtime_impl.h:483
Definition runtime.h:32
RunStyle
Definition runtime.h:257
Definition sampling.h:173
Definition sparsity_impl.h:199
Definition subgraph_impl.h:38
Definition timers.h:129
Definition mutex.h:325
Definition mutex.h:223
Definition atomics.h:31
#define REALM_INTERNAL_API_EXTERNAL_LINKAGE
Definition compiler_support.h:218
Definition activemsg.h:38
DynamicTableAllocator< SubgraphImpl, 10, 4 > SubgraphTableAllocator
Definition runtime_impl.h:84
DynamicTableAllocator< CompQueueImpl, 10, 4 > CompQueueTableAllocator
Definition runtime_impl.h:83
GenEventImpl * get_genevent_impl(Event e)
Definition runtime_impl.h:503
int NodeID
Definition nodeset.h:40
EventImpl * get_event_impl(Event e)
Definition runtime_impl.h:502
int CustomSerdezID
Definition custom_serdez.h:148
DynamicTableAllocator< GenEventImpl, 10, 7, GenEventImpl::GenEventImplAllocator > RemoteEventTableAllocator
Definition runtime_impl.h:78
REALM_INTERNAL_API_EXTERNAL_LINKAGE RuntimeImpl * runtime_singleton
DynamicTableAllocator< BarrierImpl, 10, 4 > BarrierTableAllocator
Definition runtime_impl.h:79
DynamicTableAllocator< SparsityMapImplWrapper, 10, 4 > SparsityMapTableAllocator
Definition runtime_impl.h:82
DynamicTableAllocator< ReservationImpl, 10, 8 > ReservationTableAllocator
Definition runtime_impl.h:80
REALM_INTERNAL_API_EXTERNAL_LINKAGE RuntimeImpl * get_runtime(void)
Definition runtime_impl.h:495
::realm_reduction_op_id_t ReductionOpID
Definition event.h:38
DynamicTableAllocator< ProcessorGroupImpl, 10, 4 > ProcessorGroupTableAllocator
Definition runtime_impl.h:81
BarrierImpl * get_barrier_impl(Event e)
Definition runtime_impl.h:507
DynamicTableAllocator< GenEventImpl, 11, 16, GenEventImpl::GenEventImplAllocator > LocalEventTableAllocator
Definition runtime_impl.h:76
Definition indexspace.h:1279
Definition runtime_impl.h:88
std::vector< Channel * > dma_channels
Definition runtime_impl.h:101
std::vector< ProcessorImpl * > processors
Definition runtime_impl.h:100
Node & operator=(const Node &)=delete
std::vector< atomic< DynamicTable< SubgraphTableAllocator > * > > subgraphs
Definition runtime_impl.h:111
DynamicTable< CompQueueTableAllocator > compqueues
Definition runtime_impl.h:106
std::vector< atomic< DynamicTable< ProcessorGroupTableAllocator > * > > proc_groups
Definition runtime_impl.h:112
std::vector< MemoryImpl * > memories
Definition runtime_impl.h:98
DynamicTable< RemoteEventTableAllocator > remote_events
Definition runtime_impl.h:103
DynamicTable< ReservationTableAllocator > reservations
Definition runtime_impl.h:105
Node(Node &&) noexcept=delete
Node(const Node &)=delete
std::vector< IBMemory * > ib_memories
Definition runtime_impl.h:99
std::vector< atomic< DynamicTable< SparsityMapTableAllocator > * > > sparsity_maps
Definition runtime_impl.h:110
DynamicTable< BarrierTableAllocator > barriers
Definition runtime_impl.h:104
Definition redop.h:56
Definition runtime_impl.h:522
int result_code
Definition runtime_impl.h:523
static void handle_message(NodeID sender, const RuntimeShutdownMessage &msg, const void *data, size_t datalen)
Definition runtime_impl.h:514
static void handle_message(NodeID sender, const RuntimeShutdownRequest &msg, const void *data, size_t datalen)
Event wait_on
Definition runtime_impl.h:515
int result_code
Definition runtime_impl.h:516