20#ifndef REALM_MACHINE_H
21#define REALM_MACHINE_H
71 bool local_only =
true)
const;
75 bool local_only =
true)
const;
79 bool local_only =
true)
const;
87 static const size_t MAX_HOSTNAME_LENGTH = 256;
88 char hostname[MAX_HOSTNAME_LENGTH];
114 Processor restrict_proc = Processor::NO_PROC,
115 Memory restrict_memory = Memory::NO_MEMORY,
116 bool local_only =
true)
const;
119 Memory restrict_mem1 = Memory::NO_MEMORY,
120 Memory restrict_mem2 = Memory::NO_MEMORY,
121 bool local_only =
true)
const;
138 const void *payload,
size_t payload_size) = 0;
141 size_t payload_size) = 0;
148 const ProcessorQuery &query);
156 template <
typename QT,
typename RT>
187 unsigned max_latency = 0);
191 int latency_weight = 0);
247 unsigned max_latency = 0);
249 unsigned max_latency = 0);
253 int latency_weight = 0);
255 int latency_weight = 0);
286 template <
typename QT,
typename RT>
298#if(!defined(__CUDACC__) && !defined(__HIPCC__))
328 operator bool(
void)
const;
333#include "realm/machine.inl"
MachineQueryIterator< QT, RT > & operator++()
bool operator==(const MachineQueryIterator< QT, RT > &compare_to) const
const RT * operator->(void)
RT & reference
Definition machine.h:294
friend QT
Definition machine.h:300
QT query
Definition machine.h:307
MachineQueryIterator(const MachineQueryIterator< QT, RT > ©_from)
std::ptrdiff_t difference_type
Definition machine.h:292
MachineQueryIterator< QT, RT > & operator=(const MachineQueryIterator< QT, RT > ©_from)
RT * pointer
Definition machine.h:293
MachineQueryIterator< QT, RT > operator++(int)
~MachineQueryIterator(void)
bool operator!=(const MachineQueryIterator< QT, RT > &compare_to) const
RT value_type
Definition machine.h:291
MachineQueryIterator(const QT &_query, RT _result)
RT result
Definition machine.h:308
std::input_iterator_tag iterator_category
Definition machine.h:290
virtual void memory_updated(Memory m, UpdateType update_type, const void *payload, size_t payload_size)=0
virtual void processor_updated(Processor p, UpdateType update_type, const void *payload, size_t payload_size)=0
virtual ~MachineUpdateSubscriber(void)
Definition machine.h:126
UpdateType
Definition machine.h:129
@ THING_ADDED
Definition machine.h:130
@ THING_REMOVED
Definition machine.h:131
~Machine(void)
Definition machine.h:48
MemoryQuery(const Machine &m)
int get_proc_mem_affinity(std::vector< ProcessorMemoryAffinity > &result, Processor restrict_proc=Processor::NO_PROC, Memory restrict_memory=Memory::NO_MEMORY, bool local_only=true) const
ProcessorQuery & local_address_space(void)
int get_mem_mem_affinity(std::vector< MemoryMemoryAffinity > &result, Memory restrict_mem1=Memory::NO_MEMORY, Memory restrict_mem2=Memory::NO_MEMORY, bool local_only=true) const
void get_local_processors(std::set< Processor > &pset) const
void get_visible_memories(Processor p, std::set< Memory > &mset, bool local_only=true) const
ProcessorQuery & operator=(const ProcessorQuery &q)
MemoryQuery & best_affinity_to(Memory m, int bandwidth_weight=1, int latency_weight=0)
bool operator==(const ProcessorQuery &compare_to) const
bool operator==(const MemoryQuery &compare_to) const
static Machine get_machine(void)
Processor next(Processor after) const
Machine(const Machine &m)
Definition machine.h:40
void get_shared_processors(Memory m, std::set< Processor > &pset, bool local_only=true) const
void add_subscription(MachineUpdateSubscriber *subscriber, const ProcessorQuery &query)
ProcessorQuery(const ProcessorQuery &q)
Processor first(void) const
MachineQueryIterator< ProcessorQuery, Processor > iterator
Definition machine.h:209
ProcessorQuery & best_affinity_to(Memory m, int bandwidth_weight=1, int latency_weight=0)
void get_all_memories(std::set< Memory > &mset) const
MemoryQuery & has_affinity_to(Processor p, unsigned min_bandwidth=0, unsigned max_latency=0)
ProcessorQuery(const Machine &m)
MemoryQuery & best_affinity_to(Processor p, int bandwidth_weight=1, int latency_weight=0)
MemoryQuery & operator=(const MemoryQuery &q)
Machine(void *_impl)
Definition machine.h:35
MachineQueryIterator< MemoryQuery, Memory > iterator
Definition machine.h:276
MemoryQuery & same_address_space_as(Processor p)
MemoryQuery(const MemoryQuery &q)
void remove_subscription(MachineUpdateSubscriber *subscriber)
void get_visible_memories(Memory m, std::set< Memory > &mset, bool local_only=true) const
Machine & operator=(const Machine &m)
Definition machine.h:43
MemoryQuery & has_affinity_to(Memory m, unsigned min_bandwidth=0, unsigned max_latency=0)
Processor random(void) const
bool get_process_info(Processor p, ProcessInfo *info) const
MemoryQuery & only_kind(Memory::Kind kind)
void get_all_processors(std::set< Processor > &pset) const
MemoryQuery & has_capacity(size_t min_bytes)
bool has_affinity(Processor p, Memory m, AffinityDetails *details=0) const
MemoryQuery & local_address_space(void)
size_t get_address_space_count(void) const
bool operator!=(const ProcessorQuery &compare_to) const
void get_local_processors_by_kind(std::set< Processor > &pset, Processor::Kind kind) const
realm_affinity_details_t AffinityDetails
Definition machine.h:55
Memory random(void) const
ProcessorQuery & same_address_space_as(Processor p)
iterator begin(void) const
bool operator!=(const MemoryQuery &compare_to) const
ProcessorQuery & only_kind(Processor::Kind kind)
void add_subscription(MachineUpdateSubscriber *subscriber, const MemoryQuery &query)
Memory next(Memory after) const
bool has_affinity(Memory m1, Memory m2, AffinityDetails *details=0) const
void add_subscription(MachineUpdateSubscriber *subscriber)
void * impl
Definition machine.h:153
MemoryQuery & same_address_space_as(Memory m)
ProcessorQuery & has_affinity_to(Memory m, unsigned min_bandwidth=0, unsigned max_latency=0)
ProcessorQuery & same_address_space_as(Memory m)
Kind
Definition memory.h:59
Definition processor.h:37
Kind
Definition processor.h:65
#define REALM_PUBLIC_API
Definition compiler_support.h:217
Definition activemsg.h:38
Memory m1
Definition machine.h:107
Memory m2
Definition machine.h:108
unsigned bandwidth
Definition machine.h:109
unsigned latency
Definition machine.h:110
uint64_t hostid
Definition machine.h:89
uint32_t processid
Definition machine.h:90
Memory m
Definition machine.h:101
Processor p
Definition machine.h:100
unsigned latency
Definition machine.h:103
unsigned bandwidth
Definition machine.h:102