20#ifndef REALM_NETWORK_H
21#define REALM_NETWORK_H
39 class ActiveMessageImpl;
40 class IncomingMessageManager;
112 template <
typename T>
115 template <
typename T>
117 template <
typename T>
122 void gather(
NodeID root,
const void *val_in,
void *vals_out,
size_t bytes);
128 size_t src_payload_lines,
size_t src_payload_line_stride,
129 void *storage_base,
size_t storage_size);
133 const LocalAddress &src_payload_addr,
size_t src_payload_lines,
134 size_t src_payload_line_stride,
const RemoteAddress &dest_payload_addr,
135 void *storage_base,
size_t storage_size);
139 const RemoteAddress &dest_payload_addr,
void *storage_base,
size_t storage_size);
142 const NodeSet &targets,
unsigned short msgid,
size_t header_size,
143 size_t max_payload_size,
const void *src_payload_addr,
size_t src_payload_lines,
144 size_t src_payload_line_stride,
void *storage_base,
size_t storage_size);
151 bool with_congestion,
size_t header_size);
153 size_t lines,
size_t line_stride,
bool with_congestion,
156 size_t bytes_per_line,
size_t lines,
157 size_t line_stride,
bool with_congestion,
160 size_t bytes_per_line,
size_t lines,
163 bool with_congestion,
size_t header_size);
201 std::vector<std::string> &cmdline);
207 std::vector<NetworkSegment *> &segments) = 0;
211 std::vector<NetworkSegment *> &segments) = 0;
219 virtual void allgatherv(
const char *val_in,
size_t bytes, std::vector<char> &vals_out,
220 std::vector<size_t> &lengths) = 0;
326 uint64_t *total_counts,
size_t count) = 0;
338 size_t max_payload_size,
const void *src_payload_addr,
339 size_t src_payload_lines,
size_t src_payload_line_stride,
340 void *storage_base,
size_t storage_size) = 0;
343 NodeID target,
unsigned short msgid,
size_t header_size,
size_t max_payload_size,
344 const LocalAddress &src_payload_addr,
size_t src_payload_lines,
345 size_t src_payload_line_stride,
const RemoteAddress &dest_payload_addr,
346 void *storage_base,
size_t storage_size) = 0;
350 size_t max_payload_size,
352 size_t storage_size) = 0;
355 const NodeSet &targets,
unsigned short msgid,
size_t header_size,
356 size_t max_payload_size,
const void *src_payload_addr,
size_t src_payload_lines,
357 size_t src_payload_line_stride,
void *storage_base,
size_t storage_size) = 0;
360 size_t header_size) = 0;
362 size_t header_size) = 0;
365 bool with_congestion,
size_t header_size) = 0;
367 size_t bytes_per_line,
size_t lines,
368 size_t line_stride,
bool with_congestion,
369 size_t header_size) = 0;
371 size_t bytes_per_line,
size_t lines,
372 size_t line_stride,
bool with_congestion,
373 size_t header_size) = 0;
376 size_t bytes_per_line,
size_t lines,
379 bool with_congestion,
size_t header_size) = 0;
387 namespace NetworkSegmentInfo {
446 bool in_segment(
const void *range_base,
size_t range_bytes)
const;
447 bool in_segment(uintptr_t range_base,
size_t range_bytes)
const;
452#include "realm/network.inl"
Definition activemsg.h:221
Definition bytearray.h:53
Definition ib_memory.h:30
Definition activemsg.h:361
Kind
Definition memory.h:59
virtual IBMemory * create_remote_ib_memory(RuntimeImpl *runtime, Memory m, size_t size, Memory::Kind kind, const ByteArray &rdma_info)=0
virtual ActiveMessageImpl * create_active_message_impl(NodeID target, unsigned short msgid, size_t header_size, size_t max_payload_size, const RemoteAddress &dest_payload_addr, void *storage_base, size_t storage_size)=0
virtual size_t recommended_max_payload(NodeID target, const RemoteAddress &dest_payload_addr, bool with_congestion, size_t header_size)=0
virtual void attach(RuntimeImpl *runtime, std::vector< NetworkSegment * > &segments)=0
virtual void sample_quiescence_state(QuiescenceState &state)=0
virtual size_t recommended_max_payload(NodeID target, const LocalAddress &src_payload_addr, size_t bytes_per_line, size_t lines, size_t line_stride, const RemoteAddress &dest_payload_addr, bool with_congestion, size_t header_size)=0
virtual size_t recommended_max_payload(const NodeSet &targets, const void *data, size_t bytes_per_line, size_t lines, size_t line_stride, bool with_congestion, size_t header_size)=0
virtual void parse_command_line(RuntimeImpl *runtime, std::vector< std::string > &cmdline)
virtual void broadcast(NodeID root, const void *val_in, void *val_out, size_t bytes)=0
virtual size_t recommended_max_payload(NodeID target, const void *data, size_t bytes_per_line, size_t lines, size_t line_stride, bool with_congestion, size_t header_size)=0
virtual ActiveMessageImpl * create_active_message_impl(NodeID target, unsigned short msgid, size_t header_size, size_t max_payload_size, const LocalAddress &src_payload_addr, size_t src_payload_lines, size_t src_payload_line_stride, const RemoteAddress &dest_payload_addr, void *storage_base, size_t storage_size)=0
virtual ActiveMessageImpl * create_active_message_impl(const NodeSet &targets, unsigned short msgid, size_t header_size, size_t max_payload_size, const void *src_payload_addr, size_t src_payload_lines, size_t src_payload_line_stride, void *storage_base, size_t storage_size)=0
virtual MemoryImpl * create_remote_memory(RuntimeImpl *runtime, Memory m, size_t size, Memory::Kind kind, const ByteArray &rdma_info)=0
virtual void barrier(void)=0
virtual void detach(RuntimeImpl *runtime, std::vector< NetworkSegment * > &segments)=0
virtual void get_shared_peers(NodeSet &shared_peers)=0
virtual ActiveMessageImpl * create_active_message_impl(NodeID target, unsigned short msgid, size_t header_size, size_t max_payload_size, const void *src_payload_addr, size_t src_payload_lines, size_t src_payload_line_stride, void *storage_base, size_t storage_size)=0
virtual void quiescence_allreduce_sum(const uint64_t *local_counts, uint64_t *total_counts, size_t count)=0
NetworkModule(const std::string &_name)
virtual void allgatherv(const char *val_in, size_t bytes, std::vector< char > &vals_out, std::vector< size_t > &lengths)=0
virtual bool custom_quiescence_check(IncomingMessageManager *message_manager, Network::QuiescenceStatus &status)
virtual void gather(NodeID root, const void *val_in, void *vals_out, size_t bytes)=0
virtual size_t recommended_max_payload(NodeID target, bool with_congestion, size_t header_size)=0
virtual size_t recommended_max_payload(const NodeSet &targets, bool with_congestion, size_t header_size)=0
virtual size_t max_payload_size(size_t header_size, const void *src_payload_addr)=0
NetworkModule * single_network
Definition network.h:430
NetworkSegmentInfo::FlagsType flags
Definition network.h:427
NetworkSegmentInfo::MemoryType memtype
Definition network.h:425
const ByteArray * get_rdma_info(NetworkModule *network) const
bool is_registered(NetworkModule *network) const
ByteArray * single_network_data
Definition network.h:431
bool in_segment(const void *range_base, size_t range_bytes) const
size_t alignment
Definition network.h:424
NetworkSegmentInfo::MemoryTypeExtraData memextra
Definition network.h:426
std::map< NetworkModule *, ByteArray > networks
Definition network.h:435
void assign(NetworkSegmentInfo::MemoryType _memtype, void *_base, size_t _bytes, NetworkSegmentInfo::MemoryTypeExtraData _memextra=0, NetworkSegmentInfo::FlagsType _flags=0)
void add_rdma_info(NetworkModule *network, const void *data, size_t len)
bool is_registered() const
void request(NetworkSegmentInfo::MemoryType _memtype, size_t _bytes, size_t _alignment, NetworkSegmentInfo::MemoryTypeExtraData _memextra=0, NetworkSegmentInfo::FlagsType _flags=0)
void * base
Definition network.h:423
bool in_segment(uintptr_t range_base, size_t range_bytes) const
Definition runtime_impl.h:267
#define REALM_INTERNAL_API_EXTERNAL_LINKAGE
Definition compiler_support.h:218
unsigned MemoryType
Definition network.h:391
uintptr_t MemoryTypeExtraData
Definition network.h:394
unsigned FlagsType
Definition network.h:402
ActiveMessageImpl * create_active_message_impl(NodeID target, unsigned short msgid, size_t header_size, size_t max_payload_size, const void *src_payload_addr, size_t src_payload_lines, size_t src_payload_line_stride, void *storage_base, size_t storage_size)
size_t max_payload_size(size_t header_size, const void *src_payload_addr)
T broadcast(NodeID root, T val)
void gather(NodeID root, T val, std::vector< T > &result)
size_t recommended_max_payload(NodeID target, bool with_congestion, size_t header_size)
QuiescenceStatus check_for_quiescence(IncomingMessageManager *message_manager)
QuiescenceStatus
Definition network.h:93
NetworkModule * single_network
NetworkModule * get_network(NodeID node)
Definition activemsg.h:42
int NodeID
Definition nodeset.h:40
uintptr_t offset
Definition network.h:60
const NetworkSegment * segment
Definition network.h:59
uint64_t events_added
Definition network.h:272
uint64_t queued_items
Definition network.h:258
uint64_t messages_to_drain
Definition network.h:308
uint64_t packets_received
Definition network.h:285
uint64_t pending_completions
Definition network.h:296
uint64_t packets_reserved
Definition network.h:280
static const FlagsType OnDemandRegistration
Definition network.h:405
uintptr_t extra
Definition network.h:50
uintptr_t ptr
Definition network.h:49
unsigned char raw_bytes[384]
Definition network.h:52
unsigned short msgid
Definition ucp_internal.h:2