23 using std::unique_ptr;
39 std::shared_ptr<rdma::memory_region>
mr;
47 group(uint16_t group_number,
size_t block_size,
48 vector<uint32_t> members, uint32_t member_index,
51 unique_ptr<schedule> transfer_schedule);
56 virtual void receive_block(uint32_t send_imm,
size_t size) = 0;
59 virtual void send_message(std::shared_ptr<rdma::memory_region> message_mr,
60 size_t offset,
size_t length)
74 size_t message_number = 0;
82 size_t num_received_blocks = 0;
83 size_t receive_step = 0;
88 map<size_t, rdma::queue_pair> queue_pairs;
89 map<size_t, rdma::queue_pair> rfb_queue_pairs;
100 static void initialize_message_types();
112 virtual void send_message(std::shared_ptr<rdma::memory_region> message_mr,
113 size_t offset,
size_t length);
117 void send_next_block();
118 void complete_message();
119 void prepare_for_next_message();
120 void send_ready_for_block(uint32_t neighbor);
121 void connect(uint32_t neighbor);
const uint16_t group_number
const unique_ptr< schedule > transfer_schedule
virtual void receive_block(uint32_t send_imm, size_t size)=0
const uint32_t member_index
unique_ptr< rdma::memory_region > first_block_mr
virtual void send_message(std::shared_ptr< rdma::memory_region > message_mr, size_t offset, size_t length)=0
map< size_t, rdma::endpoint > rfb_endpoints
unique_ptr< char[]> first_block_buffer
map< size_t, rdma::endpoint > endpoints
vector< bool > received_blocks
const uint32_t num_members
virtual void receive_ready_for_block(uint32_t step, uint32_t sender)=0
virtual void complete_block_send()=0
group(uint16_t group_number, size_t block_size, vector< uint32_t > members, uint32_t member_index, incoming_message_callback_t upcall, completion_callback_t callback, unique_ptr< schedule > transfer_schedule)
std::function< receive_destination(size_t size)> incoming_message_callback_t
std::set< uint32_t > receivers_ready
std::function< void(char *buffer, size_t size)> completion_callback_t
std::shared_ptr< rdma::memory_region > mr
optional< size_t > first_block_number
incoming_message_callback_t incoming_message_upcall
completion_callback_t completion_callback
const vector< uint32_t > members