18#ifndef ADDRESS_SPLIT_CHANNEL_H
19#define ADDRESS_SPLIT_CHANNEL_H
29 class AddressSplitChannel;
35 const std::vector<XferDesPortInfo> &inputs_info,
36 const std::vector<XferDesPortInfo> &outputs_info,
65 const std::vector<XferDesPortInfo> &inputs_info,
66 const std::vector<XferDesPortInfo> &outputs_info,
68 const void *fill_data,
size_t fill_size,
74 template <
int N,
typename T>
79 const void *msgdata,
size_t msglen);
82 template <
int N,
typename T>
87 uintptr_t dma_op,
const void *msgdata,
size_t msglen);
90 template <
int N,
typename T>
109 const std::vector<XferDesPortInfo> &inputs_info,
110 const std::vector<XferDesPortInfo> &outputs_info,
112 const void *fill_data,
size_t fill_size,
121 std::unique_ptr<AddressSplitCommunicator<N, T>>
comm{
nullptr};
124 template <
int N,
typename T>
128 XferDesID _guid,
const std::vector<XferDesPortInfo> &inputs_info,
129 const std::vector<XferDesPortInfo> &outputs_info,
int _priority,
130 size_t _element_size,
154#include "realm/transfer/addrsplit_channel.inl"
Definition activemsg.h:303
Definition addrsplit_channel.h:49
virtual XferDes * create_xfer_des(uintptr_t dma_op, NodeID launch_node, XferDesID guid, const std::vector< XferDesPortInfo > &inputs_info, const std::vector< XferDesPortInfo > &outputs_info, int priority, XferDesRedopInfo redop_info, const void *fill_data, size_t fill_size, size_t fill_total)
virtual void enqueue_ready_xd(XferDes *xd)
Definition addrsplit_channel.h:57
static constexpr bool is_ordered
Definition addrsplit_channel.h:55
virtual long submit(Request **requests, long nr)
virtual ~AddressSplitChannel()=default
AddressSplitChannel(BackgroundWorkManager *bgwork)
Definition addrsplit_channel.h:83
virtual ~AddressSplitCommunicator()=default
virtual void create(NodeID target_node, NodeID launch_node, XferDesID guid, uintptr_t dma_op, const void *msgdata, size_t msglen)
Definition addrsplit_channel.h:31
void notify_request_read_done(Request *req)
virtual bool progress_xd(AddressSplitChannel *channel, TimeLimit work_until)=0
long get_requests(Request **requests, long nr)
AddressSplitXferDesBase(uintptr_t dma_op, Channel *_channel, NodeID _launch_node, XferDesID _guid, const std::vector< XferDesPortInfo > &inputs_info, const std::vector< XferDesPortInfo > &outputs_info, int _priority)
void notify_request_write_done(Request *req)
Definition addrsplit_channel.h:91
std::vector< IndexSpace< N, T > > spaces
Definition addrsplit_channel.h:119
size_t bytes_per_element
Definition addrsplit_channel.h:118
static ActiveMessageHandlerReg< AddressSplitXferDesCreateMessage< N, T > > areg
Definition addrsplit_channel.h:115
AddressSplitChannel * addrsplit_channel
Definition addrsplit_channel.h:120
virtual ~AddressSplitXferDesFactory()=default
virtual bool needs_release()
AddressSplitXferDesFactory(size_t _bytes_per_element, const std::vector< IndexSpace< N, T > > &_spaces, AddressSplitChannel *_addrsplit_channel)
virtual void create_xfer_des(uintptr_t dma_op, NodeID launch_node, NodeID target_node, XferDesID guid, const std::vector< XferDesPortInfo > &inputs_info, const std::vector< XferDesPortInfo > &outputs_info, int priority, XferDesRedopInfo redop_info, const void *fill_data, size_t fill_size, size_t fill_total)
std::unique_ptr< AddressSplitCommunicator< N, T > > comm
Definition addrsplit_channel.h:121
AddressSplitXferDesFactory(size_t _bytes_per_element, const std::vector< IndexSpace< N, T > > &_spaces, AddressSplitChannel *_addrsplit_channel, AddressSplitCommunicator< N, T > *_comm)
Definition addrsplit_channel.h:125
int find_point_in_spaces(Point< N, T > p, int guess_idx) const
size_t point_count
Definition addrsplit_channel.h:145
Point< N, T > points[MAX_POINTS]
Definition addrsplit_channel.h:146
static constexpr size_t MAX_POINTS
Definition addrsplit_channel.h:144
size_t point_index
Definition addrsplit_channel.h:145
virtual Event request_metadata()
virtual bool progress_xd(AddressSplitChannel *channel, TimeLimit work_until)
AddressSplitXferDes(uintptr_t _dma_op, Channel *_channel, NodeID _launch_node, XferDesID _guid, const std::vector< XferDesPortInfo > &inputs_info, const std::vector< XferDesPortInfo > &outputs_info, int _priority, size_t _element_size, const std::vector< IndexSpace< N, T > > &_spaces)
~AddressSplitXferDes()=default
unsigned output_count
Definition addrsplit_channel.h:148
size_t element_size
Definition addrsplit_channel.h:143
ControlPort::Encoder ctrl_encoder
Definition addrsplit_channel.h:149
int output_space_id
Definition addrsplit_channel.h:147
std::vector< IndexSpace< N, T > > spaces
Definition addrsplit_channel.h:142
Definition channel.h:1014
virtual void enqueue_ready_xd(XferDes *xd)
Channel * channel
Definition channel.h:343
uintptr_t dma_op
Definition channel.h:289
Definition activemsg.h:38
int NodeID
Definition nodeset.h:40
unsigned long long XferDesID
Definition channel.h:57
Definition addrsplit_channel.h:75
static void handle_message(NodeID sender, const AddressSplitXferDesCreateMessage< N, T > &args, const void *msgdata, size_t msglen)
Definition indexspace.h:323