Following Ippen et al (2017, Sec 3.2), ConnBuilders should loop over local nodes instead of over targets when the number of local nodes is smaller than the target population. Unfortunately, ever since 20b8f338231e142ab88971a8423b130caaafc2c7, the loop_over_targets() method looks like this (see here in context)
bool
nest::ConnBuilder::loop_over_targets_() const
{
return targets_->size() < kernel().node_manager.size() or not targets_->is_range()
or parameters_requiring_skipping_.size() > 0;
}
Here, kernel().node_manager.size() returns the size of the entire network, so the condition will always be true unless targets contains the entire network. This is not what is intended.
I have not checked fully, but I believe we should compare targets.size() to the number of nodes on the pertaining thread.
Following Ippen et al (2017, Sec 3.2), ConnBuilders should loop over local nodes instead of over targets when the number of local nodes is smaller than the target population. Unfortunately, ever since 20b8f338231e142ab88971a8423b130caaafc2c7, the
loop_over_targets()
method looks like this (see here in context)Here,
kernel().node_manager.size()
returns the size of the entire network, so the condition will always be true unlesstargets
contains the entire network. This is not what is intended.I have not checked fully, but I believe we should compare
targets.size()
to the number of nodes on the pertaining thread.