| 662 | } |
| 663 | |
| 664 | void all_reduce_outer_loop(torch::Tensor& data, size_t numel, int data_size) |
| 665 | { |
| 666 | for (int offset = 0; offset < data_size; offset += MAX_BUF_SIZE) { |
| 667 | auto data_ptr = ((char*)(data.data_ptr()) + offset); |
| 668 | size_t chunk_size = data_size - offset > MAX_BUF_SIZE ? MAX_BUF_SIZE : data_size - offset; |
| 669 | size_t chunk_el = chunk_size / (data_size / numel); |
| 670 | if (chunk_size < NAIVE_ALLREDUCE_THRESHOLD) |
| 671 | symmetric_naive_all_reduce(data_ptr, data.scalar_type(), chunk_size, chunk_el); |
| 672 | else |
| 673 | distributed_naive_reduce(data_ptr, data.scalar_type(), chunk_size, chunk_el); |
| 674 | } |
| 675 | } |
no test coverage detected