20#ifndef REALM_NETWORK_H
21#define REALM_NETWORK_H
39 class ActiveMessageImpl;
40 class IncomingMessageManager;
98 void gather(
NodeID root,
const void *val_in,
void *vals_out,
size_t bytes);
103 size_t max_payload_size,
const void *src_payload_addr,
104 size_t src_payload_lines,
size_t src_payload_line_stride,
105 void *storage_base,
size_t storage_size);
108 NodeID target,
unsigned short msgid,
size_t header_size,
size_t max_payload_size,
109 const LocalAddress &src_payload_addr,
size_t src_payload_lines,
110 size_t src_payload_line_stride,
const RemoteAddress &dest_payload_addr,
111 void *storage_base,
size_t storage_size);
114 NodeID target,
unsigned short msgid,
size_t header_size,
size_t max_payload_size,
115 const RemoteAddress &dest_payload_addr,
void *storage_base,
size_t storage_size);
118 const NodeSet &targets,
unsigned short msgid,
size_t header_size,
119 size_t max_payload_size,
const void *src_payload_addr,
size_t src_payload_lines,
120 size_t src_payload_line_stride,
void *storage_base,
size_t storage_size);
127 bool with_congestion,
size_t header_size);
129 size_t lines,
size_t line_stride,
bool with_congestion,
132 size_t bytes_per_line,
size_t lines,
133 size_t line_stride,
bool with_congestion,
136 size_t bytes_per_line,
size_t lines,
139 bool with_congestion,
size_t header_size);
162 std::vector<std::string> &cmdline);
168 std::vector<NetworkSegment *> &segments) = 0;
172 std::vector<NetworkSegment *> &segments) = 0;
180 virtual void allgatherv(
const char *val_in,
size_t bytes, std::vector<char> &vals_out,
181 std::vector<size_t> &lengths) = 0;
196 size_t max_payload_size,
const void *src_payload_addr,
197 size_t src_payload_lines,
size_t src_payload_line_stride,
198 void *storage_base,
size_t storage_size) = 0;
201 NodeID target,
unsigned short msgid,
size_t header_size,
size_t max_payload_size,
202 const LocalAddress &src_payload_addr,
size_t src_payload_lines,
203 size_t src_payload_line_stride,
const RemoteAddress &dest_payload_addr,
204 void *storage_base,
size_t storage_size) = 0;
208 size_t max_payload_size,
210 size_t storage_size) = 0;
213 const NodeSet &targets,
unsigned short msgid,
size_t header_size,
214 size_t max_payload_size,
const void *src_payload_addr,
size_t src_payload_lines,
215 size_t src_payload_line_stride,
void *storage_base,
size_t storage_size) = 0;
218 size_t header_size) = 0;
220 size_t header_size) = 0;
223 bool with_congestion,
size_t header_size) = 0;
225 size_t bytes_per_line,
size_t lines,
226 size_t line_stride,
bool with_congestion,
227 size_t header_size) = 0;
229 size_t bytes_per_line,
size_t lines,
230 size_t line_stride,
bool with_congestion,
231 size_t header_size) = 0;
234 size_t bytes_per_line,
size_t lines,
237 bool with_congestion,
size_t header_size) = 0;
240 namespace NetworkSegmentInfo {
299 bool in_segment(
const void *range_base,
size_t range_bytes)
const;
300 bool in_segment(uintptr_t range_base,
size_t range_bytes)
const;
305#include "realm/network.inl"
Definition activemsg.h:205
Definition bytearray.h:53
Definition ib_memory.h:30
Definition activemsg.h:345
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 size_t sample_messages_received_count(void)=0
virtual bool check_for_quiescence(size_t sampled_receive_count)=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 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
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 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
NetworkModule * single_network
Definition network.h:283
NetworkSegmentInfo::FlagsType flags
Definition network.h:280
NetworkSegmentInfo::MemoryType memtype
Definition network.h:278
const ByteArray * get_rdma_info(NetworkModule *network) const
bool is_registered(NetworkModule *network) const
ByteArray * single_network_data
Definition network.h:284
bool in_segment(const void *range_base, size_t range_bytes) const
size_t alignment
Definition network.h:277
NetworkSegmentInfo::MemoryTypeExtraData memextra
Definition network.h:279
std::map< NetworkModule *, ByteArray > networks
Definition network.h:288
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:276
bool in_segment(uintptr_t range_base, size_t range_bytes) const
Definition runtime_impl.h:264
#define REALM_INTERNAL_API_EXTERNAL_LINKAGE
Definition compiler_support.h:218
unsigned MemoryType
Definition network.h:244
uintptr_t MemoryTypeExtraData
Definition network.h:247
unsigned FlagsType
Definition network.h:255
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)
T broadcast(NodeID root, T val)
bool check_for_quiescence(IncomingMessageManager *message_manager)
void gather(NodeID root, T val, std::vector< T > &result)
size_t recommended_max_payload(NodeID target, bool with_congestion, size_t header_size)
NetworkModule * single_network
NetworkModule * get_network(NodeID node)
Definition activemsg.h:38
int NodeID
Definition nodeset.h:40
uintptr_t offset
Definition network.h:60
const NetworkSegment * segment
Definition network.h:59
static const FlagsType OnDemandRegistration
Definition network.h:258
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