23#ifndef SEND_BUFFER_POSITION_H
24#define SEND_BUFFER_POSITION_H
45 std::vector< size_t >
end_;
46 std::vector< size_t >
idx_;
54 size_t begin(
const size_t rank )
const;
59 size_t end(
const size_t rank )
const;
64 size_t idx(
const size_t rank )
const;
131 unsigned int idx(
const size_t rank )
const;
136 unsigned int begin(
const size_t rank )
const;
141 unsigned int end(
const size_t rank )
const;
161 const unsigned int send_recv_count_per_rank )
162 : begin_rank_( assigned_ranks.begin )
163 , end_rank_( assigned_ranks.end )
164 , max_size_( assigned_ranks.max_size )
165 , num_target_data_written_( 0 )
166 , send_recv_count_per_rank_( send_recv_count_per_rank )
171 for (
size_t rank = assigned_ranks.
begin; rank < assigned_ranks.
end; ++rank )
174 const size_t lr_idx = rank % assigned_ranks.
max_size;
175 assert( lr_idx < assigned_ranks.
size );
176 idx_[ lr_idx ] = rank * send_recv_count_per_rank;
177 begin_[ lr_idx ] = rank * send_recv_count_per_rank;
178 end_[ lr_idx ] = ( rank + 1 ) * send_recv_count_per_rank;
211 return idx( rank ) ==
end( rank );
This class simplifies keeping track of write position in MPI buffer while collocating spikes.
Definition send_buffer_position.h:42
std::vector< size_t > begin_
first entry for rank
Definition send_buffer_position.h:44
size_t idx(const size_t rank) const
Returns current index of specified rank in MPI buffer.
Definition send_buffer_position.h:77
bool is_chunk_filled(const size_t rank) const
Returns whether the part of the buffer on the specified rank has been filled.
Definition send_buffer_position.h:95
size_t end(const size_t rank) const
Returns end index of specified rank in MPI buffer.
Definition send_buffer_position.h:89
SendBufferPosition()
Definition send_buffer_position.cpp:31
std::vector< size_t > end_
one beyond last entry for rank
Definition send_buffer_position.h:45
size_t begin(const size_t rank) const
Returns begin index of specified rank in MPI buffer.
Definition send_buffer_position.h:83
std::vector< size_t > idx_
next entry in rank to write to
Definition send_buffer_position.h:46
void increase(const size_t rank)
Definition send_buffer_position.h:101
This class simplifies keeping track of write position in MPI buffer while collocating targets.
Definition send_buffer_position.h:112
size_t end_rank_
Definition send_buffer_position.h:115
size_t max_size_
Definition send_buffer_position.h:116
TargetSendBufferPosition(const AssignedRanks &assigned_ranks, const unsigned int send_recv_count_per_rank)
Definition send_buffer_position.h:160
std::vector< size_t > idx_
Definition send_buffer_position.h:119
size_t send_recv_count_per_rank_
Definition send_buffer_position.h:118
std::vector< size_t > begin_
Definition send_buffer_position.h:120
unsigned int end(const size_t rank) const
Returns end index of specified rank in MPI buffer.
Definition send_buffer_position.h:203
bool is_chunk_filled(const size_t rank) const
Returns whether the part of the buffer on the specified rank has been filled.
Definition send_buffer_position.h:209
std::vector< size_t > end_
Definition send_buffer_position.h:121
size_t begin_rank_
Definition send_buffer_position.h:114
size_t rank_to_index_(const size_t rank) const
Definition send_buffer_position.h:183
size_t num_target_data_written_
Definition send_buffer_position.h:117
unsigned int begin(const size_t rank) const
Returns begin index of specified rank in MPI buffer.
Definition send_buffer_position.h:197
unsigned int idx(const size_t rank) const
Returns current index of specified rank in MPI buffer.
Definition send_buffer_position.h:191
void increase(const size_t rank)
Definition send_buffer_position.h:221
bool are_all_chunks_filled() const
Returns whether the parts of the MPI buffer assigned to this thread has been filled.
Definition send_buffer_position.h:215
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33
Definition vp_manager.h:42
size_t end
Definition vp_manager.h:44
size_t size
Definition vp_manager.h:45
size_t max_size
Definition vp_manager.h:46
size_t begin
Definition vp_manager.h:43