MCPcopy Create free account
hub / github.com/antmachineintelligence/mtgbmcode / ReduceScatterRing

Method ReduceScatterRing

src/network/network.cpp:303–318  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

301}
302
303void Network::ReduceScatterRing(char* input, comm_size_t, int type_size,
304 const comm_size_t* block_start, const comm_size_t* block_len, char* output,
305 comm_size_t, const ReduceFunction& reducer) {
306 const int out_rank = (rank_ + 1) % num_machines_;
307 const int in_rank = (rank_ - 1 + num_machines_) % num_machines_;
308 int out_block = in_rank;
309 int in_block = (in_rank - 1 + num_machines_) % num_machines_;
310 for (int i = 1; i < num_machines_; ++i) {
311 linkers_->SendRecv(out_rank, input + block_start[out_block], block_len[out_block],
312 in_rank, output, block_len[in_block]);
313 reducer(output, input + block_start[in_block], type_size, block_len[in_block]);
314 out_block = (out_block - 1 + num_machines_) % num_machines_;
315 in_block = (in_block - 1 + num_machines_) % num_machines_;
316 }
317 std::memcpy(output, input + block_start[rank_], block_len[rank_]);
318}
319
320} // namespace LightGBM

Callers

nothing calls this directly

Calls 1

SendRecvMethod · 0.45

Tested by

no test coverage detected