18 : num_members(members),
19 member_index(index) {}
28 virtual optional<block_transfer>
get_outgoing_transfer(
size_t num_blocks,
size_t send_step)
const = 0;
29 virtual optional<block_transfer>
get_incoming_transfer(
size_t num_blocks,
size_t receive_step)
const = 0;
30 virtual optional<block_transfer>
get_first_block(
size_t num_blocks)
const = 0;
69 optional<block_transfer> get_vertex_outgoing_transfer(
size_t send_step);
70 optional<block_transfer> get_vertex_incoming_transfer(
size_t receive_step);
77 static optional<block_transfer> get_vertex_outgoing_transfer(
79 unsigned int log2_num_members,
size_t num_blocks,
size_t total_steps);
80 static optional<block_transfer> get_vertex_incoming_transfer(
81 uint32_t vertex,
size_t step, uint32_t num_members,
82 unsigned int log2_num_members,
size_t num_blocks,
size_t total_steps);
84 uint32_t node,
size_t step, uint32_t num_members,
85 unsigned int log2_num_members,
size_t num_blocks,
size_t total_steps);
87 uint32_t node,
size_t step, uint32_t num_members,
88 unsigned int log2_num_members,
size_t num_blocks,
size_t total_steps);
89 static optional<size_t> get_intravertex_block(uint32_t vertex,
size_t step,
91 unsigned int log2_num_members,
94 static uint32_t get_intervertex_receiver(uint32_t vertex,
size_t step,
96 unsigned int log2_num_members,
virtual vector< uint32_t > get_connections() const =0
virtual optional< block_transfer > get_outgoing_transfer(size_t num_blocks, size_t send_step) const =0
const unsigned int log2_num_members
virtual ~schedule()=default
const uint32_t num_members
virtual size_t get_total_steps(size_t num_blocks) const =0
const uint32_t member_index
schedule(uint32_t members, uint32_t index)
virtual optional< block_transfer > get_first_block(size_t num_blocks) const =0
binomial_schedule(uint32_t members, uint32_t index)
virtual optional< block_transfer > get_incoming_transfer(size_t num_blocks, size_t receive_step) const =0